你的问题我也发现了,我先用前两条指令做了一下,没有出现你说的这种现象,当我写你的第三条指令时,发生了这种情况。。。然后我又把第三条指令给去除了,这种现象也随之消失了,所以,我的初步结论是,与你的第三条指令的地址分配有关。。。我建议你了解一下
西门子200PLC的寻址方式,我也给你查了一下,但是,只是针对今天的这个问题。其实这个问题是这样的,在西门子200PLC中VW100就是VB100+VB101,其中,VB100为高位,VB101为低位,你可以参看下图:
按照这种编程原则,我们所谓的1或2,实际是存在VB101中的
你指令中的VW101实际的地址应该为VB101+VB102,而1或2是存在VB102中,虽然在一个字的单元中,高位字节并没有数值,可是因为是一个字的单元,高位部分会自然补零的,所以数值会因为赋值VB101中,而将VW100中的VB101赋值为0,所以你会看到的都是零。。
以我的经验,这种以字的形式的赋值方法,尽量应注意错开存储空间,这个还是程序比较少的,如果是一个大型的程序,可能整个
工程进度都会遭到破坏,一般我使用时,都是用跳跃式的方法如VW101、VW103、VW105宁可跳一下,也别总是因为这个栽跟头,以前我用GE
PLC就遇到过这种情况,有时候,很难发现。。。像这种情况你也可以该为以MOV_B作为传送指令,如果数据不大于255。如果大于255再用MOV_W指令。还是多看看手册吧。。。