恭喜,你发布的帖子
发布于 2024-10-10 15:16:57
4楼
我认为主要还是因为直接读取out会容易产生时序问题导致程序无法按照预定方式执行。
以一个测试程序为例,在程序块中编写两组启保停指令,同时1组在启保停程序前用输出复位启动命令,另1组在启保停程序后用输出复位启动命令。以下是三组不同方式的执行结果。
第1组:使用FB块,输出变量定义在output区域。
第2组:使用FC块,输出变量定义在inout区域。
第3组:使用FC块,输出变量定义在out区域。
第3种状态便是你文中描述的“输出变量在功能块内部不是用来保存状态的,它们不保留上一次调用FB时的值。如果您在FB内部读取一个输出变量,您可能会得到一个不确定的值,因为在逻辑流程中,输出变量的值可能还没有被更新或者是上一次操作的残留值。”
在考虑好时序与逻辑的影响或者对逻辑与时序要求不高时,读取out变量处理逻辑时是没问题的,在高实时性场合需要审慎考虑逻辑。
希望以上测试能对你有所帮助。
请填写推广理由:
分享
只看
楼主