基本介绍
CNC程序的结构
['%' <program name>]
<sentence>{<sentence>}
 

形如:

<sentence>::= N<sentence number> G<number> {<parameter>}]
 

示例

G-code

% MyExample
N10 G01 X100 Y100 E100 F100 E-200
N20 G01 Z40 F20
N30 G03 X-100 R200 F100
 
G-代码语法

一个 SoftMotion 的CNC程序可以以 %开始。程序的名称添加[ Space ] 或者通过[ TAB ] 。一个实际的CNC程序是由多行语句构成的

每条 语句必须要包含一些关键字

一个字包含一个字母(字标识符)以及随后的数字(例如G01)。在任何情况下都不区分大小写并且数字0可以被省略 (G01 = g1)。

没句的第一个字符表示每句的序号 (N<number>)例如 N01。语句通过 [ Space ] 或者[ TAB ] 字符隔开。按照从左到右的顺序进行处理,从而除了配置命令外的所有关键字(G<number>),例如G02数字序号会由关键字定义的变量所决定。要定义的变量的序号。最终这个变量将会影响处理命令。

语句的序号 (N<number>)是为了做更加深入的跳转,没有更深层次的想法。

每个句子只能包含一个命令,必须遵循正确的语句序号。如果在句子中不包含一个位置命令,此句将自动的添加到最后一句。

每个定位命令可以被看做一个路径对象(例如直线,圆弧)。路径对象在进行基本的插值时其速度符合预定的速度(指令速度),加速度和减速度。插补过程中必须保证不超过限制值。

在转化过程中两个相邻的速度对象必须遵守以下规则:

  • 两个对象中必须有一个定位(G0)。转换速度 = 0。
  • 在转换过程中两个变量的角度值通常比角度公差值要大:转换速度 =0.
  • 否则:转换速度由两个路径中较低值决定。
  • 基本上一个位置指令产生的效果是,从上一条位置指令到当前位置命令之间会有一个插补效果。第一条位置指令会从一个特殊的位置起始(在CNC编辑器中被指定)。如果初始位置没有定义,将默认从 X=0, Y=0, Z=0开始。

此外可以通过G92 跳转的方式在CNC程序中进行位置的设定。可以定义在CNC程序的开始部分(程序开始时位置就被设定),或者在程序的中间位置,所有这些都会导致一个G92定义的位置跳转。如果一个程序中包含多个G92命令,将以最后一个为准, 之前定义的会被忽略。如果想确保之前的G92也会被处理(一个周期的长度),必须在两个跳转之间插入一个具有与跳转位置相同的G1指令。这针对对两者的中间位置没有要求,只关注目标位置,并且要求尽快到达目标位置的情况。在这种情况下模块SMC_ControlAxisByPos会检测到一个位置跳跃,进而会停止插补,以每个轴最大速度的方式到达目标位置。

示例

定位

G代码

%MyExample
N10 G92 X100 Y100 (Set target position to 100/100)
N20 G1 X100 Y100 (Make sure a one-time output of the position)
N30 G92 X50 Y100 (Set target position to 50/100)
 

一个 以字符/起始的表达式在编译过程中将会被跳过,在位于 CNC菜单中的选项 “步骤注释” 被激活。

( )中插入的字符串,将会被认为是注释对程序路径没有任何的影响。嵌套的注释是不支持的。

表达式的序号 (N<number>) 作为一个标记用于特殊的跳转,除此之外没有其他意义。

所有序号除了命令值 (G<number>),M功能 (M<number>) 以及选择序号 (H<number>) 之外其他值可以是一个浮点数。

G-代码字

对于任何的路径对象如何使用参数在相关章节中有详细的描述。

G-代码关键字定义

G-代码字定义

描述

A

附加齿轮轴A的目标位置

B

附加齿轮轴B的目标位置

C

附加齿轮轴C的目标位置

D

刀具半径(分别对应 G40-42 校正以及路径修正 G50-51)分别对应变量值 (G36/G37)

E

最大加速度 (>0) / 减速度 (<0) [定义单位/秒2]

EF

设置G0运动的加速度/减速度( “定位”)。

E<axis>

这个特殊指定给定轴的加速度和加速度值。附加的轴可以是 P,Q,U,V,W 或者 Z (Z 轴只在 2D 模式下)。如果 G-代码应用到当前附加轴上,这意味着没有运动发生在 X, Y 或者 Z (3D 模式) 只在附加轴上有指定运动,加速度和减速度的限制是由编码器检测的。由于这个原因,运动必须发生在至少一个主轴上,加速度和减速度的限制是由 “SMC_ExtendedVelocityChecks”来定义的。这将确保轴的运动不会超过限制。

F

速度 [定义单位/秒], (速度)

FF

速度 [定义单位/秒], (速度)

F<axis>

这个功能用于设定给定轴的速度值。附加轴可以是 P,Q,U,V,W 或者Z (Z 轴只适用于2D 模式)。如果 G-代码是用于一个附加轴的纯粹运动,那么这意味着在 X, Y 或者Z (在 3D 模式)下将没有运动只有在给定的轴上才有运动,速度限制的检查是通过编码器实现的。因为这个原因运动至少要针对一个主轴进行处理,速度的限制是由 “SMC_ExtendedVelocityChecks”决定。这将确保没有超过限制。

G

“定位”, (几何学)

H

打开 “开关点 (H-功能)” (>0) / 关闭 (<0)

I

圆/椭圆的X-坐标 (G02/G03/G08/G09) 或者抛物线切线交点的 X-坐标。

J

圆/椭圆的Y-坐标 (G02/G03/G08/G09) 或者抛物线切线交点的Y-坐标。

K

从数学意义上定义的椭圆主轴方向 (0° O, 90° N, ...) 条件跳转 (G20) dT1 参数值 (M-功能) 或者圆心的 Z-坐标 (G02/G03 仅在 3D 模式)

L

绝对开关位置 (H), 分别从路径对象的起始位置 (>0) 和结束位置 (<0) 进行测量,分别表示条件跳转 (G20) 以及参数值 dT2 (M - 功能)

M

设备附加选项, M-选项 (M-功能), “M-函数”

O

相对开关位置 (H) [0..1] 变量值改变 (G36/G37) 或者 M-参数数据结构 (M)

P

附加直线轴的目标位置 P

P<axis><period>

如果希望通过CNC旋转来控制轴,尤其是定义在附加轴 <axis> 中的周期 <0..360> 。设置周期为 0 (例如 PA0) 使轴的工作为直线。 “G90, G91, G98, G99”

Q

附加直线轴的目标位置 Q

R

半径 (G02/G03) 配合IJ 或以比例变化的主要椭圆 (G08/G09) [0..1]

S

打开 (>0),关闭 (<0) 直线轴的 S-曲线:

  • 3: Z-轴 (2D-模式)
  • 7: P-轴
  • 8: Q-轴
  • 9: U-轴
  • 10: V-轴
  • 11: W-轴

T

命令值具体参数

U

附加线性轴U的目标位置

V

附加线性轴V的目标位置

W

附加线性轴W的目标位置

X

目标位置的X-坐标

Y

目标位置的Y-坐标

Z

目标位置的Z-坐标

G-代码命令列表
G0

直线运动不带刀具,定位, “定位”

G01

带刀具的线性(直线)运动, “直线”

G02

顺时针圆周(圆弧)运动, “圆弧”

G03

逆时针圆周(圆弧)运动,

G04

延时时间, “延时时间 ”

G05

2D 技术样条点, “样条曲线”

G06

抛物线, “抛物线”

G08

顺时针椭圆(圆弧), “椭圆”

G09

逆时针椭圆(圆弧), “椭圆”

G10

3D 基数样条点, “样条曲线”

G15

切换到 2D, “3D 模式”

G16

通过 I/J/K方式激活3D-模式切换到3D视图, “3D 模式”

G17

激活 3D-模式下的 X/Y 平面切换到3D视图, G17

G18

激活 3D-模式下的 Z/X 平面切换到3D视图, “3D 模式”

G19

激活 3D-模式下的 Y/Z 平面切换到3D视图, “3D 模式”

G20

条件跳转 ( 如果 K<>0跳转到L), G20

G36

将数值 (D) 写到变量 (O), “改变变量值 ”

G37

通过值 (D)增加变量值 (O), “跳转”

G40

结束刀具补偿, “预处理”

G41

启动刀具半径校正工件的左侧区域, “预处理”

G42

启动刀具半径校正工件的右侧区域, “预处理”

G50

结束圆路径/平滑路径功能, “预处理”

G51

启动圆滑路径功能, “预处理”

G52

启动圆弧路径功能, “预处理”

G53

结束坐标偏移功能, “坐标变换”

G54

设置以下所有代码的偏移到一个特定的位置。参阅 “坐标变换”

G55

添加一个特殊位置到当前的偏移处, “坐标变换”

G56

设置当前的偏移量是其等于一个特殊位置, “坐标变换”

G60

结束避免循环功能, “预处理”

G61

启动避免循环功能, “预处理”

G75

插补的时间同步, “时间同步插补”

G90

按照以下坐标值(fo X/Y/Z/P-W/A/B/C)定义的绝对路径(默认)启动插补, “模块”

G91

按照以下坐标值(fo X/Y/Z/P-W/A/B/C)定义的相对路径(默认)启动插补, “模块”

G92

设置位置不进行偏移, “定位”

G98

按照以下代码提供的 I/J/K相对路径值启动插补, “模块”

G99

按照以下代码提供的 I/J/K相对于起点(标准点)的相对路径值启动插补, “模块”

函数库 SM3_CNC必须包含一个工程的无差错编译。