作业帮 > 综合 > 作业

西门子200 比如&vb200 和*AC 什么时候使用?恳请给解释下

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/24 01:00:39
西门子200 比如&vb200 和*AC 什么时候使用?恳请给解释下
比如 mov-dw &vb1000 vd1200 跟后面的什么程序还有什么关系?
&Vb200代表取得Vb200寄存器对于整个PLC内存的内存地址.
*AC 代表 取得Ac寄存器中存放的内存地址内存储的值.
MOVD &VB1000 VD1200代表 将Vb1000对应的内存地址放入Vd1200中.
那么,*VD1200就是取得Vb1000中存储的值.这就是西门子的指针操作,在日系PLC中叫做间接寻址.
再问: 如果中间vd1200经过指令加减乘除传送到vd1204 对于的*vd1200数值变化吗
再答: 那取决于VD1200内的存储的数值,如果VD1200内的地址是指向与VD1204的话,那么势必*后取得的是变化后的VD1204的值。
再问: 我意思是movd &vd1000 vd1200 vd1000=10 vd1201=11 add vd1200+1 T vd1201 *vd1200=?
再答: 首先,您的指针用法存在语法错误,不探讨语法错误,就使用本身来说。 将VD1000的地址放入VD1200, 如果VD1000=10, VD1201=11 然后你对VD1200+1 ,请注意,VD1200中存放的是地址,这个地址原先是VD1000的地址,然后你加1了,那么此时累加器中存放的是VD1000后的一个字节的地址,也就是VB1005的地址。 然后你将这个地址送入VD1201(这里存在地址重叠的问题),通俗的认为是没有改变原先的VD1200中存放的数据。 如果考虑到地址重叠的问题,VD1200由VB1200,VB1201,VB1202,VB1203,VD1201由VB1201,VB1202,VB1203,VB1204组成,这样,实际VD1200的低3个字节被意外修改了。
再问: 非常感谢你的指点,vd地址我没注意,只是随便加了一个1,你能帮我看下这个程序吗,&和*是 不是成对使用的?如果后面加了*  前面的&已经给他赋值,这个程序怎么还可以作为输出
再答: 并非要求成对使用,你需要将地址送入VD中,那么就会用到&,同样,你需要取得对应的寄存器内的值时,你会使用到*,并非必须一一对应,你可能存在多次需要更改地址的情况,也可能存在多次取值的情况。 VD1200中存放的是VB1000的地址,请注意,这是地址。那么,在后面*VD1200实际操作的值就是VD1000,所以后面那么图等同于将VD204的值送入VD1000中。