Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



Статьи / KA069 / Laurent-5/5G: временные задержки с помощью Ke-скриптов



§ 69. Laurent-5/5G: временные задержки с помощью Ke-скриптов

Дмитрий Иванов, 06 Июня 2023



Задача



Необходимо реализовать срабатывание реле модуля два раза подряд с жестко заданным таймингом между срабатываниями - включить реле на 1200 мс, затем выключить на 500 мс, снова включить на 750 мс, выключить.




Что имеем на старте?




Нужно выполнить операцию включения / выключения реле с точными временными задержками. Для управления реле есть Ke-команда $KE,REL но она не предусматривает сама по себе выполнение последовательности действий с жесткими задержками. Максимум - это автоматическое переключение реле в исходное состояние через N секунд (шаг секунда) а по условиям задачи нужен шаг в миллисекундах.

Если двигаться этим путем - потребуется подавать команду "включить" или "выключить" реле самостоятельно выдерживая нужные тайминги (в ручную или программно, что так же не эффективно в виду возможных задержек по линии связи). Хотелось бы что модуль сам выполнил эти операции с четкими временными задержками отсчитываемыми на его стороне.

Так что обычный путь решения тут не подойдет.




Решение: Ke-скрипты




В качестве решения идеально подойдет технология Ke-скриптов как раз созданная для решения подобного рода задач. В WEB интерфейсе модуля заходим в раздел "Ke-скрипты".

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-скрипта с задержками


В конце следует нажать на кнопку "Сохранить" что бы скрипт был записан в энергонезависимую память модуля. Ke-скрипт можно запустить / остановить из WEB интерфейса (запуск единожды, N раз либо в бесконечном цикле) либо Ke-командой.




Ke-команда для запуска только что созданного Ke-скрипта выглядит следующим образом (параметр 1 означает что нужно запустить скрипт с ID = 1. Всего можно создать до 10 скриптов):

$KE,SCR,1,RUN

Полный список всех Ke-команд управления поддерживаемых модулем можно найти в соответствующем документе Описание Ke-команд управления



Как обычно, Ke-команду (открытый API модуля) можно отправить в модуль различными способами включая RS-232, TCP порт 2424, HTTP GET запрос в виде URL ссылки, систему логических правил CAT или Ke-Облако.


Создание Ke-скрипта с задержками



Пример вызова URL команды в виде HTTP GET запроса:

http://192.168.0.101/cmd.cgi?psw=Laurent&cmd=SCR,1,RUN

Создание Ke-скрипта с задержками


По аналогии, с этим примером можно создавать и более сложные последовательности команд с временными задержками. Можно так же организовать генератор прямоугольных импульсов с нужной частотой запустив Ke-скрипт на нужное кол-во повторений (вплоть до "бесконечного" проигрывания).


© Дмитрий Иванов
06 Июня 2023
https://kernelchip.ru



© KERNELCHIP 2006 - 2024