SMC_Interpolator

此功能块位于CODESYS SoftMotion 函数库 SM3_CNC.Bibliothek。 SMC_Interpolator 功能块用于将 SMC_GEOINFO 对象描述的连续路径转化为按照预定速度和时间预编译的点信息。经过此过程之后位置点可以被IEC程序(例如:驱动器-轴-位置)识别并发送到驱动器。

提示!

在路径结束位置变量 SMC_OUTQUEUE为空。如果想再次执行相同的路径,或者通过译码器以及路径预编译重新转化 CNC 程序为 SMC_OUTQUEUE 结构体,或者使用函数 SMC_RESTOREQUEUE (也是SM_CNC.lib一部分)。后者的处理要求 OUTQUEUE 缓冲区足够大并能包含所有路径。

Function block SMC_Interpolator

名称

类型

初始值

描述

VAR_IN

     

bExecute

BOOL

FALSE

当为 TRUE,功能块被激活

poqDataIn

Pointer TO SMC_OUTQUEUE

0

这个变量指向 SMC_OUTQUEUE-结构体对象,包含未经过圆滑处理的 SMC_GEOINFO-对象;通常情况下指向预处理模块 SMC_CheckVelocities的..DataOut 输出

bSlow_Stop

BOOL

FALSE

如果这个变量被置位 FALSE,路径将不会停止。否则, SMC_Interpolator 将会根据速度编译定义(byVelMode,)将速度值减小为 0 并且当前 GEOINFO-对象具有最大延迟 (dDecel,参阅下文) 并等待直到 bSlow_Stop 被复位为 FALSE。

bEmergency_Stop

BOOL

FALSE

一旦输入为 TRUE,SMC_Interpolator 将导致一个紧急停止,这意味着位置将会被保留。因此,速度将会立即被设置为 0 。

bWaitAtNextStop

BOOL

FALSE

一旦这个变量被置为 FALSE (默认),路径的处理将不会停止。否则,SMC_Interpolator 将会在下次定期停止时保持此位置,这意味着在位置点速度为 0 ,通常发生在路径角和暂停位置直到 bWaitAtNextStop 将会被复位为 FALSE。

dOverride

LREAL

1

这个变量可以用于处理超调。变量 dOverride 的值不允许小于 0.01。 特定对象的预定速度将会通过超调 dOverride 进行缩放;因此预定的速度可以在线模式下进行放大或者缩小。例如如果 dOverride=1 (默认) 程序中定义的预定义速度值将会被执行,如果 dOverride=2 那么速度值将会加倍。

请注意:速度超调可以在任何时候进行修改,但是如果当前的处理过程中没有加速度或者减速度,那么修改将不会执行!

iVelMode

SMC_INT_VELMODE

TRAPEZOID

此输入用于定义速度轮廓,定义在 “SMC_INT_VELMODE (ENUM)”

dwIpoTime

DWORD

0

这个变量需要在每次调用时进行设置,需要以 μsec 定义循环时间。

dLastWayPos

LREAL

0

该输入允许用户测量由插补运算计算出的路径。输出 dWayPos 为 dLastWayPos 的总和当前循环内的长度。如果 dLastWayPos=0 ,dWayPos 将会显示当前路径元素的长度。如果 dLastWayPos 被设置为与 dWayPos 相同, dWayPos 将会使当前路径始终递增,并且结果将会是覆盖路径的总长。因此, dLastWayPos 可以被复位为 0 或者在任何时候设置为其他不同值。

bAbort

BOOL

FALSE

该输入被设置为 TRUE 将终止离线处理。

bSingleStep

BOOL

FALSE

次输入将会影响两个路径之间的插补运算 (同样作用在切线之间的转换) 为一个周期时间内的过渡。如果 bSingleStep 在移动过程中被设置为 TRUE ,那么插补将会停止在此对象的结尾处,可以在没有处理减速度值的情况下到达目标位置。

如果插补应该在下个可能的位置停止 (例如速度为 0 的点), bWaitAtNextStop 必须使用。

bAcknM

BOOL

FALSE

这个输入可以用作一个附加操作 (M-操作)。如果输入为 TRUE,这个操作将会被删除并且路径处理将会继续。

bQuick_Stop

BOOL

FALSE

如果此输入为 TRUE,插补将会较小速度到0,直到 bQuick_Stop 被复位为 FALSE。减少值会根据速度预编译文件 (byVelMode,参阅下文)进行定义并且减速度值是由 dQuickDeceleration 定义的最大值以及当前路径中的延迟。如果一个二次速度曲线模式被使用,那么加加速度将会被MAX(dJerkMax, dQuickStopJerk)限制。

dQuickDeceleration

LREAL

0

用于 bQuick_Stop 的减速值

dJerkMax

LREAL

 

允许的最大加加速度:值用于二次速度模式。必须是整数并且在插补期间不能改变。

dQuickStopJerk

LREAL

 

如果选择一种速度模式,那么跳跃的加加速度将会导致一个紧急停止。

VAR_OUT

     

bDone

BOOL

FALSE

这个变量在输入数据 (poqDataIn) 被完全处理时将会被设置为 TRUE 。此后,功能块在下次复位前将不会执行任何动作。如果输入 bExecute 为FALSE, bDone 将会被复位为 FALSE。

bBusy

BOOL

FALSE

TRUE,功能块的处理没有完成。

bError

BOOL

FALSE

功能块内部发生错误信号。

wErrorID

SMC_ERROR

SMC_NOERROR

错误ID

piSetPosition

SMC_POSINFO

 

这个结构体变量SMC_POSINFO将会影响当前设置位置。其中包含下一个位置的坐标以及附件轴的状态。

SMC_POSINFO

iStatus

SMC_INT_STATUS

IPO_INIT

 这个枚举变量反应功能块的当前状态 SMC_INT_STATUS

可能的状态:

  • IPO_UNKNOWN (0) : 在一个完全的 SMC_Interpolator 处理之后不会发生的内部状态。
  • IPO_INT (1) : 模块位于初始化状态; DataIn 没有被完全填充,也不是已经准备被填充。
  • IPO_ACCEL (2) : 模块现在处于加速阶段。
  • IPO_CONSTANT (3) : 模块现在以恒定速度运动。
  • IPO_DECEL (4) : 模块现在处于减速阶段。
  • IPO_FINISHED (5 ):处理 GEOINFO 列表被中止。任何位于 DataIn 之后的对象将不会被处理。
  • IPO_WAIT (6) : 模块等待,因为以下状态发生
    • bEmergency_Stop = TRUE
    • bSlow_Stop = TRUE 以及 dVel = 0
    • bWait_At_Next_Stop = TRUE 以及 dVel = 0
  • IPO_INCREASING_ACCEL (7): 模块现在处于一个加速过程
  • IPO_DECREASING_ACCEL (8): 模块当前处于一个减速过程
  • IPO_INCREASING_DECEL (9): 模块当前处于一个增减速度过程
  • IPO_DECREASING_DECEL (10): 模块当前处于一个减减速过程

bWorking

BOOL

FALSE

这个输出与功能块SMC_ControlAxisByPos的输入 bEnable 相连接。

当为 TRUE列表的处理已经启动并且没有完成(IPO_ACCEL 或者 IPO_CONSTANT 或IPO_DECEL 或 IPO_WAIT)。另外,bWorking 将会被设置为 FALSE。

iActObjectSourceNo

INT

-1

当前 DataIn-队列处理的 SMC_GEOINFO 组件 iSourceLine_No 。如果 SMC_Interpolator 没有工作 (任何时候) (Working = FALSE),变量值将被设置为 "-1"。

dVel

LREAL

0

这个变量包含在给定的时间Ipo_Time从预处理位置到达Set_Position的当前速度值。

vecActTangent

SMC_VECTOR3D

 

这个结构体中包含位置 Set_Position 中定义的方向,如果 Vel = 0 ,vecAct_Tangent 将会被填充为 0 。

SMC_VECTOR3D

iLastSwitch

INT

0

此输出包含最后一个开关的序号。注意:如果在一个循环中包含多个开关,只有最后一个将会被提及。

dwSwitches

DWORD

0

这个 DWORD 描述了所有开关1 到32 的状态。DWORD 的 Bit0 对应开关 1,Bit31 对应开关 32 。因此,与 iLastSwitch 不同,所有的开关都将被关注。

dWayPos

LREAL

 

参阅上文 ( dLastWAyPos输入) 获取更多帮助。

在每次 SMC_Interpolator 调用将会预算并提供给予的参数,速度历史以及最后的路径位置- 子路径位置点,如果第一个 GEOINFO 对象被处理,那么他就将会从 poqDataIn-SMC_OUTQUEUE 结构体中移除 。

wM

WORD

0

如果插补处理到一个 M-对象,例如,一个附加操作的线性描述,这个输出将会将变量关联到 M-函数并且插补将会停止直到输入 bAcknM 允许。