求教FB调用多重背景时的指针使用的程序

我们的一台设备的程序中,FB10里面调用了多重背景数据块DB10,同时还调用了一个FC10, #Para 是背景数据块DB里的静态数据,它的起始地址是DB10.DBX2.0:
      CALL  "FC10"
         Pointer       := #Para
         bReset        := DB10.DBX4.0
         bErrorMessage := DB10.DBX4.1  

下面是FC10里面的内容:

      L     P##Pointer
      LAR1

      L B [ AR1 , P#0.0 ]
      T     #MK_1
      L B [ AR1 , P#1.0 ]
      T     #MK_2

      L W [ AR1 , P#2.0 ]
      T     #Num_Bytes

      L W [ AR1 , P#4.0 ]
      T     #DBNumber

      OPN DB [ #DBNumber]

我实在搞不懂上面这些语句的意思,最后打开的是哪个DB块啊?#DBNumber最后得到的是个什么值啊?请高手赐教!

最佳答案

#DBNumber最后得到的是10,也就是打开的是DB10。形参#Pointer的数据类型是ANY吧。
参见:S7-300S7-400寻址
https://support.industry.siemens.com/cs/document/79632832/s7-300和s7-400寻址?dti=0&lc=zh-CN

提问者对于答案的评价:
非常感谢“我心飞翔”的解答以及提供的文档下载,原来是个ANY指针的应用,看完文档后终于搞清楚了。其实以前在手册里看到过这个应用,但从来没碰上过,这次遇到我才认真学习了一遍。看来实践才是学习的动力啊!

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

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

相关推荐