SMC_SmoothAddAxes

这个功能块位于 CODESYS SoftMotion 函数库 SM3_CNC

用于对附加轴进行路径圆滑,并将附加路径分割为多个对象。这将会导致附加轴 P, Q, U, V, W 具有相同的圆滑并且产生轴 A, B 和 C 的一个最优动态编译文件。

 插图 141: SMC_SmoothAddAxes
Function block SMC_SmoothAddAxes
 

类型

初始值

描述

VAR_IN

     

bExecute

BOOL

FALSE

当 TRUE 时,功能块被激活

bAbort

BOOL

FALSE

如果为 TRUE ,功能块当前的处理将会被中断

bAppend

BOOL

FALSE

只要输入一直为 FALSE, DataOutQueue 将会在每次复位时都被清除。一旦保持为 TRUE,新增加的数据将会被写入到 DataOutQueue 的结尾

poqDataIn

POINTER TO SMC_OUTQUEUE

NULL

这个变量指向 SMC_OUTQUEUE 结构体对象,其中包含路径的 SMC_GEOINFO-对象;通常情况下他指向预处理模块(例如:SMC_NCDecoder)的 DataOut 输出。 SMC_OUTQUEUE应该定义一个适当的尺寸大小(见上文)!

dSmoothingPart

LREAL

0.5

与轴A,B,C中用户可以直接定义不同,路径的部分被提供给附加轴用于加速度/加速度以及常量速度操作。

0: 没有加速度 /减速度周期被设置。

1: 没有常量运动被创建

0.5: 加速周期与减速周期与常量运动有相同的时间

dAngleTol

LREAL

0.001

对于附加轴 A, B, C 需要制定一个正确的参数,是否一个对象导致停止。输入 dAngleTol也会在功能块 SMC_CheckVelocities中进行使用并且在所有功能块处理过程中,应该保持相同的变量。

nSizeOutQueue

UDINT

0

变量pbyBufferOutQueue安位定义的尺寸

pbyBufferOutQueue

POINTER TO ARRAY[0..0] OF SMC_GEOINFO

NULL

这个输入必须指向 OUTQUEUE-结构体定义的内存区域的第一个字节地址。定义的这个区域至少与 nSizeOutQueue 定义的一样大。通常情况下IEC中存储区域的定义是通过定义一个 SMC_GEOINFO 数组实现的 (例如:BUF: BUF: ARRAY[1..50] OF SMC_GEOINFO这个缓冲区可以存储50个路径元素)。变量值可以预定义,但是在下次复位前不能被修改。

       

VAR_OUT

     

bDone

BOOL

FALSE

如果输入数据...DataIn 被完全处理,那么这个变量将=会被设置为 TRUE 。因此在复位之前此模块不会执行其他动作。如果输入 bExecute 为 FALSE, bDone 将会被复位为 FALSE。

bBusy

BOOL

FALSE

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

bError

BOOL

FALSE

功能块内部发生错误信号

wErrorID

SMC_ERROR

SMC_NOERROR

错误 ID

poqDataOut

POINTER TO SMC_OUTQUEUE

NULL

这个变量指向 SMC_OUTQUEUE-结构体,用于管理循环路径中的 SMC_GEOINFO-对象 “SMC_OUTQUEUE ”

示例

G-code

N0 G1 X100 A0 Q100 F100
N10 G71 L8    (Turn on smoothing for Q)
N20 G1 X200
N30 G71 L4    (Turn on smoothing for A)
N40 G1 X250
N50    G1 X300
N60 G1 X350
N70 G1 X400 A100    
N80 G70 L4    (Turn off smoothing for A)
N90 G1 X500    Q0
N100 G70    L8    (Turn off smoothing for Q)
 

从示例中可以看到,对于附加轴的圆滑可以立即被打开或者关闭。

数据缓冲区,可以被功能块使用,必须足够大以包含完成的圆滑路径。所以,如果功能块中包含 n 对象,不能多于 n-3 对象被圆滑。否则路径圆滑将会出现错误。