踩到了自己埋的地雷
最近上课的时候,用我事先做好的项目来演示博途中S7-300和精简面板的仿真,然后演示这个项目编程和组态的过程。PLC仿真的时候出了问题,Time数据类型的预设时间值(MD8)在正、负24天之间不停的无规则的跳动。用交叉引用功能检查,只是在OB100中给它设置过初始值T#10S,别的地方没有改写它。程序很简单,没有使用间接寻址。到底是什么原因导致MD8的值变化,一时查不出来了。
半夜突然想起我在演示过程中,演示了将MB8组态为时钟存储器字节的方法。MB8是MD8的最高位字节,将它组态为时钟存储器字节后,它的各位不断周期性变化,导致MD8的大幅度变化,罪魁祸首就是它,我踩到自己埋的地雷了。
编程的时候最忌讳的是同一地址两用或多用。如果某个地址的值出现无规则的莫名其妙的变化,多半是同一地址两用造成的。检查方法如下:
1)用交叉引用功能检查该地址在PLC程序中和HMI中哪些地方被改写,是否同一地址两用。
2)如果程序中使用了间接寻址,需要检查该变量是否被间接寻址改写。
3)该变量是否因为通信被改写。
4)如果是M区,注意该地址或其中的一部分是否被设置为时钟存储器字节或S7-1200/S7-1500的系统存储器字节。
[此贴子已经被作者于2016/6/3 20:20:55编辑过]