Страница 1 из 1

Алармы

СообщениеДобавлено: Чт авг 20, 2009 8:41 am
Evgeny
Здравствуйте!
Имеется группа алармов AlmGr_1.
К ней принадлежат несколько тэгов Tag_1, Tag_2, Tag_3.
Для этих тэгов периодически возникают состояния аларма.
Как обратиться к полю .Comment активного в данный момент аларма?
(InTouch 7.1)

Спасибо!

Re: Алармы

СообщениеДобавлено: Пт авг 21, 2009 7:37 am
Blaze
IF ***.Alarm (или иное условие, указывающее что этот аларм активен) THEN ***.AlarmComment = ***;
ENDIF;

СообщениеДобавлено: Пт авг 21, 2009 9:51 am
Evgeny
А если в группе сотня алармов?
Перебирать в цикле все и искать активный?
По другому никак?

Re:

СообщениеДобавлено: Пн июн 08, 2015 12:45 pm
SMV
Evgeny писал(а):А если в группе сотня алармов?
Перебирать в цикле все и искать активный?
По другому никак?

Евгений, решили ли Вы эту проблему?
И другой вопрос: Если к одной дискретной переменной привязан аларм и его значение, т.е. комментарий можно изменить в скрипте с помощью AlarmComment, то как сделать, чтобы в AlarmViewerCTRL при сработке аларма появлялась новая строка с событием, а не изменялось у текущей строки время и комментарий?

Re: Алармы

СообщениеДобавлено: Пн июн 08, 2015 3:10 pm
Starley
может IndirectTag поможет?

Re: Алармы

СообщениеДобавлено: Пн июн 08, 2015 4:49 pm
SMV
Starley писал(а):может IndirectTag поможет?

А по подробней можно? :)

Re: Алармы

СообщениеДобавлено: Чт июн 18, 2015 4:52 pm
xonyx
а я создавал текстовый файл, в котором:
1 строка: Combobox, nnn (nnn - количество тегов, которые описаны ниже ниже)
2 строка: тег1, 0
3 строка: тег2, 0
....
n строка: тегn,0

В интаче создавал combobox, в который при загрузке проекта подкидывал этот файлик.
и был скрипт, который запускался при условии активности аварии в определенной группе (например, по состоянию $System.AlarmDscUnackCount<>0 типа On true и while true)
в теле скрипта циклом перебирал строчки combobox и делал с ними, что хотел. (я запускал звук)
Вот сам скрипт:
Код: Выделить всё
DIM AppDir AS MESSAGE;
DIM str AS MESSAGE;
DIM i AS INTEGER;

str = InfoInTouchAppDir();   
str=str+"\ListDiscretTags.txt";
wcClear("ComboBox_TagList");
wcLoadList ( "ComboBox_TagList", str );
FOR i =1 TO KIP_Count_DiscretTags
    wcGetItem ( "ComboBox_TagList", i ,KIP_Ind_DiscretTag_Alarm.Name);
    IF KIP_Ind_DiscretTag_Alarm.UnAck AND StringRight( KIP_Ind_DiscretTag_Alarm.Comment, 1 )<>" " THEN
        AppDir = InfoInTouchAppDir();
        PlaySound(AppDir+"\alarm.wav",1);
    ENDIF;
NEXT;

Re: Re:

СообщениеДобавлено: Чт июн 18, 2015 5:51 pm
xonyx
SMV писал(а):
Evgeny писал(а):И другой вопрос: Если к одной дискретной переменной привязан аларм и его значение, т.е. комментарий можно изменить в скрипте с помощью AlarmComment, то как сделать, чтобы в AlarmViewerCTRL при сработке аларма появлялась новая строка с событием, а не изменялось у текущей строки время и комментарий?

Тип отображения не summary, а historical, по-моему, аварии в данном случае будут выводится в порядке поступления.
Или же использовать переменную, скриптом меняя ее значение "туда-обратно", дабы зафиксировать ее изменение.