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

![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/672095f1666d3.png)

最近的工程在CFC中创建的编程对象已可以选择“自动数据流模式”。编程对象的执行顺序是在内部最佳定义的。

4.单击***CFC ➔ 执行顺序 ➔ Display Execution Order***。  
⇒显示了对象的执行顺序。块和输入已相应编号，并反映了时间顺序。再次在CFC编辑器中单击时，该编号将被隐藏。

![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/672096190a1b9.png)

###  

---

### 确定反馈网络中的执行顺序​

1.创建带有反馈的CFC程序。  
⇒

> POUPrgPositiveFeedback用来计数。
> 
> PROGRAM PrgPositiveFeedback  
> VAR  
>  iResult: INT;  
> END\_VAR

 ![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/672096ca2b719.png)  
   
  
   
2.在反馈中选择一个元素。⇒所选元素以红色突出显示。

3.单击***CFC ➔ 执行顺序 ➔ Set Start of Feedback***。  
⇒  
![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/6720970578873.png)   
⇒在runtime中，这个POU被优先执行。定义反馈的开始POU，并用 符号修饰。重新执行顺序，所选元素的编号为0。（这是最低数量的反馈。）

  
4.再次选择开始POU。

5.单击***CFC ➔ 执行顺序 ➔ Set Start of Feedback***。  
⇒未将POU选择为开始POU。  
   
![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/67209726350a9.png)  
   
   
执行顺序在内部定义。

  
6.Click***CFC ➔ 执行顺序 ➔ Display Execution Order***。  
⇒通过数据流显示执行顺序。

  
 ![](https://resource.helplook.net/docker_production/3648ne/article/CiTT1GrD/6720974aa704f.png)

---

### 明确定义执行顺序​

注意：由数据流自动定义的执行顺序会导致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。