以下是引用IanGoh在2021/10/29 14:30:12的发言:
请问施耐德M340如何实现定时器保持功能,软件上只有TON,TOF和TP,如果要断开信号保持计时时间怎么实现,谢谢各位大佬!
你可以自己构建一个带保持的定时器,例如:
STEP1:定义新定时器的输入输出,因为需要带保持,因此必须是FB,且保持定时器当前值的变量都是静态变量。
STEP2:编写类似的程序:
IF IN=TRUE AND RESET=FALSE THEN
TON_1(IN:=NOT TON_1.Q , PT:=T#100MS);
IF timerFlag=FALSE THEN
V001:=TIME_TO_UDINT(PT);
timerFlag:=TRUE;
END_IF;
IF TON_1.Q THEN
IF (V001<>UDINT#0) THEN
V001:=V001-UDINT#100;
IF V001<=UDINT#0 THEN
Q:=TRUE;
END_IF;
V002:=V002+UDINT#100;
EV:=UDINT_TO_TIME(V002);
END_IF;
END_IF;
END_IF;
IF RESET=TRUE THEN
V001:=UDINT#0;
V002:=UDINT#0;
EV:=UDINT_TO_TIME(V002);
Q:=FALSE;
timerFlag:=FALSE;
END_IF;
对应于施耐德M340,我个人认为,除了少数的变量转换函数有差别外,没有更多的差别了,你可以对照着写一个。
HAVE FUN!