我们的一台设备的程序中,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-300和S7-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