西门子程序问题

下面有段程序看不太懂,希望高手解答

图片说明:

西门子程序问题   

最佳答案

1、要想弄清这段程序的功能,首先必须清楚32位指针格式:
32位指针格式规定:
 地址寄存器是专门用于寻址的一个特殊指针区域,西门子的地址寄存器共有两个:AR1和AR2,每个32位。  
  当使用在区域内寄存器间接寻址中时,我们知道这时的AR中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是:  
  其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  AR:  
  0000 0000 0000 0BBB BBBB BBBB BBBB BXXX  
  这样规定,就意味着AR的取值只能是:0.0 ——65535.7  
  例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。 
2、程序解释:
L   MW14   
L   "变量表".line_pointer   
+I    ///将MW14中的值加上变量表中的line_pointer
T mw16  //结果存入MW16
L L#2    //取32位长常数2 
*D     //进行乘法运算(为了得到字的地址)
SLD  3   //结果左移3位,为了形成上述的32位指针格式。
LAR1  //存入地址寄存器1
L DBW[AR1,P#0.0]  //按地址寄存器1加偏移量(为0)寻址
T   "变量表".KP_VAR  /取出的数据存入变量表中KP_VAR变量中。
注意,程序中乘以2就是为了得到字的地址,因为字地址一般为偶数。结果左移3位,为了形成上述的32位指针格式。
3、建议系统看看下述资料,再遇到类似问题就不用求人了:
、《关于S7-300S7-400指针寻址的说明与例程(更新版)(2008.03.04)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=F0215
、《step7编程之地址概念详解》连接:
http://ishare.iask.sina.com.cn/f/22746895.html
http://www.gongkong365.com/bbs/job.php?action=download&aid=96
、《西门子STL间接寻址常问问题集》
http://www.ad.siemens.com.cn/download/docMessage.aspx?
ID=6175&loginID=&srno=&sendtime=

提问者对于答案的评价:
谢谢

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

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

相关推荐