200plc间接寻址的问题请师傅看看谢谢了

200plc第一步movd &vb100 ,ac1  第二步 addr 1, ac1  第三步movd *ac1, vd1  假设vb100=12 vb101=34 vb102=56 vb103=78 vb104=91 vb105=92  我想问下第一步的ac1等于vb100的32位物理地吗?第二步以后ac1变成vb101了吗?第三步*ac1代表什么意思,是指vb100到vb104还是vb101到vb104?vd1中的值是多少?是34567891还是12345678?
                                                          

最佳答案

首先,STL 指令中没有 ADDR 指令;你原意应该是地址加 1;
你程序应该是:
MOVD   &VB100, AC1    //将 VB100 的物理地址传送到 AC1
+D     1, AC1                     //地址是32位的双整数,所以用双整数加指令   +D 
MOVD   *AC1, VD1         //将指针指向的双整数传到 VD1 
1、我想问下第一步的ac1等于vb100的32位物理地吗?
是的。
2、第二步以后ac1变成vb101了吗?
不是,第二步执行后,AC1中是 VB101 的物理地址。
3、第三步*ac1代表什么意思,是指vb100到vb104还是vb101到vb104?
*ac1代表的是什么意思,取决于它所处的指令的寻址宽度,指令是 MOVD,那它代表的就是 :*ac1 指一个双整型数,因第二步中 AC1 是 VB101 的物理地址,所以这句就是:将 VB101、VB102、VB103、VB104连续的4个字节看成一个双整数,传送给 VD1。 
4、vd1中的值是多少?
只能说 VB1=34 VB2=56 VB3=78 VB4=91。它的组合是一个双整数,但不是你理解的那样。
建议你看看系统手册中  第四章 P34-P35  间接寻址的内容,有时间再看第四章其它内容。
S7-200 可编程序控制器 系统手册  1109582  2009年4月23日
https://support.industry.siemens.com/cs/document/1109582

提问者对于答案的评价:
谢谢每位师傅。 好人一生平安

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc366676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午2:21
下一篇 2021年7月5日 下午2:21

相关推荐

发表回复

登录后才能评论