Есть задача отправлять СМС с текстом аварийных сообщений. Можно ли из таблицы тревог, например, вытащить ID последней тревоги?
Вид для печати
Есть задача отправлять СМС с текстом аварийных сообщений. Можно ли из таблицы тревог, например, вытащить ID последней тревоги?
Я правильно понимаю, что задача стоит следующая:
1) оповестить персонал в момент возникновения аварии;
2) текст оповещения должен содержать описание возникшей аварии?
Получается нужно дублировать все проверки тревог, которые я задал в группе тревог. А если придется что-то добавить, или изменить? Это может привести к ошибкам.
Получается правильней будет формировать код ошибки в программе и отправлять **** а в группе тревог просто проверять коды ошибок, и выдавать нужный текст в таблицу.
На текущий момент вырисовывается 2 варианта отправки СМС по активации тревоги.
Каждый со своими плюсами и минусами. Опишу оба варианта, а Вы используйте тот, который Вам больше подойдет.
Допустим есть 2 параметра, которые могут послужить причиной тревог:
- Температура в комнате (допустимый диапазон от 21 до 35 °С);
- Температура на улице (допустимый диапазон от 10 до 25 °С);
Вариант 1: Обработка аварий в коде.
Идея этого способа заключается в том, что мы объявим для каждой тревоги переменную типа BOOL.
Будем менять ее значение в коде, а в AlarmManager'e добавим тревоги типа "Дискретный".
Плюсы:
- легкий для понимания и адаптации под Ваши задачи.
Минусы:
- Необходимость писать вручную много кода;
- Небольшое дублирование кода (текст сообщения в таблице тревог и текст СМС).
Я приложил архив проекта с этим вариантом реализации к сообщению.
Пример кода:
Вариант №2 опишу отдельным сообщением.
Условия для варианта 2 те же, что и раньше:
Вариант 2: AlarmManager сообщает нам о изменении списка активных тревог
Плюсы:
- минимум вспомогательного кода;
- конфигурация тревог производится полностью через интерфейс AlarmManager'а;
- отсутствует дублирование кода;
- для использования в проекте Вам достаточно перенести к себе в проект часть примера (редактировать не придется);
Минусы:
- Для людей не знакомых с ООП разобраться как это работает будет сложно;
Я приложил архив проекта с этим вариантом реализации к сообщению.
Для интеграции примера в Ваш проект:
- перенесите директорию LastAlarmMessage в свой проект;
- добавьте библиотеку Alarm Manager Interfaces (Intern) в свой проект;
- в PLC_PRG объявите экземпляр ФБ
и добавьте вызов ФБ в телеКод:VAR
m_fb_LastAlarmMessage : GetLastAlarmMessage;
END_VAR
Код:m_fb_LastAlarmMessage();
- отправляйте СМС примерно так:
Код:// xNewAlarmActivated будет равен TRUE в течение 1 цикла ПЛК с момента активации новой тревоги.
IF m_fb_LastAlarmMessage.xNewAlarmActivated THEN
// Отправляйте СМС с текстом m_fb_LastAlarmMessage.wsMessage
;
END_IF
- AlarmManager настройте по вкусу. ФБ все равно узнает текст последней возникшей тревоги.
Для наших условий настройка выглядит так:
Вложение 36052
Много скучного описания о том, как это вообще устроено:
Если у Вас появились вопросы\замечания - пишите, мы поможем.