起因

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

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

一、机床上的电机清单:谁驱动谁

先盘家底,一台中走丝的电机分三拨,用途和驱动方式完全不同:

电机 驱动什么 类型 为什么是它
X/Y 两台 工作台进给 两相混合式步进(86/110 机座) 转角即位置,开环就能用
U/V 两台 上线架锥度摆动 小机座步进 行程小、力矩需求小
丝筒电机 往复走丝 三相异步机+换向接触器(新机型变频) 恒速反转,不关心转角
工作液泵 供液 三相异步机 开关量

关键分野在"要不要知道转角”。工作台和 U/V 要——位置就是一切;丝筒不要——它只要按节拍换向。要转角的这拨用了步进,是因为线切割的负载特性完美适配:切割进给慢到每分钟一两毫米量级(100 mm²/min 切 60 mm 厚,进给约 1.7 mm/min),空走也就每分钟几米,四五个数量级的速度跨度全落在步进的能力区间;负载是丝杠摩擦加液流阻力,轻而平稳,没有铣削那种断续切削力。慢走丝厂家(Agie、Sodick 那一系)上交流伺服加光栅,是因为它们要把精度再往上顶一个数量级——那是另一份成本合同,后面第八节对照。

二、步进电机:一个脉冲一个角度

混合式(hybrid)步进的"混合"指永磁加变磁阻两条原理混用。转子是一根轴向充磁的永磁体,两端各压一个 50 齿的齿杯,错开半个齿距;定子八个极,极上也带齿,两相绕组(A/B)轮流通电决定齿对齐的位置。两相四拍通电一轮,转子恰好走一个齿距——步距角就是 360°/(50×4) = 1.8°,一圈 200 整步。这个 1.8° 是行业标准值,0.9° 的 400 步/转是加密版。

力矩从哪来:齿没对齐时磁路磁阻大,磁场会把转子往对齐位拽,拽的力随失调角增大到某个峰值后回落——这个峰值是保持转矩,铭牌上的 N·m 就是它。停在步位上时磁场锁定转子,这就是步进的自锁:驱动器不断电,静止电流把位置咬死(驱动器普遍有"自动半流"——停稳几百毫秒后电流减半防发热,代价是保持力矩也减半,竖直轴要当心,线切割工作台全是水平的,没事)。

出线常见三种:四线是两相各自独立(双极驱动,性能最好),六线带中间抽头(单极驱动的遗产),八线可串可并。现在的主流驱动器是双极的,四线直连,六线当四线用(抽头悬空或按手册接)。

三、驱动器:恒流斩波与细分

控制器不能把 IO 直接怼到电机绕组上,中间必须有个驱动器,原因是一个物理量:绕组电感。电流在电感里爬升要时间(di/dt = V/L),步进频率一高,每个状态里电流还没爬到额定值就被切走,力矩跳水。八十年代老教材里的"高低压驱动电路"就是对付它的:先拿高压把电流踹上去,到位后退回低压维持——两套电源两套开关,时序麻烦。后来恒流斩波一统天下:单一高压电源,H 桥全压猛灌,采样电阻盯着电流,到阈值就斩、掉了再灌,几十 kHz 的斩波把相电流钳在设定值附近。同一台电机,线性驱动和恒流斩波的高速力矩能差出一个数量级。国产驱动器(雷赛这一类)侧面印着拨码表,SW1–SW8 拨电流和细分,装机时对表拨好,这张表就是这台机器的驱动档案。

细分(microstepping)是斩波的自然延伸:整步通电是 100%/100% 或 100%/0 的粗放组合,细分改成按正弦余弦配比分电流——Ia = I·cosθ、Ib = I·sinθ,θ 在一个整步内插 N 份,就是一个整步走 N 微步。二十细分之下,1.8° 变成 0.09°,配合丝杠就是微米级的控制粒度。

但细分有一句必须说破的话:它的真收益是平稳,不是精度。微步的定位精度受齿槽效应和正弦近似不完美拖累,静差在整步的百分之几量级——微步不均匀,走满一整步才归零。所以"二十细分=精度提高二十倍"是宣传话术;微米级脉冲当量是真的(指令分辨率),微米级定位精度不是它给的——精度是丝杠、螺距补偿和多次切割给的,第五节细算这笔账。

顺手的收益是消共振:整步驱动在一两百 pps 区间有个著名的低频共振点(单四拍激励的频率正好落在机械谐振上),低速点动时机床会抖。细分的相电流平滑了激励频谱,共振大幅衰减——老师傅点动机床手感"肉"还是"顺",多半差在驱动器的细分拨码上。

四、脉冲+方向:四十年不换的接口

控制器和驱动器之间的合同就两根有效信号:PUL(脉冲,一个沿走一步)和 DIR(方向电平),外加一根可选的 ENA(使能)。5V 电平,光耦隔离,接口分差分(PUL+/PUL−)和共阳(PUL+ 接 +5V,PUL− 由控制器拉低)两种接法,光耦 LED 的电流靠串联电阻定住(典型 10–20mA)。时序要求以手册为准,常见量级:

1
2
3
4
DIR ──────┐ 方向至少提前 5µs 建立,换向期间脉冲必须停
           └──────────────────────
PUL   ┌──┐    ┌──┐    ┌──┐
──────┘  └────┘  └────┘  └───     脉宽 ≥2.5µs 量级,占空比接近 50% 频率最高

三个实战的坑都在频率上。一是光耦的速度:普通慢光耦(TLP521 一类)在几十 kHz 以上开始丢沿,快耦(6N137 一类)能顶到 200kHz 以上——同一个驱动器型号换光耦版本,最高频率规格差好几倍,买错版本空走速度上不去,查电路查半天,病根在器件。二是电平:我们这边发脉冲的是 FPGA, banks 是 3.3V LVCMOS,能不能直推 5V 光耦要看驱动器输入规格,不行就加一级驱动,这个对表活在运动控制卡的手册来之前就要先记下。三是沿的极性:多数驱动器默认上升沿计数,有的可配成下降沿,脉冲数对不上先查这个。

这个接口能从八十年代活到现在,不是惯性,是它站的位置好:合同只规定"脉冲+方向",不关心脉冲那头是步进还是伺服——伺服驱动器的位置模式照样吃这套信号。控制器从此和电机技术解耦,驱动器从高低压换到斩波、从步进换到伺服,控制器一行代码不用改。我们的系统直接继承这份遗产:插补层只管发脉冲,电机世界怎么换代是参数区和驱动档案的事。

五、脉冲当量:微米从哪儿来

一个脉冲走多少微米,这笔账三角相乘:

脉冲当量 = 丝杠导程 ÷ (每转整步数 × 细分数)

以 4mm 导程丝杠、200 整步/转、20 细分为例:4mm ÷ 4000 = 1µm/pulse——HF 系机床显示分辨率 1µm,硬件出处就是这套乘法。换 10 细分就是 2µm,U/V 轴导程更小、当量更细。反过来从速度推频率:空走 5m/min、1µm 当量,脉冲频率就是 5000mm/60s ÷ 0.001mm ≈ 83kHz——空走速度的上限不是软件想多快就多快,是光耦丢沿线、斩波能力线和电机力矩崩溃线三条线里最低的那条,83kHz 对慢光耦已经贴脸。参数区的最高频率字段,物理来源就是这里:

1
2
3
4
5
pub struct AxisDrive {           // 参数区·厂家级,每轴一份(参数篇的双副本世代提交)
    pub pulses_per_mm: u32,      // 脉冲当量的倒数:1µm 当量 = 1000
    pub max_freq_hz: u32,        // 最高脉冲频率——空走速度上限的物理来源
    pub ramp_ms: u16,            // 0→最高频率的爬升时间(加减速,第七节)
}

插补内部以 µm 计数、出口换算成脉冲。当量不是整微米的机器(比如 2.5µm),换算必须带余数进位累加器,每步 acc += delta_um; pulses = acc / 1000 * ... 的整数套整数,直接取整会把误差攒成毫米级的累计漂移——和解析器拒绝 f64 是同一条纪律:微米级系统里,一切小数都要用整数算清楚。

精度口径顺便钉死:脉冲当量是分辨率,不是精度。微步静差(第三节)、丝杠螺距误差、反向间隙,三样都远大于 1µm。前两样靠参数篇的螺距补偿表修,反向间隙靠换向时补一个间隙量——它们都存在参数区、在驱动这层之下的机械层生效。微米当量的真正意义是给修正量留够细的旋钮。

六、丢步:开环的原罪与车间习惯

开环的账很硬:控制器以为走了 10000 步,电机被卡只走了 9987 步,位置漂了 13µm——没有任何报警,转子失步是哑巴。诱因排前三的是超速(频率跳进力矩崩溃区)、过载(丝杠卡滞、撞限位)、加减速太陡(转子跟不上频率突跳)。

车间里一堆"仪式"其实是被丢步逼出来的习惯。老师傅断丝后必重新找边找孔中心,不是讲究,是知道开环这十几年攒的步数未必都作数;下班前把工作台开回原点,第二天开工再回零,是用机械基准给电子账本日结。装错料的怀疑、切完尺寸漂了的排查,第一反应都是"回去重新对零"——这些习惯背后全是同一个不信任投票。

中走丝把丢步的代价放大了:多次切割是增量修整,粗切丢的步,后面每一刀都忠实地在错误坐标上修,尺寸漂了还查不出是哪一刀的事——所以高端中走丝在工作台加编码器或光栅尺做半闭环,用位置反馈给开环补一道对账。我们的系统不装光栅,对账策略是软的:开机和断丝续切前强制回零/找边流程(机床界面篇的工序位)、力矩选型留足余量、加减速参数保守——把丢步概率压到工程可接受,再用回零把残余误差归零。

七、加减速:梯形、S 曲线与"变频"

电机不能瞬间起停,转子带着丝杠和工作台的惯量,频率从零跳到几万 kHz 等于要求它瞬间跟上——跟不上就失步(第六节诱因之三)。所以脉冲频率永远走斜坡:从零爬到目标,匀速,再降回零。这条频率-时间曲线就是加减速。

曲线的形状有代际。早年没有软件规划,驱动器里一片 RC 电路充放电,频率按指数曲线爬——老教材"加减速电路"一节讲的就是它,硬件时代的活化石。软件接手后先是梯形曲线:加速度恒定,频率线性爬升,简单好算,但梯形四个角上加速度突跳,机械系统对加速度的变化率(jerk)敏感,高速往复会哐当。S 曲线把加速度本身也做平滑,起步和收尾像油门渐进,代价是规划器多算一阶。线切割的空走往复频繁,S 曲线对减小机械冲击值这个钱。

线切割还有一层别的机床没有的加减速语义:切割中的进给速度不是程序定的。G 代码里的 F 是初值和上限(解析器篇定的口径),实际频率由放电状态连续调节——放电 ISR 统计的平均电流和短路率实时上调下调脉冲发射频率,HF 时代那个"变频"旋钮/档位说的就是它。幅度小、更新频繁,不需要斜坡也能跟(频率微调转子跟得上),所以这台机器真正的闭环不在电机上、在放电间隙上:步进开环走位置,放电反馈闭环调速度,两个环各管各的。这是线切割的来历里"间隙伺服"这个物理事实,在驱动架构上的投影。

落到两级调度:速度规划(梯形/S 的参数计算、前瞻)在 Core1 协作层,算出目标频率和加速度交给运动控制卡;卡上的 FPGA 按硬件节拍发脉冲。脉冲为什么必须 FPGA 发、不能软件 ISR 发——软件节拍有抖动,几 kHz 的脉冲流里混进微秒级抖动,低速下就是肉眼可见的爬行,FPGA 的硬件节拍没有这个问题。

八、伺服:另一份合同

对照着看伺服,才知道步进省了什么、欠了什么。伺服电机是永磁同步机加编码器,驱动器里三环嵌套:电流环(kHz 级,功率电子管相电流)、速度环、位置环,编码器反馈(2500 线编码器四倍频就是每转一万个计数)。三环整定是门手艺,P I D 参数互相咬,整不好就啸叫或超调——这是步进"免整定"的稀缺价值:拨码拨完就能用,车间电工都伺候得起。

伺服的位置误差形态和步进完全不同:没有丢步这种哑巴错,代之以跟随误差——速度乘以位置环增益的倒数,误差随速度线性增长、可测量、可设阈值报警。错能被看见,就能被管理;这是精度要求高的场合最终都走向闭环的根本理由。

接口上伺服经历了三代:经典 ±10V 模拟量(速度指令或力矩指令,老机床的遗产),脉冲+方向(伺服位置模式收脉冲,控制器侧和步进零差别),总线(EtherCAT,2003 年倍福推出,分布时钟把多轴同步做到亚微秒)。我们系统的取舍顺理成章:脉冲+方向先走通,电机世界换血不用动插补层;总线化是运动控制卡手册到手、多轴同步精度逼近物理极限时再开的话题。

中走丝上伺服化的现实位置:X/Y 修切精度往 ±0.003mm 顶的高档机型用伺服,主流仍步进——成本差一个量级、免整定、线切割的低速轻载步进吃得下。我们的目标机器按步进设计,但插补层只见脉冲不见电机(第四节接口的解耦红利),哪天要换,是参数区和驱动档案的事。

总结

实战清单:电机清单三拨分清(进给轴步进/丝筒异步/泵异步),进给轴选步进的负载依据;混合式结构与 1.8°/200 步由来、四线接法;恒流斩波替代高低压的原理与拨码表档案;细分=平稳不是精度、低频共振与消振;脉冲+方向接口三坑(光耦速度、电平对接、沿极性)与它四十年不换的解耦红利;脉冲当量三角乘法与 83kHz 空走上限的物理来源、参数区 AxisDrive 三字段、整数换算带进位;丢步三个诱因与车间习惯的来历、中走丝的放大效应与软对账(回零流程+余量+保守加减速);梯形/S 曲线代际与切割中"变频"的真闭环在放电间隙;伺服三环/跟随误差/接口三代与"插补层不见电机"的取舍。跑通标志:拨码表核算的当量与参数区一致;空走全行程往返打表复测零漂移;低速点动无可见抖动;断电重启回零归位;日志里脉冲频率与理论速度换算对得上;故意把加速时间拨到三分之一,空走往返后打表能读出丢步——然后把参数拨回去。

往下插补的路还差一块垫脚石:这篇说了脉冲频率由放电状态调(变频),但放电侧的原理还没讲——电蚀怎么发生、规准从哪儿来、间隙伺服怎么闭环。下一篇先补它:放电加工原理与高频电源,那也是整台机器最核心的物理过程。之后才是插补——逐点比较法那套 3B 时代的硬件逻辑,变成我们 ISR 和 FPGA 里的代码,把段表变成脉冲。

参考链接