在基于文本的编辑器和基于网络的编辑器中,POU中的执行顺序是唯一确定的。但是,在CFC编辑器中,您可以自由放置元素,因此执行顺序最初不是唯一的。因此,MetaFacture通过数据流确定执行顺序,在多个网络的情况下,通过元素的拓扑位置确定执行顺序。元素从上到下,从左到右排序。现在,执行顺序是唯一的,并确保在按时间和周期进行优化的同时处理POU。
您可以获取有关图表中元素时间顺序的信息,并临时显示执行顺序。使用反馈对网络进行编程时,可以将元素定义为反馈循环的起点。
如果需要,还可以在CFC对象中显式编辑处理顺序。为此,请将CFC对象的Auto Data Flow Mode属性切换为Explicit Execution Order Mode。在此模式下,您可以选择通过菜单命令来编辑执行顺序。
在MetaFacture Development SystemV1.0 SP15之前,您必须为每个POU明确定义执行顺序。没有模式切换。
数据流
通常,数据流被描述为按时间顺序排列,在该顺序中,何时以及如何以何种编程对象读取或写入数据。一个POU可以处理任何数量的数据流,它们也可以彼此独立地执行。
显示执行顺序
默认情况下,将自动确定CFC对象的执行顺序。为此选择了自动数据流模式属性。您可以在CFC编辑器中临时显示自动确定的执行顺序。
1.例如,使用标准工程模板创建一个新项目,并指定名称Minimal。
2.使用带有输入和输出的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_VARiResult := iAlfa + iBravo;
IF xItem = TRUE THEN
xResult := TRUE;
END_IF
3.用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中创建的编程对象已可以选择“自动数据流模式”。编程对象的执行顺序是在内部最佳定义的。
4.单击CFC ➔ 执行顺序 ➔ Display Execution Order。
⇒显示了对象的执行顺序。块和输入已相应编号,并反映了时间顺序。再次在CFC编辑器中单击时,该编号将被隐藏。
确定反馈网络中的执行顺序
1.创建带有反馈的CFC程序。
⇒
POUPrgPositiveFeedback用来计数。
PROGRAM PrgPositiveFeedback
VAR
iResult: INT;
END_VAR
2.在反馈中选择一个元素。⇒所选元素以红色突出显示。
3.单击CFC ➔ 执行顺序 ➔ Set Start of Feedback。
⇒
⇒在runtime中,这个POU被优先执行。定义反馈的开始POU,并用 符号修饰。重新执行顺序,所选元素的编号为0。(这是最低数量的反馈。)
4.再次选择开始POU。
5.单击CFC ➔ 执行顺序 ➔ Set Start of Feedback。
⇒未将POU选择为开始POU。
执行顺序在内部定义。
6.ClickCFC ➔ 执行顺序 ➔ Display Execution Order。
⇒通过数据流显示执行顺序。
明确定义执行顺序
注意:由数据流自动定义的执行顺序会导致POU的时间和周期优化执行。在开发过程中,您不需要有关内部管理执行顺序的任何信息。在Explicit Execution Order Mode模式下,您必须调整执行顺序并评估后果和影响。这是始终显示执行顺序的另一个原因。
选择对象的Explicit Execution Order Mode选项时,可以显式更改CFC对象的自动定义的执行顺序。
1.在设备或POU视图中,选择一个CFC对象。
2.在列表菜单中,单击属性。
3.单击CFC Execution Order选项卡⇒列表框Execution order显示当前选择的模式。
4.在Execution order列表框中,选择Explicit Execution Order Mode。
5.单击确定以确认对话框⇒Explicit Execution Order Mode模式属性被选中。网络在CFC编辑器中编号,并且在CFC ➔ 执行顺序菜单中提供了以下命令,用于编辑执行顺序。
6.打开一个CFC对象。
7.选择一个编号的元素,然后单击CFC ➔ 执行顺序 ➔ 置首。
⇒重新执行顺序,所选元素的编号为0。