以下是引用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!