3. 电机控制系统的数学描述与坐标变换

在三相交流电机控制中,直接在三相静止坐标系下建立数学模型会遇到两个麻烦:三相变量彼此耦合,且随转子位置呈时变关系,控制器设计非常困难。坐标变换的核心目的,是把三相静止坐标系(ABC)中的时变交流量,逐步映射到两相旋转坐标系(dq)中的直流量,从而让转矩与磁链可以像直流电机一样被独立控制。本节围绕 ABC、αβ、dq 三个坐标系,讲清 Clarke 变换与 Park 变换的定义、系数约定、Simulink 模块化实现方式,以及如何用一组示例信号验证变换链的正确性。

三个坐标系的物理含义

三相静止坐标系 ABC 中,三个轴在空间上互差 120° 电角度,定子三相绕组产生的磁动势由三个相电流共同决定。两相静止坐标系 αβ 把三个轴等效为两个正交轴:α 轴通常与 A 相轴重合,β 轴超前 α 轴 90° 电角度。两相旋转坐标系 dq 则让两个正交轴随转子磁场一起旋转,d 轴对准转子磁链方向,q 轴超前 d 轴 90°。当 d 轴与磁链对齐时,d 轴电流控制励磁、q 轴电流控制转矩,二者解耦。

需要先明确约定,全文与图示保持一致:采用等幅值变换(Clarke 变换前乘 2/3),α 轴与 A 相轴重合,β 轴超前 α 轴 90°,d 轴超前 α 轴 θ 角,q 轴超前 d 轴 90°。等幅值变换的优点是三相电流幅值与 αβ 电流幅值相等,便于观察和限幅;代价是功率不守恒,若做功率计算需另乘 3/2。

Clarke 变换:ABC 到 αβ

等幅值 Clarke 变换的矩阵形式为:

iα = (2/3) * ( ia - 0.5*ib - 0.5*ic )
iβ = (2/3) * ( (√3/2)*ib - (√3/2)*ic )
    = (1/√3) * ( ib - ic )

在三相无中线、ia+ib+ic=0 的条件下,可进一步简化为只用两相计算:

iα = ia
iβ = (ia + 2*ib) / √3

这个简化形式在 Simulink 中实现最省资源,只需一个增益、一个加法和一个 1/√3 增益。反变换(αβ 到 ABC)为:

ia = iα
ib = -0.5*iα + (√3/2)*iβ
ic = -0.5*iα - (√3/2)*iβ

Park 变换:αβ 到 dq

Park 变换把静止的 αβ 量旋转到随转子旋转的 dq 轴,旋转角 θ 为 d 轴相对 α 轴的电角度:

id =  iα*cosθ + iβ*sinθ
iq = -iα*sinθ + iβ*cosθ

反 Park 变换为:

iα = id*cosθ - iq*sinθ
iβ = id*sinθ + iq*cosθ

θ 的来源很关键:它必须与电机实际电角度一致。若电机有 p 对极,机械角 θm 与电角度关系为 θ = p·θm。在 Simulink 中,θ 通常由电机模型输出的机械角经增益 p 得到,或由位置传感器直接给出电角度。θ 的零点必须与 α 轴对齐,否则 dq 电流会出现稳态偏差。

三相静止—两相静止—两相旋转坐标系变换链 三相静止 ABC A B C ia, ib, ic Clarke 2/3 等幅值 两相静止 αβ α β iα, iβ Park 旋转角 θ 两相旋转 dq d q id, iq(直流) 电角度 θ = p·θm θ 零点对齐 α 轴 反向变换链(电流环输出到 SVPWM) ud, uq → 反Park → uα, uβ → 反Clarke → ua, ub, uc 反Park 使用同一 θ;反Clarke 使用等幅值逆矩阵 验证要点 幅值一致 相位正交 id 恒定 iq 恒定

Simulink 模块化实现

在 Simulink 中实现变换链,推荐用 MATLAB Function 模块或 Fcn 模块封装,而不是堆叠大量 Gain 和 Sum。以 Clarke 为例,用 MATLAB Function 写:

function [ialpha, ibeta] = clarke(ia, ib, ic)
% 等幅值 Clarke 变换,输入三相电流,输出 αβ 电流
ialpha = (2/3) * (ia - 0.5*ib - 0.5*ic);
ibeta  = (1/sqrt(3)) * (ib - ic);
end

Park 变换函数:

function [id, iq] = park(ialpha, ibeta, theta)
% theta 为电角度,单位 rad
id =  ialpha*cos(theta) + ibeta*sin(theta);
iq = -ialpha*sin(theta) + ibeta*cos(theta);
end

模块化时注意三点:第一,θ 输入必须与电机模型使用的电角度同源,避免两处各自积分导致漂移;第二,Clarke 与 Park 的输入输出端口命名统一为 ialpha/ibeta/id/iq,便于后续电流环接线;第三,若使用离散求解器,cos/sin 在每个采样步计算一次即可,不必额外缓存。

验证方法与示例

验证变换链最直接的方式是构造一组已知的三相平衡电流,观察变换结果是否符合预期。设示例参数:幅值 Im = 10 A,频率 f = 50 Hz,电角度 θ = 2πft,三相电流为:

ia = Im * cos(theta)
ib = Im * cos(theta - 2*pi/3)
ic = Im * cos(theta + 2*pi/3)

把这组信号送入 Clarke 模块,理论上应得到 iα = Im·cosθ、iβ = Im·sinθ,即两路幅值均为 10 A、相位差 90° 的正弦量。再把 iα、iβ 和同一个 θ 送入 Park 模块,理论上 id = Im、iq = 0,即两路直流量。若仿真中 id 在 10 A 附近有微小纹波、iq 在 0 附近波动,属于离散化和数值误差的正常范围;若 id 出现明显正弦波动,说明 θ 与信号频率不匹配或零点未对齐。

更严格的验证可以加一步反变换:把 id、iq 经反 Park 和反 Clarke 还原为三相电流,与原始 ia、ib、ic 相减,残差应接近零。这个闭环验证能同时检查正变换和反变换的系数、符号与 θ 方向是否一致。建议在 Simulink 中用 Scope 同时显示 ia 与还原后的 ia_rec,若两条曲线重合,说明整条变换链自洽。

调试经验:若 id、iq 中出现 2 倍频波动,通常是三相不平衡或 Clarke 系数用了等功率变换(√(2/3))却按等幅值观察;若 id、iq 整体偏置,检查 θ 零点是否对齐 α 轴;若 iq 符号与预期相反,检查 Park 矩阵中 sinθ 的符号约定是否与电机模型一致。

工程实现中的约定统一

坐标变换本身不复杂,工程中最容易出错的是约定不统一。同一套控制系统里,Clarke 系数、Park 旋转方向、θ 零点、d 轴与 q 轴的先后顺序必须全局一致。建议在项目初期就固定一份约定表:等幅值 Clarke、θ 逆时针为正、d 轴对准转子磁链、q 轴超前 d 轴 90°。所有 MATLAB Function、电机模型、SVPWM 模块都按这份约定实现,后续排查问题时才能快速定位是变换错误还是控制参数问题。

完成本节后,读者应能独立在 Simulink 中搭建 ABC→αβ→dq 的正反变换链,用一组 10 A、50 Hz 的示例三相电流验证 id 为直流、iq 为零,并通过反变换残差确认整条链路自洽。这套变换模块将直接作为后续电流环、速度环和 SVPWM 的基础组件复用。