这一页写给想用自己的发送软件(bCNC、gSender 或 Universal G-code Sender,下称 UGS)、而不是用 Studio 来开 MC-1 的人。MC-1 的控制器是同匠自研内核(兼容 Grbl 1.1 串口协议,带现在的发送软件用的那些扩展),所以这几个发送软件都能用,只是要注意下面几处设置和限制。
这里写的都在 MC-1 的数字孪生上实测过;孪生跑的是和机床同一份控制器代码。真机上的核对还没做。测过的版本:bCNC 0.9.16、gSender 1.6.4、UGS Platform 2.1.27。
| 连哪里 | 怎么连 |
|---|---|
| Studio 窗口里的孪生 | Studio 在 localhost:2323 等发送软件,一次只接一个,只对本机开放(启动 Studio 时加 --bind any,局域网里才连得上)。bCNC:端口填 socket://localhost:2323。gSender:选以太网,地址 127.0.0.1,端口 2323。UGS:tcp://localhost:2323。 |
| MC-1 本身 | 原生 USB:控制器在电脑上是一个串口(Windows 上是 COM*n*),选它就行。原生 USB 不看波特率,有的发送软件非要填一个,填 115200 即可。 |
控制器怎么报自己:
Grbl 1.1f ['$' or '$HELP' for help],和经典的 Grbl 控制器一样。发送软件靠以 “Grbl” 开头的欢迎行认出控制器重启了(见第 3 节)。$I 的回答里:[VER:Twinwright 1.1f.…]、[FIRMWARE:Twinwright]。会显示固件名的发送软件显示的是 “Twinwright”。| 发送软件 | 设置 | 原因 |
|---|---|---|
| bCNC 0.9.16 | 控制器选 GRBL1 | bCNC 不读固件的名字。测的是 GRBL1。 |
| gSender 1.6.4 | 默认固件选 Grbl 以外的那一项 | gSender 靠 $I 里的名字认固件。我们的控制器报的是自己的名字,gSender 就按你设的默认固件工作。测的是那一项。 |
| UGS 2.1.27 | 固件选 GRBL | 测过:设置、跑程序、报警和复位后回零都正常,复位后不用多按 Soft Reset(第 3 节)。UGS 的另一种固件选项也能用,但复位后要多按一次 Soft Reset;点动只在那一项下测过。 |
$H)。用 $X 解锁会被拒绝(error:46)。G53 G0 Z5,都会报 ALARM:2。复位,再回零或解锁。$H 发得出去。G43.1 生效时,那一行报 error:24(bCNC 头一次停止以后自己会补发一行 G43.1Z…,所以从第二次停止起每次都会遇到);在 G80 下,G43.1Z… 报 error:31;缩放 G51 生效时,G51:X 报 error:1。出了错,后面的 G 代码行都回同一个错,直到一个空行、一条 $ 命令或者复位。所以按了停止以后,先用 $G 和 $# 看坐标系、单位和刀长补偿对不对,再点动或者续跑。对不上就重新设零、重新量刀长(2026-10-06 在孪生上测过)。三个发送软件在默认设置下,都不会让 MC-1 换刀并量新刀:
| 发送软件 | 默认的做法 | 怎么办 |
|---|---|---|
| bCNC | 跳过每一个 M6 行:下一把刀的活用主轴上原来那把刀切。 | 换刀方式设成手动换刀(刀长补偿),在 MC-1 的对刀仪上量刀(第 5 节)。 |
| gSender | 换刀方式是 “Ignore”:M6 当注释发出去,程序不停。 | 换刀方式设成固定对刀仪(Fixed Tool Sensor),位置是 MC-1 的对刀仪(第 5 节)。 |
| UGS | 自己处理 M6:抬刀、停主轴、让你换刀,但从来不量刀。换上的刀长一些,就会切得太深,真机上可能撞进工件。 | 一个程序只用一把刀,每个程序前设好刀长或工件零点;或者带换刀的程序用 Studio 来跑。 |
UGS 和 M6 还有几点:
( M6 T1 )。对刀仪在工作台左后角,G59.3 存的就是它正上方的位置。
G59.3;探测距离 50 mm,快探 200 mm/min,慢探 25 mm/min(MC-1 的 $342–$344),探测命令 G38.2。跑程序之前先按“校准”量第一把刀,之后每换一把刀,bCNC 都会设 G43.1。G59.3,在向导里先量初始刀。之后每换一把刀,gSender 不用刀长补偿,而是用 G10 L20 挪工件的 Z。它按探到以后轴停下的位置定刀长,不按控制器报的触发点,所以每换一次刀都可能差一点。在孪生里换刀时用 1 倍速:gSender 隔一段固定的短时间才去读这个位置,孪生跑得比实时快,它读到的可能还是停下之前的。[PRB:])算零点,这是对的做法。[PRB:…:0]),它也照样当触点收下。$40=1(限制点动命令)在有的 Grbl 控制器上会让长点动停在软限位上、不拒绝;MC-1 的控制器还不认这个设置,照样拒绝(2026-10-06 在孪生上和 gSender 一起试过)。(MSG,...) 里的 UTF-8 字当文字读,从不当实时命令。