出现错误时的响应Filter_PT1指令会检测输出值计算过程中可能出现的各种错误。即便存在未决错误,也可在输出中输出此计算结果。如果某个错误影响了输出值计算的正确性,则将在输出中输出一个替代输出值。请在ErrorMode 变量中指定出现某个影响输出值计算正确性的错误时将输出的替代输出值。下表列出了 ErrorMode 变量和Filter_PT1 在 Output 参数中输出的替代输出值之间的相关性:ErrorMode Output0 Input 参数值1SubstituteOutput 参数值2 上一个有效滤波器输出值0.0,如果不存在有效滤波器输出值默认设置ErrorMode 不在0...4 的范围内时使用3 0.04 Input * Gain 乘积值以下内容还适用于 ErrorMode 变量的所有值:•如果替代输出值不是一个有效的 REAL 值,则会将 0.0 作为输出值输出。• 替代输出值将限制在数据类型 REAL的取值范围内。只有这样才能在 Output 参数中输出替代输出值。• 只有在设置了 Reset = FALSE 参数的情况下ErrorMode 变量才有效。如果设置了 Reset =TRUE 参数,则 SubstituteOutput 参数值将在Output 参数中输出。Error 参数指示是否存在错误处于未决状态。当错误不再处于未决状态时,Error设为FALSE。ErrorBits 参数显示了已发生的错误。ErrorBits 具有保持性,仅通过 Reset 或ErrorAck参数的上升沿来复位。Filter_PT1 工作原理复位响应根据 Reset 参数,Filter_PT1执行如下操作:• 如果设置了 Reset =TRUE 参数,则 SubstituteOutput 参数值将在 Output参数中输出。• 如果设置了 Reset = FALSE 参数,则在 Output 中输出的值将通过滤波器算法计算。• 如果 Reset参数从 FALSE 设为 TRUE,Output 参数值会直接切换为 SubstituteOutput参数的值。这一转换过程中可发生输出跳转。此外,ErrorBits 参数也会复位。• 如果 Reset 参数从 TRUE 设为FALSE,则会增加滤波算法,从而使转换没有扰动。使能行为 EN/ENO如果满足下列其中一个条件,则使能输出 ENO 将设为FALSE。• 使能输入 EN 设为 TRUE,且 Output 参数由出现错误消息 ErrorBits ≥ 16#0001_0000时的替代输出值指定。• 使能输入 EN 设为 FALSE。否则,使能输出 ENO 设为 TRUE。自动测量周期时间要计算输出值,则Filter_PT1 需要自上次调用 Filter_PT1 以来经过的时间。周期时间默认自动测量,并且自第二次调用起在CycleTime.Value 变量中输出。Filter_PT1 测量每次指令调用的周期时间,因此可用于非等时同步调用周期,例如OB1 中。请注意,周期时间自动测量期间的条件性调用指令、有效断点或加载快照作为实际值会延长周期时间值。如果周期时间过长,会在错误消息ErrorBits = 16#0008_0000 中以错误形式进行标识。如果周期时间测量未返回有效结果,Filter_PT1会使用上一个有效的周期时间计算当前输出值。此外,Filter_PT1 在 ErrorBits 参数中输出错误消息。通过设置CycleTime.EnableMeasurement 变量 = FALSE 来禁用周期时间的自动测量时,必须在CycleTime.Value 变量中手动输入周期时间。每次调用时,Filter_PT1 都会检查CycleTime.Value变量的有效性。带断点的周期时间的自动测量当 Filter_PT1的两次调用之间的断点有效时,周期时间的自动测量会得到两次调用之间经过的实际时间。当一个断点有效时,CPU 处于 HOLD操作状态。说明有效断点会延长 Filter_PT1 的两次调用之间的时间间隔。两次调用之间的时间间隔越长,Output参数中输出值的变化就越大。此外,时间间隔较长可能导致无法满足 Lag ≥ CycleTime.Value/2的条件,因此会通过错误消息 ErrorBits = 16#0008_0000指示错误。如果无需根据带有效断点的实际时间计算输出值,请按照下列步骤操作:• 通过设置变量CycleTime.EnableMeasurement = FALSE 来禁用周期时间的自动测量。• 在CycleTime.Value 变量中手动输入周期时间。输入参数 Filter_PT1参数 数据类型 默认值 说明Input REAL0.0 输入值SubstituteOutputREAL 0.0 在下列情况下,SubstituteOutput 用作替代输出值•Reset = TRUE或• 如果存在通过错误消息 ErrorBits ≥ 16#0001_0000指示的错误,则无法正确计算输出值,且 ErrorMode 会配置为数值 1。ErrorAck BOOL FALSE 删除错误消息•边沿 FALSE -> TRUEErrorBits 已复位。Reset BOOL FALSE 重新启动指令• 边沿 FALSE-> TRUEErrorBits 已复位。• 只要 Reset 设为 TRUE,就会在输出中输出替代输出值SubstituteOutput。• 只要 Reset 设为 FALSE,就会计算输出值。输出参数 Filter_PT1参数 数据类型默认值 说明Output REAL 0.0 输出值输出值具有保持性。ErrorBits DWORD DW#16#0 ErrorBits参数 (页 465)显示了处于未决状态的错误消息。ErrorBits 具有保持性,会在 Reset 或 ErrorAck出现上升沿时复位。Error BOOL FALSE Error 设为 TRUE 时,至少有一个错误当前处于未决状态。10.9.6静态变量 Filter_PT1变量 数据类型 默认值 说明Gain REAL 1.0 比例增益Lag REAL 25.0滞后时间常量(以秒为单位)允许的值范围:Lag ≥ CycleTime.Value/2ErrorMode INT 2选择出现错误后的替代输出值• 0 = Input• 1 = SubstituteOutput• 2 = 上一个有效滤波器输出值• 3= 0.0• 4 = Input * Gain允许的值范围:0 到 4StartMode INT 2 选择指令首次调用的输出值• 0= Input• 1 = SubstituteOutput• 2 = 上一个输出值• 3 = 0.0• 4 = Input *Gain允许的值范围:0 到 4CycleTime AuxFct_CycleTime - 周期时间数据CycleTime.ValueREAL 0.1 周期时间(以秒为单位)(两次调用之间的时间间隔)允许的值范围:CycleTime.Value >0.0CycleTime.EnableMeasurementBOOL TRUE 周期时间的自动测量• FALSE = 取消激活•TRUE = 已激活ErrorBits 参数如果多个错误同时处于待决状态,将通过二进制加法显示 ErrorBits的值。例如,显示ErrorBits = 16#0000_0003 表示错误 16#0000_0001 和 16#0000_0002同时处于待决状态。对于 Filter_PT1,在 ErrorBits 参数中输出的错误分为两类:• 错误消息为 ErrorBits< 16#0001_0000 的错误• 错误消息为 ErrorBits ≥ 16#0001_0000 的错误错误消息为ErrorBits < 16#0001_0000 的错误如果有一个或多个错误消息为 ErrorBits <16#0001_0000 的错误处于未决状态,则 Filter_PT1的响应如下:• 即使存在此类错误,输出值也会通过如下方式确定:–Reset = FALSE 时,通过滤波器算法计算输出值– 当 Reset = TRUE 时,通过 SubstituteOutput的输出• 输出参数 Error 已置位。• 使能输出 ENO 不变。不再有任何错误时,会立即删除输出参数 Error。当计算输出值时(Reset = FALSE),周期时间的测量会得出无效值。对错误的响应:如果已测量周期时间的有效值,则 Filter_PT1 可根据CycleTime.Value 变量的上一个值计算输出值。如果先前没有测量到周期时间的有效值,则 Filter_PT1 仍会在Output 参数中输出通过 StartMode 变量组态的输出值。错误消息为 ErrorBits ≥ 16#0001_0000的错误如果有一个或多个错误消息为 ErrorBits ≥ 16#0001_0000 的错误处于未决状态,则Filter_PT1的响应如下:• 无法按预期确定输出值。将输出替代输出值。• 输出参数 Error 已置位。• 使能输出 ENO设为 FALSE。一旦不再有任何错误消息为 ErrorBits ≥ 16#0001_0000 的错误,Filter_PT1的响应如下:• 输出值会通过如下方式确定:– Reset = FALSE 时,通过滤波器算法计算输出值– 当 Reset = TRUE时,通过 SubstituteOutput 的输出• 使能输出 ENO 设为 TRUE。不再有任何错误时,会立即删除输出参数Error。Lag 或 Gain tag 不含有效值,同时将执行输出值的计算 (Reset = FALSE)。对错误的响应:在ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。解决方案:请确保 Gain 和 Lag变量的值满足以下条件:• -3.402823e+38 ≤ Gain ≤ 3.402823e+38• CycleTime.Value/2≤ Lag ≤ 3.402823e+38• 这些值是有效的 REAL 值(≠ NaN,如16#7FFF_FFFF)其它信息:请注意,以下情况下可能不满足 CycleTime.Value/2 ≤ Lag 的条件:•由于程序序列中的条件调用或有效断点等原因,两次调用 Filter_PT1 的时间间隔大于 2 * Lag。• Filter_PT1背景数据块的快照作为实际值加载到 CPU 中,且快照创建时间早于 2 * Lag之前。在这些情况下,会在周期时间自动测量期间检测到错误消息首次调用指令时,用于初始化 Output 参数的变量(组态StartMode)不含有效的 REAL 值。对错误的响应:首次调用指令时,会在 Output 参数中输出在 ErrorMode变量中配置的替代输出值。对于后续调用,Filter_PT1 将从该替代输出值开始计算输出值。解决方案:确保用于初始化参数 Output的变量是有效 REAL 值(≠ NaN,例如 16#7FFF_FFFF)。设置 Reset = FALSE时,在 CPU 的操作状态从STOP 切换到 RUN 后首次调用指令时初始化会生效。用于初始化 Output 参数的变量取决于 StartMode:•StartMode = 1: SubstituteOutput• StartMode = 2: Output• StartMode =4:Input 与 Gain 之积CycleTime.Value 变量不含有效值,同时将执行输出值的计算 (Reset =FALSE)。对错误的响应:在 ErrorMode 变量中组态的替代输出值会在 Output参数中输出。解决方案:请确保满足以下条件:• 0.0 < CycleTime.Value ≤ 3.402823e+38•CycleTime.Value 是有效的 REAL 值(≠ NaN,例如 16#7FFF_FFFF)其它信息:要自动计算CycleTime.Value 变量的值,请将 CycleTime.EnableMeasurement 变量设为TRUE。Filter_PT2 说明描述指令 Filter_PT2 是具有二阶滞后的比例传递元素,也称为 PT2元素。Filter_PT2 可用于以下用途:• 低通滤波器,用于衰减信号中的高频分量,如噪声。•延迟元素,用于对信号阶跃变化进行平滑处理,如控制器的设定值或输出值的阶跃变化。• 过程仿真块,用于在 CPU中实现闭合控制回路。举例来说,这意味着可在调试之前测试控制器。可指定以下滤波器参数:• 比例增益 (Gain)• 时间常量(TimeConstant)• 阻尼 (Damping)说明连续时间 PT2 元素与 Filter_PT2 之间的差值由于Filter_PT2 是在 PLC 程序中执行的,因此 Filter_PT2 是 PT2元素的离散时间实现。离散时间系统不能与相应的连续时间模型具有相同的特性。离散时间系统也可以根据周期时间仿真连续时间系统:周期时间越小、越恒定,Filter_PT2的特性与连续时间 PT2 元素的特性之间的一致性误差越小。连续时间 PT2元素的特性为下文介绍的传递函数、时间响应和频率响应。为了准确仿真频率响应,建议使用的Zui大周期时间为输入信号分量Zui短周期持续时间的十分之一。举例来说,对于频率分量Zui大为50 Hz 的信号,Zui短周期持续时间为20 ms。为了准确仿真频率响应,建议为本例使用的Zui大周期时间为 2 ms。PT2元素的频率响应传递元素的频率响应通过振幅响应和相位响应描述。振幅响应通过由信号的角频率决定的传递元素来描述信号的增益。以下等式描述PT2 元素的振幅响应。