这个数据类型位于CODESYS SoftMotion 函数库 ⇘ SM3_CNC。SMC_XInterpolator 功能块实现了一个CAM 以及 CNC的混合。假设要移动的特殊位置 (G-code 描述)已经超出了工件,通过工件移动 - 另一个程序 - (例如沿着 X-轴) 以及其他轴 (Y, Z,等) 应该按照当前工件(X)的位置并在离线给出路径位置。
工件的运动通常跟随 X方向 ( 其他方向可以通过旋转被映射到这个方向)。
| 
 | 类型 | 初始值 | 描述 | 
|---|---|---|---|
| VAR_IN_OUT | 
 | 
 | 
 | 
| X_AXIS | AXIS_REF_SM3 | 
 | X-轴,工件位置 | 
| VAR_IN | 
 | 
 | 
 | 
| bExecute | BOOL | FALSE | 当 TRUE 时,功能块被激活 | 
| poqDataIn | POINTER TO ⇘ SMC_OUTQUEUE | 0 | 这个变量指向 ⇘ SMC_OUTQUEUE 结构体对象,其中包含路径的 SMC_GEOINFO-对象;通常情况下他指向预处理模块(例如:SMC_NCDecoder)的 DataOut 输出。 ⇘ SMC_OUTQUEUE应该定义一个适当的尺寸大小(见上文)! | 
| dLastWayPos | LREAL | 0 | 这个输入允许用于测量插补计算的路径。输出 dWayPos是 dLastWayPos 以及当前圆周距离的总和。如果 dLastWayPos=0, dWayPos将会得到当前选择路径的长度。如果设置 dLastWayPos等于输出 dWayPos, dWayPos通常会被当前选择的路径更新并且将会得到总的路径长度。因此 dLastWayPos 通常被设置为 0 或者其他的值。 | 
| bAbort | BOOL | FALSE | 如果为 TRUE ,功能块当前的处理将会被中断 | 
| eDirection | MC_DIRECTION | positive | 此输入定义是否工作台沿着 X轴正向移动 (positive)或者反向移动 (negative) 。其他值不允许。 | 
| dXOffset | LREAL | 0 | 相对于 X轴位置的偏移 | 
| VAR_OUT | 
 | 
 | 
 | 
| bDone | BOOL | FALSE | 如果输入数据...DataIn 被完全处理,那么这个变量将=会被设置为 TRUE 。因此在复位之前此模块不会执行其他动作。如果输入 bExecute 为 FALSE, bDone 将会被复位为 FALSE。 | 
| bBusy | BOOL | FALSE | TRUE,功能块的处理没有完成 | 
| bError | BOOL | FALSE | 功能块内部发生错误信号 | 
| wErrorID | SMC_ERROR | SMC_NOERROR | 错误ID | 
| piSetPosition | Pointer TO ⇘ SMC_POSINFO | 
 | piSetPosition 包含根据当前命令定义的直接位置。piSetPosition 是一个 SMC_POSINFO-结构体并且不包含要被驱动的笛卡尔坐标,并且还包含附加轴的位置信息。 | 
| iStatus | IPO_INIT | 这个 ENUM-变量描述了模块当前的状态。可能的状态: IPO_UNKNOWN (0) : 内部状态,在一个完整的 SMC_Interpolator 中不会发生 IPO_ACCEL (2) :当前加速度模块 IPO_CONSTANT (3) : 当前常量速度运行模块 IPO_DECEL (4) : 当前抱闸模块 IPO_FINISHED (5) :处理 GEOINFO列表结束。随后到达 DataIn 的 GEOINFO-对象将不会被处理。 | |
| bWorking | BOOL | FALSE | 只要列表开始进行处理此输出变量将会被设置为 TRUE,但是不会终止。 (IPO_ACCEL 或 IPO_CONSTANT 或 IPO_DECEL 或 IPO_WAIT)。否则 bWorking 为 FALSE。 | 
| iActObjectSourceNo | INT | -1 | 包含当前处理的 DataIn-队列 SMC_GEOINFO 对象的入口。如果 SMC_Interpolator 没有工作 (bWorking = FALSE) 那么此值将会被设置为“-1”。 | 
| dVel | LREAL | 0 | 此变量包含当前速度结果值,如果对象按照时间 Ipo_Time from 进行移动坐标变换将转化到 piSetPosition。 | 
| vecActTangent | 
 | 这个结构体包含点 piSetPosition中的路径方向。如果 dVel = 0,那么 vecAct_Tangent 将只包含零点。 | |
| iLastSwitch | INT | 0 | 这个变量包含最后处理的辅助标记。如果在一个周期内有多个标记被处理,那么只有最后一个将会被给出。 | 
| dwSwitches | DWORD | 0 | 这个 DWORD 包含 1 到 32 之间的附加标记的开关状态。DWORD 的 Bit0 将会标记 1, Bit31 标记 32。 因此其他形式定义的 iLastHelpMark,将不会被作为附加标记。 | 
| dWayPos | LREAL | 
 | 参阅输入 dLastWayPos。 | 
如果 XInterpolator 被激活,将会在符合当前的x 位置的特殊路径上进行查找并且将会在 piSetPosition中设置当前的路径点。如果要针对每个 x位置实现一个路径的自由跳转那么必须存在一个路径位置。例如,以下路径是有效的: