时序模式
这些过程控制和驱动指令支持不同的时序模式。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
时序模式有三种。
时序模式 | 说明 | |
周期性 | 周期性模式为默认模式,适用于大多数控制应用。我们建议将使用此模式的指令置于在周期性任务中执行的例程中。指令的增量时间 (DeltaT) 的确定方法如下: | |
如果指令在以下任务中执行 | DeltaT 将等于 | |
周期性任务 | 任务的周期 | |
事件任务或连续任务 | 自上次执行后所经过的时间 控制器将经过的时间截断为整毫秒 (ms) 的形式。例如,如果经过的时间 = 10.5 ms,则控制器会设置 DeltaT = 10 ms。 | |
过程输入的更新需要与任务的执行同步,或者其采样速度需比任务的执行速度快 5-10 倍,以最小化输入和指令之间的采样误差。 | ||
过采样 | 在过采样模式下,指令使用的增量时间 (DeltaT) 是写入指令的 OversampleDT 参数中的值。如果过程输入具有时戳值,则改为使用实时采样模式。 向程序添加逻辑以控制指令何时执行。例如,可以使用设置为 OversampleDeltaT 值的计时器通过使用指令的 EnableIn 输入来控制执行。 过程输入的采样速度需要比指令的执行速度快 5-10 倍,以最小化输入和指令之间的采样误差。 | |
实时采样 | 在实时采样模式下,指令使用的增量时间 (DeltaT) 是与过程输入更新相对应的两个时戳值之差。当过程输入具有与其更新相关的时戳,并且需要精确协调时,使用此模式。 从为指令的 RTSTimeStamp 参数输入的标签名称中读取时戳值。通常,此标签名称是与过程输入相关的输入模块上的参数。 指令将配置的 RTSTime 值(预期更新周期)与计算得到的 DeltaT 进行比较,以确定过程输入的每次更新是否都被指令读取。如果 DeltaT 不在 1 毫秒的配置时间内,则指令会将 RTSMissed 状态位置位,以表明读取模块上输入的更新时出现问题。 | |
基于时间的指令需要 DeltaT 为常数值,以便控制算法正确计算过程输出。如果 DeltaT 发生变化,则在过程输出中将出现不连续现象。不连续的严重程度取决于指令和 DeltaT 的变化范围。
如果发生以下情况,则会出现不连续现象:
- 在扫描期间未执行指令。
- 在任务运行期间多次执行指令。
- 任务正在运行时,任务扫描速率或过程输入的采样时间发生变化。
- 用户在任务运行时更改时基模式。
- 任务运行时,Order 参数在过滤块上发生更改。
- 更改 Order 参数在指令中选择其他控制算法。
时序模式的通用指令参数
支持时基模式的指令具有以下输入和输出参数。
输入参数
输入参数 | 数据类型 | 说明 |
TimingMode | DINT | 选择时序执行模式。 值:说明: 0 周期模式 1 过采样模式 2 实时采样模式 有效值 = 0 至 2 默认值 = 0 当 TimingMode = 0 且任务是周期性任务时,启用周期性时序,DeltaT 将设置为任务扫描速率。当 TimingMode = 0 且任务是事件任务或连续任务时,启用周期性时序,DeltaT 将设置为等于自上次执行指令后所经过的时间长度。 当 TimingMode = 1 时,启用过采样时序,DeltaT 将设置为 OversampleDT 参数的值。当 TimingMode = 2 时,启用实时采样时序,DeltaT 将是当前时戳值和先前时戳值(从输入相关的模块中读取)之差。 如果 TimingMode 无效,指令会将 Status 中的相应位置位。 |
OversampleDT | REAL | 过采样时序的执行时间。用于 DeltaT 的值以秒为单位。如果 TimingMode = 1,则 OversampleDT = 0.0 将禁止控制算法的执行。如果该值无效,指令将设置 DeltaT = 0.0,并将 Status 中的相应位置位。 有效值 = 0 到 4194.303 秒 默认值 = 0.0 |
RTSTime | DINT | 实时采样时序的模块更新周期。预期 DeltaT 更新周期以毫秒为单位。更新周期通常是用于配置模块更新时间的值。如果该值无效,指令会将 Status 中的相应位置位,并禁用 RTSMissed 检查。 有效值 = 1…32,767 ms 默认值 = 1 |
RTSTimeStamp | DINT | 实时采样时序的模块时戳值。对应于输入信号的上次更新的时戳值。此值用于计算 DeltaT。如果该值无效,指令会将 Status 中的相应位置位,并禁用控制算法的执行和 RTSMissed 检查。 有效值 = 0…32,767 ms(从 32767 跳回到 0) 1 次计数 = 1 毫秒 默认值 = 0 |
输出参数
输出参数 | 数据类型 | 说明 |
DeltaT | REAL | 两次更新间隔的时间。控制算法计算过程输出所用的时间(秒)。 周期性:如果任务是周期性任务,则 DeltaT = 任务扫描速率;如果任务是事件任务或连续任务,则 DeltaT = 自上次执行指令后所经过的时间 过采样:DeltaT = OversampleDT 实时采样:DeltaT = (RTSTimeStampn - RTSTimeStampn-1) |
状态 | DINT | 功能块的状态。 |
TimingModeInv (Status.27) | BOOL | TimingMode 值无效。 |
RTSMissed (Status.28) | BOOL | 仅用于实时采样模式。当 ABS | DeltaT - RTSTime | > 1(0.001 秒)时置位。 |
RTSTimeInv (Status.29) | BOOL | RTSTime 值无效。 |
RTSTimeStampInv (Status.30) | BOOL | RTSTimeStamp 值无效。 |
DeltaTInv (Status.31) | BOOL | DeltaT 值无效。 |
时序模式概览
下图显示了指令如何确定适当的时序模式。

提供反馈