签到有奖
消息提醒
运维工程师专区
官方商城
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
帖子
精华
被关注
论坛等级:至圣
注册时间:2008-12-28
钻石 如何晋级?
发布于 2017-02-18 15:55:56
19楼
想问一下为什么需要用TEMP中转一下?是西门子规定的不能这样还是说有其他什么原因?因为我看引脚RECOND的数据类型也是为ANY啊。。。
引用17楼详细内容:
在IN里面也对
你看看下面的文档
FC中如何传递ANY指针
https://support.industry.siemens.com/cs/cn/zh/view/76779257
引用16楼详细内容:
再看了看整个程序,明白了。。
关键在于
FUNCTION FC10: VOID
VAR_TEMP
Source :ANY;
Target :ANY;
END_VAR
原来不管是 Source还是 Target都是TEMP,而我前面固化了自己的思维,把这两个变量假设认为是IN变量
那么:在示例程序中,因为Source或 Target为TEMP,那么T LB[AR1,P#0.0]中这个L有或者没有没有任何区别。
但如果Source或 Target是IN变量,那么多了这个L反而就不对了
你们觉得呢?@RENHQ @威师爷
引用12楼详细内容:
又弄蒙了
这个指针刚开始指的是V区域....
引用详细内容:
那按你这样说的话T LB[AR1,P#0.0]这条指令CPU操作系统是如何识别这个“L”到底是被调用块(例如FC)中的临时局部变量(TEMP)还是调用块(例如OB1)里的局部临时变量?
即AR1里地址指向的是OB1中的TEMP,而如果按你说的如果系统将“L”识别为FC的TEMP,那岂不是错了吗?
中间不转一下,在子程序里面没办法直接使用input的指针
请填写推广理由:
AI 小西智伴登场,7×24 小时权威支援,让技术支持告别等待!
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有54618条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!