今天在调试一个带有TON的FB的时候,遇到一个诡异的问题:
将原来一切正常的FB复制一次后简单修改增加功能后,所有IEC timer全部不动了,而老FB没问题。所有定时器正常运行。
简单地说IEC timer 是1500的推荐的替换T定时器的方案,有如下限制和情况:
需每个周期调用该TON。不调用则不会启动定时。最好不要多次调用。
与S7-300,S7-400不同,调用后,对于里面的ET和Q中必须有一个输出到变量中,否则也不启动定时。ET是已定时的时间,Q是定时输出。或访问输出 Q 或 ET 时。
IEC Timer可以是全局DB,statc区和parameter instance 。
再返回我的问题,我在FB中的static区中定义了几个TON,然后在改FB一开始全部调用这些TON,但是我对于这些定时器的ET和Q没有指定到变量上,对于需要用到这些TON的结果以300的方式读取即instance.q 的方式读取定时结果。 我初步理解是毕竟这些static在DB中被实例化,那么也就指定了输出变量。
然而在同一个PLC项目中,两个基本相同的FB,分别被实例化,建立了各自的背景DB块,老的FB定时器全部正常,被复制的FB却全部无效。
类似的帖子:
https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=66&a_id=1594981
大家遇到过吗?
可能是调用问题,但是看之前帖子也有类似问题。 TON是最常见的工艺,还是得注意的……。
祝大家健康!