# 通过数据流自动执行命令

在基于文本的编辑器和基于网络的编辑器中，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_VAR

> iResult := 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。