有關S7-300尋址問題

請問各位前輩下面指令的意思:
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-300S7-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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午3:49
下一篇 2018年12月1日 上午3:49

相关推荐