SMC_XInterpolator

这个数据类型位于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

SMC_INT_STATUS

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

SMC_VECTOR3D

 

这个结构体包含点 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位置实现一个路径的自由跳转那么必须存在一个路径位置。例如,以下路径是有效的: