Михаил Реутов
Постоянный посетитель
Всего сообщений: 224
Дата регистрации: 21.11.2007
|
Создано:
23.12.2013 18:52:47
|
|
Приветствую.
С помощью автоматики "трудно" смоделировать работу АВР, так как придется описывать очень много пусковых органов (факт 0 напряжения в отключенных узлах) и управляющих воздействий (обратное включение всех ветвей и узлов).
Предлагаю простой вариант работы АВР, в котором лишь надо указать ветви, на которых установлен АВР.
Код |
---|
Set tnode = Rastr.Tables("node")
Set tvetv = rastr.Tables("vetv")
On Error Resume Next
tvetv.Cols.Remove "sta_base"
tnode.Cols.Remove "sta_base"
On Error Goto 0
flag_avr = false
tvetv.Cols.Add "sta_base", 3: tnode.Cols.Add "sta_base", 3
'например, ветвь, на которой установлен АВР
vetv_avr = "ip=361&iq=362&np=0"
save_regim: Rastr.rgm "p"
tnode.SetSel "sta!=sta_base"
i = tnode.FindNextSel(-1)
Do While i <> -1 'имеются отключенные узлы
ny = tnode.Cols("ny").Z(i)
tvetv.SetSel "(ip=" & ny & "|iq=" & ny & ")&sta!=0"
j = tvetv.FindNextSel(-1)
Do While j <> -1
If tvetv.SelString(j) = vetv_avr Then 'найдена ветвь АВР
load_regim: msgbox "АВР: " & tvetv.Cols("dname").Z(j)
tvetv.SetSel vetv_avr: tvetv.Cols("sta").Calc "0"
Rastr.rgm "p"
flag_avr = true
Exit Do
End If
j = tvetv.FindNextSel(j)
loop
If flag_avr = True Then Exit Do
i = tnode.FindNextSel(i)
loop
Sub save_regim()
Set tn = Rastr.Tables("node"): Set tv = rastr.Tables("vetv")
tn.SetSel "": tv.SetSel ""
tv.Cols("sta_base").Calc "sta": tn.Cols("sta_base").Calc "sta"
End Sub
Sub load_regim()
Set tn = Rastr.Tables("node"): Set tv = rastr.Tables("vetv")
tn.SetSel "": tv.SetSel ""
tv.Cols("sta").Calc "sta_base": tn.Cols("sta").Calc "sta_base"
End Sub
|
|