Polyline 的输出参数 (S7-1200, S7-1500) 参数 数据类型 默认值 说明 Output REAL 0.0 输出值 Error BOOL FALSE Error 设为 TRUE 时,至少有一个错误当前处于未决状态。 ErrorBits DWORD DW#16#0 ErrorBits 参数(页 5314)显示了处于未决状态的错误消息。ErrorBits 具 有保持性,通过 Reset 或 ErrorAck 的上升沿复位。 Polyline 的静态变量 (S7-1200, S7-1500) 变量 数据类型 默认值 说明 UserData AuxFct_PointT able - 折线数据的输入区域 UserData 结构中的折线数据可以编辑。 该结构中的更改并不会影响插值计算,直到 数据被检查并复制到 WorkingData 结构。 UserData.NumberOfUsedPoint s INT 0 用于插值计算的点数 允许的值范围:2 到 50 UserData.Point Array[1..50] of AuxFct_Point - 用于插值计算的点 50 元素的数组,数据类型为 AuxFct_Point ,包含点的值对。 UserData.Point[i] AuxFct_Point - 用于插值计算的点 “Point”数组中索引为“i”的元素。 UserData.Point[i].x REAL 0.0 点的 x 值
参数 数据类型 默认值 说明 ErrorAck BOOL FALSE 删除错误消息 • 边沿 FALSE -> TRUE ErrorBits 复位 Reset BOOL FALSE 重新启动指令 • 边沿 FALSE -> TRUE ErrorBits 复位。 • 只要 Reset 设为 TRUE,就会在输出中输出替代输出值 SubstituteOutput。 • 只要 Reset 设为 FALSE,就会执行插值计算。变量 数据类型 默认值 说明 UserData.Point[i].y REAL 0.0 点的 y 值 WorkingData AuxFct_PointT able - 当前有效的折线数据的显示区域 WorkingData 结构中的折线数据不可编辑。 它用于插值计算。 WorkingData.NumberOfUsedP oints INT 0 用于插值计算的点数 允许的值范围:2 到 50 WorkingData.Point Array[1..50] of AuxFct_Point - 用于插值计算的点 50 元素的数组,数据类型为 AuxFct_Point,包含点的值对。 WorkingData.Point[i] AuxFct_Point - 用于插值计算的点 “Point”数组中索引为“i”的元素。 WorkingData.Point[i].x REAL 0.0 点的 x 值 允许的值范围:Point[i].x < Point[i+1].x WorkingData.Point[i].y REAL 0.0 点的 y 值 ErrorMode INT 0 选择出现错误后的替代输出值 • 0 = Input • 1 = SubstituteOutput • 2 = 上一个有效输出值 允许的值范围:0 到 2: OutOfRangeMode INT 0 选择输入值超出定义的 x 值范围时的输出值 • 0 = 保持斜率 • 1 = 第一个点/Zui后一个点的 y 值 允许的值范围:0 到 1 NextXIndex INT 2 下一个 x 值的索引 用于监视当前插值计算正在使用的断点的索 引。 需要符合以下条件: WorkingData.Point[NextXIndex-1].x < Input ≤ WorkingData.Point[NextXIndex].x 请勿手动更改该值。ErrorBits 参数 (S7-1200, S7-1500) 如果多个错误同时处于待决状态,将通过二进制加法显示 ErrorBits 的值。例如,显示 ErrorBits = 16#0000_0003 表示错误 16#0000_0001 和 16#0000_0002 同时处于待决状态。 对于 Polyline,在 ErrorBits 参数中输出的错误分为两类: • 错误消息为 ErrorBits < 16#0001_0000 的错误 • 错误消息为 ErrorBits ≥ 16#0001_0000 的错误 错误消息为 ErrorBits < 16#0001_0000 的错误 如果有一个或多个错误消息为 ErrorBits < 16#0001_0000 的错误处于未决状态,则 Polyline 的响应如下: • 即使存在此类错误,输出值也会通过如下方式确定: – 当 Reset = FALSE 时,通过插值计算 – 当 Reset = TRUE 时,通过 SubstituteOutput 的输出 • 输出参数 Error 已置位。 • 使能输出 ENO 不变。错误原因和对错误的响应: Output 参数限制为 -3.402823e+38 或 +3.402823e+38。 解决方案: 如果在输出中输出插值(Reset = FALSE 且 ErrorBits < 16#0001_0000),则检查插值计算中 使用的以下变量: • Input • WorkingData.Point[i].x • WorkingData.Point[i].y 当 ErrorBits ≥ 16#0001_0000 且 Reset = FALSE 时,替代输出值限制为其输出。在这种情况 下,根据 ErrorMode 变量的设定值检查以下参数: • Input • SubstituteOutput Reset = TRUE 时,检查 SubstituteOutput 参数。错误原因: 检查折线数据时,UserData 结构中有一个或多个变量的值无效(Validate = TRUE 和 Reset = FALSE)。 对错误的响应: UserData 结构中的折线数据并不传送至 WorkingData 结构,从而使 UserData 结构中所做的 更改不会生效。 Polyline FB 继续使用 WorkingData 结构中未更改的有效折线数据进行插值计算。 解决方案: 当 Validate 参数设为 TRUE 时,确保满足以下条件: • 2 ≤ UserData.NumberOfUsedPoints ≤ 50 • UserData.Point[j].x < UserData.Point[j+1].x,索引 j = 1..(UserData.NumberOfUsedPoints - 1) • -3.402823e+38 ≤ UserData.Point[i].x ≤ 3.402823e+38,索引 i =1..UserData.NumberOfUsedPoints • -3.402823e+38 ≤ UserData.Point[i].y ≤ 3.402823e+38,索引 i = 1..UserData.NumberOfUsedPoints • UserData.Point[i].x 和 UserData.Point[i].y 为有效的 REAL 值(≠ NaN),索引 i = 1..UserData.NumberOfUsedPoints 错误消息为 ErrorBits ≥ 16#0001_0000 的错误 如果有一个或多个错误消息为 ErrorBits ≥ 16#0001_0000 的错误处于未决状态,则 Polyline 的响应如下: • 无法按预期确定输出值。将输出替代输出值。 • 输出参数 Error 已置位。 • 使能输出 ENO 设为 FALSE。 一旦不再有任何错误消息为 ErrorBits ≥ 16#0001_0000 的错误,Polyline 的响应如下: • 输出值会通过如下方式确定: – 当 Reset = FALSE 时,通过插值计算 – 当 Reset = TRUE 时,通过 SubstituteOutput 的输出 • 使能输出 ENO 设为 TRUE。错误原因: 用作输出值的 SubstituteOutput 或 Input 参数不含有效的 REAL 值。 对错误的响应: 输出设为 0.0。 解决方案: 确保用作输出值的参数是有效 REAL 值(≠ NaN,例如 16#7FFF_FFFF)。用作输出值的参数 取决于 Reset 和 ErrorMode: Reset ErrorMode 输出值 FALSE 0 Input FALSE 1 SubstituteOutput TRUE - SubstituteOutput 0002_0000 错误原因: Input 参数不含有效的 REAL 值,同时在执行插值计算 (Reset = FALSE)。 对错误的响应: 在 ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。 ErrorMode = 0 时,0.0 用作输出值。 只要 Input 参数中含有无效的 REAL 值,就不更新 NextXIndex 变量 解决方案: 确保参数 Input 是有效 REAL 值(≠ NaN,例如 16#7FFF_FFFF)。错误原因: 插值计算为 Output 参数生成了一个无效的 REAL 值。 对错误的响应: 在 ErrorMode 变量中组态的替代输出值会在 Output 参数中输出。 只要该错误处于未决状态,NextXIndex 变量就会含有无效值。 解决方案: 检查 WorkingData 结构中的 REAL 值是否有效。 其它信息: 如果要更改折线数据,首先编辑 UserData 结构,然后设置参数 Validate = TRUE。请勿手动 更改 WorkingData 结构的数据。