看书的时候看到POINTER参数类型,有个疑问就百度了一下,还是没有明白,疑问写在语句//后面。
例如:定义 AddS为Pointer类型输入变量,Temp为word类型临时变量</P> L P##AddS //假如Adds为DB1,传送到AR1寄存器
LAR1 //AR1为地址值1
L W [AR1,P#0.0] //这儿的L W [ ]为什么是提取数据块号信息?
T #Temp
OPN DB [#Temp]
L D [AR1,P#2.0]
LAR1
//这儿的AR1不是为Adds的地址吗?通过实验发现送入LAR1 的为DB4.0,我怎么感觉是DB3.0呢?我知道自己错了,就是想不明白,请师父们给讲解一下,谢谢了
1、程序分析:
L P##AddS /Adds不能为DB1。/#AddS应为DB区域寻址时,AR=840xxxxx。例如84000000(hex)为DBX0.0.。即将#AddS 送人累加器1.
LAR1 //认为AR1为地址值1是不对的。这是将上述累加器1的内容送人AR1中。
L W [AR1,P#0.0] //按AR1指针指示的地址中的内容送人累加器1中,例如AR1中DBX0.0,即将DBW0中的内容送人累加器1中,例如DBW0中为100。
T #Temp //将累加器1中内容存入#Temp中,,即#Temp中为100.
OPN DB [#Temp]//以#Temp中的内容为DB块号,即打开DB100。
L D [AR1,P#2.0] //按AR1指针中内容加上偏移值P#2.0为地址,将该地址中的内容送人累加器1中,例如AR1中DBX0.0,加上P#2.0为地址DBX2.0.。将DWD2.0中的内容送人累加器1中。
LAR1 //将累加器1的内容送人AR1中。
2、有关指针寻址问题不是一句两句话就可说明白的。楼主理解有偏差,建议系统看看,否则越整越糊涂:
、见《关于S7-300和S7-400指针寻址的说明与例程(更新版)》下载:
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=