技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 寄存器间接寻址 pointer疑问

寄存器间接寻址 pointer疑问

刘玉蓉 发布于2014-11-14 17:18 5 0 标签:

对pointer还是不能正确理解,困扰了好几天了,对应图中程序我写下来,那位能给逐一分析一下。下面是FC1中程序。
    L     P##Start_addr
    LAR1  
    L     0
    L     W [AR1,P#0.0]
    ==I   
   JC    _001
   T     #DB_No
   OPN   DB [#DB_No]
_001: L     D [AR1,P#2.0]
    LAR1  
     L     L#0
     T     #Result
      L     #Number
BACK: T     #Sycle_c
      L     W [AR1,P#0.0]
       ITD   
      L     #Result
      +D    
      T     #Result
     +AR1  P#2.0
      L     #Sycle_c
      LOOP  BACK

在OB1中调用 FC1
CALL  FC  1
Start_addr: =DB2.DBX4.0   //数据区起始地址
Number :=5                      //需要累加的次数
Result:=DB2.DBD0          //保持运算结果的双整数

问题补充:
若P##Start_addr=DB2,.DBX4.0那么 W [AR1,P#0.0]就表示把pointer的前2个字节值取出来,是取的DB2.DBW4.0吗? D [AR1,P#2.0]表示取出地址标示符和地址,是DB2.DBD6吗?误区就在这个地方,理解的还是不对。望指教


图片说明: 1,1.1   2,1.2  

佳答案

pointer类型占用6个字节,前2个字节有数值则表示DB号,无数值就不是DB块变量。后4个字节表示地址标示符和地址。 W [AR1,P#0.0]就表示把pointer的前2个字节值取出来和0比较,不是0则打开DB块,是0则直接运算。 D [AR1,P#2.0]表示取出地址标示符和地址,把它存放在AR1中,在下面的间接寻址中直接使用。
参见:S7-300和S7-400寻址
https://www.ad.siemens.com.cn/download/OnlineReading.aspx?DocId=1597
补充:前2个字节是DB块号,即是2。后4个字节是地址标示符(DB)和地址(4.0)。上面的文档你没有下载看吗,还是学习一下。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签