按照数据流排序
在基于文本和基于网络的编辑器中,POU 的执行顺序是唯一确定的。然而,在 CFC 编辑器中,您可以自由定位元素,因此执行顺序最初并不是唯一的。因此,CODESYS使用数据流来确定执行顺序,在多个网络的情况下,则通过元素的拓扑位置来确定。顶部元素和网络按从上到下、从左到右的顺序排序。通过这种方式,执行顺序是唯一的,并确保 POU 的处理按时间和周期进行优化。
您可以在图表中临时显示当前的执行顺序。当您编写带有反馈的网络程序时,您可以将某个元素定义为反馈回路的起点。
您还可以明确编辑 CFC 对象中的处理顺序。为此,请切换自动数据流模式 CFC 对象的属性显式执行顺序模式。在此模式下,您可以选择通过菜单命令编辑执行顺序。
前CODESYS V3.5 SP15 中,必须为每个 POU 明确定义执行顺序。没有模式切换。
数据流
数据流按时间顺序描述哪些数据应该被写入或读取,如何以及何时执行,以及在哪些编程对象中执行。一个POU可以处理任意数量的数据流,这些数据流也可以彼此独立执行。
显示执行顺序
默认情况下,CFC 对象的执行顺序是自动确定的。自动数据流模式属性已选中。您可以在 CFC 编辑器中临时显示自动确定的执行顺序。
使用创建一个新项目标准项目模板并指定名称
Minimal
例如。使用功能块扩展应用程序
FB_DOIt
在ST实现语言,其输入和输出如下。FUNCTION_BLOCK FB_DoIt VAR_INPUT iAlfa : INT; iBravo: INT; sCharlie : STRING := 'Charlie'; xItem : BOOL; END_VAR VAR_OUTPUT iResult : INT; sResult : STRING; xResult : BOOL; END_VAR VAR END_VAR iResult := iAlfa + iBravo; IF xItem = TRUE THEN xResult := TRUE; END_IF
创建功能块
ExecuteCFC
在氯氟烃实现语言如下。PROGRAM ExecuteCFC VAR fb_DoIt_0: FB_DoIt; fb_DoIt_1: FB_DoIt; iFinal_1: INT; iFinal_0: INT; xFinal: BOOL; END_VAR
在 CFC 中,最近创建的编程对象已选择“自动数据流模式”。编程对象的执行顺序已在内部进行了优化定义。
点击
。显示对象的执行顺序。框和输入框均按时间顺序编号,反映处理顺序。再次单击 CFC 编辑器时,编号将隐藏。
确定反馈网络中的执行顺序
创建带有反馈的 CFC 程序。
人民行动组织
PrgPositiveFeedback
计数。PROGRAM PrgPositiveFeedback VAR iResult: INT; END_VAR
选择反馈中的一个元素。
选定的元素以红色突出显示。
点击CFC → 执行顺序 →设置反馈的开始。
在运行时,首先处理此 POU。反馈的起始 POU 定义并修饰为
符号。执行顺序重新排序,选定的元素获得编号 0。(这是反馈的最低编号。)
再次选择起始 POU。
点击CFC → 执行顺序 →设置反馈的开始。
该运算块未被选为起始运算块。
执行顺序是内部定义的。
点击CFC → 执行顺序 → 显示执行顺序。
显示按数据流的执行顺序。
明确定义执行顺序
执行顺序您选择显式执行顺序模式对象的选项。
在设备或者程序单元视图,打开 CFC 对象的上下文菜单并单击特性 . 在特性对话框中,选择CFC执行令选项卡。
这执行顺序列表运算块显示当前选定的模式。
在执行顺序列表运算块,选择显式执行顺序模式并点击好的确认对话框。
选择“显式执行顺序模式”。CFC 编辑器中对网络进行了编号,并在CFC → 执行订单用于编辑执行顺序的菜单。
打开一个 CFC 对象。
选择一个编号元素并单击CFC → 执行命令 →置首。
执行顺序重新排序,选定的元素编号为 0。
提示
通过数据流自动定义的执行顺序,可以优化 POU 的时间和周期执行。在开发过程中,您无需任何有关内部管理的执行顺序的信息。
在显式执行顺序模式,您有责任调整执行顺序并评估其后果和影响。这也是始终显示执行顺序的另一个原因。