文档 技术手册

G 代码和 M 代码

同匠自研内核执行下面这些 G 代码。代码照 RS274/NGC 和 LinuxCNC。控制器不支持的代码答 error:20,这一行什么也不做。

实时命令(?、!、~ 这样的单个字节)见协议。和其他 Grbl 控制器有哪些不同,见同匠自研内核。

G 代码

代码意思说明
G0、G1快移、直线进给
G2、G3顺时针、逆时针圆弧(I J K 或 R),螺旋线刀走真圆。R 格式的圆弧在平面里没有弦时答 error:33。
G4 P停留 P 秒编多长就停多长。
G5、G5.1三次样条、二次样条不带 I、J 的 G5 顺着上一段结束时的方向接下去。
G7、G8车床的直径方式、半径方式只在车床方式($32=2)下。
G10 L2、G10 L20设工件坐标
G10 L1、G10 L10、G10 L11设刀具表32 把刀。控制器关电后刀具表还在。
G17、G18、G19选平面
G20、G21英制、公制
G28、G30经中间点去存着的位置
G28.1、G30.1存下现在的位置
G33、G33.1、G76主轴同步运动、刚性攻丝、螺纹循环要主轴编码器。MC-1 没有,这几个答 error:20。
G38.2–G38.5探测结果是测头触发的那一点,报成 [PRB:]。零点按这一点设,不按轴停下的地方设。
G40关刀具半径补偿
G41、G42、G41.1、G42.1刀具半径补偿:D 取刀具表里的半径,.1 直接给直径只在 G17 平面。进入、退出的动作照 LinuxCNC。会过切的动作被拒绝。
G43 Hn、G43.2 Hn按刀具表的刀长补偿、加上的补偿
G43.1动态刀长补偿
G49关刀长补偿
G50、G51关缩放、开缩放
G52局部坐标系和 G92 共用一份偏置,照 LinuxCNC。
G53这一行用机床坐标
G54–G59、G59.1–G59.3工件坐标系$486 能锁住 G59.1–G59.3。
G61精确路径
G61.1精确停止每个编程动作的终点轴都停下。
G64 P Q路径融合能省时间的地方,两段直线之间的拐角变成一段离拐角不超过 P 的圆弧。Q 收下但不用。
G65 P1–P6自带的宏读写设置、刀具偏置、参数、机床状态、选测头、主轴不等转速。P7(Modbus 消息)不支持。
G65 P100 起、G66、G66.1、G67文件宏、模态宏调用P 要整数。这一行不能有别的命令(error:21)。
G73、G81、G82、G83钻孔循环、啄钻每个孔只钻该钻的刀数。
G84、G85、G86、G89攻丝、镗孔循环
G80取消循环
G90、G91绝对、增量
G91.1圆心用增量
G92、G92.1、G92.2、G92.3坐标偏置:设、清除、暂时停用、恢复
G93、G94、G95反时间、每分钟、每转进给反时间下的圆弧按编程的时间走。
G96、G97恒线速、恒转速只在车床方式下。
G98、G99循环退回到起始高度、退回到 R 平面

下面这些 G 代码不支持(error:20):

  • G5.2、G5.3(NURBS);
  • G17.1–G19.1(UVW 平面);
  • G70–G72(车削循环);
  • G90.1。

M 代码

代码意思说明
M0、M1程序暂停、选择停止实时命令 0x88 打开或关掉 M1 的停止。
M2、M30程序结束
M3、M4、M5主轴正转、反转、停
M6换刀$341 定 M6 做什么。M6 和运动写在同一行答 error:40。
M7、M8、M9冷却:喷雾、浇注、关在 MC-1 上,M8 开的是主轴冷却水。
M25Z 回到回零后的高度Centroid 的代码,有的 CAM 后处理会写。
M48、M49开、关倍率
M50–M53进给倍率、主轴倍率、自适应进给、进给保持:开或关
M56开、关停车
M60换托盘暂停
M61不换刀,直接设当前刀号
M62–M65数字输出开或关,随下一段动作或马上板子有辅助输出时才有。
M66等输入前面的动作走完了才开始等。
M70–M73存下、恢复模态
M98 P L、M99调子程序、返回在从控制器的文件系统里跑的程序中用。一行一行送来的 M98 答 error:39。主程序里的 M99 当程序结束。

下面这些 M 代码不支持(error:20):

  • M19(主轴定向);
  • M67、M68(模拟输出,MC-1 没有);
  • M100–M199(用户 M 代码)。

字、语法和参数

程序行

  • 可以写注释 ( … ) 和 ;。
  • (MSG,…) 把文字作为消息发给发送软件。
  • (PRINT,…) 发一条消息,里面写的参数换成它们的值。
  • (DEBUG,…) 也这样,只在 #5599 打开时发。
  • 可以用跳段 /、行号 N,以及 % 行(带不带名字都行)。
  • 大小写不论,字中间的空格不算。

参数和表达式

  • 编号参数 #1–#5000 归程序用,程序没设过时读出来是 0。
  • #5001 起的参数和带名字的系统参数只能读。
  • 带名字的参数 #<name>:读一个从没设过的名字答 error:39。EXISTS[#<name>] 告诉你它设过没有。
  • [ ] 里的表达式,运算符和函数照 LinuxCNC。角度用度。
  • 一行里设的值,这一行自己读不到。

O 字

  • 从控制器的文件系统里跑的程序,可以用子程序、if、elseif、else、while、do、repeat。
  • 一行一行送来的子程序和循环先收齐,收齐了再跑。
  • 子程序也可以单独成一个文件:<名字>.ngc 或 <名字>.macro。

极坐标

@ 是半径,^ 是角度,在 XY 平面里绕工件原点。

一行里的错误

  • 同一模态组的两个代码写在一行,答 error:21。
  • 一行里有两个都要用轴字的命令,答 error:24。
  • 全部错误码见错误码。