gpt4 book ai didi

timer - 结构化文本中的暂停计时器

转载 作者:行者123 更新时间:2023-12-01 09:20:22 26 4
gpt4 key购买 nike

当不再要求计时器运行时,我需要能够暂停计时器并保留它的 ET 值。当接近开关的输入不存在时,计时器会计时,但我只希望它在向前输送 Material 的泵运行时计时。泵可能只运行 30 秒,但 prox 开关可能需要 120 秒抽走,因此需要运行 4 次泵才能检测到任何 Material 。

如果有帮助,我正在使用 Codesys v2.3

到目前为止我有:

IF Motor AND NOT Proxy.P1 THEN (*If the motor is running and the proxy doesn't energise, then start that proxy's timer*)
Proxy.P1_Timer.IN:= TRUE;
ELSE
Proxy.P1_Timer.IN:=FALSE;
END_IF

但上述情况会导致 ET 值在 Motor 关闭时重置,不仅在 Proxy.P1 变为 TRUE 时。 ET 仅应在 Proxy.P1 设置为 TRUE

时重置

对此有何建议?我很惊讶 FB 上不仅有保留选项。

最佳答案

这是一个 TON_Pausable。

TON_Pausable 的行为就像普通的 TON。此外,TON_Pausable 通过 PAUSE 输入暂停,IN 在暂停时必须保持为真。

FUNCTION_BLOCK TON_Pausable
VAR_INPUT
IN : BOOL;
PT : TIME;
PAUSE : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
ET : TIME;
END_VAR
VAR
rtPause : R_TRIG;
tTimePaused : TIME;
ton : TON;
END_VAR

IF NOT IN THEN
tTimePaused := T#0s;
END_IF

rtPause(CLK := PAUSE);

IF rtPause.Q THEN
tTimePaused := tTimePaused + ton.ET;
END_IF

ton(IN := IN AND NOT PAUSE, PT := PT - tTimePaused);

Q := ton.Q;
ET := tTimePaused + ton.ET;

这样逻辑就被封装了,可以重用了。

关于timer - 结构化文本中的暂停计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com