Статьи / KA068 /
Laurent-5/5G: программируемая логика CAT + Ke-скрипты
§ 68. Laurent-5/5G: программируемая логика CAT + Ke-скрипты
|
Дмитрий Иванов, 25 Апреля 2023
|
Есть два события CAT по входным линиям IN_1 и IN_2.
Возможно ли при срабатывании события по IN_2 прерывать (игнорировать) обработку события на IN_1 на некоторое определенное время (например, 10 секунд)?
Итак, имеем два CAT события, которые оба управляют реле RELE_1 (в частности, переключают его в противоположенное состояние).
См. описание Ke-команды $KE,REL.

Если на входе IN_1 или IN_2 появится сигнал (переход 0 → 1) - то реле RELE_1 изменит свое состояние.
А нужно сделать так что бы если сработало CAT событие под номером 2 первое CAT событие должно стать
неактивным на 10 секунд (перестать реагировать на появление сигнала по IN_1).
В качестве решения можно использовать команду активации / деактивации CAT события $KE,CAT,SET. Однако, возникает вопрос - как организовать задержку по времени в 10 сек?
Одним из путей решения такой задачи является использование Ke-скриптов. Рассмотрим на примере.
В WEB интерфейсе модуля заходим в раздел "Ke-скрипты".

В модуле можно создать до 10 шт так называемых "Ke-скриптов". Скрипт состоит из списка обычных Ke-команд и дополнительных служебных команд,
в частности, управляющих задержкой выполнения Ke-команд из списка.
Сохраненный скрипт можно запустить на выполнение с помощью Ke-команды. Скрипты выполняются в отдельном потоке не связанном с выполнением команд из события CAT.
Т.е. задержка не будет блокировать выполнение других задач.
Если создать Ke-скрипт со следующим содержимым:
$KE,CAT,1,SET,OFF
wait 10
$KE,CAT,1,SET,ON
То при запуске скрипта сначала будет выключено CAT событие с ID=1, далее интерпретатор
скрипта сделает паузу на 10 секунд (служебная команда WAIT) и потом снова включит (активирует) CAT событие с ID=1.

В конце следует нажать на кнопку "Сохранить" что бы скрипт был записан в энергонезависимую память модуля.
Доработаем реакцию на CAT событие ID=2 добавив Ke-команду запуска только что созданного Ke-скрипта:
$KE,SCR,1,RUN
Теперь список CAT событий должен выглядеть следующим образом:

Что же теперь произойдет если сработает 2-ое событие CAT? Помимо управления реле мы запустим выполнение Ke-скрипта который
тут же деактивирует 1-ое CAT событие (иконка статуса станет красной с надписью OFF).

Если теперь попробовать подать сигнал на линию IN_1 - то модуль обнаружит сигнал но 1-ое CAT событие будет "молчать", т.к. оно выключено.
После паузы в 10 секунд (служебная команда wait 10) будет исполнена последняя команда в скрипте, а именно включение 1-го CAT события.
Теперь появление сигнала на IN_1 приведет к срабатыванию события и управлению реле.
© Дмитрий Иванов
25 Апреля 2023
https://kernelchip.ru