На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67418157
9507
Hosts 3608850
1887
Visitors 53570718
9188

70


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация

Сообщения 1 - 25 из 26
Начало | Пред. | 1 2 | След. | Конец 

Тема: «Контроль по токам при утяжелении , как сделать? » в форуме: Макро   Просмотров: 33473
 
regim4ik
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 05.08.2010
Создано: 05.08.2010 12:03:34
 
 
Насколько понимаю возможности макросов практически неограничены. Однако столкнулся с проблемой при проведении утяжеления необходимо чтоб расчет останавливался при достижении допустимого значения тока по конкретному элементу. Насколько понимаю в настоящее время утяжеление (расчет режима) останавливается при превышении допустимого предела по напряжению, который можно изменять. А вот с ограничениями по допустимым токам не могу понять можно ли каким нить образом реализовать. Вроде бы и уже добавили в РАСТР возможность заведения допустимых значений токовь по элементам, а вот до утяжеления, судя по всему, дело не дошло.

Если быть кратким, то у меня 2 вопроса основных:
1. Как реализовать остановку расчета режима при утяжелении при достижении допустимого значения тока элемента сети с учетом температуры?
2. Будет ли в новых версиях добавлена возможность контролировать не только диапазон изменения напряжения, но и контроль допустимого значения по току конкретного элемента?
Заранее благодарен!
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 05.08.2010 14:05:16
 
 
Цитата
regim4ik пишет:
Как реализовать остановку расчета режима при утяжелении при достижении допустимого значения тока элемента сети с учетом температуры?

Можно вот так:
Код

Dim kd, my_temp, v, row
my_temp = Rastr.SendCommandMain(8,"­Введите температуру","",0)
Rastr.LockEvent=True
Rastr.LogEnable=False
Set v = Rastr.Tables("vetv")
v.Cols.Add "my_zagr", 1
kd = Rastr.step_ut("i")
Do
          Rastr.CalcIdop CDbl(my_temp), CDbl(0), ""
          v.SetSel "tip=0"
          v.Cols("my_zagr").Calc "zag_i*1000"
          v.SetSel "tip=1"
          v.Cols("my_zagr").Calc "zag_it*1000"
          v.SetSel "my_zagr>100"
          row = v.FindNextSel(-1)
          If row <> -1 Then
                    MsgBox "Утяжеление остановлено: загрузка ветви " & v.Cols("name").Z(row) & "по току больше 100 %"
                    Exit Do
          End If
          kd=Rastr.step_ut("z")
Loop While kd=0
v.Cols.Remove "my_zagr"
Rastr.LogEnable=True
Rastr.LockEvent=False
Rastr.SendChangeData 0,"","",0
Set v = Nothing
 
Профиль
Наверх
regim4ik
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 05.08.2010
Создано: 05.08.2010 15:07:28
 
 
Ухх..спасибо Михаил за такую оперативность..
единственное стесняюсь спросить что же такое это таинственное "my_zagr" ? это контролируемый элемент(ы) ?? если да, то как мне иих прописать ?
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 06.08.2010 08:17:37
 
 
Цитата
regim4ik пишет:
что же такое это таинственное "my_zagr" ? это контролируемый элемент(ы) ??

Это не контролируемые элементы. В таблице vetv (Ветви) есть два столбца zag_i и zag_it - токовая загрузка в % для ВЛ и трансформаторов соответственно. Формулы расчета этих параметров различны. my_zagr это "дополнительный" столбец, в который записывается токовая загрузка из zag_i и zag_it для ВЛ и ТР, короче, из двух столбцов "делается" один. Этот столбец my_zagr и мониторится на загрузку более 100 %. Хотя можно было этого всего не делать, а продумать более "хитрую" выборку перегруженных элементов.
 
Профиль
Наверх
regim4ik
Заглянувший
 
Всего сообщений: 3
Дата регистрации: 05.08.2010
Создано: 06.08.2010 15:57:40
 
 
Хм..легко сказать "делается"...для начинающего пользователя это совсем непросто..ладно будем постигать непостижимое..
 
Профиль
Наверх
carter2
Заглянувший
 
Всего сообщений: 1
Дата регистрации: 05.05.2011
Создано: 05.05.2011 19:37:33
 
 
А нельзя ли подсказать как изменится данный макрос если всегда контролируется определенная ветвь и токовая загрузка 98%.

Заранее спасибо
 
Профиль
Наверх
Михаил Одинцов
Постоянный посетитель
 
Всего сообщений: 148
Дата регистрации: 22.07.2008
Создано: 06.05.2011 00:43:30
 
 
Попробуйте поменять строку
v.SetSel "my_zagr>100"
на
v.SetSel "ip=%здесь номер начала ветви%&iq=%здесь номер конца ветви%&np=%здесь номер параллельности%&my_zagr>9­8"

Можно сделать и ввод с клавиатуры, но по мне это не очень удобно.
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 20.07.2011 12:16:20
 
 
Подскажите, что не правильно делаю (не исключено что все С улыбкой) при попытке написать макрос, который прерывает утяжеление при превышении допустимого тока 100% в отмеченных ветвях
Код

FUNCTION usl()

   usl=-1
   Set Table_vetv = Rastr.Tables("vetv")
      Set Vetv_zagi = Table_vetv.Cols("zag_i")
      
   Table_vetv.SetSel("sel="+­CSTR(1))
   FlagExit = False
   CurrentRow_vetv=Table_vet­v.FindNextSel(-1)
   While (CurrentRow_vetv <>-1)
      If (Vetv_zagi.z(CurrentRow_v­etv)*1000>100) Then
         Rastr.PrintP "превышение допустимого тока в ветви"
         FlagExit = True
      End If
   Wend
   If (FlagExit = True) Then
      usl = 1
   End If
END FUNCTION
 
Профиль
Наверх
Михаил Одинцов
Постоянный посетитель
 
Всего сообщений: 148
Дата регистрации: 22.07.2008
Создано: 20.07.2011 13:01:05
 
 
Мне кажется цикл перебора, где while, неправильно сделан. Нет следующей строки:
CurrentRow_vetv=Table_vet­?v.FindNextSel(CurrentRow­_vetv)
Она должна быть внутри while, но не if. Это нахождения следующего номера строки, у Вас по логике вещей должен быть бесконечный цикл while при работе при текущем коде, т.к. он как нашел первую ветвь по выборке, так ее и перебирает и не может выйти из цикла.

В if надо бы поместить k=-1, чтоб цикл закончить, если не хотите выводить список ветвей перегруженных.

И вообще выборку проще сразу наверно сделать:
"sel=1&zag_i>0.1" Если выборка непустая - то прекращайте утяжеление.

И мне кажется у Вас фактически по функционалу дублируются переменные usl и FlagExit, вторую можно убрать.
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 20.07.2011 13:47:40
 
 
Цитата
Мне кажется цикл перебора, где while, неправильно сделан. Нет следующей строки:
CurrentRow_vetv=Table_vet­v.FindNextSel(CurrentRow_­vetv)

Да возможно ее не хватало, потму что он действительно зацикливался на первом же шаге...
вот только теперь он мне пишет при расчете: "Объект с номером -1 отсутвует в таблице vetv". Откуда он берет этот -1?

Цитата
В if надо бы поместить k=-1, чтоб цикл закончить, если не хотите выводить список ветвей перегруженных.

И вообще выборку проще сразу наверно сделать:
"sel=1&zag_i>0.1" Если выборка непустая - то прекращайте утяжеление.

Вот с этим не понял что и как вставить?
 
Профиль
Наверх
Михаил Одинцов
Постоянный посетитель
 
Всего сообщений: 148
Дата регистрации: 22.07.2008
Создано: 20.07.2011 14:27:42
 
 
"Объект с номером -1 отсутвует в таблице vetv". - это только на этой строке у Вас могла возникнуть такая ошибка:
(Vetv_zagi.z(CurrentRow_v­?etv)*1000>100)
Значит она, что в выборке нет строк, т.е. вот по этой строке
CurrentRow_vetv=Table_vet­?v.FindNextSel(-1),
CurrentRow_vetv принимает значение -1, т.е. нет строк удовлетворяющих выборке либо Вы перебрали уже все строки выборки и прога естественно не может считать Vetv_zagi.z(-1), ибо номер строки в столбце принимает значения от 0 до количества строк в таблице-1.
Но не понятно тогда почему у вас он зашел в цикл т.к. стоит
While (CurrentRow_vetv <>-1)
Мне сложно написать Вам прямо 100% работающее решение, т.к. я сейчас пишу в основном на С-образных вещах. Может Вы ее вставили не так, надо:

While (CurrentRow_vetv <>-1)
If (Vetv_zagi.z(CurrentRow_v­?etv)*1000>100) Then
Rastr.PrintP "превышение допустимого тока в ветви"
FlagExit = True
End If
CurrentRow_vetv=Table_vet­?v.FindNextSel(CurrentRow­_vetv)
Wend

И вообще выборку проще сразу наверно сделать:
"sel=1&zag_i>0.1" Если выборка непустая - то прекращайте утяжеление.

Это я имел ввиду типа такого написать, ну логика алгоритма приведена, синтаксис может быть несколько не правильным.

Set Table_vetv = Rastr.Tables("vetv")

Table_vetv.SetSel("sel=1&­zag_i>0.1")
k=Table_vet?v.FindNextSel­(-1)
if k=-1 then
usl = -1
else
usl = 1
Rastr.PrintP "превышение допустимого тока в ветви"
end if

 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 20.07.2011 16:30:46
 
 
Да действительно вначале написал, перед If.
Теперь ошибки не возникает, но расчет прекращается после первого шага, хотя допустимый ток не превышает 100% ни в одной ветви, причем завершается так словно отработало условие
Vetv_zagi.z(CurrentRow_ve­tv)*100>100, т.к. выводится сообщение "превышение допустимого тока в ветви->"
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 20.07.2011 16:40:36
 
 
А все разобрался! в выборке надо было еще указать, что бы проверка велась только в линиях, т.е.:
Код
Table_vetv.SetSel("(sel="­+CStr(1)+")&(tip="+CStr(0­)+")")
. А то так он провверял в трансформаторах,а в них zag_i весьма велик)
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 20.07.2011 20:37:01
 
 
я бы написал так
Код

Table_vetv.SetSel "(sel=" ?& CStr(1) & ")&(tip=" & CStr(0?) & ")"
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 20.07.2011 21:55:20
 
 
А какая разница между написаниями? в чем преимущество Вашего способа или просто так правильней?
 
Профиль
Наверх
Михаил Реутов
Постоянный посетитель
 
Всего сообщений: 224
Дата регистрации: 21.11.2007
Создано: 21.07.2011 14:07:55
 
 
так правильней с точки зрения синтаксиса языка програмирования
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1059
Дата регистрации: 23.04.2007
Создано: 21.07.2011 19:56:46
 
 
А просто "sel=1&tip=0" ? Или в CStr могут быть не константы ?
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 21.07.2011 22:02:44
 
 
в данном случае тут могут быть только константы.
а писал через cstr просто потому, что взял это из другого кода и решил так и оставить
 
Профиль
Наверх
Михаил Егорушкин
Посетитель
 
Всего сообщений: 53
Дата регистрации: 14.03.2011
Создано: 27.02.2012 15:40:08
 
 
Уважаемые пользователи ПК Растр. Вы много рассуждали о том как написать макрос утяжеления с отановкой при 100% загрузке ОТМЕЧЕННЫХ Ветвей. Прошу выложить итоговый Макрос, который прерывает утяжеление при превышении допустимого тока в отмеченных ветвях.
 
Профиль
Наверх
Михаил Егорушкин
Посетитель
 
Всего сообщений: 53
Дата регистрации: 14.03.2011
Создано: 27.02.2012 15:44:19
 
 
У кого нибудь есть Макрос, который прерывает утяжеление при уменьшении напряжения до заданного коэффициентом от номинального в отмеченном узле.
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 659
Дата регистрации: 31.05.2008
Создано: 27.02.2012 16:28:39
 
 
Здравствуйте, в Растр3 появились функции контроля тока, напряжения, мощности при утяжелении. Утяжелении останавливается на первом нарушенном пределе:
http://rastrwin.ru/downlo­ad/Files/_Help_UT_UPI_.ra­r

Мой вариант хэлпа к утяжелению с детальным разбором скрипта для остановки по условию:
http://rastrwin.ru/downlo­ad/Files/_UT_.rar
 
Профиль
Наверх
Андрей Семин
Постоянный посетитель

 
Всего сообщений: 225
Дата регистрации: 09.07.2007
Создано: 27.02.2012 18:50:52
 
 
А вот интересно как поведет себя алгоритм утяжеления если в нулевой точке уже есть перегрузки - пойдет ли он назад по вектору траектории ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 659
Дата регистрации: 31.05.2008
Создано: 27.02.2012 19:21:45
 
 
Нет, сразу скажет, что обнаружил нарушения.
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 01.03.2012 22:27:44
 
 
Михаил Егорушкин,
если подождете недельку, то по приезду на работу скину вам макрос

Александр Александров,
а не подскажите как дополнить макрос, что бы при достижении перегрузки он совершал еще одну итерацию, но только по обратной траектории?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 659
Дата регистрации: 31.05.2008
Создано: 02.03.2012 11:21:42
 
 
Можно порекомендовать исследовать содержимое моего поста, тремя постами ранее. Представленного материала должно быть достаточно для создания либого утяжеления/ослабления.
 
Профиль
Наверх


Сообщения 1 - 25 из 26
Начало | Пред. | 1 2 | След. | Конец 

Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019