3. 电机数学模型:直流电机、PMSM与坐标变换
做电机控制,说白了就是跟数学模型打交道。你想想看,电机本身是个复杂的电磁系统,我们得把它简化成数学方程,才能在Simulink里搭模型、写算法。
我个人习惯,先把直流电机讲清楚。为什么?因为它简单、直观,是理解所有电机的基础。搞懂了直流电机,PMSM那些绕来绕去的坐标变换,你上手会快很多。
3.1 直流电机数学模型
直流电机,我刚开始做项目时觉得它太老了,没什么好学的。后来发现,很多伺服系统的底层逻辑,其实都源自直流电机的控制思想。
直流电机的核心方程,就两个:电压方程和转矩方程。
电枢回路电压方程:
Ua = Ra * Ia + La * dIa/dt + E
其中,E是反电动势,E = Ke * ω(Ke是反电动势常数,ω是转速)。
转矩方程:
Te = Kt * Ia
Kt是转矩常数,对于理想直流电机,Kt = Ke(数值上相等,单位不同而已)。
机械运动方程:
Te - TL = J * dω/dt + B * ω
J是转动惯量,B是阻尼系数,TL是负载转矩。
关键点:直流电机的转矩与电枢电流成正比。这意味着,你控制电流,就能直接控制转矩。这是所有电机控制的底层逻辑。
我在项目中遇到过一个问题:用Simulink搭直流电机模型时,如果忽略了电枢电感La,仿真结果在高频响应时会严重失真。嗯,这里要注意,La虽然小,但在电流环设计时不能省。
3.2 永磁同步电机(PMSM)数学模型
PMSM现在用得最多,电动车、机器人、伺服驱动,到处都是。它的数学模型比直流电机复杂,因为转子是永磁体,定子需要通三相交流电。
PMSM的电压方程,在三相静止坐标系(ABC坐标系)下是这样的:
Ua = Rs * Ia + dψa/dt
Ub = Rs * Ib + dψb/dt
Uc = Rs * Ic + dψc/dt
其中,ψa、ψb、ψc是三相磁链,它们互相耦合。你想想看,三个方程互相牵扯,直接控制非常麻烦。
转矩方程:
Te = p * [ψf * Iq + (Ld - Lq) * Id * Iq]
p是极对数,ψf是永磁体磁链,Ld、Lq是d、q轴电感,Id、Iq是d、q轴电流。
我的经验:对于表贴式PMSM(SPMSM),Ld ≈ Lq,转矩只与Iq有关,控制起来跟直流电机很像。但对于内置式PMSM(IPMSM),Ld ≠ Lq,会产生磁阻转矩,这时候要用MTPA(最大转矩电流比)控制,才能发挥电机性能。
我曾经在调试一个IPMSM驱动时,发现电机效率一直上不去。后来仔细一查,原来是Id电流给错了,没有利用磁阻转矩。嗯,这个坑我踩过,大家要注意。
3.3 坐标变换:Clark变换与Park变换
为什么要做坐标变换?说白了,就是把三相交流电机的复杂耦合问题,变成直流电机那样简单的解耦控制。
你想想看,三相交流电机的电压、电流都是随时间变化的正弦波,控制起来很麻烦。但如果把它们变换到一个旋转的坐标系(d-q坐标系)下,这些量就变成了直流量。控制直流量,那就简单多了。
3.3.1 Clark变换(3相→2相静止)
Clark变换把ABC三相坐标系,变换到αβ两相静止坐标系。公式如下:
Iα = Ia
Iβ = (Ia + 2*Ib) / √3
(这里用了等幅值变换,等功率变换系数不同,但原理一样)
Clark变换的物理意义:把三个互相差120°的线圈,等效成两个互相垂直的线圈。这样,问题就从三维降到了二维。
3.3.2 Park变换(2相静止→2相旋转)
Park变换把αβ静止坐标系,变换到dq旋转坐标系。公式如下:
Id = Iα * cosθ + Iβ * sinθ
Iq = -Iα * sinθ + Iβ * cosθ
θ是转子位置角(电角度)。
Park变换的核心:让坐标系跟着转子一起转。这样,原来旋转的电压、电流矢量,在新的坐标系下就静止了。
核心思想:Clark变换 + Park变换 = 矢量控制(FOC)的数学基础。没有坐标变换,就没有现代交流电机控制。
3.3.3 坐标变换的Simulink实现
在Simulink里搭坐标变换,我建议直接用Fcn模块或者MATLAB Function模块。下面是一个Park变换的代码示例:
function [Id, Iq] = park_transform(Ialpha, Ibeta, theta)
Id = Ialpha * cos(theta) + Ibeta * sin(theta);
Iq = -Ialpha * sin(theta) + Ibeta * cos(theta);
end
反过来,逆Park变换(dq→αβ)也很常用:
function [Ialpha, Ibeta] = inv_park_transform(Id, Iq, theta)
Ialpha = Id * cos(theta) - Iq * sin(theta);
Ibeta = Id * sin(theta) + Iq * cos(theta);
end
注意:Park变换中的角度θ,必须是电角度,不是机械角度。电角度 = 机械角度 × 极对数。这个搞错了,整个控制就全乱了。我见过有人在这里栽跟头,仿真跑出来电流波形乱七八糟,查了半天才发现是角度没换算。
3.4 知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张图。它展示了从直流电机到PMSM,再到坐标变换的完整逻辑链条。
3.5 避坑指南与个人经验
做电机控制建模,有几个地方特别容易出错。我把自己踩过的坑总结一下:
- 角度对齐问题:Park变换用的角度,必须是转子磁极位置。如果编码器安装有偏差,或者初始角没找对,整个控制都会偏。我曾经在调试时,电机一启动就抖动,查了两天才发现是编码器零位偏了5度。
- 变换系数选择:Clark变换有等幅值和等功率两种。等幅值变换下,变换前后的电流幅值不变;等功率变换下,变换前后的功率不变。Simulink自带的模块默认用等幅值,但有些教材用等功率。你建模时一定要统一,否则算出来的转矩会差一个系数。
- 仿真步长设置:电机模型的电气时间常数很小(毫秒级甚至微秒级),仿真步长不能太大。我一般用1e-6秒(1微秒)作为固定步长,或者用ode45变步长求解器,但最大步长限制在1e-5秒以内。
实用技巧:在Simulink里验证坐标变换是否正确,有个简单方法:给电机通三相平衡正弦电流(Ia = Im*sin(ωt),Ib = Im*sin(ωt-120°),Ic = Im*sin(ωt+120°)),然后做Clark+Park变换。如果变换正确,Id和Iq应该是直流量(Id=0,Iq=Im)。如果Id或Iq有交流分量,说明变换角度或公式有问题。
好了,这一章的内容就到这里。直流电机模型是基础,PMSM模型是重点,坐标变换是工具。把这三块搞明白,你在Simulink里搭电机控制模型就有了底气。
公众号:蓝海资料掘金营,微信deep3321