电机控制算法全景:从六步方波到 FOC,以及它与运动控制到底差在哪





电机控制算法全景:从六步方波到 FOC,以及它与运动控制到底差在哪

前面两篇,一篇讲运动控制器是什么、五种连 PC 方式怎么选,一篇讲梯形 / S 形曲线、电子凸轮飞剪、龙门同步与分层架构。但它们都停在同一条线以上:主站算出「这一拍该到哪」,然后呢?

指令落到驱动器里,最终要变成三相桥上六个功率管的开关动作,让电机真的吐出那么大的转矩。这一段是另一套完全不同的学问——坐标系是随转子旋转的 dq 轴,被控量是电流和磁链,时间尺度是几十微秒,和你熟悉「毫米、毫秒、多轴插补」完全不在一个量纲上。

更常见的问题是,行业里「运动控制」和「电机控制」经常被混着叫。有人调不好圆弧,去改电流环 PI;有人做伺服驱动,却把轨迹规划当成自己的活。这篇把最底层这层补齐,并把两者的分界画清楚。

FOC 伺服驱动板、PMSM 电机与三相电流波形实拍
一台电机、一块驱动板、一条三相电流波形——本文要拆的就是这中间的算法

全篇一句话:运动控制把「轨迹」做准,电机控制把「转矩」做准。前者输出带时间戳的设定值,后者让电机真的听话;FOC(Field Oriented Control,磁场定向控制)就是目前把转矩做得最准、最线性的主流方法——它的全部技巧,是把交流量变换成直流量再控。

本文路线(从分界到落地,共九节)

① 先划清地盘
② 从 V/f 到六步方波
③ Clarke / Park 变换
④ 一个电流环 tick
⑤ SVPWM
⑥ MTPA / 弱磁
⑦ 无感 FOC
⑧ 与运动控制正面对照
⑨ 开源与落地

一、先划清地盘:两套控制体系,一条 CiA 402 分界线

理解 FOC 之前,先得知道它在整个系统里坐在哪一层。以最常见的 EtherCAT 伺服 + CSP 模式为例,一套典型节拍是这样的:

运动控制域与电机控制域的分层边界与频率阶梯
从「走过去」到「出多少力」:一条 CiA 402 / CSP 指令把两套控制体系隔开
层级 谁在算 典型节拍 输出什么
总线周期 主站(运动控制器 / IPC) 1 ms(或 500 µs) 每轴一个 0x607A 目标位置
插补细分 / 位置环 伺服驱动器 约 125 µs(8 kHz) 1 ms 内插出 8 个细分点,跑位置环
速度环 伺服驱动器 约 62.5 µs(16 kHz) 转矩 / 电流指令 iq*
电流环 = FOC 伺服驱动器 31 ~ 62.5 µs(16 ~ 32 kHz) vd、vq 电压指令
PWM / 功率级 逆变器 10 ~ 20 kHz 开关 六个功率管占空比

这张表里有两条比算法本身更重要的工程规律:

  • 内环带宽必须远高于外环。 级联控制的成立前提是「外环眼里,内环是瞬时的」。如果电流环响应比速度环还慢,外环一调就振荡。TI 在 SPRT735 里给过一个很实用的判据:ADC 转换加算法执行带来的延迟,会把电流控制器带宽限制在采样频率的十分之一左右。所以 16 kHz 采样大致对应 1.6 kHz 电流环带宽,别拿 10 kHz 开关频率去奢望 5 kHz 带宽。
  • 「分界线」是可以上下移动的。 CiA 402 用操作模式来规定「哪些环在驱动器、哪些环在主站」:PP 模式(1)连轨迹规划都在驱动器;CSP(8)主站每周期只给位置点,驱动器跑完三环;CSV(9)把位置环搬到主站;CST(10)连速度环也搬走,驱动器只剩最内层的电流环——也就是只剩 FOC。这一点后面第八节还会用到。

顺带澄清一个高频误解:CSP 下主站发的不是「脉冲」,也不是「转矩」,而是一个绝对位置点;驱动器内部的插补器按 0x60C2 声明的周期,把相邻两点连成平滑轨迹,再喂给自己的三环。把 0x60C2 配错(比如真实 2 ms 却写成 1 ms),症状是速度顿挫、高速走不到位——这时候去调电流环 PI 是白费力气,病根在时间轴。

二、为什么交流电机「难控」:从 V/f 到六步方波

有刷直流电机之所以好控,是因为机械换向器替你做了一件最关键的事:无论转子转到哪,电枢电流产生的磁动势始终与励磁磁场保持 90° 电角度,转矩天然正比于电枢电流 Te = Kt · Ia。一个 PI 控电流就等于控转矩。

交流永磁同步电机(PMSM / BLDC)没有换向器。三相绕组通的是正弦交流,定子磁动势是一个旋转矢量,转子磁体也是一个旋转矢量。转矩取决于这两个矢量的夹角,而不只是电流幅值。想让交流机像直流机那样「给多少电流出多少力」,就必须实时知道转子磁场的朝向,并把定子电流里「产生转矩的那一份」单独拆出来控——这正是 FOC 要解决的问题。

在 FOC 成为主流之前,工程上有几档过渡方案:

V/f、六步方波、SPWM、FOC、DTC 五种策略的四维定性对比
五种策略的定性评级(1~5 分,用于选型方向判断,不是实测绝对值)
策略 核心思路 转矩脉动 低速 / 动态 典型场景
V/f 控制 只控电压幅值与频率,不控相位与夹角 高 零速转矩差、响应慢 风机、水泵
六步方波(梯形波) 每 60° 电角度换相,任意时刻两相导通一相悬空 较高(约 6%~15%) 低速抖动、噪声明显 航模电调、电动工具、风扇
SPWM 正弦波 三相电流按正弦调制,波形平滑了 中(约 2%~5%) 负载角不可控,高速相位滞后、效率下降 中端家电、车载低噪风机
FOC 矢量控制 坐标变换解耦出励磁 / 转矩分量,分别闭环 低 低速大转矩、宽调速、转矩线性 工业伺服、机器人、电动车主驱
DTC 直接转矩控制 滞环直接选电压矢量控磁链与转矩,无需坐标变换 中 转矩响应最快,参数鲁棒 牵引、电梯曳引、高速主轴

DTC 值得多说一句:它不是 FOC 的「低配版」,而是另一条技术路线。DTC 用滞环比较器直接选开关状态,省掉了坐标变换和 PWM 调制器,动态响应比 FOC 更快、对电机参数更不敏感;代价是开关频率不固定,转矩脉动和噪声比 FOC 大,低速性能也更难做。ABB ACS880 这类变频器走的就是这条路。

FOC 的历史其实比很多人以为的早:1968 年 K. Hasse 提出间接磁场定向,1972 年西门子 Felix Blaschke 发表磁场定向原理与 TRANSVEKTOR 直接控制,1980 年代 Werner Leonhard 完成理论体系化。真正让它普及的不是理论突破,而是 DSP / C2000 / STM32 这类带硬件浮点和 PWM 同步 ADC 的 MCU 变便宜了——因为 FOC 每个电流环 tick 都要跑两次坐标变换、两个 PI、一次 SVPWM。

三、FOC 的核心:把交流量变成直流量

FOC 的全部魔法在两次坐标变换。设三相电流满足 ia + ib + ic = 0(三相对称、无中线),采样两相即可:

/* Clarke:三相静止 abc  ->  两相静止 alpha-beta */
i_alpha = ia;
i_beta  = (ia + 2.0f * ib) / 1.7320508f;   /* 1/sqrt(3) */

/* Park:两相静止  ->  随转子旋转的 dq(theta_e = 极对数 p * 机械角) */
id =  i_alpha * cosf(theta_e) + i_beta * sinf(theta_e);
iq = -i_alpha * sinf(theta_e) + i_beta * cosf(theta_e);
三相正弦经 Clarke 变两相正交、再经 Park 变成 dq 直流量
Clarke 降维、Park 旋转:正弦交流量在 dq 系里变成不随时间变化的直流量

关键是最后这一步。因为 dq 坐标系跟着转子一起转,稳态下原本随时间正弦变化的三相电流,投影到这个旋转系里就成了两个常数:普通 PI 控制器跟踪直流量可以做到零静差,而让 PI 去追一条正弦曲线,必然存在幅值衰减和相位滞后,转速越高越严重。这就是「FOC 让交流机拥有直流机控制性能」的真正含义。

再看物理意义。PMSM 在 dq 系下的电磁转矩为:

Te = 1.5 * p * [ psi_m * iq + (Ld - Lq) * id * iq ]
     磁体转矩项        磁阻转矩项(凸极效应)

表贴式 SPMSM:Ld ≈ Lq  ->  Te = 1.5 * p * psi_m * iq
内嵌式 IPMSM:Ld < Lq  ->  负的 id 也能贡献转矩(MTPA 的由来)

id 沿转子磁体轴线,只改变磁链、不做功;iq 超前 90° 电角度,纯粹产生转矩。对表贴式电机,转矩与 iq 严格成正比——一条干净的标量转矩指令。基速以下令 id = 0,把所有电流都拿去出力,就是最经典的 id=0 控制;基速以上注入负 id 削弱磁场扩速,就是第六节要讲的弱磁。

编码器零位必须标定。 Park 变换完全依赖准确的转子电角度 theta_e。90° 电角度的偏差会让磁通轴和转矩轴互换(电流全变成励磁,电机不出力还发热);180° 偏差会让转矩反向(一使能就飞车)。所以 FOC 驱动器上电或首次装机,都要跑一次编码器零位 / 磁极对准例程,并在带载下复核。

四、一个电流环 tick 里跑完的闭环

把上面所有零件串起来,就是下面这张图。典型每 25 ~ 125 µs 重复一次,且必须与 PWM 定时器中断严格同步:

FOC 完整闭环:采样、Clarke、Park、dq 双 PI、解耦前馈、反 Park、SVPWM、逆变器、PMSM 与反馈
一个电流环 tick 的八步链路,以及编码器角度如何回送到 Park / 反 Park
// FOC 电流环 ISR 骨架(示意,省略标幺化与限幅)
void FOC_CurrentLoop_ISR(void) {
    // 1. PWM 中点触发的 ADC:采两相电流 + 母线电压
    float ia = ADC_GetPhaseA(), ib = ADC_GetPhaseB();
    // 2. 读转子电角度(编码器 / 旋变 / 观测器)
    float theta = Encoder_GetElectricalAngle();

    // 3. Clarke + Park
    float i_alpha = ia, i_beta = (ia + 2.0f * ib) * INV_SQRT3;
    float ct = cosf(theta), st = sinf(theta);
    float id =  i_alpha * ct + i_beta * st;
    float iq = -i_alpha * st + i_beta * ct;

    // 4. 两个 PI(含抗积分饱和)+ 交叉耦合解耦前馈
    float vd = PI_D(id_ref - id) - omega_e * Lq * iq;
    float vq = PI_Q(iq_ref - iq) + omega_e * (Ld * id + psi_m);

    // 5. 反 Park + SVPWM
    float v_alpha = vd * ct - vq * st;
    float v_beta  = vd * st + vq * ct;
    SVM_CalcDuty(v_alpha, v_beta, Vdc, &da, &db, &dc);
    PWM_SetCompare(da, db, dc);          // 6. 更新比较寄存器
}

看骨架容易,真正让电流环好用的一堆细节都在注释外:

  • 采样时刻。 相电流必须在 PWM 零矢量中点采样,避开开关动作的电流尖峰;单电阻采样还要处理「采样窗口不够」的欠采样重构。
  • 解耦前馈。 dq 轴电压方程里存在 -ωe·Lq·iq 与 +ωe·(Ld·id+ψm) 的交叉耦合项,转速越高耦合越强。不补偿就靠 PI 硬扛,表现为高速下电流跟踪变慢、转矩掉。
  • PI 整定。 常用零极点对消:Kp = Ls · ωc、Ki = Rs · ωc(ωc 为目标电流环带宽),把电机的一阶 RL 极点抵掉。速度环则用对称最优法。电阻随温度漂移、电感随饱和变化,是参数整定失真的主要来源,高端方案会做在线辨识。
  • 抗积分饱和(anti-windup)。 电压指令触及母线电压上限时必须冻结或回退积分项,否则限幅解除瞬间会有一大坨积分量冲出来造成过流。
  • 死区补偿。 功率管死区与管压降让实际输出电压偏离指令,在低速小电流时尤其明显,是低速爬行和转矩脉动的重要来源,通常用查表前馈补偿。

还要注意三环的输入输出关系:位置环输出速度指令、速度环输出转矩指令 iq*、电流环输出电压。FOC 严格说只是最内层的电流环;平时说「FOC 驱动器」,是把三环都做进去的整机产品。

五、SVPWM:把电压指令翻译成六个开关

反 Park 给出的是一个静止 alpha-beta 平面上的电压矢量,但三相逆变器只能输出离散的开关状态:六个功率管组成三个桥臂,共 8 种组合(6 个有效矢量 + 2 个零矢量)。SVPWM 要做的,是在一个 PWM 周期 Ts 内,用相邻两个有效矢量和零矢量按时间加权,合成出任意方向的目标矢量:

SVPWM 六扇区空间矢量合成与 SPWM/SVPWM 母线电压利用率对比
六个有效矢量相隔 60°,零矢量补时间;SVPWM 比 SPWM 多用约 15.5% 母线电压
扇区 I:  Uref * Ts = T1 * U1 + T2 * U2 + T0 * U0
         T1 = Ts * m * sin(60° - theta) / sin(60°)
         T2 = Ts * m * sin(theta)       / sin(60°)
         T0 = Ts - T1 - T2                 // 零矢量补齐
七段式: U0 -> U1 -> U2 -> U7 -> U2 -> U1 -> U0   // 每次只切一个桥臂,开关次数最少

为什么不用更直观的 SPWM?因为 SVPWM 在调制波里注入了三次谐波共模偏置,这个共模分量在线电压中自动抵消,于是基波相电压幅值能从 Vdc/2 提到 Vdc/√3——直流母线电压利用率提高约 15.5%。同样的电池、同样的母线,能多榨出转速与转矩余量,谐波还更低。

PWM 开关频率通常取 10 ~ 20 kHz:太低会落进人耳可闻范围(啸叫)、电流纹波大;太高则开关损耗上升、死区占比变大、MCU 算力吃紧。GaN / SiC 宽禁带器件把开关频率往上推,本质上是在用器件换电流环带宽和滤波器体积,这是当前伺服驱动小型化的主要方向之一。

六、基速以上:MTPA、弱磁与 MTPV

id = 0 只在基速以下成立。转速一高,反电动势 E = ωe · ψm 跟着涨,很快顶到逆变器能给出的最大电压,电流调节器饱和、失控。这时就得主动注入负的 id,用去磁磁动势削弱直轴磁场,把电压压回去,换取更高的转速范围。

id-iq 平面上的电流极限圆、电压极限椭圆、MTPA 与弱磁轨迹,以及转矩转速特性
运行点必须同时落在电流极限圆与电压极限椭圆内;椭圆随转速升高不断收缩

在 id-iq 平面上,约束非常直观:

  • 电流极限圆:由逆变器额定电流和电机热限决定,固定不动。
  • 电压极限椭圆:中心在 (-ψm/Ld, 0),长轴与转速成反比,转速越高收缩得越小。
  • 区段 I(恒转矩):沿 MTPA 轨迹走到基速点 A。MTPA = Maximum Torque Per Ampere,用最小的定子电流出给定的转矩,铜损最低。表贴式电机 Ld ≈ Lq,MTPA 退化为 id = 0;内嵌式 IPMSM 有磁阻转矩,MTPA 是一条负 id 曲线。
  • 区段 II(恒功率 / 弱磁):沿电流极限圆向左上移动,id 越来越负、iq 越来越小,转矩随转速反比下降、功率近似恒定。
  • 区段 III(MTPV):再往上,恒功率也维持不住,工作点改沿 MTPV(Maximum Torque Per Voltage)轨迹走,直到最高转速。

工程上有个容易吃亏的细节:不要等电压真的饱和了才切弱磁。电流调节器一旦饱和就暂时失去对电流的控制能力,会出现明显的转矩突跌。常见做法是提前 5%~10% 转速进入弱磁过渡,或者直接用电压闭环弱磁(把 Vd²+Vq² 与母线电压上限的差送进 PI,动态调节超前角),比开环查表更抗母线电压波动和温漂。

七、没有编码器怎么办:无感 FOC 与全速域观测器

Park 变换需要转子角度。加编码器 / 旋变最省事,但增加成本、体积和故障点,家电、风机、水泵这类场景往往装不起。于是有了无位置传感器 FOC:用相电流和端电压,通过电机数学模型把角度「算」出来。

多台伺服驱动器与电机在实验台架上,示波器显示三相正弦电流波形
调试台上的伺服驱动器阵列:无感算法调的就是这些波形背后的角度估计

难点是物理性的、绕不过去的:反电动势幅值与转速成正比,零速时等于零,基于反电势的观测器在低转速下信噪比急剧恶化,可观性直接退化。所以工业上几乎都采用分速域混合方案:

无感 FOC 全速域:高频注入、滑模观测器、反电势 EKF 三段接管与观测器通用链路
0~3% 靠高频注入,中速靠滑模观测器,高速靠反电势 / EKF,切换处做加权平滑
速域 主导方法 原理要点 主要代价
0 ~ 3% 额定转速 高频注入 HFI 向 d 轴注入 1~3 kHz 信号,利用凸极 / 磁饱和效应解调位置 可闻噪声、算力、对参数敏感
3% ~ 15% 改进滑模观测器 ASMO 电流模型 + 反馈校正,等效控制量低通滤波取反电势,PLL 提取角度速度 抖振、相位滞后,需电阻在线辨识
> 15% 反电势 / EKF 反电势信噪比充足,EKF 融合电压与电流模型 协方差调参、母线电压精度敏感

几个只在实机调试时才会撞上的经验值:SMO 分离出的等效控制量是高通后的高频抖振信号,必须再经低通滤波才能当反电势用;反电势滤波器截止频率常取 500 Hz ~ 1 kHz,要与电气频率匹配(例如 7 对极、2000 rpm,电气频率约 233 Hz)。角度提取推荐用 PLL 而非直接 atan——反正切在反电势过零附近会产生角度跳变,PLL 是闭环跟踪,带宽常取 100 ~ 200 Hz,太大引入噪声、太小滞后真实角度。

选型判据:需要零速力矩保持、精确定位、力控的场合(机器人关节、伺服轴),老老实实用编码器 / 旋变,无感 FOC 在这些场景的代价往往超过省下的传感器钱。无感方案真正的主场是成本、体积、可靠性压倒定位精度的地方:风扇、水泵、压缩机、电动工具、高速风筒。启动策略(预定位 → I-F 强拖 → 闭环切换)和失步后重同步,比观测器本身更决定产品体验。

八、正面对照:电机控制 vs 运动控制

现在可以把开头那笔糊涂账算清了。两者名字像、也确实首尾相接,但从被控量到数学工具到标准体系,几乎没有重叠:

电机控制与运动控制在被控量、坐标系、时间尺度、核心数学、反馈、标准、典型病症上的七行对照
名字像,管的根本不是一回事;CiA 402 的对象字典是它们的接口
维度 电机控制(本文) 运动控制(p=227)
被控量 定子电流、磁链、电磁转矩 各轴位置 / 速度、轴间几何关系
坐标系 dq 旋转坐标系(电角度) 笛卡尔 / 关节空间(mm、deg)
时间尺度 25 ~ 125 µs,10 ~ 40 kHz 0.25 ~ 1 ms 插补;1 ~ 200 Hz 规划
核心数学 Clarke / Park、dq-PI、SVPWM、观测器 加减速、插补、前瞻、凸轮表、耦合补偿
反馈来源 相电流、母线电压、编码器电角度 光栅 / 编码器机械位置、多轴相位
标准依托 无强制算法标准;CiA 402 只规定接口语义 PLCopen MC、CiA 402、G 代码
典型病症 转矩脉动、低速爬行、失步、过流 过切、圆变椭圆、跟随误差、机械共振

把这套分界放回 CiA 402 里看,会特别清楚:

  • PP(模式 1):主站给终点和速度,驱动器内部自己生成整条加减速曲线——轨迹规划也在从站。单轴定位最省事,但做不了多轴协调。
  • CSP(模式 8):主站当「路标员」,每 1 ms 发一个 0x607A;驱动器当「踩油门的人」,插补 + 三环全包。这是多轴联动的主流。
  • CSV(9)/ CST(10):把位置环、速度环逐级搬回主站,驱动器只剩速度环 / 电流环。CST 用在力控、张力、收放卷——主站必须自己兜住所有稳定问题,少一层阻尼,控不好就是振荡。

最容易踩的跨层误判:「两轴走圆弧变成椭圆」几乎从来不是电流环的锅。真正的病根通常在上面三层——没配 DC 同步让各轴生效时刻差了几十微秒、0x60C2 与真实总线周期不符、单位换算链 0x608F/0x6091/0x6092 填错、或者没加速度前馈(0x60B1)导致各轴跟随误差不一致。反过来,「电机低速嗡嗡响、停稳后有微小抖动」多半也和轨迹规划无关,得去查电流采样偏置、死区补偿、齿槽转矩与编码器分辨率。先按时间尺度定位层,再动手调参数。

这也解释了为什么 FOC 是「通用性」的底座:CiA 402 只规定 0x6040 是控制字、0x607A 是目标位置,并不规定你用 FOC 还是 DTC 还是方波。但只要宣称自己是「伺服驱动器」,转矩就必须足够线性、脉动足够小、带宽足够高——于是几乎所有伺服产品都收敛到了 FOC。我们在TwinCAT 与 IgH 双主站验证 CSP 里测的是接口与状态机的通用性,而驱动器内部默默把每个位置点变成 iq* 的,就是这一整套算法。

九、开源生态、上手路线与前沿方向

十年前学 FOC 得啃 TI 的应用手册和几万行库;现在有几个成熟的开源实现可以直接读、直接改:

项目 硬件 / 许可 特点 适合
SimpleFOC Arduino / STM32 / ESP32 / Teensy,MIT 文档极全、模块化,支持 15+ MCU 架构;社区 2000+ 成员 入门、教学、快速原型(功率一般 < 5 A)
VESC STM32F405 + DRV8302,GPL 3.0 FOC / 无感 / HFI / 参数自辨识齐备;核心就 mc_interface.c、mcpwm_foc.c、foc_math.c 三个文件不到一万行;VESC Tool 上位机可实时看波形 读工程级 FOC 源码、电动交通、机器人关节
ODrive STM32F4,双路 BLDC,MIT 位置 / 速度 / 电流三环完整,Python API + odrivetool 机械臂、CNC、精密滑台原型
厂商方案 TI C2000 + InstaSPIN-FOC;ST X-CUBE-MCSDK 带参数辨识、观测器库、电机控制 GUI,量产工具链完整 产品化、功能安全

建议的上手顺序:先用 SimpleFOC 让电机转起来(开环速度 → 有感位置 → 电流闭环),再读 VESC 的 mcpwm_foc.c 看工程上怎么处理采样、观测器和故障保护,最后回到自己的硬件上做参数辨识与死区补偿。跳过开环对标定的验证,几乎必然卡在「电机抖但不转」上——九成是极对数、编码器零位或相序不对。

前沿方向大致三条线:

  • 模型预测控制(MPC / FCS-MPC):直接枚举逆变器开关状态、用代价函数选最优,天然处理多约束,动态比 PI 更快;代价是算力与模型精度,目前在高性能驱动与牵引里逐步落地。
  • AI 辅助而非 AI 替代:参数自整定、电阻 / 磁链在线辨识、齿槽转矩前馈学习、观测器增益自适应。注意它和强化学习做轨迹规划不是一回事——17 ms 量级的推理延迟进不了 31 µs 的电流环,学习出来的策略只能放在确定性控制器外面、经安全投影再下放。
  • 宽禁带器件 + 更高开关频率:GaN / SiC 把 PWM 推到几十甚至上百 kHz,电流环带宽、滤波器体积、低速纹波同步改善,也对 ADC 采样和 MCU 算力提出新要求。

十、落地排查清单

现象 优先怀疑(按层定位)
电机抖但不转 / 发热无力 极对数、相序、编码器零位(90° 电角度误差会让 d/q 互换)、电流采样极性
低速爬行、有周期性顿感 死区未补偿、电流采样偏置、齿槽转矩、编码器分辨率不足
高速转矩掉、电流跟不上 交叉耦合解耦前馈缺失、电压饱和未提前弱磁、母线电压测量误差
转矩脉动大、噪声明显 是否误用了六步方波;SVPWM 扇区判断 / 零矢量分配;PWM 频率落入音频段
启动反转、重载启动失败 无感方案零速不可观;需要预定位或高频注入,检查强拖斜率与切换判据
多轴圆弧变椭圆 / 高速走不到位 不在电流环:查 DC 同步、0x60C2、单位换算链、速度前馈 0x60B1
使能瞬间猛冲 不在电流环:CSP 下 0x607A 未先对齐 0x6064

结语

把这三篇连起来看,一条完整链路就齐了:

工艺要求(Hz 级) → 轨迹规划与前瞻 → 插补与多轴同步(kHz 级) → 0x607A 周期下发 → 驱动器三环 → FOC 电流环(几十 µs) → SVPWM → 三相桥 → 电磁转矩 → 机械运动。

运动控制负责让「所有轴在同一时刻到达该到的地方」,电机控制负责让「每一台电机在该时刻真的吐出该吐的力」。前者算的是几何和时间,后者算的是磁链和电流;前者出问题表现为轨迹变形,后者出问题表现为振动、发热和噪声。FOC 的伟大之处,是用两次坐标变换把一台难以驾驭的交流机,变成了一个增益恒定的转矩放大器——正因为它把最底层做「透明」了,上面那些插补、凸轮、飞剪、乃至今天的具身智能分层架构,才有了可靠的执行底座。

下一篇如果继续往下挖,值得单独写的是电流环带宽与延迟预算的实测方法(怎么用阶跃响应和扫频量出真实带宽),或者从零实现一个最小 FOC 工程(SimpleFOC + 无刷电机 + AS5600,把本文的公式逐行变成能跑的代码)。

系列互链:
运动控制器与五种连 PC 方式 ·
运动控制算法全景(插补 / S 曲线 / 飞剪 / 分层架构) ·
EtherCAT 标准全景(CiA 401 / 402 的来龙去脉) ·
用 TwinCAT 与 IgH 双主站验证 CSP 从站 ·
EtherCAT 从站研发技术路线 ·
CiA 402 入门到实战 ·
机械臂的电机与减速机

本文技术参数与标准编号参考 TI SPRT735、CiA 402 / ETG 规范、MathWorks Motor Control Blockset 文档及 SimpleFOC / VESC / ODrive 官方资料整理;图表为示意,具体数值随电机与硬件平台而异。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部