VAR
MY_TON: TON;
END_VAR
(* standard.library should be added to the project *)
然后你可以使用它:
MY_TON(IN:= IN_VALUE,PT:= TIME_SET);
(*IN_VALUE - is BOOL variable that activates your timer
TIME_SET - is TIME variable*)
SOME_OUTPUT := MY_TON.Q;
(*Q - is the timer's output, and it can be used as BOOL variable. *)
您还可以使用常量来设置计时器:
MY_TON(IN:= True, PT:= t#5s);
作为BOOL变量,计时器的输出可用于IF和WHILE语句:
IF MY_TON.Q THEN
(*Some statements...*)
END_IF
WHILE MY_TON.Q DO
(*Some statements...*)
END_WHILE
5 回答
您可以在IDE的帮助系统中找到有关计时器以及如何使用(声明)计时器的说明 . 例如,在CODESYS帮助中,您可以阅读有关标准库的计时器的信息 .
通常,您可以将timer-delay(TON)声明为:
然后你可以使用它:
您还可以使用常量来设置计时器:
作为BOOL变量,计时器的输出可用于IF和WHILE语句:
所有示例都在CODESYS v3.5 SP5和v2.3中运行 . 对于其他IDE,可能会有细微差别 .
我在Gx-Works(Mitsubishi / FXCPU)中解决了这个问题:
记得申报TON_1 :)
只有当
TON.IN
持续高电平至少TON.PT
的持续时间时,定时器才会工作,以便TON.Q
变为高电平 .这确保
TON.Q
仅在TON.IN
处于稳定高状态时才变高 .这可能有用,例如确保仅在按下按钮至少持续
TON.PT
时才启用输出 .通常,您可以设置预设时间并启用计时器 . 当它过去时,将完成某种完成位设置为真 . 重置启用时,时间也将重置 .
我使用支持ST语言的欧姆龙PLC完成了这项工作 .
PLC中有一个定时器中断,我们用它在ST中构建我们自己的定时器,然后我们可以跳过PLC的限制 . 当PLC上电时,中断任务中的代码每次中断都会执行,您可以在中断处理程序中写入“A = A 1” .
当你开始使用计时器时,只记录A的当前数据 . 让我们说A1;间隔是:
然后将
Interval
与您想要的时间进行比较 . 如果Interval
大于您想要的时间,则执行下一个代码 .