Полезные советы — различия между версиями

Материал из 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). Пример скрипта:

Rising edge.png

Создание переключателя

Элемент слайдер можно использовать для управления типа открыть- закрыть, вкл.-выкл. и т.п. Для этого нужно "привязать" его к битовому регистру и указать опцию "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