S7 300/400中 数组与寻址

大家好,今天遇到老外写的一个PROFIBUS从站检测的STL源程序,其中有这么一段,      LAR1  P##TEMP27
      L     4
M01b: T     #TEMP30
      L     LD [AR1,P#0.0]
      T     #TEMP31
      L     32
M01c: T     #TEMP29
      L     #TEMP31
      SLD   1
。。。
上面temp27是数组ARRAY类型,temp27[1]~[4]大小为DWORD,
这里为什么能将LAR1 temp27,然后 LD[AR1,p#0.0]代表的什么?
为什么左移一位,一般为了得到指针,都SLD3啊
求解,小弟新手,谢谢大家

最佳答案

1、为什么能将LAR1 temp27,然后 LD[AR1,p#0.0]代表的什么?
这是应用指针寻址。详见下述解释:
    LAR1  P##TEMP27  //将TEMP27中的内容送人地址指针AR1中,例如AR1现为 P#10.0
      L     4
M01b: T     #TEMP30 //TEMP30中存入常数4
      L     LD [AR1,P#0.0]//AR1中内容作为地址,取以该地址标识的 LD(临时存储单元)中的内容。例如AR1现为 P#10.0,P#10.0+P#0.0=P#10.0,即取 LD 10中的内容.
      T     #TEMP31//将LD 10中的内容.送人TEMP31中。
      L     32
M01c: T     #TEMP29//TEMP29中存入常数32
      L     #TEMP31
      SLD   1//将TEMP31中的内容左移1位。
2、为什么左移一位,一般为了得到指针,都SLD3啊?
由于程序只有这一部分,从这一部分看,左移一位不是为了得到指针,可能是为了乘以2.。
3、有关指针教程:
见《关于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

提问者对于答案的评价:
都谢谢大家了,其实我想问的是数组“整体”时,它形成的数值,然后寻址,现在自己想通了,谢谢

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

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

相关推荐