编程

在控制器的注视下写 G 代码。

Studio 的程序编辑器直接连着孪生。每一行都有它实际用掉的时间,每个错误都有对应的规则和行号,每一处改动在碰到金属之前都能完整跑一遍。

Studio 0.2.0 · Ctrl+E 打开编辑器

编辑器停在第 17 行的断点上:行号栏里是每行的秒数,第 16 行下面是一条静态规则的提示,状态栏写着光标所在行之后机床的状态。
编辑器停在第 17 行的断点上:行号栏里是每行的秒数,第 16 行下面是一条静态规则的提示,状态栏写着光标所在行之后机床的状态。
编辑器

控制器知道的一切,都写在那一行旁边。

基于 Scintilla(Notepad++ 和 SciTE 用的编辑组件),G 代码着色,行号栏由孪生来填。

行号栏里的用时

跑完一遍,每一行都显示它用了几秒。各行加起来正好等于总运行时间,各行去除的体积加起来也正好等于总量。

边写边检查

停止输入 0.4 秒后,grblHAL 的检查模式和十二条静态规则把程序过一遍。发现的问题标在行号栏里;Ctrl+. 采用建议的改法。

光标处的状态

状态栏显示执行完光标所在行之后控制器的模态:单位、平面、绝对/增量、坐标系、进给、主轴、冷却、刀具。

断点与条件暂停

停在某一行,或在切削力、主轴负载、跟随误差、颤振裕度越过上限时停,或在第一刀、险些碰撞、快移切料、碰撞、报警时停。虚拟时间冻结,运动本身不受影响。

从某一行重新开始

Studio 为任意一行写出起始段:刀具、坐标系、主轴、冷却和安全的接近路径。示例 02 从第 460 行重新开始,加工出的工件与一次跑完完全相同。

版本与对比

载入或改动过的每个程序都存成一个版本,记着是谁、为什么改的;你自己的文件从不被覆盖。Ctrl+D 把两个版本并排对比,并写出各自的运行时间。

静态规则

十二条规则:控制器照样接受、却不该这样写的地方。

检查模式找出 grblHAL 会拒绝的行。这些规则找出它照样会执行的问题——以及这台控制器根本不支持的写法。

S01警告第一条移动之前没有安全起始段(单位、绝对/增量、平面、坐标系):程序依赖控制器当时的状态。
S02警告结尾没有 M2/M30:控制器保留它的模态、主轴和冷却。
S03提示换刀(M6)时刀在 Z0 以下:先抬刀。
S04错误第一条切削移动之前没有 F:grblHAL 拒绝(error:22),或沿用之前留下的进给。
S05警告主轴启动时没有 S,或 S 超出主轴的转速范围。
S06提示F 超过这个方向上轴的最高速度:规划器会按它限速。
S07错误这台 grblHAL 构建不支持的代码:表达式、O 字流程控制、子程序、刀具半径补偿 G41/G42、旋转 G68。
S08提示很短的线段太密:规划器队列里的路程不够从 F 刹停,实际进给上不去。
S09提示直上直下的深插铣:考虑斜线或螺旋下刀,并用能中心切削的刀。
S10警告Z0 以下、比程序已经切过的还深的快移:快移切进材料会断刀。
S11错误控制器会拒绝的圆弧(error:33):半径与终点对不上。
S12警告水冷主轴在切削移动时转着,却没开冷却水(M8)。
逐行统计

为什么比程序写的慢?

Studio 为每一行记下编程的进给有没有达到;没达到的,写出是什么拖住了它——用的是 grblHAL 自己的拐角与制动算法,不是估计。

轴速
进给超过这个方向上某个轴的最高速度
拐角
两段移动之间拐角处的衔接速度
圆弧
小半径上的向心加速度限制
前瞻
已规划的路程太短,来不及从这个进给刹停
发送不及
发送端没能让规划器的队列保持满
解析
控制器还在解析后面的行
倍率
进给倍率低于 100 %
保持
进给保持或程序暂停
一个型腔程序里最慢的十二行,按限制它们的原因上色——孪生画的图,这里是画给 AI 客户端的。
一个型腔程序里最慢的十二行,按限制它们的原因上色——孪生画的图,这里是画给 AI 客户端的。
优化器

更快,但不让任何一把刀多吃一点。

优化器改的是数,不是路径。每个候选结果都在一台全新的孪生上完整跑一遍,只有什么都没变差才被接受。

它改什么

  • 较轻的切削,进给提到同一把刀已经承受过的最重一刀
  • 空中的移动用轴的最高速度;精加工和下刀保持原样
  • 颤振的那一段换成稳定性叶瓣上的主轴转速,每齿进给保持不变
  • 共线的短线段合并;只有发送跟不上的地方才拟合成圆弧
  • 快速抬刀降到下面最高处以上 1 mm

什么时候接受

  • 完整跑完,没有新的事件:没有快移切料、没有主轴停转时切削、没有碰撞或险些碰撞
  • 切削力、切屑厚度和主轴负载不超过原程序最重一刀的 105 %
  • 颤振裕度不高于原程序的(或 1)
  • 零件不变差,运行时间更短
Ctrl+Shift+O:优化后的程序作为一次可撤销的编辑放进编辑器,与优化之前的版本并排,写着两次的运行时间。
Ctrl+Shift+O:优化后的程序作为一次可撤销的编辑放进编辑器,与优化之前的版本并排,写着两次的运行时间。

在十五个示例零件上

示例优化前优化后变化
精度试件18:3717:38-5.3 %
型腔与岛屿10:209:33-7.7 %
三维曲面浮雕17:4316:47-5.2 %
黄铜渐开线直齿轮21:0619:46-6.3 %
孔系与螺纹铣削15:4215:22-2.2 %
POM 雕刻与倒角2:282:28-0.2 %
黄铜微流道模具5:115:02-3.0 %
摆线铣与常规开槽对比5:585:45-3.5 %
T 形槽与燕尾槽5:515:42-2.4 %
薄片散热器17:2217:11-1.1 %
槽轮机构(日内瓦机构)13:5413:11-5.2 %
带拔模的模具型腔12:5811:55-8.1 %
钟表轮(模数 0.3)20:2819:19-5.6 %
蜂窝减重板18:0917:57-1.1 %
离心叶轮20:4020:27-1.1 %
十五个合计3:26:263:18:02-4.1 %

孪生里的加工时间(Linux 版,2026-09-29)。每个结果都被接受;最大切削力只有示例 05 由 7.0 N 变为 7.1 N,颤振裕度的变化不超过 0.009,有设计零件的 14 个前后都 100 % 合格。在机床标定之前模型参数都是名义值,所以这些是仿真出来的节省。

生成器

简单特征,不用 CAM。

描述特征,而不是一行行写代码:生成器按台上的毛坯写出程序,在一台后台孪生上试运行;刀会颤振的地方,换到稳定的主轴转速重写,或把那一层改浅。

  • 平面、型腔(带圆角的矩形或圆)、槽、轮廓(内或外)
  • 钻孔(G81,深于 3 倍直径时 G83 啄钻)、螺旋镗孔、单线字体刻字
  • 按材料(15 种)和刀具定转速与进给;3° 斜坡下刀、顺铣、壁精加工到尺寸
生成器写出的型腔程序:切削参数写在注释里,按 Ctrl+K 就能载入并检查。
生成器写出的型腔程序:切削参数写在注释里,按 Ctrl+K 就能载入并检查。

键盘操作

编辑器全程可以用键盘操作;F1–F12 始终作用于机床。

Ctrl+E打开或离开编辑器
Ctrl+K载入机床并检查
Ctrl+S存一个版本
Ctrl+D与上一个版本对比(再按:更早的版本)
Ctrl+B在这一行设断点;Ctrl+Shift+B:条件暂停
Ctrl+.采用建议的改法
Alt+↓ / Alt+↑下一处 / 上一处问题或差异
Ctrl+Shift+O优化(再按:停止)
Ctrl+Shift+G按特征生成程序
F5循环启动,或暂停后继续

FAQ

优化器会改我的文件吗?

不会。结果作为一次可撤销的编辑放进编辑器,与优化之前的版本并排;两个都存成版本。你自己的文件从不被覆盖。

编辑器能用来看 CAM 输出的程序吗?

能。打开任何 G 代码文件;检查和规则会告诉你哪些行这台控制器会拒绝,或者执行起来和你想的不一样。

生成器是 CAM 软件吗?

不是。它覆盖的是手工编程的那些简单特征。自由曲面和多特征的零件请用 CAM。

省下来的时间是真的吗?

是孪生用名义的机床与切削参数算出来的。等 MC-1 样机和孪生对照标定之后,它们才会变成实测的数字。

下一个程序,在孪生里写。

载入一个示例,改一行,看行号栏、规则和运行时间怎样回答你。