回复:一个困扰我多年的问题:FB,FC 内部的output变量,在块内是否可读?

已锁定

leeber

西门子1847工业学习平台

  • 帖子

    16
  • 精华

    0
  • 被关注

    1

论坛等级:游士

注册时间:2017-07-27

普通 普通 如何晋级?

发布于 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参数以提高程序的可读性和规范性。



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15695条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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