Polyline 的输出参数参数 数据类型 默认值说明Output REAL 0.0 输出值Error BOOL FALSE Error 设为 TRUE时,至少有一个错误当前处于未决状态。ErrorBits DWORD DW#16#0 ErrorBits 参数 (页396)显示了处于未决状态的错误消息。ErrorBits 具有保持性,通过 Reset 或 ErrorAck的上升沿复位。10.5.6 Polyline 的静态变量变量 数据类型 默认值 说明UserDataAuxFct_PointTable- 折线数据的输入区域UserData结构中的折线数据可以编辑。该结构中的更改并不会影响插值计算,直到数据被检查并复制到 WorkingData结构。UserData.NumberOfUsedPoints INT 0 用于插值计算的点数允许的值范围:2 到50UserData.Point Array[1..50] ofAuxFct_Point- 用于插值计算的点50元素的数组,数据类型为 AuxFct_Point ,包含点的值对。UserData.Point[i] AuxFct_Point -用于插值计算的点“Point”数组中索引为“i”的元素。UserData.Point[i].x REAL 0.0 点的 x值允许的值范围:Point[i].x < Point[i+1].xUserData.Point[i].y REAL 0.0 点的y 值WorkingData AuxFct_PointTable- 当前有效的折线数据的显示区域WorkingData结构中的折线数据不可编辑。它用于插值计算。WorkingData.NumberOfUsedPoints INT 0用于插值计算的点数允许的值范围:2 到 50WorkingData.Point Array[1..50]ofAuxFct_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].xWorkingData.Point[i].y REAL 0.0点的 y 值ErrorMode INT 0 选择出现错误后的替代输出值• 0 = Input• 1 =SubstituteOutput• 2 = 上一个有效输出值允许的值范围:0 到 2:395指令10.5 PolylinePID控制功能手册, 11/2022, A5E35300232-AF变量 数据类型 默认值 说明OutOfRangeMode INT 0选择输入值超出定义的 x 值范围时的输出值• 0 = 保持斜率• 1 = 第一个点/Zui后一个点的 y 值允许的值范围:0 到1NextXIndex INT 2 下一个 x值的索引用于监视当前插值计算正在使用的断点的索引。需要符合以下条件:WorkingData.Point[NextXIndex-1].x< Input ≤WorkingData.Point[NextXIndex].x请勿手动更改该值。10.5.7ErrorBits 参数如果多个错误处于待决状态,将通过二进制加法显示 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 不变。不再有任何错误时,会立即删除输出参数Error。ErrorBits (DW#16#...)说明0000_0000 无错误处于未决状态。0000_0001错误原因和对错误的响应: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•SubstituteOutputReset = TRUE 时,检查 SubstituteOutput 参数。396PID控制功能手册, 11/2022, A5E35300232-AF指令10.5PolylineErrorBits (DW#16#...)说明0000_0002 错误原因:检查折线数据时,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。不再有任何错误时,会立即删除输出参数Error。ErrorBits (DW#16#...)说明错误原因:用作输出值的 SubstituteOutput 或 Input参数不含有效的 REAL 值。对错误的响应:输出设为 0.0。解决方案:确保用作输出值的参数是有效 REAL 值(≠ NaN,例如16#7FFF_FFFF)。用作输出值的参数取决于 Reset和 ErrorMode:Reset ErrorMode 输出值FALSE0 InputFALSE 1 SubstituteOutput0001_0000TRUE -SubstituteOutput397指令10.5 PolylinePID 控制功能手册, 11/2022,A5E35300232-AFErrorBits (DW#16#...)说明0002_0000 错误原因:Input 参数不含有效的REAL 值,在执行插值计算 (Reset = FALSE)。对错误的响应:在 ErrorMode 变量中组态的替代输出值会在Output 参数中输出。ErrorMode = 0 时,0.0 用作输出值。只要 Input 参数中含有无效的 REAL值,就不更新 NextXIndex 变量解决方案:确保参数 Input 是有效 REAL 值(≠ NaN,例如16#7FFF_FFFF)。0004_0000 错误原因:插值计算为 Output 参数生成了一个无效的 REAL值。对错误的响应:在 ErrorMode 变量中组态的替代输出值会在 Output参数中输出。只要该错误处于未决状态,NextXIndex 变量就会含有无效值。解决方案:检查 WorkingData 结构中的REAL 值是否有效。其它信息:如果要更改折线数据,编辑 UserData 结构,设置参数 Validate =TRUE。请勿手动更改WorkingData 结构的数据。0008_0000 错误原因:检查折线数据时,UserData结构中有一个或多个变量的值无效。对错误的响应:UserData 结构中的折线数据并不传送至 WorkingData 结构,从而使UserData 结构中的值无法生效。FB Polyline 不会在 Output 参数中输出插值,因为 WorkingData结构中不含有效的折线数据。在ErrorMode 变量中组态的替代输出值会在 Output参数中输出。解决方案:检查折线数据时,确保满足以下条件:• 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其它信息:在以下情况中,会检查 UserData 结构中的折线数据:•Validate 参数设为 TRUE,Reset 参数设为 FALSE或• CPU 操作状态由 STOP 切换为 RUN后,首次通过参数 Reset = FALSE 调用 Polyline。请注意,UserData 和 WorkingData结构中的变量不具有保持性。每当 CPU 的操作状态从 STOP 切换为RUN 后,这些变量都将通过起始值进行初始化。