Автор |
Повідомлення |
Повідомлення створено: 12. 05. 2012 [10:12]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
Чем в концепции OpenSCADA отличаются сообщения от алармов ?
|
Повідомлення створено: 12. 05. 2012 [10:14]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
Сообщения можно смотреть в Архиве в Конфигураторе, в графическом элементе Протокол. А где смотреть список нарушений/алармов ?
|
Повідомлення створено: 12. 05. 2012 [10:20]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
б) куда будет записываться строка <"1:"+alrm_mess> ?
Опытным путем установлено, что никуда никакое сообщение не посылается. Просто переменной f_err присваивается некое значение, а в графическом элементе обрабатывается
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 ?
|
Повідомлення створено: 12. 05. 2012 [10:26]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
2) Вариант генерации аларма виджетом подходит для случая, когда в наличии есть все 6 страниц "КМ101", "КМ102" и т.д. и все привязки к параметрам определены на момент рантайма.
Если использовать вариант страницы-шаблона (для нашего случая имеем 6 одинаковых агрегатов КМ, отличающихся номером, можно в странице-шаблоне привязать все "хвосты"-параметры, а "голову" менять динамически в рантайме при вызове нужной мнемосхемы, КМ101.Температура_воды, КМ102.Температура_воды - привязываем .Температура_воды, а префикс КМ101 или КМ102 добавляем динамически в рантайме при вызове мнемосхемы), то полный путь к параметру в лучшем случае определен только для одного агрегата, мнемосхему которого сейчас и отображаем.... Надеюсь понятно объяснил...
Я правильно понял ? Для генерации аларма все страницы должны БЫТЬ в наличии, с привязками, корректные и т.д. и обрабатываться в фоне согласно мануалу:
Учитывая то, что обработка условий сигнализации осуществляется в виджетах, страницы, содержащие объекты сигнализации, должны исполняться в фоне, не зависимо от открытости их в данный момент. Это осуществляется путём установки флага исполнения страницы в фоне.
Хотя механизм сигнализации и построен в среде визуализации, возможность формирования невизуальных элементов сигнализации остаётся, например, путём создания страницы, которая никогда не будет открываться.
|
Повідомлення створено: 12. 05. 2012 [11:01]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
"s60ru" wrote:
б) куда будет записываться строка <"1:"+alrm_mess> ?
Опытным путем установлено, что никуда никакое сообщение не посылается. Просто переменной f_err присваивается некое значение, а в графическом элементе обрабатывается
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.Аварийный_уровень)
|
Повідомлення створено: 13. 05. 2012 [20:33]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
Регистрируется ли системой факт квитирования оператором нарушений ? Можно это архивировать с указанием имени пользователя ?
|
Повідомлення створено: 17. 05. 2012 [09:41]
|
Maxim
Maxim Lisenko
Contributor
Зареєстрован(а) с: 18.08.2008
Повідомлення: 141
|
Большинство задаваемых Вами вопросов аналогичны предыдущим, из этого следует, что вы не желаете вдумчиво читать документацию и предыдущие ответы Романа, а также разбираться в доступных демонстрационных конфигурациях. Советую все же сделать это прежде чем с наскоку пытаться все понять и осмыслить, выливая сюда кучу вопросов...
|
Повідомлення створено: 18. 05. 2012 [17:34]
|
Aleksey
Aleksey Popkov
Contributor
Зареєстрован(а) с: 31.07.2008
Повідомлення: 326
|
"Maxim" wrote:
Большинство задаваемых Вами вопросов аналогичны предыдущим, из этого следует, что вы не желаете вдумчиво читать документацию и предыдущие ответы Романа, а также разбираться в доступных демонстрационных конфигурациях. Советую все же сделать это прежде чем с наскоку пытаться все понять и осмыслить, выливая сюда кучу вопросов...
Точно.
|
Повідомлення створено: 18. 05. 2012 [21:40]
|
s60ru
Антон Петров
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
|
TO Maxim и Aleksey :
поразбирался еще с OpenSCADA ... некоторые вопрос решились опытным путем, некоторые остались....
по дискретному тегу:
1) занести сообщение о неисправности в журнал
2) обозначить цветом объект с неисправностью на мнемосхеме
3) привлечь внимание оператора звуковой сигнализацией
4) для контроля наличия нарушений я ориентируюсь на зеленый круг в правом нижнем углу окна рантайма (есть ли альтернативный способ ?)
для реализации нашел
int message( string cat, int level, string mess ); — формирование системного сообщения <mess> с категорией <cat>, уровнем <level> (-7...7). Отрицательное значение уровня формирует нарушения (Alarm)
предполагаю одной функцией и в журнал запись о неисправности занести и уровень нарушений поднять (зеленый круг станет желтым, сработает звуковая сигнализация)
вызываю следующий код в обработке виджета, куда привязан тег Кран1.Авария (условно)
SYS.message( "Кран-1", -7, "Авария" );
В журнале появляется сообщение, уровень 7, но вот круг так и остается зеленым ....
а как же
message( string cat, int level, string mess ); .... (-7...7) ....Отрицательное значение уровня формирует нарушения (Alarm) ????
[Повідомлення редагувалось 1 раз(ів), останній раз 18.05.2012 в 21:43.]
|
Повідомлення створено: 22. 05. 2012 [07:47]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
http://wiki.oscada.org/Doc/QuickStart дополнен на предмет этого и ряда других вопросов!
Learn, learn and learn better than work, work and work.
|