用户使用CPU315-2DP的CPU实现一个很复杂的工艺控制,时间要求很严格,有很多时间序列,例如A点信号为1后触发定时器1,定时5秒钟,时间到后,输出一电平给B点,触发定时器2,延迟3秒后,采集C传感器的值,触发定时器3,并每隔10秒计算一下(有个公式)等等,类似这样的工艺有很多段,每段都不太一样,使用定时器数量也不一样,用户程序编了,但还没完成,因为定时器不够用了,超过了plc能提供的定时器数量256个,所以就有了上面的那些报怨。
总结一下,用户报怨西门子plc能提供的定时器数量太少不够用,不能满足用户的需求(终于听明白了)。
听完用户的问题,用户也平静了许多,我心里也有底了。首先我没有给用户直接的答案,而是先关心一下用户调试程序的困难,我只是说了句:“您调试程序是不是不太方便啊?”我的话音刚落,用户的话匣子又打开了,诉苦啊,调试不方便,定时器走乱了,互相条件依存太多, ……总之没有好用的地方,快被折磨死了。听完用户所言后提醒自己,别再往用户“伤口” 上撒盐了,还是开药方吧,先把病看好了,接下来再聊别的。
不够用可以使用IEC定时器(SFB3-SFB5),只要CPU容量够用,数量没有限制,显然用户不知道此信息,否则他就不会报怨定时器不够用了,如果真的使用了IEC定时器编程,估计用户的程序会有一半是定时器的程序了,所以我先没有告诉他,免得又引出很多话,用户也不容易啊。
那给用户开了什么药方了呢?
方子很简单:定时器一个,加法指令一个(MW0=MW0+1)。
使用方法:因为用户所有定时器使用的时间单位都是秒,于是就将T1设定成1秒的定时器,程序运行后启动定时器,然后在定时时间到后执行MW0=MW0+1,即每定时到1秒钟MW0就加1,这样通过判断MW0的值就会得出相应的计时时间(秒),并能判断出时间过了多少秒,例如MW0=10,就是10秒,当MW0数值达到最大定时时间值后可以清零。这样就很好的满足了用户的需求,解决了问题,同时程序结构比较清晰,不容易乱。