stl语句中有一句L PID[#adress]不是很懂。。。

stl语句中有一句L PID[#adress]不是很懂。。。

问题补充:
不好意思,问题没有问全啊,这段程序全部:
L  #PID_start
ITD
SLW  3
T  #adress
L  PID[#adress]
T  #Buffer
(其中PID_start为模拟量输入的地址)这段程序中我理解adress应该为这个模拟量的数值是这样吗?如果是的话后面的L  PID[#adress]该如何解释?多谢

最佳答案

由于楼主的问题补充,这个问题的答案完全要重新作答:
1、首先建议系统看看下述资料,以便清楚了解有关间接寻址的方法:
、《关于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
2、针对问题补充:
首先要了解32位指针的格式规定:
32bit的结构:其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。
3、楼主给出的程序:
L  #PID_start//取 #PID_start表示的数值。例如,256。
ITD //转换为32位双字
SLW  3//右移3位,注意!这就是要形成上述的32位指针的格式(即0000 0000 0000 0BBB BBBB BBBB BBBB BXXX)。例如形成了256.0。
T  #adress//将上述的32位指针地址存入#adress中
L  PID[#adress]//按adress中的地址取数,例如就是取 PID256的值
T  #Buffer//存入结果。
总之,一个常数要想形成地址指针必须右移3位,形成指针的0000 0000 0000 0BBB BBBB BBBB BBBB BXXX格式。

提问者对于答案的评价:
谢谢,讲解的挺细

专家置评

已阅,最佳答案正确。

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

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

相关推荐