下面是1200的OB1中的通信程序的程序段1:
 M0.3是2Hz的时钟脉冲,MB0为时钟存储器字节,MB1为系统存储器字节。 DB1.DBW0的值本来应该是每0.5加1,实际上每秒大约加了200多次。交叉参考表明没有别的地方改写DB1.DBW0。实在是想不出来错误的原因了。 突然想起上升沿检测的原理,是用M2.4来保存M0.3前一扫描周期的值,通过比较M0.3前后两个扫描周期的值,来判断是否是M0.3的上升沿。如果M0.3在半周期内未变,但是M2.4的值在变化,也会检测到上升沿。于是赶快检查M2.4的交叉参考,发现该地址同时用于TURCV指令的NDR位,通信作业完成时该位变为1。将M2.4改为别的地址,DB1.DBW0正常运行了。这个“怪事”的揭秘又一次证实了我的一个结论:计算机(包括plc)总是对的,问题总是出在粗心大意的人身上。 看来,对指令的深入了解还是很有必要的。
|