CNC

1.连续插补

步骤

1:添加预处理指令

2:编写Gcode

N010 G01 X1.5 Y3 F1 E0.5 E-0.5

N020 G01 X3 Y1.5

N040 G03 X6 Y2.8 I0.06 J3.8

N050 G01 X9 Y3.8

N060 G05 X11 Y3.6

N070 G05 X12.4 Y4.8

3:第二步中1、2、3处位置突变,默认处理会减速停止再运行。用G51/G52

启动圆滑路径处理将拐角处位置改为连续即可实现连续插补。

N000 G51 D1 (D值=拐角点到圆滑切点距离)

N010 G01 X1.5 Y3 F1 E0.5 E-0.5

N020 G01 X3 Y1.5

N030 G03 X6 Y2.8 I0.06 J3.8

N040 G01 X9 Y3.8

N050 G05 X11 Y3.6

N060 G05 X12.4 Y4.8

N070 G50

SMC_Interpolator指令

SMC_Interpolator 功能块用于将 SMC_GEOINFO 对象描述的连续路径转化为按照预定速度和时间预编译的点信息。经过此过程之后位置点可以被IEC程序识别并发送到驱动器。

名称 类型 初始值 描述
VAR_IN
bExecute BOOL FALSE 当为TRUE,功能块被激活,上升沿有效
poqDataIn Pointer TO ⇘ SMC_OUTQUEUE 0 这个变量指向 SMC_OUTQUEUE-结构体对象,包含未经过圆滑处理的 SMC_GEOINFO-对象;通常情况下指向预处理模块 ⇘ SMC_CheckVelocities的..DataOut 输出
bSlow_Stop BOOL FALSE 为TRUE,SMC_Interpolator 将会根据速度定义(byVelMode,)将速度值减小为 0停止, 并且当前 GEOINFO-对象具有最大延迟 (dDecel) 。bSlow_Stop为 FALSE后接着停止前位置继续运行。
bEmergency_Stop BOOL FALSE 为TRUE,SMC_Interpolator 将立即紧急停止,为OFF接着停止前位置继续运行。
bWaitAtNextStop BOOL FALSE 为TRUE,在路径角或暂停位置停止,为OFF继续运行
dOverride LREAL 1 dOverride不允许小于 0.01。运行速度为VEl=dOverride×设定速度
iVelMode SMC_INT_VELMODE TRAPEZOID 定义速度轮廓 “SMC_INT_VELMODE (ENUM)”
dwIpoTime DWORD 0 这个变量需要在每次调用时进行设置,需要以 μsec 定义循环时间,与EtherCAT任务保持一致
dLastWayPos LREAL 0 如果将输出 dWayPos 赋值给 dLastWayPos ,运行中dWayPos 将会递增,其值为路径总长。dLastWayPos 可以被复位为 0 或者在任何时候设置为其他不同值。
bAbort BOOL FALSE 为 TRUE 立即终止CNC处理,bDone输出为ON,然后bAbort复位为False
bSingleStep BOOL FALSE 为TRUE CNC只运行一个周期
bAcknM BOOL FALSE 这个输入可以用作一个附加操作 (M-操作)。如果输入为 TRUE,这个操作将会被删除并且路径处理将会继续。
bQuick_Stop BOOL FALSE 为TRUE减速停止,减速率为dQuickDeceleration,为False接着继续运行
dQuickDeceleration LREAL 0 用于 bQuick_Stop 的减速值,为0时按预设值减速。
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将会影响当前设置位置。其中包含下一个位置的坐标以及附件轴的状态。
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) : 模块等待
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 路径当前速度值。
vecActTangent SMC_VECTOR3D 显示X/Y/Z轴设置速度,如果 dVel = 0 ,vecAct_Tangent为 0
iLastSwitch INT 0 此输出包含最后一个开关的序号。注意:如果在一个循环中包含多个开关,只有最后一个将会被提及。
dwSwitches DWORD 0 这个 DWORD 描述了所有开关1 到32 的状态。DWORD 的 Bit0 对应开关 1,Bit31 对应开关 32 。因此,与 iLastSwitch 不同,所有的开关都将被关注。
dWayPos LREAL 路径总长,非3D不包括Z轴
wM WORD 0 如果插补处理到一个 M-对象,例如,一个附加操作的线性描述,这个输出将会将变量关联到 M-函数并且插补将会停止直到输入 bAcknM 允许。

2. CNC常用数据类型

SMC_OUTQUEUE

这个数据结构位于CODESYS SoftMotion library SM3_CNC。这个结构体用于管理 GEOINFO对象。

功能块SMC_NCDecoder,SMC_SmoothPath,SMC_RoundPath,SMC_AvoidLoop以及 SMC_ToolCorr提供了一个用于处理 OUTQUEUE-结构的指针,并能够立即对这个结构进行初始化。

模块SMC_SmoothPath,SMC_RoundPath,SMC_ToolCorr,SMC_AvoidLoop以及SMC_Interpolator必须有一个指针指向OUTQUEUE列表。如果这个列表被编程并且“手动”添加。那么相应的初始化也需要手动进行完成。对于这个目的开始的两个变量 (pbyBuffer, size) 必须被设定。

名称 类型 初始值 描述
wOUTQUEUEStructID WORD 16#9878 显示该变量类型
pbyBuffer POINTER TO ARRAY[0..0] OF SMC_GEOINFO G代码会被解析为ARRAY[0..n] OF SMC_GEOINFO类型的数组,pbyBuffer指向数组首地址。
nCapacity UDINT 显示ARRAY[0..n] OF SMC_GEOINFO数组长度
nReadPos UDINT 显示G代码执行当前段数
nWritePos UDINT
bFull BOOL
bEndOfList BOOL
byGenerator BYTE
bReCheckVelocities BOOL 内部变量
strProgrammName STRING CNC程序的名称字符
xPartofLM BOOL
nNumReserveEntries
nPastMarker

CNC启点位置设置

CNC编译模式有3种,每种模式启点位置设备方便不同

SMC_OUTQueue模式

直接在后台CNC属性中修改。这种方式只能改一次

如下图起点为(10,10,10)

在程序中修改

模式选择SMC_OUTQueue

bSlow_Stop BOOL FALSE 为TRUE,SMC_Interpolator 将会根据速度定义(byVelMode,)将速度值减小为 0停止, 并且当前 GEOINFO-对象具有最大延迟 (dDecel) 。bSlow_Stop为 FALSE后接着停止前位置继续运行。
bEmergency_Stop BOOL FALSE 为TRUE,SMC_Interpolator 将立即紧急停止,为OFF接着停止前位置继续运行。
bWaitAtNextStop BOOL FALSE 为TRUE,在路径角或暂停位置停止,为OFF继续运行
bAbort BOOL FALSE 为 TRUE 立即终止CNC处理,bDone输出为ON,然后bAbort复位为False
bSingleStep BOOL FALSE 为TRUE CNC只运行一个周期
bQuick_Stop BOOL FALSE 为TRUE减速停止,减速率为dQuickDeceleration,为False接着继续运行
dQuickDeceleration LREAL 0 用于 bQuick_Stop 的减速值,为0时按预设值减速。
Copyright © www.yanjuntech.cn 2018-2025 all right reserved,powered by Gitbook该文件修订时间: 2018-10-21 19:10:54

results matching ""

    No results matching ""