# 强制和写入变量 ​

在MetaFacture中，在线模式可更改PLC中的变量值。在这里，我们区分强制和写入预先准备好的值。

写入是通过写入值命令 ([ Ctrl ] +[ F7 ] )完成的，并一次将变量设置为准备好的值。这样该值就可以在任何时候被程序再次覆盖。

强制执行是通过强制值命令([ F7 ] )完成的，并永久地设置准备好的值。有关更多信息，请参见下文：

在不同的地方可以准备一个值来强制或写入:

- 声明部分：准备值字段
- FBD/LD/IL编辑器的实现部分：内联监测字段
- 查看视图：准备值字段

有关这方面的说明，请参见下文。如果您想为已经强制的值再次准备一个值，则会打开准备值对话框，其中包含处理当前强制值的选项。

### 强制的功能性​

在任务循环的开始和结束(对于其他任务类型，则为处理循环)时，将准备好的值设置为相应的变量。

任务在每个周期的处理顺序如下：

1.读取输入

2.强制：在第一次程序调用之前，runtime系统将所有准备好的值写入变量，而不管它们是否被任务使用。

3.处理IEC代码

4.强制：在最后一次程序调用之后，runtime系统将所有准备好的值写入变量，而不管任务是否使用它们。

5.写入输出

注意: 在处理代码时，强制变量可能会在循环中临时获得不同的值，因为IEC代码执行了一个赋值。然后变量只在循环结束时才再次接收强制值。变量值也可以被客户机在中期对应用程序符号的写访问所覆盖。这种情况请参见设备对象属性中的与IEC任务同步访问变量选项，或符号配置中的配置与IEC任务的同步设置。这样PLC处理器支持的客户端写访问的同步可以与任务周期一起启用。

提示！

强制值用符号标记。MetaFacture执行强制，直到用户通过以下操作之一显式地解除它：

- 执行取消对所有值的强制命令
- 在准备值对话框中解除强制操作
- 注销应用程序
  如果在注销时强制变量仍然存在，那么将打开一个对话框，提示是否应该取消对所有变量的强制。如果您通过点击否进行响应，那么强制值将在下一次登录时再次应用。

### 强制声明部分​

要求：您的应用程序包含一个带有声明的POU。该应用程序处于在线模式。

1.选择命令工程 ➔ 编辑对象在编辑器中打开POU。

2.在编辑器的声明部分中，双击列（1）变量的准备值。
⇒可以编辑该字段并输入值。当它是一个布尔值时，您可以通过点击该字段来更改该值。

3.对其他变量执行步骤2。

4.点击调试 ➔ 强制值。
⇒变量值将被准备值覆盖。值用符号标记。

### 强制执行部分​

要求：应用程序处于在线模式。

1.选择命令工程 ➔ 编辑对象在编辑器中打开POU。

2.在编辑器的实现部分中，双击内联监视字段（1）。
⇒准备值对话框打开。

3.在字段中输入新值为下一次写入或强制操作准备新值。
⇒准备值出现在在线监视字段中。

4.点击调试 ➔ 强制值。⇒变量的值将被准备好的值覆盖。值用符号标记。

### 一个列表查看和编辑所有强制变量​

要求：该应用程序处于在线模式。多个变量强制。

1.点击视图 ➔ 监视 ➔ 监视全部强制。
⇒监视全部强制视图打开。它以监视列表的形式包含应用程序的当前所有强制变量。

2.选择列表中的所有行，然后在视图左上角列表框的下拉列表中点击强制 ➔ 取消强制并保留所有选定值。
⇒这些变量是非强制性的，它们将获得强制之前的值。

### 强制CFC中的功能块输入​

要求：应用程序的CFC POU包含功能块，并且该应用程序处于离线模式。

提示！

这种强制在内部使用数据断点，因此与使用强制值命令或[ F7 ] 强制不同。

由命令强制FB输入的值不响应命令显示所有强制或取消强制值。

1.双击树中的对象，打开CFC POU的编辑器。

2.使能所需功能块的可强制性。选择CFC中的POU元素，然后点击CFC ➔ 准备POU元素进行强制。

3.登录到目标设备上的应用程序。在CFC中，选择POU的输入，然后在上下文菜单中点击强制FB 输入。
⇒强制值对话框打开。

4.为输入设置一个新值。一个TON POU的例子: 对于布尔输入IN为FALSE，或对于PT输入(时间)为t#4s。点击确定已确认。
⇒设置值立即被强制。POU元素的左上方显示一个绿色圆圈，该元素中输入的名称以绿色突出显示。对于布尔值，在输入处会打开一个带有该值的小型监视视图。在监视视图中，例如在声明部分中，在值列中显示强制值。

5.要删除强制值，请再次点击强制FB输入。在强制值对话框中，选择删除值选项。
⇒强制被取消。输入从控制器获取当前值。