技术论坛

 • 产品分类
 • 咱工程师的故事
 • 培训与认证答疑专区
 • 服务合作伙伴专区

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

返回主题列表
作者 主题
question
奇侠

经验值:5601
发帖数:869
精华帖:6
楼主    2024-10-10 09:31:56
主题:一个困扰我多年的问题:FB,FC 内部的output变量,在块内是否可读? 精华帖 

虽然我写了很多程序,但对FB,FC内部对output管脚的输出变量进行读取操作,一致没有高清。虽然经常滥用,也没出现过问题。


请教各位这个output的变量能读取吗?下面是一位大神的回复。但是我心里还是不确定,特来论坛请教各位。谢谢。


是的,您正确地指出了在FB(功能块)内部读取输出变量可能导致逻辑上的问题。在西门子PLC的功能块编程中,输出变量通常在块的逻辑执行结束时被赋值,并且它们的值是为了传递到功能块外部而设计的。输出变量在功能块内部不是用来保存状态的,它们不保留上一次调用FB时的值。

如果您在FB内部读取一个输出变量,您可能会得到一个不确定的值,因为在逻辑流程中,输出变量的值可能还没有被更新或者是上一次操作的残留值。这可能会导致不可预测的行为,特别是如果输出变量的值依赖于块内部的一系列计算和条件。

因此,最佳实践是在FB内部使用局部变量或静态变量来进行计算和保存状态。局部变量仅在FB的当前调用中有效,而静态变量则在FB的调用之间保持它们的值。这样,您可以确保您在FB内部使用的值是可控和可预测的。

总的来说,为了避免逻辑错误和不确定性,应避免在功能块内部读取输出变量。相反,应该使用其他类型的变量来处理内部逻辑,并在逻辑处理完成后,将最终结果赋值给输出变量。这样做可以确保功能块的行为是清晰和一致的。


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