3. 电驱控制数学基础与S32E实现映射
电驱控制的核心,是把三相交流电机的物理量从自然坐标系逐步变换到便于控制的旋转坐标系,再在旋转坐标系上用PI调节器分别控制励磁分量和转矩分量。S32E作为面向汽车实时控制的MCU,其数学加速单元(如硬件三角函数、CORDIC、DSP指令)直接影响这些变换和环路计算的执行效率。本节从坐标变换的数学定义出发,逐步映射到S32E上的定点/浮点实现选择与加速单元使用。
3.1 Clarke变换:从三相到两相静止坐标系
Clarke变换将三相电流 ia、ib、ic 投影到两相静止坐标系 α-β。在幅值不变约束下,定义如下:
iα = (2/3) * (ia - 0.5*ib - 0.5*ic)
iβ = (2/3) * (√3/2*ib - √3/2*ic)
若三相电流满足 ia + ib + ic = 0,可简化为:
iα = ia
iβ = (ia + 2*ib) / √3
在S32E上,若采用定点Q15格式,1/√3 ≈ 0.57735 需量化为 18919(Q15)。实际工程中常将Clarke变换与后续Park变换合并为一次查表或一次CORDIC旋转,减少中间定点截断误差。S32E的DSP指令集支持单周期乘加,适合将上述系数乘法展开为并行MAC序列。
3.2 Park变换:从静止到旋转坐标系
Park变换将 iα、iβ 旋转到转子磁场定向的 d-q 坐标系,旋转角为转子电角度 θe:
id = iα*cos(θe) + iβ*sin(θe)
iq = -iα*sin(θe) + iβ*cos(θe)
反Park变换用于将 vd、vq 转回 vα、vβ,再经SVPWM生成开关信号。S32E的数学加速单元通常包含硬件CORDIC,可在若干周期内同时输出 sin 和 cos,避免软件查表带来的插值误差和内存访问开销。使用CORDIC时需注意输入角度范围与输出Q格式,S32E的CORDIC一般接受Q1.31或Q1.15角度输入,输出为Q1.15正弦/余弦值。
3.3 空间矢量与SVPWM
空间矢量调制把逆变器八个开关状态映射为六个非零矢量和两个零矢量。给定 vα、vβ,先判断扇区,再计算相邻矢量作用时间 T1、T2 和零矢量时间 T0。以扇区I为例:
T1 = (√3 * Ts / Vdc) * (vα - vβ/√3)
T2 = (√3 * Ts / Vdc) * (2*vβ/√3)
T0 = Ts - T1 - T2
S32E实现时,扇区判断可用比较器与查表结合,作用时间计算用定点Q15完成。关键约束是 T1 + T2 ≤ Ts,若溢出需进行过调制处理。S32E的eMIOS或FlexPWM模块可接收占空比寄存器值,因此SVPWM输出最终转化为三路比较值 Ta、Tb、Tc。
3.4 电流环与速度环
电流环是内环,带宽通常设为1~2 kHz,采样周期与PWM周期同步(如10 kHz)。d轴和q轴各用一个PI调节器,输出 vd、vq。速度环是外环,带宽约50~100 Hz,输出 iq_ref,d轴电流参考通常设为0(表贴式PMSM)或负值(弱磁)。
在S32E上,电流环中断服务程序需在PWM周期内完成:ADC采样、Clarke、Park、两个PI、反Park、SVPWM。以10 kHz为例,可用时间约100 μs。若主频200 MHz,约20000个周期。定点实现下,一次Clarke+Park约需50~80周期,两个PI约100周期,SVPWM约150周期,总计约400周期,余量充足。浮点实现若使用硬件FPU,单次变换约30~50周期,但需注意浮点上下文保存开销。
3.5 定点与浮点实现选择
S32E同时支持定点DSP指令和单精度FPU。选择依据如下:
- 定点Q15:适合电流环、SVPWM等对确定性要求高的环节,无浮点异常,中断延迟可预测。需注意系数缩放和饱和处理。
- 浮点:适合速度环、参数辨识、观测器等计算量小但动态范围大的环节,开发效率高,但需评估FPU上下文保存时间。
- 混合方案:电流环用定点,速度环和状态机用浮点,是电驱控制中较常见的折中。
以PI调节器为例,定点实现需将积分器限幅、抗饱和、输出限幅统一用Q15饱和运算完成。S32E的DSP指令集提供 SAT 和 ROUND 指令,可减少手动移位操作。
3.6 S32E数学加速单元使用要点
S32E的CORDIC模块可配置为旋转模式或向量模式。Park变换使用旋转模式,输入角度 θe 和初始向量 (iα, iβ),输出 (id, iq)。配置步骤:
- 使能CORDIC时钟,配置为Q1.31角度输入、Q1.15输出。
- 将
θe归一化到[-π, π]对应的定点范围。 - 写入
iα、iβ到CORDIC数据寄存器,启动旋转。 - 等待完成标志,读取
id、iq。
需注意CORDIC迭代次数与精度折中:S32E通常支持12~16次迭代,对应约0.01°~0.001°角度分辨率。若电流环对实时性要求极高,可将CORDIC结果与查表法对比,在低速段用查表、高速段用CORDIC,以平衡精度和延迟。
ia=1, ib=-0.5, ic=-0.5)验证输出。CORDIC的sin/cos结果应与标准数学库对比,误差应小于1 LSB(Q15)。
坐标变换的符号约定必须全文一致:本文采用幅值不变Clarke变换,θe 为转子电角度,q轴超前d轴90°。若切换为功率不变变换,系数需乘以 √(2/3),SVPWM的 T1、T2 公式也需相应调整。在S32E工程中,建议将变换系数定义为宏或常量表,避免多处硬编码导致不一致。