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

已锁定

zzzsunrise

  • 帖子

    487
  • 精华

    2
  • 被关注

    13

论坛等级:侠圣

注册时间:2022-05-24

钻石 钻石 如何晋级?

发布于 2024-10-10 15:16:57

4楼

我认为主要还是因为直接读取out会容易产生时序问题导致程序无法按照预定方式执行。

以一个测试程序为例,在程序块中编写两组启保停指令,同时1组在启保停程序前用输出复位启动命令,另1组在启保停程序后用输出复位启动命令。以下是三组不同方式的执行结果。

第1组:使用FB块,输出变量定义在output区域。


第2组:使用FC块,输出变量定义在inout区域。


第3组:使用FC块,输出变量定义在out区域。

第3种状态便是你文中描述的“输出变量在功能块内部不是用来保存状态的,它们不保留上一次调用FB时的值。如果您在FB内部读取一个输出变量,您可能会得到一个不确定的值,因为在逻辑流程中,输出变量的值可能还没有被更新或者是上一次操作的残留值。”

在考虑好时序与逻辑的影响或者对逻辑与时序要求不高时,读取out变量处理逻辑时是没问题的,在高实时性场合需要审慎考虑逻辑。

希望以上测试能对你有所帮助。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15095条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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