Статьи / KA069 /
Laurent-5/5G: временные задержки с помощью Ke-скриптов
§ 69. Laurent-5/5G: временные задержки с помощью Ke-скриптов
|
Дмитрий Иванов, 06 Июня 2023
|
Необходимо реализовать срабатывание реле модуля два раза подряд с жестко заданным таймингом между
срабатываниями - включить реле на 1200 мс, затем выключить на 500 мс, снова включить на 750 мс, выключить.
Нужно выполнить операцию включения / выключения реле с точными временными задержками.
Для управления реле есть Ke-команда $KE,REL но она не предусматривает сама по себе выполнение последовательности действий с жесткими задержками.
Максимум - это автоматическое переключение реле в исходное состояние через N секунд (шаг секунда) а по условиям задачи нужен шаг в миллисекундах.
Если двигаться этим путем - потребуется подавать команду "включить" или "выключить" реле самостоятельно выдерживая нужные тайминги
(в ручную или программно, что так же не эффективно в виду возможных задержек по линии связи).
Хотелось бы что модуль сам выполнил эти операции с четкими временными задержками отсчитываемыми на его стороне.
Так что обычный путь решения тут не подойдет.
В качестве решения идеально подойдет технология Ke-скриптов как раз созданная для решения подобного рода задач. В WEB интерфейсе модуля заходим в раздел "Ke-скрипты".

В модуле можно создать до 10 шт так называемых "Ke-скриптов". Скрипт состоит из списка обычных Ke-команд и дополнительных служебных команд,
в частности, управляющих задержкой выполнения Ke-команд из списка (например, команда wait для задержек измеряемых в секундах либо wait_ms для задержек в миллисекундах).
Сохраненный скрипт можно запустить на выполнение с помощью Ke-команды $KE,SCR,RUN. Ke-скрипты выполняются в отдельном автономном потоке.
Т.е. задержки не будет блокировать выполнение других задач.
Если создать Ke-скрипт со следующим содержимым:
$KE,REL,1,1
wait_ms 1200
$KE,REL,1,0
wait_ms 500
$KE,REL,1,1
wait_ms 750
$KE,REL,1,0
То при запуске скрипта сначала будет включено 1-ое реле ($KE,REL,1,1), далее пауза в 1200 мс, выключение реле ($KE,REL,1,0), пауза в 500 мс и т.д.
Перенесем эти команды в поле 1-го Ke-скрипта в WEB интерфейсе:

В конце следует нажать на кнопку "Сохранить" что бы скрипт был записан в энергонезависимую память модуля.
Ke-скрипт можно запустить / остановить из WEB интерфейса (запуск единожды, N раз либо в бесконечном цикле) либо Ke-командой.
Ke-команда для запуска только что созданного Ke-скрипта выглядит следующим образом
(параметр 1 означает что нужно запустить скрипт с ID = 1. Всего можно создать до 10 скриптов):
$KE,SCR,1,RUN
Как обычно, Ke-команду (открытый API модуля) можно отправить в модуль различными способами включая RS-232, TCP порт 2424,
HTTP GET запрос в виде URL ссылки, систему логических правил CAT или
Ke-Облако.

Пример вызова URL команды в виде HTTP GET запроса:
http://192.168.0.101/cmd.cgi?psw=Laurent&cmd=SCR,1,RUN

По аналогии, с этим примером можно создавать и более сложные последовательности команд с временными задержками.
Можно так же организовать генератор прямоугольных импульсов с нужной частотой запустив Ke-скрипт на нужное кол-во повторений (вплоть до "бесконечного" проигрывания).
© Дмитрий Иванов
06 Июня 2023
https://kernelchip.ru