На главную страницу RastrWin

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


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

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

Тема: «Контроль по токам при утяжелении , как сделать? » в форуме: Макро   Просмотров: 33803
 
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
 
 
так правильней с точки зрения синтаксиса языка програмирования
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1062
Дата регистрации: 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
 
 
У кого нибудь есть Макрос, который прерывает утяжеление при уменьшении напряжения до заданного коэффициентом от номинального в отмеченном узле.
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 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
 
 
А вот интересно как поведет себя алгоритм утяжеления если в нулевой точке уже есть перегрузки - пойдет ли он назад по вектору траектории ?
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 660
Дата регистрации: 31.05.2008
Создано: 27.02.2012 19:21:45
 
 
Нет, сразу скажет, что обнаружил нарушения.
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 233
Дата регистрации: 03.05.2011
Создано: 01.03.2012 22:27:44
 
 
Михаил Егорушкин,
если подождете недельку, то по приезду на работу скину вам макрос

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


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

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


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





Работает на «Битрикс: Управление сайтом» © «Битрикс», 2001-2006