Добрый день!
Стоит задача организовать диагностику блинк-кодом (как на авто).
Контроллер ПЛК110[М02] + модули AI.
В программе написаны уставки для аналог. входов, при превышении уставки в retain массив (Alarms_mass:ARRAY [0..3] OF INT) записывается число.
Каждому событию присвоено свое число (Avar_s).
IF Alarm_123.Avar_s <> Alarms_mass[0] THEN
Alarms_mass[3]:=Alarms_mass[2];
Alarms_mass[2]:=Alarms_mass[1];
Alarms_mass[1]:=Alarms_mass[0];
Alarms_mass[0]:=Alarm_123.Avar_s;
END_IF;
При нажатии на диагностическую кнопку (сидит на дискретном входе) необходимо вытащить число Alarms_mass[1] и воспроизвести соответствующий блинк-код (лампа на дискретном выходе), далее Alarms_mass[2] -> блинк, далее Alarms_mass[3] - > блинк.
Например
Alarms_mass[1]=21 - блинк код: 2 коротких, пауза, 1 короткий;
.....
Alarms_mass[2]=39 - блинк код: 3 коротких, пауза, 9 коротких.

Вопрос:
1. как организовать блинк-коды?
писать с помощью TON и TOF слишком громоздко, 17 событий, соответственно 17 блинк-кодов;
2. может быть каким то образом можно прикрутить матрицу или массив?
вытаскивание чисел, сравнение с номером блинка, последовательное возпроизведение я сделаю без проблем.
3. буду признателен, если найдется что то похожее в качестве примера.

Всем спасибо за ответы.