恭喜,你发布的帖子
发布于 2024-10-16 15:12:55
23楼
1200和1500的FB块中的output在其背景数据块中有存储,所以其可以在块内进行读取操作。因为FB的OUTPUT引脚除工艺对象外都是副本传递方式,读取的值为程序内部形参的最新值,无法读取该输出变量对应实参的最新值(这个也是和inout参数的重要区别之一);
由于其有背景数据块保持其值,即使在程序内第一次读取,且读取前还未对其值进行赋值,也不会存在不可预测的值,其会读取该形参的默认值(起始值),在非首次读取时,会读取该形参的最新值。
FC的output,没有背景数据块存储其值,并且在接口定义参数时,output参数不能赋默认值(起始值),所以在程序中还未对该Output参数赋值的情况下,对副本方式传递的output参数进行读取操作,会读取到不可预测的值。实际上,在FC中读取output参数时,TIA会对该指令标黄提示该指令有风险,但是编译时不会报错,也不会有警告。
FC用指针方式传递的output参数,其实质已经变为Inout参数类型了。虽然TIA依然会对其标为黄色,但是在程序内部和inout参数类型一样使用,完全可以进行读写操作。这时TIA编程建议:将该参数定义为inout参数以提高程序的可读性和规范性。
请填写推广理由:
分享
只看
楼主