RampFunction
RampFunction 描述说明RampFunction 指令限制信号的压摆率。RampFunction 在输入端输出信号跳变作为输出值的斜坡函数。例如,在以下情况下,可以使用 RampFunction 防止信号跳变:• 在控制器的设定值源和设定值输入之间,实现更平滑的响应,而不影响干扰响应。• 在控制器输出和执行器输入之间,保留执行器,例如带有齿轮的电机或过程。可以为压摆率设置以下限制:• 在正值范围内增加压摆率• 在正值范围内降低压摆率• 在负值范围内增加压摆率• 在负值范围内降低压摆率此外,RampFunction 指令将输出值限制为上限和下限。当达到压摆率限制或者达到上限或下限时,RampFunction 将关联的输出位设置为 TRUE。
调用在 OB 或 FC 中,RampFunction 以单背景数据块的形式调用。在 FB 中,RampFunction 能够以单背景数据块、多背景数据块和参数背景数据块的形式调用。调用该指令后,不会创建任何工艺对象。没有参数分配接口或调试接口可用。直接使用背景数据块分配 RampFunction 参数,并使用 CPU 或 HMI 中的用户程序监视表调试 RampFunction。
启动RampFunction 静态区域中的变量不具有保持性。每当 CPU 的操作状态从 STOP 切换为 RUN后,这些变量都将通过起始值进行初始化。如果于在线模式下更改限值的实际值并且这些值将在 CPU 的操作状态发生切换后得以保留,则将这些值备份到数据块的起始值。在 StartMode 变量中指定 Output 参数的初始化值。发生以下事件后首次调用 RampFunction 期间• CPU 操作状态切换或• 执行“加载初始值作为实际值”(仅适用于“所有值”(All values) 选项,不适用于“jinxian设定值”(Only setpoints) 选项)初始化值在 Output 参数中输出。对于后续调用,RampFunction 将根据输入值和压摆率限制,从该初始化值开始计算输出值。下表列出了 StartMode 变量与 Output 参数之间的相关性。CPU 操作状态发生转换后,Output列的值将在 Output 参数中输出。以下内容还适用于 StartMode 变量的所有值:• UpperLimit 和 LowerLimit 变量的值有效时,初始化值将被限制在这些变量的取值范围内。只有这样才能在 Output 参数中输出初始化值。• 如果初始化值不是有效的 REAL 值,则替代输出值 将在 Output 参数中输出。替代输出值通过 ErrorMode 变量组态。替代输出值受变量 UpperLimit 和 LowerLimit 的取值范围限制。如果替代输出值也不是有效的 REAL 值,则将在 Output 参数中输出 0.0。对于后续调用,此指令将从该替代输出值开始计算输出值。• 只有在首次调用指令时设置了 Reset = FALSE 参数、同时没有具有错误消息 ErrorBits ≥16#0002_0000 的错误处于未决状态的情况下,StartMode 变量才有效。如果设置了Reset = TRUE 参数,则 SubstituteOutput 参数值将在 Output 参数中输出。如果有错误消息为 ErrorBits ≥ 16#0002_0000 的错误处于未决状态,则在 ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。
对错误的响应RampFunction 指令会检测输出值计算过程中可能出现的各种错误。即便存在未决错误,也可在输出中输出此计算结果。如果某个错误影响了输出值计算的正确性,则将在输出中输出一个替代输出值。请在 ErrorMode 变量中指定出现某个影响输出值计算正确性的错误时将输出的替代输出值。下表列出了 ErrorMode 变量和 RampFunction 在 Output 参数中输出的替代输出值之间的相关性:ErrorMode Output0 Input 参数值1 SubstituteOutput 参数值2 Output 参数中的上一个有效输出值3 0.04 LowerLimit 变量值5 UpperLimit 变量值以下内容还适用于 ErrorMode 变量的所有值:• 如果替代输出值不是一个有效的 REAL 值,则会将 0.0 作为输出值输出。• UpperLimit 和 LowerLimit 变量的值有效时,替代输出值将被限制在这些变量的取值范围内。只有这样才能在 Output 参数中输出替代输出值。• 只有在设置了 Reset = FALSE 参数的情况下 ErrorMode 变量才有效。如果设置了 Reset =TRUE 参数,则 SubstituteOutput 参数值将在 Output 参数中输出。• 如果某个影响输出值计算正确性的错误处于未决状态,则 RampFunction 将在 Output 参数中将计算得出的输出值更改为替代输出值。可能会发生输出值的跳变,具体取决于ErrorMode 变量值。Error 参数指示是否存在错误处于未决状态。当错误不再处于未决状态时,Error 设为 FALSE。ErrorBits 参数显示了已发生的错误。ErrorBits 具有保持性,仅通过 Reset 或 ErrorAck 参数的上升沿来复位。
RampFunction 工作模式限制压摆率可以为输入信号的压摆率组态四个限制。以下因素决定了当前有效的限制:• Output 参数中的输出值的符号• 更改 Output 参数中输出值juedui值的方向下表列出了压摆率限制的有效变量(基于 Output 参数):输出 有效变量Output ≥ 0 及 |Output| 上升沿 PositiveRisingSlewRateOutput ≥ 0 及 |Output| 下降沿 PositiveFallingSlewRateOutput < 0 及 |Output| 上升沿 NegativeRisingSlewRateOutput < 0 及 |Output| 下降沿 NegativeFallingSlewRate压摆率限制juedui值规定了每秒输出值的Zui大变化。示例:对于本示例,以下情况适用:• PositiveRisingSlewRate = 10.0• RampFunction 的调用时间 = 0.1 s• Input > Output ≥ 0.0结果:每次调用,输出值 Output 都增加 1.0(每秒增加 10.0),直到达到 Input 参数的值。要禁用一个或多个区域的压摆率限制,请将对应的变量设为值 3.402823e+38。如果输出值 Output 当前受压摆率限制,RampFunction 会将关联的输出位设为 TRUE:• PositiveRisingSlewRate_Active• PositiveFallingSlewRate_Active• NegativeRisingSlewRate_Active• NegativeFallingSlewRate_ActiveReset 参数设为 TRUE 时,压摆率限制将无效。这意味着 SubstituteOutput 参数的跳变会导致Output 参数的跳变。每次调用时,RampFunction 都会检查是否满足变量 PositiveRisingSlewRate、PositiveFallingSlewRate、NegativeRisingSlewRate 和 NegativeFallingSlewRate 的以下条件:• 值处于允许的取值范围(大于 0.0 且小于等于 3.402823e+38)内• 值为有效的 REAL 值(≠ NaN,如 16#7FFF_FFFF)如果不满足其中的一个或多个条件,则替代输出值将在 Output 参数中输出。相应的错误消息在 ErrorBits 参数中输出。
限制输出值只要变量 UpperLimit 和 LowerLimit 的值有效,输出值 Output 将始终受限于这些变量的取值范围。输出值 Output 当前受此取值范围限制时,RampFunction 会将关联的输出位设为 TRUE:• UpperLimit_Active• LowerLimit_Active输出值限制的优先级高于压摆率限制。因此,如果需要遵循变量 UpperLimit 和 LowerLimit 的限制,则变量 UpperLimit 和 LowerLimit 的更改将导致输出值 Output 发生跳变。在这种情况下,不考虑压摆率的限制。示例:如果 UpperLimit 从 100.0 减到 80.0,而参数 Input 和 Output 的值为 90.0,则输出值 Output跳变为 80.0。无论是否超出组态的压摆率限制,输出值 Output 都会跳变为 80.0。每次调用时,RampFunction 都会检查是否满足以下条件:• LowerLimit < UpperLimit• LowerLimit 和 UpperLimit 处于允许的取值范围(-3.402823e+38 到 3.402823e+38)内• LowerLimit 和 UpperLimit 是有效的 REAL 值(≠ NaN,例如 16#7FFF_FFFF)如果不满足其中的一个或多个条件,则替代输出值将在 Output 参数中输出。相应的错误消息在 ErrorBits 参数中输出。此外,每次调用时,RampFunction 都会检查输出值 Output 是否具有允许的 REAL 数据类型取值范围(-3.402823e+38 到 3.402823e+38)。如果输出值的计算产生无效 REAL 值,则替代输出值将在 Output 参数中输出。在 ErrorMode 变量中组态替代输出值。
使能行为 EN/ENO如果满足下列其中一个条件,则使能输出 ENO 将设为 FALSE。• 使能输入 EN 设为 TRUE,且 Output 参数由出现错误消息 ErrorBits ≥ 16#0001_0000 时的替代输出值指定。• 使能输入 EN 设为 FALSE。否则,使能输出 ENO 设为 TRUE。自动测量周期时间要计算输出值的压摆率,则 RampFunction 需要自上次调用 RampFunction 以来经过的时间。周期时间默认自动测量,并且自第二次调用起在 CycleTime.Value 变量中输出。RampFunction测量每次指令调用的周期时间,因此可用于非等时同步调用周期,例如 OB1 中。请注意,周期时间自动测量期间的条件性调用指令、有效断点或加载快照作为实际值会延长周期时间值。如果周期时间测量未返回有效结果,RampFunction 会使用上一个有效的周期时间计算当前输出值。此外,RampFunction 在 ErrorBits 参数中输出错误消息。通过设置 CycleTime.EnableMeasurement 变量 = FALSE 来禁用周期时间的自动测量时,必须在 CycleTime.Value 变量中手动输入周期时间。每次调用时,RampFunction 都会检查CycleTime.Value 变量的有效性。
带断点的周期时间的自动测量当 RampFunction 的两次调用之间的断点有效时,周期时间的自动测量会得到两次调用之间经过的实际时间。当一个断点有效时,CPU 处于 HOLD 操作状态。说明有效断点会延长 RampFunction 的两次调用之间的时间间隔。两次调用之间的时间间隔越长,Output 参数中输出值的Zui大允许变化就越大。示例:对于本示例,以下情况适用:• PositiveRisingSlewRate = 10.0• RampFunction 的调用时间 = 0.1 s• Input > Output ≥ 0.0没有断点时的结果:每次调用,输出值 Output 都增加 1.0,直到达到 Input 参数值。带十秒有效断点时的结果:下次调用时,输出值 Output 将增加 100.0。如果无需根据带有效断点的实际时间计算输出值,请按照下列步骤操作:• 通过设置变量 CycleTime.EnableMeasurement = FALSE 来禁用周期时间的自动测量。• 在 CycleTime.Value 变量中手动输入周期时间。