自制工业控制系统:中文输入法——音节切分、三层码表与候选窗

起因

汉字进机器,是一道比机床数控更老的难题。机械时代的中国打字机拖着一块两千多常用字的大字盘,拣字锤在盘面上跑,熟练工一分钟二十来字,比手写快不了多少;林语堂 1947 年的明快打字机想换思路——几十个键配一套机械索引机构,按上下形检字,从七千字里调字,样机造出来了,赔进去的是他半生的版税。更早的 1871 年,丹麦大北电报公司在上海敷设海缆,汉字被编成四位数字一字的电码本,收发两头的译电员"数字进、汉字出"——那份码本就是"码表"这个词的老祖宗:输入的从来不是字本身,是查表的键。

自制工业控制系统:3D切割过程模拟——直纹面重构、弧长配对与三维仿真屏

界面篇立仿真屏的时候留了一句实话:轨迹描画是二维的。平切的活这样够用——轮廓画出来对着图纸肉眼核对,尺寸、过切、切入位置,一张图说尽。锥形切割一进来,这张二维图开始答非所问:上下两条轨迹各自都画得对,中间切出来的面长什么样?摆角会不会顶到线架行程?天圆地方的活图纸只给上下两个轮廓,中间的过渡腔连设计的人都只靠想象——车间里交这种活,编程的人自己心里都没底,只能切个试件用真金白银买确定。

用图形先验再上机,是数控的老传统。APT 年代刀位数据先上绘图仪画一遍(CLFILE 出图,人眼查刀路),车间"先描图、后切件"的习惯是这个传统的民间版;商品化的切削验证软件八十年代末出现——CGTech 1988 年成立,头号产品 VERICUT 干的就是验刀路、防碰撞、防过切,至今还是铣削领域的主力;线切割控制系统则跟着显示硬件降价一路走:字符终端、二维轨迹图、三维线框,到今天 Sodick 这类厂商的系统里 3D 模拟是标配屏。我们自研系统的仿真屏从二维升三维,是把同一条曲线重走一遍——好在走起来便宜,原因见下。

自制工业控制系统:锥形切割实战——锥度几何、切点漂移与UV轨迹生成

起因

插补篇把段表变成了脉冲,但那套段表还是纯二维的——X/Y 走轨迹,丝始终竖着,切出来的东西上下一样大。模具行业第一个不答应:冲裁模的凹模刃口要带斜度,落料才漏得下去;塑料模的型腔要拔模斜度,件才取得出来;挤压模干脆要上下两个形状的过渡腔(天圆地方这类)。这些活的共同名字叫锥形切割:丝要会歪。

自制工业控制系统:插补实战——逐点比较法、偏差递推与脉冲节拍

起因

三线合拢了:几何侧的逐点比较法在详解篇讲过来历,执行侧的脉冲和电机在电机篇备好了合同,速度侧的变频入口在放电篇通了——这篇写插补本体,把段表变成脉冲。插补这个词本身是什么、为什么非有它不可,前置的插补基础一篇已从零垫平(问题、三笔账、记分牌直觉),这里不再重复铺概念,直接进算法。

插补是个带着年代味的问题:数字计算机还没便宜下来的时候,怎么让一台机床走出不是直角折线的轨迹?五十年代的硬接线数控柜给出的答案是把轨迹问题化成"每步走一个脉冲当量、每步判一次方向"——逐点比较法。七十年代国产线切割的数控柜用分立元件实现了它,3B 纸带上的五个字段(X、Y、J、G、Z)就是这套硬件逻辑的寄存器投影:J 是计数器、G 是判终轴、Z 是象限查表的索引。同一时期,IBM 的 Bresenham 为绘图仪独立推导出同一套数学——两个世界互不知晓,得到同一条偏差递推。HF 时代用 x86 汇编把同一算法第三次写进软件;我们用 Rust 加 ISR 加 FPGA 第四次重写,每次重写,时代给的条件都在变:硬件时代的门电路按个数算,今天的乘法器在 GHz 面前近乎免费——这次的改法就藏在这个变化里,第二节见。

自制工业控制系统:插补基础——从一段几何到一串脉冲,机床是怎么走出一条斜线的

起因

插补实战的时候发现一个缺口:那篇默认读者已经知道插补是什么,一上来就是偏差函数和递推。可"插补"恰恰是数控黑话里对开发者最不友好的一类词——两个字都认识,连起来不知道在说什么;教科书讲它之前先铺了一百页机床结构,厂商手册更干脆,一句"支持直线/圆弧插补"就翻篇。系列的规矩是不留知识黑洞,而插补是整个数控最中央的概念——解析器交出的段表、电机篇备好的脉冲、放电篇留的变频入口,最后全部汇到它身上。所以实战篇之前单开这篇,把概念从零垫平:插补是什么、为什么非有它不可、它站在系统哪一环。只假设两件事:你写过代码,并且知道步进电机来一个脉冲走一步。

这个词的来历就是答案的一半。interpolation 在数学里是"插值":已知两个点,把中间的点补出来。1952 年 MIT 改造的那台首台数控铣床面对的正是这道题——纸带上打的只有端点,起点到终点之间无穷多个中间位置,纸带打不起也存不下,必须由机床自己补出来。“插补"由此成了数控的专有动词,干的就是字面意思的事:在程序给的点之间,把中间的路一步步补出来。补路的角色叫插补器(interpolator),最早是控制柜里一抽屉门电路,后来是软件里的一个状态机——补路的家伙换了四代,题目没换过。

自制工业控制系统:放电加工与高频电源——电蚀物理、规准与间隙伺服的来历

起因

电机篇结尾留了个口子:切割中的进给频率由放电状态实时调,“变频"那只手落在哪,没讲。这只手背后是整台机床最核心的物理过程——放电加工本身。上一篇来历讲了它是谁发明的、走丝怎么分出快慢两条路;这篇下到物理层:一次放电到底发生什么、高频电源在干什么活、“规准"两个字到底指什么、间隙伺服怎么闭环。这层不透,插补的变频入口、放电模块的统计上报、运行屏的平均电流和短路率,全是悬空的概念——工控软件做不好用,多半就是写软件的人没在这层下过车间。

先把三个词钉住,全篇都在用:间隙是丝和工件之间那条几微米到几十微米的缝;蚀除是每个脉冲从工件上炸掉的那点金属;伺服在这里不是电机篇的伺服电机,是"让间隙保持在放电区"的控制手艺——这台机器真正的伺服对象是放电间隙,电机只是执行器。

自制工业控制系统:电机驱动基础——步进与伺服、脉冲方向接口与加减速的来历

起因

解析器交出了段表,往下就该写插补了——但插补的输出是什么?是一串脉冲,发给电机驱动器。脉冲长什么样、一拍对应几微米、多快会丢、停不住会怎样,这层不讲透,插补写出来就是知识黑洞:代码在算轨迹,机器在丢步,两边对不上账。这篇把电机这层填掉——步进电机怎么走、驱动器在中间干什么活、脉冲+方向接口和加减速曲线从哪儿来。插补的几个关键参数(最高频率、加减速时间、脉冲当量)全部从这层的物理来,跳过它直接写软件,就是脱离实际想当然。

电机这层比数控古老。“给一个电信号、走一个固定角度"的想法,1891 年就商业化了的 Strowger 自动电话交换机是老祖宗——那位堪萨斯城的殡葬商怀疑话务员把他的生意电话转给了竞争对手,一怒之下发明了不要话务员的交换机,选线器就是个电磁棘轮,来一个脉冲走一步。数控元年则是 1952 年 MIT 在空军项目里改造的那台辛辛那提铣床:程序在打孔纸带上,伺服是液压的——当年的电力拖动力矩密度不够,只能让液压先顶着。步进电机在六十年代定型混合式结构,随后在打印机、磁盘机这些办公设备里练出一身便宜耐造的本事;中国的线切割在八十年代选了它,一用四十年。于是今天的机床上,PUL/DIR 两根信号线的接口从电子管后期一路用到现在没换过样子——硬件换了四代,接口不换,原因后面讲:它把控制器和驱动技术解耦了,这个遗产直接便宜了我们自研系统。

自制工业控制系统:电火花线切割的来历——发明往事、快慢走丝分岔与切削CNC对比

起因

应用篇往下写,要开始碰机床的几大件了——运动控制卡、放电、走丝、工作液。每碰一件都会撞见"行业里就这么干"的习惯:为什么丝要往复走、为什么工作液用乳化液、为什么程序是 3B、为什么脉冲参数叫规准。这些习惯多数没有文档,老工程师张口就来;问他为什么,多半答"一直这样"。但每个"一直这样"背后都有一段来历——一次事故、一个约束、一笔账。这个系列要做的正是把设计意图的源头挖出来:不光知道怎么做,还知道为什么要这么做。这篇先把整台机器本身的来历交代清楚:电火花是谁把一次电气事故变成一门工艺的,走丝怎么分出快慢两条路,为什么这种机床在中国遍地开花。这是系列最底下那层地基,立项篇交代过三句,这里展开讲透。

自制工业控制系统:G代码与3B代码详解——两代线切割程序语言的来历、格式与方言

起因

解析篇贴着实现写:词法、模态、象限重建。但留了一堆"是什么"没讲——为什么 3B 长成 B X B Y B J G Z 这个怪样子,为什么坐标不带符号,为什么 G 代码要搞模态续效,线切割的 G 和铣床的 G 到底差在哪。这些问题在行业里待久了会当成理所当然,新人对着格式表背规则却不知道每条规则背后是什么约束。这篇把两代程序语言的来历、格式细节和方言地图摊开——也是给自己写解析器补的一课:看得懂格式的人多,说得清"为什么"的人少,而说不清为什么的时候,设计决定就只能拍脑袋。

自制工业控制系统:G代码与3B解析实战——模态状态机、象限重建与段表生成

起因

机床界面篇定了编程屏和仿真屏,两块屏吃的是同一样东西:段表——直线和圆弧排成的几何清单,仿真渲染它,插补执行它,运行屏显示"当前执行第几段"查的还是它。段表从哪儿来,就是这篇的事:把程序文本变成段表。

程序文本有两代,都得吃。老厂里流通的存量几乎全是 3B——HF 时代三十年攒下来的程序,老师傅图纸柜里的 U 盘拷出来的全是它;新 CAD/CAM 后处理吐出来的又是 G 代码。只吃一样,机器要么接不上行业存量,要么对不上新工具。这两代语言各自的来历——3B 为什么五个字段全无符号、G 代码的模态为什么存在——单独开了一篇:G代码与3B代码详解。解析器还是应用篇里少数不依赖运动控制卡手册就能动工的模块:输入文本、输出段表,纯函数,没有硬件依赖——顺手把它做成全系统第一个能在开发机上跑 cargo test 的模块,测试向量当回归资产攒起来。