当前位置: 主页 > PLC控制

有關S7-300尋址問題

請問各位前輩下面指令意思:
OPNDB21
L194
L8
*I
L#ON_M_CODE
+I
LAR1
//TransfeRTotempvariable
ADBX[AR1,P#0.0]
A#Mcode_Enable
ANDB21.DBX33.7
=#MCODE_ON
請問AR1內的數值為多少???DBX[AR1,P#0.0]出來的結果為何???

ASs='html_titleimg_p' STyle='text-align:CEnter;'>

问题补充:
艾星前輩:
感謝您抽空回答~~小弟是新手~所以可以還要請您說明的詳細一點
關於您的回答上有提到:
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里的值就是194×8+#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-300S7-400寻址:htTP://www.ad.siemens.com.cn/download/docMessage.aspx?ID=1597&loginID=&srno=&sendtime=
补:假如是10的话,除以8余数是2,那么就是(194+2).2即DBX196.2;其实就是(194×8+#ON_M_CODE)除以8,取余数;根据寄存器寻址的定义:0位~第2位作为寻址操作的位地址,第3位~第18位作为寻址操作的字节地址;如果说寄存器内部的值是10,那么就要扣除8,剩下的就是位地址,1为字节地址,我给的资料里,也有介绍!

提问者对于答案的评价:
講解很詳細~~

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号