回复:SCL_引用

贾岑

西门子1847工业学习平台

  • 帖子

    826
  • 精华

    2
  • 被关注

    20

论坛等级:侠圣

注册时间:2006-04-28

普通 普通 如何晋级?

发布于 2020-12-09 12:42:18

1楼

您好,

在了解引用的使用功能之前,您首先需要了解在为FC/FB的形参传递实参之时,会有Reference“指针引用”(将外部实参拷贝到主调的堆栈再传递给形参)和Copy“副本直传”(无需拷贝,直接访问实参)两种形式,下图为编程指南的截图:

对于基本数据类型而言,拷贝确实需要额外占用运行时CPU的存储空间,但是由于长度较小可以接收。

但是,对于复杂数据类型而言,拷贝就要占用较大的存储空间,所以对于FB而言要尽量使用InOut类型。

如果用户有需求说必须要使用IN或者OUT类型的参数,此时可以使用REF_TO 复杂类型,比如数组的形式创建参数,而后在程序中通过^的形式访问,这样会减小存储空间的使用。

再来,如果在参数定义时使用了Variant的指针类型,当然在传递实参时,一定是通过引用的方式实现的。但是,Variant的使用则需要特定指令确定指向的实参的数据类型,做法就是要在临时变量中创建实参的数据类型。这时,问题就又来了,如果指向的实参是复杂类型,在temp中创建的数据也会占用比较大的空间,此时也会使用到REF_TO的形式,而后使用?=来识别。


所以,综上。例程中的教学目标是让用户了解REF_TO使用时的声明方式和指令,所以举得例子相对简单,便于理解。但是真正在现场使用时,REF_TO的主要应用目标是针对复杂数据类型,期望降低CPU的存储器空间使用。

但行好事 莫问前程
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

PLC编程精英训练营

共有1542条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。