PDA

Просмотр полной версии : alarmmanger



Zerling
09.04.2020, 10:31
Накопились вопросы по алярмам...

Как узнать о статусе тревоги,к примеру по ее id, в теле программы?
Зачем нужны триггерные переменные и как ими пользоваться? имеется ввиду столбец настроек группы тревог
В настройке класса алярмов есть 3 варианта на выбор(переменная,выполнить, вызов). Если выбрать "выполнить", то он просит указать экзешник:confused:
Как-нибудь можно увязать меж собой alarmmanger и .byModbusError, типа ручками не забивать чтоб?

на скрине - ткните носом где это?
upd если в сети модбас не будет хоть одного устройства, то частота приема-опроса становится около 20 сек. ЧЯДНТ и как с этим бороться?

Евгений Кислов
09.04.2020, 10:56
Добрый день.


Как узнать о статусе тревоги,к примеру по ее id, в теле программы?

Вероятно, есть возможность это сделать с помощью библиотеки AlarmManager. Но на нее нет документации, только пример, в котором требуется разбираться:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/04_3S/AlarmManager.package


Зачем нужны тригерные переменные и как ими пользоваться?
В настройке класса алярмов есть 3 варианта на выбор(переменная,выполнить, вызов). Если выбрать "выполнить", то он просит указать экзешник
Как-нибудь можно увязать меж собой alarmmanger и .byModbusError, типа ручками не забивать чтоб?

1. Создаете функцию с названием типа MB_ERROR_TO_WSTRING, в ней через оператор CASE формируете строковое описание для каждой ошибки. Добавляете вызов этой функции в программу.
2. В настройках тревог добавляете тревогу с условием .byModbusError <> IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS (если обмен по Modbus TCP - то с IoDrvModbusTcp.MB_ErrorCodes.RESPONSE_SUCCESS)
3. Задаете тревоге текст типа 'Ошибка Modbus'
4. К триггерной переменной тревоги привязываете переменную типа WSTRING, которую получили в результате вызова функции из п. 1.
5. В настройках таблицы тревог добавляете столбец для триггерной переменной.

В итоге - при возникновении ошибки Modbus в столбце Сообщение всегда появляется один и тот же текст ('Ошибка Modbus'), а в столбце триггерной переменной - описание конкретной ошибки.
При необходимости можно выводить значение триггерной переменной прямо в столбце Сообщение, см. в справке про заполнители для текстов алармов (<LATCH1>):
https://help.codesys.com/webapp/_cds_obj_alarm_group;product=codesys;version=3.5.1 5.0


на скрине - ткните носом где это?

Скрин из какой-то старой версии справки, сейчас входная и выходная переменная - это одна и та же переменная.

48351


если в сети модбас не будет хоть одного устройства, то частота приема-опроса становится около 20 сек. ЧЯДНТ и как с этим бороться?

Уточните, какой контроллер и версию CODESYS вы используете?
Описанное поведение характерно для старых версий, вы точно используете СПК1хх [М01]? (с учетом того, что тему вы создали в его разделе)

Zerling
13.04.2020, 08:10
Да, СПК1хх [М01] + CDS3.5 SP11 Patch 5 Hotfix 4 , вот только я не спешу в проект ставить новые бибки, т.к. мне нужно будет проект еще и на старые спк переносить. А потом ловить баги от новых библиотек для новых спк((((

Благодарю за помощь! буду разбираться!