
Задача - Составить программу для аварийной световой и звуковой сигнализации, при следующих условиях.
Состояние Тревоги (Аварийного предупреждения) описывается следующей диаграммой:
- Alarm OFF - нет активной и неподтвержденной тревоги (Alarm);
- Alarm ON Not Ack - есть активная неподтвержденная тревога;
- Alarm ON Ack - есть активная тревога, но оператор её не подтвердил (не квитировал, NOT Acknowledge)
- Alarm OFF Not Ack - активных тревог нет, но оператор не сделал подтверждение последней тревоги;
Тревога переходит с состояние в состояние по 2.м типам события:
- возникновение или пропадание аварийного сигнала;
- команда подтверждения тревоги оператором (квитирование тревоги, Acknowledge).
Световой индикатор может быть в 3-х состояниях:
- не горит, при Alarm OFF, то есть нет активных тревог;
- мигает, Alarm ON Not ACK или Alarm OFF Not Ack, то есть когда есть неподтвержденные тревоги;
- горит, при Alarm ON Ack, то есть когда есть активные тревоги но они подтверждены оператором;
Звуковая сигнализация может быть в 2-х состояниях:
- включена, есть неподтвержденные тревоги;
- отключена, когда нет неподтвержденных тревог;
Диаграмма работы световой и звуковой сигнализации приведена на рисунке:

Решение 1 - LD
В качестве аварийного сигнала будем использовать переменную Alarm, кнопки подтверждения - cmdAck, выход на звуковую сигнализацию - AlarmSong, на световой индикатор - AlarmLamp.
Один из вариантов программы на LD (ПЛК Schneider Electric Modicon M340/Premium/Quantum) приведен ниже:

В программе использована переменная Imp_1_05, которая включается на 1 секунду с периодичностью 1.5 с. Программа для генерации такого импульсного сигнала приведена в теме "Генерация импульсов". Вместо неё можно использовать системный меандр %S6.
Учитывая, что кнопка квитирования аварии cmdAck без фиксации, в программе использована промежуточная переменная alarmAck.
Опишем коротко работу программы. При активации аварийного сигнала включается AlarmSong. Катушка с фиксацией .(S). не даст отключиться звуковой сигнализации, даже если аварийный сигнал пропадет. Но если квитирование произошло (alarmAck=TRUE) . включать звуковую сигнализацию повторно не нужно, этим объясняется нормально замкнутый контакт в разрыве.
Работающий AlarmSong говорит о состоянии "Alarm ON NOT Ack" или "Alarm OFF Not ACK". В этом состоянии световой индикатор AlarmLamp должен мигать. Это реализуется последовательно соединенными контактами AlarmSong и Imp_1_05. В состоянии "Alarm ON Ack" индикатор должен гореть, что обеспечивается параллельно подключенной цепью с последовательными контактами Alarm и alarmAck.
При нажатии кнопки cmdAck, состояние квитирования сохраняется в alarmAck одновременно со сбросом звукового сигнала. Обнуляется состояние квитирования только при переходе в состояние "Alarm OFF".
Решение 2 - ST
В качестве аварийного сигнала будем использовать переменную Alarm, кнопки подтверждения - cmdAck, выход на звуковую сигнализацию .
AlarmSong, на световой индикатор - AlarmLamp. Один из вариантов программы на ST приведен ниже

Это решение базируется на использовании автоматного подхода. Для определения каждого состояния тревоги, описанного выше, выделена переменная AlarmState, которая принимает следующие значения:
- 0 - Alarm OFF
- 1 - Alarm ON Not Ack
- 2 - Alarm ON Ack
- 3 - Alarm OFF Not Ack
другие значения . неопределенность
Для определения состояния тревоги используется программная структура CASE. На каждом из состояний определены значения AlarmSong
и AlarmAlamp , а также условия перехода в другое состояние |