

如图所示:很多人在给DB块分配地址时,习惯在后面之前分配数值,然后在写程序时,直接通过变量来确认具体地DB地址,比如当LOCAL=102时,程序就把速度赋值给输送线速度102这个地址,但是事实情况是,你无法编译完成,报警显示操作数未定义,证明程序是不认这个变量。究其原因就是因为,输送线速度102这个102它只是个文本,它并不是整型。所以用变量代替102是非法的。下面我们在DB块又建立了一个数组,从101到106。这个101到106就是整形,它是可以被变量代替的,可以用变量寻址。
总结:这个错误在刚接触西门子plc的编程者来说,是很容易犯的一个错误。对文本信息理解不透彻。如果想要用变量寻址,必须采用数组的形式来定义这个DB块里面的内容。除非你不用变量来寻址,给DB块里面的内容赋值时,需要一个一个地赋值,编程有点太过繁琐。如何既简洁又把功能全部实现,这才是我们编程者应该思考的问题,需要我们提高的方向。