1. 电机控制基础回顾:PMSM 数学模型与坐标变换
各位同学,咱们正式开始。做电机控制这么多年,我最大的体会是:数学模型是根基,坐标变换是灵魂。这两样东西搞不明白,后面调 SVPWM、调电流环,全是在碰运气。
今天这一章,咱们就把永磁同步电机(PMSM)的数学模型、Clark 变换、Park 变换,还有 SVPWM 的基础原理,一次性理清楚。嗯,内容不少,但都是硬通货。
1.1 永磁同步电机(PMSM)数学模型
先说说 PMSM 的数学模型。你想想看,电机本质上就是一个电磁能量转换装置。我们要控制它,就得先知道它的"脾气"——也就是数学上怎么描述它。
我个人习惯把 PMSM 的数学模型分成四块:电压方程、磁链方程、转矩方程、运动方程。在 Simulink 里搭模型时,这四块就是四个子系统。
1.1.1 电压方程
在 dq 旋转坐标系下,PMSM 的定子电压方程长这样:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
这里有个细节我提醒一下:交叉耦合项(-ωe * Lq * iq 和 +ωe * Ld * id)是导致 dq 轴电流相互影响的原因。我在做电流环 PI 参数整定时,如果不做解耦补偿,两个环会互相打架,调起来特别费劲。
1.1.2 磁链方程
磁链方程相对简单:
ψd = Ld * id + ψf
ψq = Lq * iq
ψf 是永磁体磁链,这个值一般由电机厂家提供。但我遇到过几次厂家给的参数不准的情况——嗯,尤其是那些小厂,标称值和实测值能差 10%。所以我的建议是:拿到电机后先做一下参数辨识,别直接信 datasheet。
1.1.3 转矩方程
电磁转矩方程:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
这里 p 是极对数。注意看,转矩由两部分组成:
- 永磁转矩:1.5 * p * ψf * iq —— 这是主转矩,与 iq 成正比
- 磁阻转矩:1.5 * p * (Ld - Lq) * id * iq —— 只有 Ld ≠ Lq 时才存在
对于内置式 PMSM(IPMSM),Ld 和 Lq 不相等,我们可以利用磁阻转矩来提高效率。这就是 MTPA(最大转矩电流比)控制 的基础。我在做电动汽车驱动项目时,MTPA 帮我们省了大概 5% 的铜耗。
1.1.4 运动方程
Te - TL = J * (dωm/dt) + B * ωm
TL 是负载转矩,J 是转动惯量,B 是阻尼系数。这个方程在 Simulink 里通常用积分器搭,但要注意初始条件的设置。我见过有人仿真时电机一开始就飞车,就是因为忘了设初始转速。
1.2 Clark 变换与 Park 变换
坐标变换是矢量控制的核心。说白了,就是把三相交流量变成两相直流量,这样我们就可以用 PI 控制器像控制直流电机一样控制 PMSM。
1.2.1 Clark 变换(三相静止 → 两相静止)
Clark 变换把 abc 三相坐标系映射到 αβ 两相静止坐标系。等幅值变换的公式如下:
iα = ia
iβ = (ia + 2 * ib) / √3
或者用矩阵形式:
[ iα ] [ 1 -1/2 -1/2 ] [ ia ]
[ iβ ] = [ 0 √3/2 -√3/2 ] [ ib ]
[ ic ]
这里有个坑:等幅值变换 vs 等功率变换。两种变换的系数不同,我在早期做项目时用过等功率变换,结果电流环参数怎么调都不对,后来才发现是变换系数没统一。我个人建议在 Simulink 里统一用等幅值变换,因为 PI 控制器的输出直接对应电压幅值,物理意义更清晰。
1.2.2 Park 变换(两相静止 → 两相旋转)
Park 变换把 αβ 坐标系旋转到 dq 坐标系,旋转角度是转子位置 θ:
id = iα * cosθ + iβ * sinθ
iq = -iα * sinθ + iβ * cosθ
反 Park 变换(从 dq 回到 αβ)也很常用:
uα = ud * cosθ - uq * sinθ
uβ = ud * sinθ + uq * cosθ
这个 θ 从哪里来?来自位置传感器(编码器/旋变)或者无位置传感器观测器。我在做伺服驱动时,编码器的安装偏差会导致 θ 有固定偏移,结果 dq 轴电流一直有静差。后来加了角度自校准才解决。
1.3 SVPWM 调制技术基础
SVPWM(空间矢量脉宽调制)是电机控制中用的最多的调制方式。相比 SPWM,它的电压利用率更高(高 15.47%),谐波含量也更低。
1.3.1 基本电压矢量
三相逆变器有 6 个开关管,组成 3 个桥臂。每个桥臂的开关状态用 1(上管导通)或 0(下管导通)表示。一共 8 种组合:
| 开关状态 (a,b,c) | 电压矢量 | 幅值 |
|---|---|---|
| (0,0,0) | V0(零矢量) | 0 |
| (1,0,0) | V1 | 2/3 Vdc |
| (1,1,0) | V2 | 2/3 Vdc |
| (0,1,0) | V3 | 2/3 Vdc |
| (0,1,1) | V4 | 2/3 Vdc |
| (0,0,1) | V5 | 2/3 Vdc |
| (1,0,1) | V6 | 2/3 Vdc |
| (1,1,1) | V7(零矢量) | 0 |
这 6 个非零矢量把平面分成 6 个扇区,每个扇区 60°。
1.3.2 合成任意电压矢量
SVPWM 的核心思想是:用相邻的两个基本电压矢量,加上零矢量,来合成任意方向和大小的电压矢量。
具体步骤:
- 判断扇区:根据 uα、uβ 的符号和比值,确定目标矢量落在哪个扇区
- 计算作用时间:用伏秒平衡原理,算出两个相邻矢量和零矢量的作用时间 T1、T2、T0
- 生成 PWM 波形:通常用七段式发波,把零矢量均匀分布在开头、中间和结尾,降低谐波
1.3.3 死区补偿
实际逆变器中,同一桥臂的上下管不能同时导通,必须插入死区时间(通常 1-3 μs)。死区会导致电压误差,尤其在低速轻载时,会引起电流畸变和转矩脉动。
我曾经在一个低速高精度的位置伺服项目里,死区效应导致定位精度差了 0.1°。后来加了死区补偿,精度才回到 0.02° 以内。补偿方法不复杂:根据电流极性,在 PWM 占空比上叠加一个修正量。
1.4 本章小结
好了,这一章的内容就这些。咱们把 PMSM 的数学模型、Clark/Park 变换、SVPWM 的基础原理都过了一遍。这些东西看着是理论,但你在 Simulink 里搭模型时,每一步都会用到。
我个人觉得,学电机控制最忌讳的就是"知其然而不知其所以然"。你如果能把今天讲的这些公式和变换在脑子里形成画面感,后面调电流环、速度环的时候,心里就有底了。