Полезные советы — различия между версиями
Материал из WebHMI Wiki
(→Запуск скрипта по фронта или срезу дискретного сигнала) |
|||
Строка 6: | Строка 6: | ||
== Создание переключателя == | == Создание переключателя == | ||
Элемент слайдер можно использовать для управления типа открыть- закрыть, вкл.-выкл. и т.п. Для этого нужно "привязать" его к битовому регистру и указать опцию "user can change value" на дешборде. Также такой слайдер наглядно может отобразить положение переключателя (ручн. - акт., местное - дистанционное управение), заслонки , шибера и т.д. | Элемент слайдер можно использовать для управления типа открыть- закрыть, вкл.-выкл. и т.п. Для этого нужно "привязать" его к битовому регистру и указать опцию "user can change value" на дешборде. Также такой слайдер наглядно может отобразить положение переключателя (ручн. - акт., местное - дистанционное управение), заслонки , шибера и т.д. | ||
+ | |||
+ | == Реализация таймера - задержки включения (TON) == | ||
+ | Таймер TON начинает отчет пока вход = 1, по истечении времени задержки выход тоже устанавливается в "1". | ||
+ | <syntaxhighlight lang="Lua"> | ||
+ | TIMER_DELAY = 20; -- задержка таймера 20 сек. | ||
+ | tmr = false; -- начальное состояние - отсчет времени не идет | ||
+ | tmrStartTime = 0; -- время начала работы таймера | ||
+ | -- | ||
+ | function main (userId) | ||
+ | -- переменные | ||
+ | local in_value = (GetReg(212) == 1); -- Просто бит (D301@WebHMI) | ||
+ | local now = GetReg(28); -- Текущее время (T0@WebHMI) | ||
+ | -- ПРОВЕРЯЕМ УСЛОВИЕ - СОСТОЯНИЕ ВХОДА ---------- | ||
+ | if in_value then | ||
+ | if not tmr then | ||
+ | tmr = true; | ||
+ | tmrStartTime = now; -- запомнить время начала отсчета | ||
+ | else | ||
+ | if ( now - tmrStartTime ) > TIMER_DELAY then | ||
+ | -- действие по истечении таймера | ||
+ | WriteReg("TON_out", 1); -- сигнал таймера | ||
+ | end | ||
+ | end | ||
+ | else | ||
+ | tmr = false; | ||
+ | tmrStartTime = 0; | ||
+ | WriteReg("TON_out", 0); -- сигнал таймера | ||
+ | end | ||
+ | -- КОНЕЦ | ||
+ | end | ||
+ | </syntaxhighlight> |
Версия 07:38, 9 сентября 2016
Запуск скрипта по фронта или срезу дискретного сигнала
Скрипт нужно вызываеть по изменению регистра. Внутри скрипта нужно сделать проверку текущего состояния этого регистра и выполнять соответветсующие действия либо по фронту (текущее состояние =1), либо по срезу (=0). Пример скрипта:
Создание переключателя
Элемент слайдер можно использовать для управления типа открыть- закрыть, вкл.-выкл. и т.п. Для этого нужно "привязать" его к битовому регистру и указать опцию "user can change value" на дешборде. Также такой слайдер наглядно может отобразить положение переключателя (ручн. - акт., местное - дистанционное управение), заслонки , шибера и т.д.
Реализация таймера - задержки включения (TON)
Таймер TON начинает отчет пока вход = 1, по истечении времени задержки выход тоже устанавливается в "1".
TIMER_DELAY = 20; -- задержка таймера 20 сек.
tmr = false; -- начальное состояние - отсчет времени не идет
tmrStartTime = 0; -- время начала работы таймера
--
function main (userId)
-- переменные
local in_value = (GetReg(212) == 1); -- Просто бит (D301@WebHMI)
local now = GetReg(28); -- Текущее время (T0@WebHMI)
-- ПРОВЕРЯЕМ УСЛОВИЕ - СОСТОЯНИЕ ВХОДА ----------
if in_value then
if not tmr then
tmr = true;
tmrStartTime = now; -- запомнить время начала отсчета
else
if ( now - tmrStartTime ) > TIMER_DELAY then
-- действие по истечении таймера
WriteReg("TON_out", 1); -- сигнал таймера
end
end
else
tmr = false;
tmrStartTime = 0;
WriteReg("TON_out", 0); -- сигнал таймера
end
-- КОНЕЦ
end