PDA

Просмотр полной версии : Таймер с паузами.



Клаус
31.10.2023, 17:48
Всем доброго времени суток. Помогите советом. В общем нужно реализовать следующий момент. При подаче разрешающего сигнала на входе должен запускаться цикл включения/выключения клапана (для удобства 5s включен, 10s выключен) и до момента False на входе. Попробовал сделать это с помощью FB Blink, работает не совсем корректно, т.к. на выходе, в зависимости от того в какой момент поступил сигнал False может дать либо True либо False. Хотя в описание к Blink написано, что изначально у него False. Можно ли добиться стабильного сигнала с выхода Blink при подаче False в любой момент времени? Или как можно реализовать такой алгоритм? Что-то с помощью TP, TON, TOF не могу понять

1exan
31.10.2023, 18:33
Всем доброго времени суток. Помогите советом. В общем нужно реализовать следующий момент. При подаче разрешающего сигнала на входе должен запускаться цикл включения/выключения клапана (для удобства 5s включен, 10s выключен) и до момента False на входе. Попробовал сделать это с помощью FB Blink, работает не совсем корректно, т.к. на выходе, в зависимости от того в какой момент поступил сигнал False может дать либо True либо False. Хотя в описание к Blink написано, что изначально у него False. Можно ли добиться стабильного сигнала с выхода Blink при подаче False в любой момент времени? Или как можно реализовать такой алгоритм? Что-то с помощью TP, TON, TOF не могу понять

Посмотрите GEN_PULSE из библиотеки oscat

EFrol
31.10.2023, 19:24
На ST будет как-то так.
- импульс на startWater запустит startCycle
- через 5сек вкл. tmrHigh и еще через 10сек вкл. tmrLow, который сбросит startCycle
- если startWater будет активен, все повторится
- соответственно сигнал снимаете с (startCycle AND NOT tmrHigh.Q)



tmrHigh: TON := (PT := T#5s);
tmrLow: TON := (PT := T#10s);
startCycle: BOOL;

startCycle := (startCycle OR startWater) AND NOT tmrLow.Q;
tmrHigh(IN := startCycle); tmrLow(IN := tmrHigh.Q);

Клаус
31.10.2023, 20:04
Всем спасибо. Сделал GEN_Pulse'ом.