在基于文本和基于网络的编辑器中,POU 的执行顺序是唯一确定的。但是,在 CFC 编辑器中,您可以自由定位元素,因此执行顺序最初并不是唯一的。因此,CODESYS 根据数据流确定执行顺序,在多网络的情况下,根据元素的拓扑位置确定执行顺序。元素从上到下、从左到右排序。现在,执行顺序是唯一的,可以确保在按时间和周期优化的情况下处理 POU。
您可以获取图表中元素的时间顺序信息,并临时显示执行顺序。使用反馈功能对网络进行编程时,可以将某个元素定义为反馈回路的起点。
如有必要,您还可以在 CFC 对象中明确编辑处理顺序。为此,请将 CFC 对象的“Auto Data Flow Mode” 属性切换为“Explicit Execution Order Mode” 。在这种模式下,您可以通过菜单命令编辑执行顺序。
在CODESYS Development System V3.5 SP15 之前,您必须为每个 POU 明确定义执行顺序。没有模式切换。
数据流
通用来说,数据流指的是按时间顺序读取或写入数据的时间和编程对象。一个 POU 可以处理任意数量的数据流,这些数据流也可以相互独立地执行。
显示执行顺序
默认情况下,CFC 对象的执行顺序是自动确定的。为此选择了“自动数据流模式” 属性。您可以在 CFC 编辑器中临时显示自动确定的执行顺序。
-
使用“标准项目” 模板创建一个新项目,并指定名称
Minimal
(例如)。 -
使用带有输入和输出的 “ST” 实现语言中的功能块
FB_DOIt
扩展应用程序。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
-
在 “CFC” 执行语言中创建功能块
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 编辑器中再次点击,编号就会隐藏。
确定反馈网络中的执行顺序
-
创建有反馈的停火委员会计划。
POU
PrgPositiveFeedback
计数。PROGRAM PrgPositiveFeedback VAR iResult: INT; END_VAR
-
在反馈中选择一个元素。
所选元素以红色高亮显示。
-
点击“CFC 执行顺序 设置反馈开始时间” 。
运行时,首先处理该 POU。反馈的起始 POU 由
符号定义和装饰。执行顺序被调整,所选元素的编号为 0。(这是反馈中最低的数字)。
-
再次选择启动 POU。
-
点击“CFC 执行顺序 设置反馈开始时间” 。
未选择 POU 作为起始 POU。
执行顺序由内部定义。
-
单击“CFC 执行命令 显示执行命令” 。
显示数据流的执行顺序。
明确定义执行顺序
通过数据流自动定义的执行顺序,可以优化 POU 的执行时间和周期。在开发过程中,您不需要任何有关内部管理执行命令的信息。
在“明确执行命令模式” 中,您有责任调整执行命令并评估其后果和影响。这也是为什么总是显示执行命令的另一个原因。
当您为一个 CFC 对象选择“Explicit Execution Order Mode(显式执行顺序模式)” 选项时,您可以显式更改该对象自动定义的执行顺序。
-
在“Devices” 或“POUs” 视图中,选择一个 CFC 对象。
-
在右键菜单中,单击“Properties” 。
-
单击“CFC 执行令” 选项卡。
“执行顺序” 列表框显示当前选择的模式。
-
在“执行命令” 列表框中,选择“显式执行命令模式” 。
-
单击“OK” 确认对话框。
选择 "显式执行顺序模式 "属性。在 CFC 编辑器中对网络进行了编号,在“CFC 执行顺序” 菜单中提供了以下命令,用于编辑执行顺序。
-
打开一个 CFC 对象。
-
选择一个编号元素,然后单击“CFC 执行命令 发送到前台” 。
执行顺序被重新排列,所选元素的编号为 0。