时序模式

这些过程控制和驱动指令支持不同的时序模式。
  • DEDT
  • LDLG
  • RLIM
  • DERV
  • LPF
  • SCRV
  • HPF
  • NTCH
  • SOC
  • INTG
  • PI
  • TOT
  • LDL2
  • PIDE
时序模式有三种。
时序模式
说明
周期性
周期性模式为默认模式,适用于大多数控制应用。我们建议将使用此模式的指令置于在周期性任务中执行的例程中。指令的增量时间 (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 值无效。
时序模式概览
下图显示了指令如何确定适当的时序模式。
Timing Modes_Diagram
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal