回复:第18课中的一些问题

慢慢即漫漫

  • 帖子

    168
  • 精华

    0
  • 被关注

    3

论坛等级:游侠

注册时间:2018-03-14

普通 普通 如何晋级?

发布于 2020-12-06 23:17:58

2楼

展开查看
以下是引用西家讲师在2020-12-05 22:01:32的发言 >1楼

CV=current value当前值

EN=enable使能

RV=Reference value参考值

RPM=Revolution Per Minute 每分钟转数

简单的说:副本传递是,FC/FB在最初读取参数以后,将该实参值送到一个副本中,然后在程序中每次读取到该参数时始终使用的是该参数的副本,而不是读参数本身

而引用传递是,FC/FB在程序中每次读取到该参数时,始终去读实参地址的数据

这样看可能不直观

以FC的输出参数为例,如果输出参数是基本数据类型,则是副本传递,如果输出参数是复杂数据类型,则是引用传递,您可以试一下,在程序中还没有为输出赋值之前,去读取输出的值,例如赋值到另一个输出变量,您会发现,副本传递的输出读回的是0,而引用传递的输出读回的是输出参数值,就是因为副本传递,副本还没有赋值所以是初始值,而引用传递直接去取实参的值

老师我有点理解不过来您对副本传递和引用传递的意思...(太蠢了我)

比如我在FC的程序中的Output处创建一个“副本传递”数据类型为基本数据类型WORD,再创建一个“引用传递”数据类型为Struct(如下图)

创建两个DB块如下图

DB1

DB2

FC中的程序如下图

OB1的程序如下图

比如我按下M10.1,程序段1和程序段2的 MW0的值都为10,然后我将MW0里面的值改为20,这时候程序段2里面的MW0的值变为20,但是程序段1里面只要M10.1没有接通的话它里面MW0还是以10来读取的是吗?但是程序段1里面的“引用传递”拐角的实参我不管怎么改变它的值,它都会按照我改变的值来读取是吗?

(就比如我把Struct里面的A的值改为100,不管我M10.1有没有接通,程序段1里面的“引用传递”拐角的实参读取都会变成100,但是程序段的MW0在M10.1没有接通的情况下他就会以上一次循环所记录的值来执行是吗,比如上一次循环是10,虽然我现在把MW0的值改为20了,但是只要我M10.1没有接通的话,它还是读取的是10的值?)

老师您说的是这个意思吗。。




本人愚昧,问题繁多,多谢老师悉心教导,感激不尽。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

MA 小型自动化系统

共有850条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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