关于ANY指针的一点疑问

LAR1 P#Source
L  B#16#10
T B[AR1,P#0.0]
这里上述为FC1块内的语句,并设定Source为IN变量,且OB1调用FC1
我的问题:上述语句是正确的,那么如果第三条语句变为T LB[AR1,P#0.0],那是不是就不对了?因为本来T B[AR1,P#0.0]指向的是V区(即OB1的TEMP区),而若多了“L”,那么T LB[AR1,P#0.0]便指向的是FC1的TEMP区,这样指向就错误了。
这是我的理解,如有误请指正!

问题补充:
贴个图把,比如说source改成IN,那么T LB[AR1,P#0.0]是不是需改成T B[AR1,P#0.0],否则便会指向错误,错误地指向了FC的TEMP,正确的应该是指向OB的 TEMP(也即V区)

图片说明:

关于ANY指针的一点疑问   

最佳答案

在论坛上有讨论哈
LAR1 P#Source 是IN的话,指向V区域,说明书上说是:先前的本地数据 廖老师帖子里面也有说,这个区域应该是一段固定的区域,并不是OB1的TEMP区。
想找个官方的文档说明,也没有找到。还是说说个人看法,仅供参考
LAR1 P#Source //Source 是IN
L  B#16#10
T B[AR1,P#0.0]
如果是这样的,那就是把Source的第一个字节给覆盖了
如果程序是
LAR1 P#Source //Source 是IN
L  B#16#10
T LB[AR1,P#0.0]
结果是把TEMP区域的第一个字节覆盖

程序对不对,从逻辑上说怎么都没错,但是结果可能不一样,第一个结果不是我们想要的,那可能就错了

提问者对于答案的评价:
分给你了,辛苦了!
我追问下:
1、难道不是第一个结果才是我们想要的吗?
2、关于你说“这个区域应该是一段固定的区域,并不是OB1的TEMP”,可是廖老师的文章中明明说了“因此AR1中的P#V21.0表示指针常数P#DB2.DBX0.0的值存放在OB1的局部变量区中的地址,换句话说,V区就是调用FC1时OB1的局部数据区。”(在倒数地19行中有说)

最佳答案作者回复:
可能我较真了吧,理解的不够透彻,或者表达有问题
你说的也对,也是OB1的TEMP区域,但只是部分,不能全部的
晚上我试试再给您回帖子吧
试过了就知道最终结果了

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月10日
下一篇 2017年6月10日

相关推荐