第三章 电机模型建立:直流电机数学模型、交流伺服电机模型、参数辨识方法
做运动控制这些年,我越来越觉得——电机模型就是整个控制系统的“灵魂”。你想想看,如果你连被控对象长什么样都不清楚,那PID参数调得再好也是瞎蒙。这一章,咱们就聊聊直流电机和交流伺服电机的数学模型,以及怎么把那些看不见的参数给“揪”出来。
3.1 直流电机的数学模型
直流电机虽然“老”,但它的模型是理解所有电机的基础。说白了,它就是电压、电流、转速、转矩之间的几个关系式。
3.1.1 电枢回路方程
直流电机电枢回路的电压平衡方程,其实就是一个KVL:
Ua = Ra * Ia + La * dIa/dt + Ea
其中:
- Ua:电枢电压(V)
- Ra:电枢电阻(Ω)
- La:电枢电感(H)
- Ia:电枢电流(A)
- Ea:反电动势(V)
反电动势Ea与转速成正比:Ea = Ke * ω,Ke是反电动势常数,ω是角速度。
关键点:反电动势是直流电机模型里最容易忽略的项。我在项目中遇到过有人把反电动势当成干扰直接忽略,结果高速时电流环根本稳不住。记住,反电动势是电机自身的“发电机效应”,不是外部扰动。
3.1.2 转矩平衡方程
电机的电磁转矩:Te = Kt * Ia,Kt是转矩常数。在SI单位制下,Ke和Kt数值相等(仅单位不同)。
机械运动方程:
Te - Tl = J * dω/dt + B * ω
这里:
- Tl:负载转矩
- J:转动惯量
- B:粘性阻尼系数
我的习惯:做仿真时,我一般先把B设成0,看看纯惯量系统的响应。等基本调通了,再加阻尼进去。这样能快速定位问题出在模型还是控制器。
3.1.3 状态空间表达式
把上面两个方程联立,取状态变量为[Ia, ω],输入为Ua,输出为ω,得到:
dIa/dt = -(Ra/La)*Ia - (Ke/La)*ω + (1/La)*Ua
dω/dt = (Kt/J)*Ia - (B/J)*ω - (1/J)*Tl
写成矩阵形式,就是标准的二阶系统。嗯,这里要注意,如果La很小(比如永磁直流电机),可以忽略电感,模型降为一阶。但做高精度控制时,我建议保留电感项。
3.2 交流伺服电机模型
交流伺服电机,说白了就是永磁同步电机(PMSM)。它的模型比直流电机复杂,因为有三相绕组,还有旋转坐标变换。
3.2.1 三相静止坐标系模型
三相电压方程:
Ua = Rs*Ia + dψa/dt
Ub = Rs*Ib + dψb/dt
Uc = Rs*Ic + dψc/dt
磁链方程里包含自感和互感,还有永磁体产生的磁链。这玩意儿直接算,头都大。所以实际工程中,没人用三相模型做控制。
3.2.2 旋转坐标系(dq轴)模型
经过Clark变换和Park变换,把三相交流量变成两相直流量。这就是矢量控制的基础。
Ud = Rs*Id + Ld*dId/dt - ωe*Lq*Iq
Uq = Rs*Iq + Lq*dIq/dt + ωe*(Ld*Id + ψf)
电磁转矩:Te = 1.5 * p * [ψf*Iq + (Ld - Lq)*Id*Iq]
其中:
- Ld, Lq:d轴和q轴电感
- ψf:永磁体磁链
- p:极对数
- ωe:电角速度(ωe = p * ωm)
避坑指南:我曾经在调试一个高速主轴时,发现转矩输出总是不对。查了两天才发现,我把Ld和Lq的值搞反了。对于表贴式PMSM,Ld≈Lq;但对于内置式,Ld < Lq,而且差别还挺大。这个搞反了,MTPA(最大转矩电流比)控制就全乱套了。
3.2.3 模型简化与工程应用
实际工程中,我们通常做以下简化:
- 忽略铁损和涡流损耗
- 假设三相完全对称
- 忽略磁饱和(除非做弱磁控制)
对于表贴式PMSM(Ld = Lq),转矩公式简化为:Te = 1.5 * p * ψf * Iq。你看,这就和直流电机很像了——转矩和q轴电流成正比。所以我说,矢量控制的核心思想,就是把交流电机“变成”直流电机来控制。
3.3 参数辨识方法
模型有了,但参数从哪来?厂家给的datasheet往往不准,或者干脆没有。这时候就得自己动手“测”了。
3.3.1 电阻和电感辨识
直流电阻测量:给电机施加一个直流电压,测稳态电流。R = U / I。注意,要测两相之间的电阻,然后除以2得到单相电阻。
电感测量:给电机施加一个高频电压信号(通常几百Hz到几kHz),测电流响应。通过阻抗的幅值和相位,算出Ld和Lq。
我的做法:用锁相环跟踪电流响应,比直接FFT更准。我在一个项目中用这个方法,把电感辨识误差从15%降到了3%以内。
3.3.2 反电动势常数和磁链辨识
让电机以恒定转速空转(用另一台电机拖动,或者让电机自己转),测反电动势的幅值。
Ke = Ea / ω
ψf = Ke / p
注意,反电动势是线电压,要换算成相电压。我习惯用示波器抓波形,然后取基波幅值,因为实际波形里谐波含量不少。
3.3.3 转动惯量和阻尼辨识
这个稍微麻烦点。常用的方法是“加减速法”:
- 给电机一个阶跃转矩指令,记录转速响应曲线
- 从曲线上提取时间常数和稳态值
- 用最小二乘法拟合出J和B
更精确的做法是“扫频法”:给电机施加不同频率的正弦转矩,测转速响应,然后拟合出传递函数。我在做高精度转台时用过这个方法,效果不错,就是费时间。
警告:参数辨识时,一定要确保电机处于安全状态。我曾经有一次忘记限流,结果辨识过程中电流过大,把驱动器的保险烧了。所以,做辨识之前,先把电流限幅设到额定值的50%,安全第一。
3.4 知识体系总览
下面这张图,是我自己总结的电机建模与参数辨识的完整流程。你照着这个思路走,基本不会跑偏。
这张图把整个流程串起来了。从左到右,先确定电机类型,再建立对应的数学模型,最后用辨识方法把参数填进去。每一步都有坑,但按这个框架走,至少不会漏掉关键环节。
总结一下:电机模型不是越复杂越好。我见过有人把模型建得特别精细,考虑了温度、磁饱和、齿槽效应,结果仿真跑一天,实际控制效果还不如一个简单的二阶模型。我的建议是——先建一个能用的模型,把参数辨识准了,再根据需要逐步加细节。别一开始就想着“完美”,工程上“够用”就行。