1. 电机控制基础回顾:PMSM 数学模型与坐标变换

各位同学,咱们正式开始。做电机控制这么多年,我最大的体会是:数学模型是根基,坐标变换是灵魂。这两样东西搞不明白,后面调 SVPWM、调电流环,全是在碰运气。

今天这一章,咱们就把永磁同步电机(PMSM)的数学模型、Clark 变换、Park 变换,还有 SVPWM 的基础原理,一次性理清楚。嗯,内容不少,但都是硬通货。

第1章 知识体系框架 PMSM 控制基础 PMSM 数学模型 Clark / Park 变换 SVPWM 调制 电压方程 磁链方程 转矩方程 运动方程 Clark 变换 Park 变换 反 Park 变换(逆变换) 扇区判断 作用时间 七段式发波 死区补偿 核心逻辑:三相静止 → 两相静止(Clark)→ 两相旋转(Park) 控制量在 dq 坐标系下实现解耦,再通过 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 参数整定时,如果不做解耦补偿,两个环会互相打架,调起来特别费劲。

小技巧:在 Simulink 里搭建电压方程时,建议把交叉耦合项单独拉出来用 Feedforward 的方式补偿。这样电流环的 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 里通常用积分器搭,但要注意初始条件的设置。我见过有人仿真时电机一开始就飞车,就是因为忘了设初始转速。

注意:运动方程中的 ωm 是机械角速度,而电压方程中的 ωe 是电角速度。两者关系:ωe = p * ωm。这个换算在 Simulink 里很容易搞错,建议用 Gain 模块显式处理。

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 轴电流一直有静差。后来加了角度自校准才解决。

核心要点:经过 Clark + Park 变换后,交流量 id、iq 在稳态时变成直流量。PI 控制器对直流量可以实现无静差跟踪——这就是矢量控制能获得优异性能的根本原因。

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 的核心思想是:用相邻的两个基本电压矢量,加上零矢量,来合成任意方向和大小的电压矢量。

具体步骤:

  1. 判断扇区:根据 uα、uβ 的符号和比值,确定目标矢量落在哪个扇区
  2. 计算作用时间:用伏秒平衡原理,算出两个相邻矢量和零矢量的作用时间 T1、T2、T0
  3. 生成 PWM 波形:通常用七段式发波,把零矢量均匀分布在开头、中间和结尾,降低谐波
经验之谈:七段式发波虽然谐波性能好,但开关次数比五段式多 1/3。如果开关损耗是瓶颈(比如大功率 IGBT 驱动),可以考虑用五段式发波。我在一个 100kW 的电机控制器上用过五段式,温升降了 8°C。

1.3.3 死区补偿

实际逆变器中,同一桥臂的上下管不能同时导通,必须插入死区时间(通常 1-3 μs)。死区会导致电压误差,尤其在低速轻载时,会引起电流畸变和转矩脉动。

我曾经在一个低速高精度的位置伺服项目里,死区效应导致定位精度差了 0.1°。后来加了死区补偿,精度才回到 0.02° 以内。补偿方法不复杂:根据电流极性,在 PWM 占空比上叠加一个修正量。

注意:死区补偿的前提是电流极性判断准确。在电流过零点附近,极性判断容易出错,这时候补偿反而会引入更大的误差。建议在过零点附近设置一个滞环区,或者干脆不补偿。

1.4 本章小结

好了,这一章的内容就这些。咱们把 PMSM 的数学模型、Clark/Park 变换、SVPWM 的基础原理都过了一遍。这些东西看着是理论,但你在 Simulink 里搭模型时,每一步都会用到。

我个人觉得,学电机控制最忌讳的就是"知其然而不知其所以然"。你如果能把今天讲的这些公式和变换在脑子里形成画面感,后面调电流环、速度环的时候,心里就有底了。