SplitRange与 CPU 和 FW 的兼容性下表列出了 SplitRange 的何种版本可用于何种 CPU,SplitRange 描述说明SplitRange 指令将输入值转换为输出值。输入值处于由 Points.x1 和 Points.x2 限制的取值范围内。输出值处于由 Points.y1 和 Points.y2 限制的取值范围内。下图显示了 SplitRange 指令示例组态的相关特性:当需要控制受多个执行器影响的过程时,请使用 SplitRange。SplitRange 将 PID 控制器的输出值范围拆分为多个子范围。为每个执行器分配一个子范围。对于每个子范围,用户程序调用一次块。各个 SplitRange 实例的输入值与 PID 控制器的输出值相连。下图显示了含有两个 SplitRange 实例和两个执行器的控制回路示例:SplitRange 数据的有效性Points 结构中的值对定义了 SplitRange 的输入和输出值范围。两个值对位于块 SplitRange 的静态区域中。每次调用时,SplitRange 都会检查是否满足以下条件,以便得到用来计算输出值的有效值:• Points.x1 < Points.x2• Points.x1、Points.y1、Points.x2 和 Points.y2 处于允许的取值范围(-3.402823e+38 到3.402823e+38)内• Points.x1、Points.y1、Points.x2 和 Points.y2 是有效 REAL 值(≠ NaN,例如16#7FFF_FFFF)如果不满足其中的一个或多个条件,则无法正确计算输出值。相应的错误消息在 ErrorBits 参数中输出。x 和 y 值预分配为 0.0,这并不代表有效组态。将变量更改为有效值后,才能将其用于输出值计算。使能行为 EN/ENO如果满足下列其中一个条件,则使能输出 ENO 将设为 FALSE。• 使能输入 EN 设为 TRUE,且 Output 参数由出现错误消息 ErrorBits ≥ 16#0001_0000 时的替代输出值指定。• 使能输入 EN 设为 FALSE。否则,使能输出 ENO 设为 TRUE。调用在 OB 或 FC 中,SplitRange 以单背景数据块的形式调用。在 FB 中,SplitRange 能够以单背景数据块、多背景数据块和参数背景数据块的形式调用。调用该指令后,不会创建任何工艺对象。没有参数分配接口或调试接口可用。直接使用背景数据块分配 SplitRange 参数,并使用 CPU 或 HMI 中的用户程序监视表调试 SplitRange。启动SplitRange 静态区域中的变量不具有保持性。每当 CPU 的操作状态从 STOP 切换为 RUN 后,这些变量都将通过起始值进行初始化。如果于在线模式下更改 Points 结构中的实际值并且这些值将在 CPU 的操作状态从 STOP 切换到 RUN 后得以保留,则将这些值备份到数据块的起始值。对错误的响应SplitRange 指令会检测输出值计算过程中可能出现的各种错误。即便存在未决错误,也可在输出中输出计算结果。如果某个错误影响了输出值计算的正确性,则将在输出中输出一个替代输出值。请按照如下方式在 ErrorMode 变量中指定出现某个影响输出值计算正确性的错误时将输出的替代输出值:ErrorMode Output0 Input 参数值1 SubstituteOutput 参数值ErrorMode Output2 输出值计算的上一个有效结果如果不存在有效结果,则为 0.0以下内容还适用于 ErrorMode 变量的所有值:• 如果替代输出值不是一个有效的 REAL 值,则会将 0.0 作为输出值输出。• 替代输出值将限制在数据类型 REAL 的取值范围内。只有这样才能在 Output 参数中输出替代输出值。• 只有在设置了 Reset = FALSE 参数的情况下 ErrorMode 变量才有效。如果设置了 Reset =TRUE 参数,则 SubstituteOutput 参数值将在 Output 参数中输出。Error 参数指示是否存在错误处于未决状态。当错误不再处于未决状态时,Error 设为 FALSE。ErrorBits 参数显示了已发生的错误。ErrorBits 具有保持性,仅通过 Reset 或 ErrorAck 参数的上升沿来复位。
SplitRange 输入参数参数 数据类型 默认值 说明Input REAL 0.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,就会计算输出值。10.6.4 SplitRange 输出参数参数 数据类型 默认值 说明Output REAL 0.0 输出值ErrorBits DWORD DW#16#0 ErrorBits 参数 (页 402)显示了处于未决状态的错误消息。ErrorBits 具有保持性,通过 Reset 或 ErrorAck 的上升沿复位。Error BOOL FALSE Error 设为 TRUE 时,至少有一个错误当前处于未决状态。SplitRange 静态变量变量 数据类型 默认值 说明Points AuxFct_SplitRange_Points- 点数据Points.x1 REAL 0.0 点 1 的 x 值允许的值范围:Points.x1 < Points.x2Points.y1 REAL 0.0 点 1 的 y 值Points.x2 REAL 0.0 点 2 的 x 值允许的值范围:Points.x1 < Points.x2Points.y2 REAL 0.0 点 2 的 y 值ErrorMode INT 0 选择出现错误后的替代输出值• 0 = Input• 1 = SubstituteOutput• 2 = 上一个有效输出值允许的值范围:0 到 2:ErrorBits 参数如果多个错误同时处于待决状态,将通过二进制加法显示 ErrorBits 的值。例如,显示ErrorBits = 16#0000_0003 表示错误 16#0000_0001 和 16#0000_0002 同时处于待决状态。对于 SplitRange,在 ErrorBits 参数中输出的错误分为两类:• 错误消息为 ErrorBits < 16#0001_0000 的错误• 错误消息为 ErrorBits ≥ 16#0001_0000 的错误错误消息为 ErrorBits < 16#0001_0000 的错误如果有一个或多个错误消息为 ErrorBits < 16#0001_0000 的错误处于未决状态,则 SplitRange的响应如下:• 即使存在此类错误,输出值也会通过如下方式确定:– 当 Reset = FALSE 时,通过输出值计算– 当 Reset = TRUE 时,通过 SubstituteOutput 的输出• 输出参数 Error 已置位。• 使能输出 ENO 不变。不再有任何错误时,会立即删除输出参数 Error。错误原因和对错误的响应:Output 参数限制为 -3.402823e+38 或 +3.402823e+38。解决方案:当 ErrorBits ≥ 16#0001_0000 且 Reset = FALSE 时,替代输出值限制为其输出。在这种情况下,根据ErrorMode 变量的设定值检查以下参数:• Input• SubstituteOutputReset = TRUE 时,检查 SubstituteOutput 参数。错误消息为 ErrorBits ≥ 16#0001_0000 的错误如果有一个或多个错误消息为 ErrorBits ≥ 16#0001_0000 的错误处于未决状态,则 SplitRange的响应如下:• 无法按预期确定输出值。将输出替代输出值。• 输出参数 Error 已置位。• 使能输出 ENO 设为 FALSE。一旦不再有任何错误消息为 ErrorBits ≥ 16#0001_0000 的错误,SplitRange 的响应如下:• 输出值会通过如下方式确定:– 当 Reset = FALSE 时,通过输出值计算– 当 Reset = TRUE 时,通过 SubstituteOutput 的输出• 使能输出 ENO 设为 TRUE。不再有任何错误时,会立即删除输出参数 Error。错误原因:用作输出值的 SubstituteOutput 或 Input 参数不含有效的 REAL 值。对错误的响应:输出设为 0.0。解决方案:确保用作输出值的参数是有效 REAL 值(≠ NaN,例如 16#7FFF_FFFF)。用作输出值的参数取决于 Reset和 ErrorMode:Reset ErrorMode 输出值FALSE 0 InputFALSE 1 SubstituteOutput TRUE - SubstituteOutput 错误原因:计算输出值时,Input 参数不含有效 REAL 值 (Reset = FALSE)。对错误的响应:在 ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。ErrorMode = 0 时,0.0 用作输出值。解决方案:确保参数 Input 是有效 REAL 值(≠NaN,例如 16#7FFF_FFFF)。 可能的错误原因:• Points 结构中有一个或多个变量的值无效。• 输出值计算为 Output 参数生成了一个无效的 REAL 值。对错误的响应:在 ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。解决方案:请确保满足以下条件:1. Points.x1 < Points.x22. Points.x1、Points.y1、Points.x2 和 Points.y2 处于允许的取值范围(-3.402823e+38 到3.402823e+38)内3. Points.x1、Points.y1、Points.x2 和 Points.y2 是有效 REAL 值(≠ NaN,例如 16#7FFF_FFFF)其它信息:请注意,Points 结构中的所有变量均不具有保持性。每当 CPU 的操作状态从 STOP 切换为 RUN 后,这些变量都将通过起始值进行初始化。
RampFunction 描述说明RampFunction 指令限制信号的压摆率。RampFunction 在输入端输出信号跳变作为输出值的斜坡函数。例如,在以下情况下,可以使用 RampFunction 防止信号跳变:• 在控制器的设定值源和设定值输入之间,实现更平滑的响应,而不影响干扰响应。• 在控制器输出和执行器输入之间,保留执行器,例如带有齿轮的电机或过程。可以为压摆率设置以下限制:• 在正值范围内增加压摆率• 在正值范围内降低压摆率• 在负值范围内增加压摆率• 在负值范围内降低压摆率此外,RampFunction 指令将输出值限制为上限和下限。当达到压摆率限制或者达到上限或下限时,RampFunction 将关联的输出位设置为 TRUE。