恭喜,你发布的帖子
发布于 2020-12-06 23:17:58
2楼
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的值?)
老师您说的是这个意思吗。。
请填写推广理由:
分享
只看
楼主