請問各位前輩下面指令的意思:
OPN DB 21
L 194
L 8
*I
L #ON_M_CODE
+I
LAR1
// Transfer to temp variable
A DBX [AR1,P#0.0]
A #Mcode_Enable
AN DB21.DBX 33.7
= #MCODE_ON
請問AR1內的數值為多少??? DBX [AR1,P#0.0] 出來的結果為何???
问题补充:
艾星前輩:
感謝您抽空回答~~小弟是新手~所以可以還要請您說明的詳細一點
關於您的回答上有提到:
DBX[AR1,P#0.0]的值为DB21.DBX(194 + #ON_M_CODE / 8)#ON_M_CODE的值除以8以后变成ax8+y形式,所以就是DB21.DBX(a+194).y
1.假設#ON_M_CODE=10,10/8=1.25=ax8+y,那a及y???
2.為什麼是 #ON_M_CODE的值/8而不是AR1內的值/8??
還有/8的意思???ax8+y各個式子又是如何解釋???
不好意思問了那麼多~~~麻煩您抽空回答~~~謝謝
最佳答案
内部区域寄存器间接寻址,指针格式与存储器间接寻址的32位指针相同,第0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址,第19位~第31位没有定义
AR1里的值就是194x8+#ON_M_CODE
DBX[AR1,P#0.0]的值为DB21.DBX(194 + #ON_M_CODE / 8)#ON_M_CODE的值除以8以后变成ax8+y形式,所以就是DB21.DBX(a+194).y
S7-300和S7-400寻址:http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=1597&loginID=&srno=&sendtime=
补:假如是10的话,除以8余数是2,那么就是(194+2).2 即 DBX196.2;其实就是(194x8+#ON_M_CODE)除以8,取余数 ;根据寄存器寻址的定义:0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址;如果说寄存器内部的值是10,那么就要扣除8,剩下的就是位地址,1为字节地址,我给的资料里,也有介绍!
提问者对于答案的评价:
講解很詳細~~
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc229379.html