[?]: не работает Скрипт vb для AlarmControl 7.0

Панели оператора PP/OP/TP/TD/MP.
Программные пакеты ProTool/WinCC flexible, SCADA система WinCC
alex_0904
Posts: 5
Joined: Tue Nov 06, 2007 3:04 pm
Location: Ukraine

[?]: не работает Скрипт vb для AlarmControl 7.0

Post by alex_0904 »

На странице http://iadt.siemens.ru/forum/viewtopic.php?t=7838 нашел скрипт по настройке значения фильтра
MsgFilterSQL Alarm Control
Свой код привожу ниже:

Code: Select all

Sub OnClick(Byval Item)                              
Dim s, d1,d2,m1,m2,y1,y2,h1,mm1,s1,h2,mm2,s2, mnr1, mnr2 

'Фильтр по дате и времени 
s = "" 
If HMIRuntime.Tags("ACTIVATE_FILTR_1").Read = 1 Then 
   d1 = ScreenItems("IOd1").OutputValue 
   m1 = ScreenItems("IOm1").OutputValue 
   y1 = ScreenItems("IOy1").OutputValue 
   d2 = ScreenItems("IOd2").OutputValue 
   m2 = ScreenItems("IOm2").OutputValue 
   y2 = ScreenItems("IOy2").OutputValue 
   h1 = ScreenItems("IOd3").OutputValue 
   mm1 = ScreenItems("IOm3").OutputValue 
   s1 = ScreenItems("IOy3").OutputValue 
   h2 = ScreenItems("IOd4").OutputValue 
   mm2 = ScreenItems("IOm4").OutputValue 
   s2 = ScreenItems("IOy4").OutputValue 

   s = "DATETIME >= '"+CStr(y1)+"-"+CStr(m1)+"-"+CStr(d1)+" "+CStr(h1)+":"+CStr(mm1)+":"+CStr(s1)+".000'" 
   s = s + " AND DATETIME <= '"+CStr(y2)+"-"+CStr(m2)+"-"+CStr(d2)+" "+CStr(h2)+":"+CStr(mm2)+":"+CStr(s2)+".999'" 
End If 

'Фильтр по номеру сообщения 
If HMIRuntime.Tags("ACTIVATE_FILTR_2").Read = 1 Then 
   If s <> "" Then s = s + " AND " 
   mnr1 = CStr(ScreenItems("IOy5").OutputValue) 
   mnr2 = CStr(ScreenItems("IOy6").OutputValue) 
   s = s + "MSGNR >= "+mnr1+" AND MSGNR <= "+mnr2 
End if 

'Присваиваем значение фильтра тегу 
HMIRuntime.Tags("Filter_FilterString").Write s 

'Присваиваем значение фильтра Alarm Control'у 
Parent.Parent.ScreenItems("Control1").MsgFilterSQL = s 
End Sub
Проверка синтаксиса проходит успешно, но код не исполняется.
Если фильтр по номеру сообщения написать так:
If HMIRuntime.Tags("ACTIVATE_FILTR_2").Read = 1 Then
s = "MSGNR >= 10 AND MSGNR <= 40"
то скрипт дальше выполняется.
Apdiagnose выдает ошибку (get_item: Параметр задан неверно)
ссылаясь на строку ( mnr1 = CStr(ScreenItems("IOy5").OutputValue) ).
Как правильно прочитать значение тега IOy5 (Text tag 8-bit character set) ?