# 您的第一个MetaFacture程序

## 在你开始之前​

数据安全：为了最大程度地降低数据安全漏洞的风险，我们建议采取以下组织措施和技术措施：

避免从开放网络和互联网访问可编程逻辑控制器和控制网络。
使用VPN进行远程访问。
安装防火墙。
如果要在网络上发布可视化信息，请设置密码以防止未经授权的访问。
使用最新版本的网关服务器和Web服务器。

安装MetaFacture

注意：安装包括开发系统和MetaFacture网关和MetaFacture Control Win V3，它们的服务可以在Windows任务栏中访问。为了在计算机上模拟控制器，这三个程序是必需的。

## 第一个工程的内容​

在本教程中，您将编写一个简单的冰箱控制器。已经完成的工程RefrigeratorControl.project_archive可以在 MetaFacture的工程目录中找到安装目录。除了您将在这里逐步创建的示例工程之外，完成的工程还包含一个完整的可视化操作和诊断。

与传统的冰箱一样，温度由用户通过旋转控制来指定。
冰箱使用传感器确定实际温度。当它太高时，冰箱以可调节的延迟启动压缩机。
压缩机冷却，直到达到预期的温度，减去一个1度的滞后。滞后是为了防止实际温度在设定的温度附近波动过大，这将导致压缩机不断关闭和打开。
当门打开时，冰箱内部的灯点亮。当门开得太久时，会发出哔哔声信号。
如果压缩机在很长一段时间内没有达到设定的温度，尽管电机一直在工作，蜂鸣器仍会发出稳定的声音信号。

工程：

冷却控制在应用程序的主程序中。信号管理在另一个POU中进行控制。在Standard库中提供了所需的标准功能块。 由于在这个示例工程中没有物理温度传感器和物理执行器连接，您还将编写一个程序来模拟温度的升高和降低。 这将允许您在联机模式下监视冰箱控制器的操作。

所有POU使用的变量都需要在全局变量列表中定义。

## 准备工作​

您已经安装了MetaFacture Development System并使用默认配置文件“MetaFactureV<当前版本>”启动它。将使用标准菜单栏打开开发系统的框架窗口：尚未打开任何工程。

### 创建工程并选择PLC设备​

1.单击文件 ➔ 新工程。

2.在模板视图中，选择标准工程模板。

3.指定工程的名称和存储位置并且单击确定⇒打开标准工程对话框，用于输入设备类型和主程序的实现语言。

4.在设备列表框中，选择MetaFacture Control Win V3。

5.在PLC_PRG列表框中，选择连续功能图 (CFC)并且单击确定。⇒工程在MetaFacture框架窗口中打开。

在框架窗口的左侧，在设备视图中，您将会看到设备树的(设备视图)。之前选择的PLC设备以默认名称设备显示。

对于将要编程的应用程序的Application对象，已经存在于 PLC Logic对象下。

Application 已经包含主程序PLC_PRG和 库管理器对象。

库管理器已经包含库IoStandard和Standard。库IoStandard是I/O配置所必须的。库Standard包含IEC61131-3标准描述的所有函数和功能块。

任务配置对象位于具有MainTask的设备树的底部，该对象控制PLC_PRG的处理。例如，可以稍后将可视化对象插入任务配置下面。

除了库IoStandard和Standard之外，您还需要这个示例项目的库Util：

1.在设备树中双击库管理器对象。⇒库管理器在其编辑器中打开。

2.在编辑器的标题栏中，单击添加库。 在添加库对话框中，选择库Util。
单击确定确认选择。⇒库Util添加到库管理器中，且库中的POUs可在工程中使用。

## 要在工程中对控件应用程序进行编程，请参见以下部分

### 声明全局变量​

首先，声明要在整个应用程序中使用的变量。为此，请在应用下面创建全局变量列表：

1.选择Application然后在右键菜单中单击添加对象 ➔ 全局变量列表。将默认名称GVL更改为Glob_Var并且单击添加进行确认。
⇒Glob_Var对象出现在Application之下。GVL编辑器将在设备树的右侧打开。

2.当文本视图打开时，它已经包含关键字VAR_GLOBAL和END_VAR。对于我们的示例，在编辑器的右侧栏中单击 以激活表格视图⇒出现一个空行。光标在名称列中。

3.在右键菜单中，单击插入⇒打开一个输入字段。同时，范围 VAR_GLOBAL以及数据类型BOOL被自动地输入到行中。

4.在名称字段中指定rTempActual。

5.双击数据类型栏的字段⇒现在可以编辑该字段并显示按钮。

6.单击并选择输入助手⇒将打开输入助手对话框。

7.选择数据类型REAL并单击确定。

8.在初始化栏中输入一个数值（例如：8.0)。

以相同的方式声明以下变量：

名称 | 数据类型 | 初始化 | 注释
rTempActual | REAL | 1.0 | 实际温度
rTempSet | REAL | 8.0 | 设定温度
xDoorOpen | BOOL | FALSE | 门的状态
timAlarmThreshold | TIME | T#30S | 压缩机运行后的一段时间内，信号声响起。
timDoorOpenThreshold | TIME | T#10S | 打开门一段时间后，信号声响起。
xCompressor | BOOL | FALSE | 控制信号
xSignal | BOOL | FALSE | 控制信号
xLamp | BOOL | FALSE | 状态消息

### 在CFC编辑器中创建冷却控制的主程序​

现在，您将在默认情况下创建的主POUPLC_PRG中描述应用程序的主要功能。当实际温度高于设定温度加上滞后时，压缩机被激活并冷却。当实际温度低于设定温度减去滞后时，压缩机关闭。

若要用CFC实现语言描述此功能，请执行以下步骤：

1.在设备树中双击PLC_PRG⇒CFC编辑器在PLC_PRG选项卡中打开。 声明编辑器以文本或表格形式显示在图形编辑器区域的上方。 工具箱视图在右侧。

2.在工具箱视图中，选择输入元素并将其拖动到CFC编辑器中的某个点⇒无名条目???被插入。

3.在CFC编辑器中，单击???输入。然后单击以打开输入帮助。在变量类别中，在应用 ➔ Glob_Var下选择变量rTempActual。这就是在此处如何引用全局变量rTempActual⇒输入名称是Glob_Var.rTempActual。

4.与第3步中一样，使用全局变量Glob_Var.rTempSet的名称创建另一个输入。

5.创建另一个输入，然后单击???并将其替换为名称rHysteresis。⇒因为这不是已知变量的名称，所以将打开Declare Variable 对话框。该名称已在对话框中使用。

6.在声明变量对话框中，将数据类型指定为REAL且初始值为1。单击确定⇒变量rHysteresis出现在声明编辑器中。

7.在工具箱视图中，选择框元素并将其拖动到CFC编辑器中的某个点⇒POU在CFC编辑器中打开。

8.将???替换为ADD⇒POU添加与其连接的所有输入。

9.将Glob_Var.rTempSet输入连接到ADD POU。为此，请单击输入的输出引脚并将其拖动到ADDPOU的上方输入引脚。

10.以相同的方式，将输入rHysteresis连接到ADDPOU的下部输入⇒现在，ADD添加了两个输入rHysteresis和Glob_Var.rTempSet。

11.若要在编辑器中移动元素，请单击元素中的空白区域或单击框架，以便选中该元素（红色边框、红色高亮）。 将元素拖动到所需位置。

12.在ADDPOU的右侧创建另一个POU。其目的是将Glob_Var.rTempActual与Glob_Var.rTempSet 和rHysteresis之和进行比较。将GT函数（大于）分配给POU⇒GTPOU工作方式如下：IF (upper input > lower input) THEN output := TRUE;

13.将输入Glob_Var.rTempActual连接到GTPOU的上部输入。

14.将输出Glob_Var.rTempActual连接到GTPOU的下部输入。

15.现在，在GT POU的右侧创建一个功能块，根据输入条件（设置–重置）启动和停止冷却压缩机。在???字段中指定名称SR。按Enter键关闭POU(SR_0)上方的打开的输入字段⇒声明变量对话框打开。

16.用名称SR_0和数据类型SR声明变量。 单击确定⇒实例化了标准库中的SRPOU。SR用于在GT POU的输出处定义THEN。输入SET1和RESET将出现。

17.将GTPOU右侧的输出引脚连接到SR_0POU的SET1输入端⇒SR可以将布尔变量从FALSE设置为TRUE，然后再次返回。当满足输入SET1的条件时，布尔变量将设置为TRUE。当满足RESET的条件时，变量将再次重置。我们示例中的布尔（全局）变量是Glob_Var.xCompressor。

18.创建一个Output元素，并将其分配给全局变量Glob_Var.xCompressor。在Glob_Var.xCompressor和SR的输出引脚Q1之间拖动一条连接线。

现在指定压缩器应再次关闭的条件（在这种情况下，SR POU的RESET输入将获得TRUE信号）。为此，请制定与上述相反的条件。使用SUB（减）和LT（小于）POUs来执行此操作。

结果如下CFC图表：

### 在梯形图编辑器中创建用于信号管理的POU​

在另一个POU中，您现在将实现警报蜂鸣器以及开关灯的信号管理。梯形图（LD）实现语言适用于此。

在各自的网络中处理以下每个信号：

当压缩机因运行时间过长而温度过高时，会发出连续的声音信号。
当门打开时间过长时，会发出间歇性信号。
只要门是打开的，灯就一直亮着。

1.在设备树中Application下面，使用Ladder Diagram (LD)实现语言创建Program类型的POU对象。
为程序指定名称Signals⇒Signals在PLC_PRG旁边的设备树中列出。梯形图编辑器在Signals选项卡中打开。声明编辑器出现在上方，工具箱视图在右侧。 LD包含一个空网络。

2.在网络中创建一个程序，以便在压缩机运行时间过长而未达到温度设定点时发出声音信号。为此，插入一个TON计时器POU。仅在指定时间后，它将布尔信号切换为TRUE。在ToolBox视图的功能块下选择一个 TON，然后将其拖动到空网格和出现的从此处开始框。 当字段变为绿色时，释放鼠标按钮。
⇒POU显示为一个包含输入和输出的框，并自动分配实例名TON_0。 行编辑器打开，光标闪烁在那里。

3.按[ Enter ] 键⇒您已确认实例名称。声明变量对话框打开。

4.单击确定确认对话框⇒现在，插入的POUTON实例化为名称TON_0。此外，默认情况下，顶部输入显示为POU之前的关联。

注意：要阅读功能块TON的帮助，请将光标放在“TON”字符串中的POU中/上，然后按[ F1 ] 。

5.现在您可以编程，以便在冷却压缩机开始运行时激活功能块。 为此，请在POUGlob_Var.xCompressor的上部输入处命名关联。您已经在GVLGlob_Var中声明了此布尔变量。

注意：当您开始在输入位置键入变量名称时，您会自动获得所有变量的列表，这些变量的名称以键入的字符开头，并且可以在此时使用。此帮助是MetaFacture选项中用于智能编码的默认设置。

6.插入要激活的信号。为此，将一个线圈从梯形图元素工具箱类别拖到TONPOU的输出Q上。指定线圈的名称Glob_Var.xSignal。

7.定义从POUTON_0激活到信号发出的时间段。此定义通过变量Glob_Var.timAlarmThreshold进行，为此，您可以在TON_0的输入PT插入该变量。 要执行此操作，请单击输入引脚右侧的细边框并输入变量名。

8.选择POUTON并且单击删除上下文菜单中未使用的FB调用参数⇒删除未使用的输出ET。

9.在LD的第二个网络中，当门开得太长时，程序使信号间歇地发出声音。

在编辑器窗口中，单击第一个网络下面。在上下文菜单中，单击插入网络⇒出现一个数字为2的空网络。

10.与第一个网络一样，实现一个POUTON用于信号的定时激活。这次是由输入IN上的全局变量Glob_Var.xDoorOpen触发的。在输入PT处，添加全局变量Glob_Var.timDoorOpenThreshold。

11.此外，从库Util，在该网络中POUTON的输出Q处添加一个POU BLINK并将其实例化为Blink_0。

12.POUBLINK_0为信号发送Q以及Glob_Var.xSignal提供时钟。
首先，将两个Contact元素从工具箱视图拖动到POU的OUT输出。在输出Q之后直接将变量TON_1.Q分配给该触点，并将全局变量Glob_Var.xDoorOpen分配给第二个触点。

13.在两个触点之后插入一个线圈元素，并为其分配全局变量Glob_Var.xSignal。

14.为此，声明局部变量timSignalTime : TIME := T#1S;并在输入TIMELOW以及TIMEHIGH处插入此变量。对于TRUE，循环时间为1秒；对于FALSE，循环时间也为1秒。

15.选择POUTON并且单击删除上下文菜单中未使用的FB调用参数⇒删除未使用的输出ET。

16.在LD的第三个网络中，编程使得只要门是打开的灯就亮起来。 为此，插入另一个网络。在左侧的网络中，插入一个触点GlobVar.xDoorOpen，它直接指向插入的线圈Glob_Var.xLamp。

17.MetaFacture对LD的网络进行连续处理。现在，在网络1的末尾安装一个跳转到网络3，以确保只执行网络1或网络2:
通过单击网络或具有网络编号的字段来选择网络3。在右键菜单中，单击插入标签。用DoorIsOpen:替换网络左上角的文本Label:
选择网络1。在工具箱视图的公用类别中，将跳转元素拖到网络中。将其放置在显示的添加输出或跳转到此处框中。
⇒出现跳转元素。跳转目标仍指定为???。

18.选择???并且单击从可能的标签标识符中选择DoorIsOpen，然后单击确定进行确认。
⇒实现了网络3的标签。

LD程序现在如下所示：

### 在主程序中调用Signals程序​

在我们的程序示例中，主程序PLC_PRG应该调用Signals程序进行信号处理。

1.在设备树中，双击PLC_PRG⇒PLC_PRG程序在编辑器中打开。

2.在工具箱视图中，将BOX元素拖动到PLC_PRG的编辑器中。

3.使用输入助手，将该POU从POU调用 类别添加到Signals程序的调用中。

### 创建用于仿真的ST POU​

由于该示例工程中的应用程序未链接到物理传感器和执行器，因此您还需要编写一个用于模拟温度升高和降低的程序。这将允许您在联机模式下监视冰箱控制器的操作。

您可以使用结构化文本创建模拟程序。

程序将升高温度，直到主程序PLC_PRG确定已超过设定温度。然后程序启动冷却压缩机。然后，模拟程序降低温度，直到主程序再次停用压缩机。

1.在应用程序下面，在ST实现语言中插入一个POU类型的程序。指定仿真的名称。
2.在ST编辑器中实现以下代码：

> PROGRAM Simulation
> VAR
> TON_1: TON; //当压缩机被激活时，温度会延时下降
> P_Cooling: IME:=T#500MS;
> xReduceTemp: BOOL; //降温信号
> TON_2: TON; //当压缩机启动时，温度会随着时间延迟而升高
> P_Environment: TIME:=T#2S; //关门的延迟时间
> P_EnvironmentDoorOpen: TIME:=T#1S; //开门延时时间
> xRaiseTemp: BOOL; //温度升高信号
> timTemp: TIME; //延迟时间
> iCounter: INT;
> END_VAR

> iCounter := iCounter + 1; // 没有功能，仅用于演示目的。

> // 在压缩机因温度过高而启动后,温度降低。
> // 延迟P_Cooling后，每个周期温度降低0.1°C
> IF Glob_VAR.xCompressor THEN
> TON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp);
> IF xReduceTemp THEN
> Glob_Var.rTempActual := Glob_Var.rTempActual-0.1;
> TON_1(IN:=FALSE);
> END_IF
> END_IF

> //如果门是开着的，升温会更快；SEL 选择 P_EnvironmentDoorOpen
> timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen);

> //如果压缩机未运行，则冷却室会变热。
> //延迟tTemp后，每个周期温度升高0.1°C
> TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp);
> IF xRaiseTemp THEN
> Glob_Var.rTempActual := Glob_Var.rTempActual + 0.1;
> TON_2(IN:=FALSE);
> END_IF

注意：我们建议您使用可视化来方便操作和监视整个控制程序。 使用MetaFacture创建的可视化将安装在本教程的完整示例工程中，该工程随标准MetaFacture Visualization可视化安装（工程目录提供。您可以将该工程下载到控制器，然后启动它以查看它与可视化文件一起工作。启动时，Live_Visu以冰箱的表示形式开始，该表示形式无需输入任何数据即可复制模拟程序的操作。但是，可以通过单击开/关来打开和关闭门。 可以通过旋转控制的指针调整默认温度。 在本教程中，我们将不介绍可视化的创建。在MetaFacture Visualization可视化帮助中计划了相应的教程。

### 定义任务配置中要执行的程序​

默认任务配置包含对主程序PLC_PRG的调用。对于我们的示例工程，您还需要添加对Simulation程序的调用。

1.在设备树中，将Simulation拖到Task Configuration下的MainTask⇒将Simulation程序插入到任务配置中。

2.要查看任务配置，请双击MainTask条目以打开编辑器⇒在编辑器下部的表中，您可以看到任务调用的POU：PLC_PRG(默认输入)和Simulation。任务的调用类型为Cyclic，间隔为20毫秒。在联机模式下，任务将在每个周期一次执行两个POUs。

### 定义与PLC通信的"活动应用" ​

Application的名称在设备视图中以粗体显示。 这意味着该应用程序被设置为“活动应用”。然后，与控制器的通信将引用此应用程序。

当一个项目中只有一个应用程序时，它将自动成为主动应用。如果您的应用程序尚未激活，请按以下方式激活它：

在Application的右键菜单中，单击设置主动应用⇒应用现在以粗体显示在设备视图中。

### 调试应用程序​

当您输入代码时，MetaFacture会立即通过在相关文本下面的红色波浪下划线提醒您出现语法错误。 按[ F11 ] 检查整个应用程序的语法。检查结果显示在消息视图中。如有必要，请单击视图 ➔ 消息以打开消息视图。然后您可以选择一条消息并按[ F4 ] 键跳到代码中的相应点。

之后，仅将无错误应用程序下载到控制器。

## 要建立与PLC的连接，请参阅以下部分： ​

### 启动网关服务器和PLC​

小心：检查控制器的可访问性

出于安全原因,在任何情况下都不应从因特网或不受信任的网络访问控制器! 特别是,TCP/IP编程端口(通常为 UDP-Ports 1740..1743和TCP-Ports 1217 + 11740或控制器特定的端口)不应在没有保护的情况下从因特网访问。如果需要因特网访问控制器,使用一个安全的机制是绝对必要的,如VPN和密码保护的控制器.

启动网关服务器：

程序GatewaySysTray作为MetaFacture的标准安装。 您可以通过此程序与网关服务器通信。 当系统启动时，网关服务器作为服务自动启动。 检查Windows任务栏是否包含程序图标 。 当网关服务器未运行时，图标如下： 。在这种情况下，可以单击图标打开网关菜单，然后单击启动网关。

启动PLC:

程序MetaFactureControlSysTray默认与MetaFacture一起安装。您可以通过此程序与MetaFacture控制服务通信。

在MetaFactureV1.0sp2及更高版本中，控制服务在启动系统时不再自动启动。这是为了防止未经授权的访问。 按如下方式启动

PLC: 在Windows任务栏中，单击打开PLC菜单。 然后单击Start PLC。如果PLC正在运行，则图标变为。启动时出现的对话框表明启动的PLC允许编程访问。请注意上面的安全提示。

### 在第一个通信配置中：添加网关​

在设备视图中，双击设备Device(MetaFacture Control Win V3)⇒通讯设置选项卡将在Device中打开。

如果这是您与MetaFacture V3的第一个通信配置，那么现在需要定义本地网关服务器。 如果已经定义了网关服务器，则它将显示在通讯设置选项卡上。 在这种情况下，您现在可以继续“ 定义通信通道”。

网关服务器随MetaFacture安装一起提供。

1.单击网关 ➔ 添加新网关⇒网关对话框打开。

2.在名称输入字段中，指定网关的符号名称。

3.在设备列表框中，选择TCP/IP。

4.双击IP地址行的右列，并在输入字段中指定localhost。

5.单击确定⇒网关在设备编辑器的通信设置选项卡（1）上输入。 当网关正常运行时，网关图形上会出现一个填充的绿色圆圈：

### 定义通信通道​

现在定义设备的通信通道，然后通过您设置的网关使用。 为此，双击设备树中的设备以打开设备编辑器的通信设置选项卡。

1.单击扫描网络以在本地网络中搜索所有可用设备。⇒此时会出现选择设备对话框（1），其中列出了可以与之建立连接的所有设备。
2.选择具有你的计算机名称的条目。

3.单击确定⇒现在，该通道处于活动状态，并且相关信息显示在通讯设置选项卡上的设备图形下方。

现在，所有通信操作都完全指向此通道。如果工程中有多个通信通道，请稍后记住这一点。

## 对于PLC上的应用，请参见以下部分：​

###

### 将应用程序下载到PLC ​

要求：该应用程序已编译，没有错误。参见" 调试应用程序"。

1.单击在线 ➔ 登录⇒将打开一个对话框提示，询问是否应将应用程序下载到控制器。

2.单击确定⇒应用程序被下载到控制器。 在设备视图中的控制器和应用程序条目以绿色突出显示。 停止出现在应用对象之后。 控制器的当前状态显示在任务栏中 。

### 启动应用程序

如果您一直严格遵循本教程，那么您可以在PLC设备(MetaFacture Control Win V3)上使用该应用。

1.在设备视图中，在应用对象的右键菜单中，单击开始⇒程序开始运行。在设备视图中的控制器和应用程序条目以绿色突出显示。运行出现在应用对象之后。控制器的当前状态显示在任务栏中： 。

### 在运行时监视和一次性写入变量值​

在以下部分中，您可以查看各个POUs中变量值的“监视”，并且只能一次从 MetaFacture在控制器上设置特定的变量值。

您可以在POU编辑器的联机视图或监视列表中看到应用程序变量的实际值。 在这里的示例中，我们将重点关注POU编辑器中的监视。

要求：应用程序正在控制器上运行。

1.在设备树中，双击对象PLC_PRG,Signals,Simulation,和Glob_Var 以打开编辑器的在线视图。
⇒在每个视图的声明部分，控制器上变量（1）的实际值出现在Value列（3）的表达式表中（见图）。

实现部分的监视取决于实现语言。 对于非布尔变量，该值始终位于标识符右侧的矩形字段中。 在ST编辑器中，这也适用于布尔变量。我们将此显示称为“在线监控”。在图形编辑器中，布尔变量的值由输出连接线的颜色显示（黑色表示FALSE ，蓝色表示TRUE）：

2.观察变量值在不同POU中的变化。 例如，您可以在GVLGlob_Var中看到由于仿真程序的处理，rTempActual和xCompressor的值是如何变化的。

控制器上变量值的一次性设置：

1.在GVLGlob_Var的在线视图中设置焦点。

2.若要设置新的指定值，请双击表达式rTempSet旁边的Prepared Value列（2）。
⇒打开一个输入字段。

3.指定值9并退出输入字段。

4.若要指定打开的门，请在表达式xDoorOpen旁边的准备值字段中单击一次。指定值为TRUE。再单击三次，可以在TRUE, FALSE, 和空白之间切换准备值。

5.要将准备值TRUE仅一次写入变量，请按[ Ctrl ] +[ F7 ] 。⇒这两个值分别传输到Value列（3）。现在，变量xDoorOpen不再更改其值，设置温度为9度。 变量timTemp更改为值1s ，因为现在冰箱门已“打开”，并且由于Simulation导致的加热应比以前快(2s)。

### 在运行时设置断点和单步执行

调试：为了排除故障，您需要检查代码中某些点的变量值。 您可以为执行定义断点，并启动语句的逐步执行。

要求：该应用程序已下载到控制器并正在运行。

1.双击Simulation以在编辑器中打开程序。

2.将光标放在代码行iCounter := iCoutner + 1; 中：然后按[ F9 ] 。⇒该符号显示在代码行之前。它表示在此行上设置了断点。 符号立即更改为。黄色箭头总是指向下一个要处理的语句。 出现在任务栏中，而不是 。

3.在内联监视或Simulation程序的声明部分中观察变量iCounter的值。
⇒变量的值不在更改。进程在断点处停止。

4.按[ F5 ] 重新开始处理。⇒一个周期后，程序再次在断点处停止。iCounter增加了1。

5.按[ F8 ] 执行下一个处理步骤。⇒行末尾的返回iCounter := iCounter + 1;;语句用黄色突出显示。

6.再次按[ F8 ] 执行下一个处理步骤⇒进程跳到PLC_PRG程序的编辑器。 反复按[ F8 ] 显示程序是如何逐步执行的。 要执行的语句每次都用黄色箭头再次标记。

7.要禁用断点并返回到正常处理，请将光标重新置于代码行中，然后按[ F9 ] 键。然后按[ F5 ] 键将应用程序设置为模式。

### 在运行时执行一个周期​

要求：该应用程序已下载到控制器并正在运行。

1.如上所述在步进时，在Simulation程序中监视线iCounter := iCounter + 1;。

2.按[ Ctrl ] +[ F5 ] 或者单击调试 ➔ 单个周期以运行单个周期。⇒进程将运行一个周期，并再次在断点处停止。iCounter的增量为1。

3.再按几次[ Ctrl ] +[ F5 ] 键可以查看单个循环。然后再按[ F5 ] 。⇒程序将再次运行，而不会停止并且没有强制值。temp变量的值再次为1s。再次显示在状态栏中。