EnglishУкраїнськаmRussian
Login/New
Topic with many replies

[Alarms][Сигнализация]Есть ли способ формирования алармов без виджетов?


Author Message
Written on: 12. 05. 2012 [10:12]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
Чем в концепции OpenSCADA отличаются сообщения от алармов ?
Written on: 12. 05. 2012 [10:14]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
Сообщения можно смотреть в Архиве в Конфигураторе, в графическом элементе Протокол. А где смотреть список нарушений/алармов ?
Written on: 12. 05. 2012 [10:20]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
б) куда будет записываться строка <"1:"+alrm_mess> ?


Опытным путем установлено, что никуда никакое сообщение не посылается. Просто переменной f_err присваивается некое значение, а в графическом элементе обрабатывается

JAVASCRIPT
if( pErrCode != pErr )
{
  pErrCode = pErr;
  if( pErrCode==1 || pErrCode==2 ){ if(redEVAL != EVAL_BOOL && redEVAL) alarm = "100|"+pName+"|"+spName+" - отказ.|5"; else alarm = "100|"+pName+"||1"; }
  else if( pErrCode==3 )	{ alarm = "50|"+pName+"|"+spName+" выше допустимой границы.|7"; }
  else if( pErrCode==4 )	{ alarm = "50|"+pName+"|"+spName+" ниже допустимой границы.|7"; }
  else if( pErrCode==5 )	{ alarm = "10|"+pName+"|"+spName+" выше нормы.|7"; }
  else if( pErrCode==6 )	{ alarm = "10|"+pName+"|"+spName+ " ниже нормы.|7"; }
  else if( alarmSt&0x100 ) alarm = "1|"+pName+"||1";
}
if( !pErrCode && alarmSt&0x100 && !(alarmSt&0x10000) ) alarm = "";


Вопрос:

Чем обусловлен уровень аларма? Почему указаны числа 50, 10 ?
Written on: 12. 05. 2012 [10:26]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
2) Вариант генерации аларма виджетом подходит для случая, когда в наличии есть все 6 страниц "КМ101", "КМ102" и т.д. и все привязки к параметрам определены на момент рантайма.
Если использовать вариант страницы-шаблона (для нашего случая имеем 6 одинаковых агрегатов КМ, отличающихся номером, можно в странице-шаблоне привязать все "хвосты"-параметры, а "голову" менять динамически в рантайме при вызове нужной мнемосхемы, КМ101.Температура_воды, КМ102.Температура_воды - привязываем .Температура_воды, а префикс КМ101 или КМ102 добавляем динамически в рантайме при вызове мнемосхемы), то полный путь к параметру в лучшем случае определен только для одного агрегата, мнемосхему которого сейчас и отображаем.... Надеюсь понятно объяснил...


Я правильно понял ? Для генерации аларма все страницы должны БЫТЬ в наличии, с привязками, корректные и т.д. и обрабатываться в фоне согласно мануалу:

Учитывая то, что обработка условий сигнализации осуществляется в виджетах, страницы, содержащие объекты сигнализации, должны исполняться в фоне, не зависимо от открытости их в данный момент. Это осуществляется путём установки флага исполнения страницы в фоне.

Хотя механизм сигнализации и построен в среде визуализации, возможность формирования невизуальных элементов сигнализации остаётся, например, путём создания страницы, которая никогда не будет открываться.
Written on: 12. 05. 2012 [11:01]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
"s60ru" wrote:

б) куда будет записываться строка <"1:"+alrm_mess> ?


Опытным путем установлено, что никуда никакое сообщение не посылается. Просто переменной f_err присваивается некое значение, а в графическом элементе обрабатывается

JAVASCRIPT
if( pErrCode != pErr )
{
  pErrCode = pErr;
  if( pErrCode==1 || pErrCode==2 ){ if(redEVAL != EVAL_BOOL && redEVAL) alarm = "100|"+pName+"|"+spName+" - отказ.|5"; else alarm = "100|"+pName+"||1"; }
  else if( pErrCode==3 )	{ alarm = "50|"+pName+"|"+spName+" выше допустимой границы.|7"; }
  else if( pErrCode==4 )	{ alarm = "50|"+pName+"|"+spName+" ниже допустимой границы.|7"; }
  else if( pErrCode==5 )	{ alarm = "10|"+pName+"|"+spName+" выше нормы.|7"; }
  else if( pErrCode==6 )	{ alarm = "10|"+pName+"|"+spName+ " ниже нормы.|7"; }
  else if( alarmSt&0x100 ) alarm = "1|"+pName+"||1";
}
if( !pErrCode && alarmSt&0x100 && !(alarmSt&0x10000) ) alarm = "";


Вопрос:

Чем обусловлен уровень аларма? Почему указаны числа 50, 10 ?



1) Вышеприведенный код повышает уровень нарушений , но не посылает сообщений , которые можно наблюдать в Архиве, архивировать и т.д. Это просто не доделано или имеет некий определенный смысл ?
2) Можно как-нибудь получить количество текущих неквитированных нарушений ? (целочисленное значение - например 3 аларма: КШ6.Авария, КШ7.Авария, Е1.Аварийный_уровень)
Written on: 13. 05. 2012 [20:33]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
Регистрируется ли системой факт квитирования оператором нарушений ? Можно это архивировать с указанием имени пользователя ?
Written on: 17. 05. 2012 [09:41]
Maxim
Maxim Lisenko
Contributor
registered since: 18.08.2008
Posts: 141
Большинство задаваемых Вами вопросов аналогичны предыдущим, из этого следует, что вы не желаете вдумчиво читать документацию и предыдущие ответы Романа, а также разбираться в доступных демонстрационных конфигурациях. Советую все же сделать это прежде чем с наскоку пытаться все понять и осмыслить, выливая сюда кучу вопросов...
Written on: 18. 05. 2012 [17:34]
Aleksey
Aleksey Popkov
Contributor
registered since: 31.07.2008
Posts: 326
"Maxim" wrote:

Большинство задаваемых Вами вопросов аналогичны предыдущим, из этого следует, что вы не желаете вдумчиво читать документацию и предыдущие ответы Романа, а также разбираться в доступных демонстрационных конфигурациях. Советую все же сделать это прежде чем с наскоку пытаться все понять и осмыслить, выливая сюда кучу вопросов...

Точно.
Written on: 18. 05. 2012 [21:40]
s60ru
Антон Петров
registered since: 10.05.2012
Posts: 141
TO Maxim и Aleksey :

поразбирался еще с OpenSCADA ... некоторые вопрос решились опытным путем, некоторые остались....

по дискретному тегу:
1) занести сообщение о неисправности в журнал
2) обозначить цветом объект с неисправностью на мнемосхеме
3) привлечь внимание оператора звуковой сигнализацией
4) для контроля наличия нарушений я ориентируюсь на зеленый круг в правом нижнем углу окна рантайма (есть ли альтернативный способ ?)

http://s2.hostingkartinok.com/uploads/images/2012/05/2a44307403eb21b073b43ef6ad31b81f.png

для реализации нашел
int message( string cat, int level, string mess ); — формирование системного сообщения <mess> с категорией <cat>, уровнем <level> (-7...7). Отрицательное значение уровня формирует нарушения (Alarm)


предполагаю одной функцией и в журнал запись о неисправности занести и уровень нарушений поднять (зеленый круг станет желтым, сработает звуковая сигнализация)
вызываю следующий код в обработке виджета, куда привязан тег Кран1.Авария (условно)
JAVASCRIPT
SYS.message( "Кран-1", -7, "Авария" );


В журнале появляется сообщение, уровень 7, но вот круг так и остается зеленым ....
а как же
message( string cat, int level, string mess ); .... (-7...7) ....Отрицательное значение уровня формирует нарушения (Alarm)
????

[This article was edited 1 times, at last 18.05.2012 at 21:43.]
Written on: 22. 05. 2012 [07:47]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
http://wiki.oscada.org/Doc/QuickStart дополнен на предмет этого и ряда других вопросов!

Learn, learn and learn better than work, work and work.



11655