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