3. 同步发电机建模基础

同步发电机的定子三相绕组在空间上互差120°电角度,转子励磁绕组随转子旋转。若直接在abc三相静止坐标系中列写方程,定子绕组的自感与互感会随转子位置角θr周期性变化,电压方程成为一组含时变系数的微分方程,既难以解析分析,也不便于控制器设计。派克变换(Park's Transformation)的核心作用,就是把定子三相量投影到随转子同步旋转的dq0坐标系上,使时变电感变为常数,从而得到一组常系数方程。

一、派克变换与dq0坐标系的定义

派克变换把定子三相量 fabc = [fa, fb, fc]T 映射为 fdq0 = [fd, fq, f0]T。采用“q轴超前d轴90°、d轴与转子励磁磁链方向对齐”的约定时,变换矩阵为:

P = (2/3) * [ cosθr        cos(θr-2π/3)   cos(θr+2π/3)
              -sinθr       -sin(θr-2π/3)  -sin(θr+2π/3)
               1/2          1/2            1/2          ]

f_dq0 = P * f_abc ,   f_abc = P^(-1) * f_dq0

其中θr为转子d轴相对定子a相轴线的电角度。系数2/3保证变换前后幅值不变(幅值不变约定),此时三相功率可写为 P = (3/2)(vdid + vqiq) + 3v0i0。若采用“功率不变”约定,则系数改为 √(2/3),两种约定不可混用,否则功率与转矩计算会差1.5倍。本文统一采用幅值不变约定。

dq0坐标系的意义在于:d轴绕组与q轴绕组在空间上静止于转子上,与转子无相对运动,因此定子与转子绕组之间的互感不再随θr变化;0轴为独立分量,在三相对称、无中线时恒为零。

派克变换:abc静止坐标系 → dq0旋转坐标系 a b c 定子三相静止轴(互差120°) d q θr P(θr) 2/3 幅值不变 dq0 坐标系(随转子旋转) d 轴:与励磁磁链对齐 q 轴:超前 d 轴 90° 0 轴:对称时恒为 0 电感变为常数,方程常系数化

二、磁链方程

在dq0坐标系下,定子磁链与转子励磁磁链、阻尼绕组磁链的关系可写为(标幺值形式,忽略定子漏抗符号细节):

ψd = -Ld*id + Lad*ifd + Lad*i1d
ψq = -Lq*iq + Laq*i1q
ψ0 = -L0*i0
ψfd = -Lad*id + Lffd*ifd + Lf1d*i1d
ψ1d = -Lad*id + Lf1d*ifd + L11d*i1d
ψ1q = -Laq*iq + L11q*i1q

其中 Ld、Lq 为d、q轴同步电感,Lad、Laq 为d、q轴电枢反应电感,下标 fd 表示励磁绕组,1d、1q 表示d、q轴阻尼绕组。由于凸极效应,通常 Ld > Lq,这正是同步发电机产生磁阻转矩的根源。磁链方程是代数方程,不含微分项,它把电流与磁链线性关联起来。

三、电压方程

定子电压方程在dq0坐标系下由派克变换引入转速耦合项:

vd = -Rs*id - ωr*ψq + dψd/dt
vq = -Rs*iq + ωr*ψd + dψq/dt
v0 = -Rs*i0 + dψ0/dt
vfd = Rfd*ifd + dψfd/dt
0   = R1d*i1d + dψ1d/dt
0   = R1q*i1q + dψ1q/dt

其中 ωr 为转子电角速度(标幺值下等于转速)。ωrψq 与 ωrψd 是旋转电动势项,也是机电能量转换的关键通道:正是它们把机械功率与电磁功率耦合起来。阻尼绕组方程右端为0,因为其端部短接。电磁转矩可写为 Te = ψdiq − ψqid(标幺值),转子运动方程为 2H dωr/dt = Tm − Te − Dωr。

四、MATLAB实现

下面给出一个可直接运行的MATLAB脚本,完成派克变换、磁链与电压方程计算,并验证变换的正确性。示例参数为教学假设值,非实测数据。

% park_dq0_demo.m  同步发电机dq0建模基础示例
clear; clc;

% ---- 示例参数(教学假设值,标幺值)----
Ld = 1.20; Lq = 0.80; Lad = 1.00; Laq = 0.60;
L0 = 0.15; Lffd = 1.25; Lf1d = 0.95; L11d = 1.05; L11q = 0.70;
Rs = 0.005; Rfd = 0.0012; R1d = 0.020; R1q = 0.025;
H = 3.5; D = 0.0;

% ---- 运行点:定子电流与励磁电流 ----
id = 0.60; iq = 0.85; i0 = 0.0; ifd = 1.10; i1d = 0.0; i1q = 0.0;

% ---- 磁链方程 ----
psi_d  = -Ld*id + Lad*ifd + Lad*i1d;
psi_q  = -Lq*iq + Laq*i1q;
psi_0  = -L0*i0;
psi_fd = -Lad*id + Lffd*ifd + Lf1d*i1d;
psi_1d = -Lad*id + Lf1d*ifd + L11d*i1d;
psi_1q = -Laq*iq + L11q*i1q;

% ---- 电压方程(稳态,dψ/dt = 0)----
wr = 1.0;                       % 额定转速
vd = -Rs*id - wr*psi_q;
vq = -Rs*iq + wr*psi_d;
v0 = -Rs*i0;
vfd = Rfd*ifd;

% ---- 电磁转矩与功率 ----
Te = psi_d*iq - psi_q*id;
P  = vd*id + vq*iq;             % 标幺值下 P = vd*id + vq*iq

fprintf('psi_d=%.4f  psi_q=%.4f  psi_fd=%.4f\n', psi_d, psi_q, psi_fd);
fprintf('vd=%.4f  vq=%.4f  vfd=%.4f\n', vd, vq, vfd);
fprintf('Te=%.4f  P=%.4f\n', Te, P);

% ---- 验证派克变换:给定三相量,变换后再反变换 ----
th = 0.7;                       % 转子电角度 rad
Pm = (2/3)*[cos(th) cos(th-2*pi/3) cos(th+2*pi/3);
            -sin(th) -sin(th-2*pi/3) -sin(th+2*pi/3);
             0.5 0.5 0.5];
fab = [0.9; -0.4; -0.5];
fdq0 = Pm*fab;
fab_back = inv(Pm)*fdq0;
fprintf('反变换误差 = %.3e\n', norm(fab_back - fab));

运行后应看到反变换误差在 10-16 量级,说明变换矩阵与逆矩阵实现正确。若误差明显偏大,通常是矩阵系数写错(如把2/3写成1/3)或角度单位误用为度。稳态电压计算中,vd 与 vq 的符号取决于电流方向约定,本文采用“定子电流流出为正”的发电机惯例,因此电压方程中电阻项为 −Rsi。

建模时务必先固定三件事:电流正方向(发电机惯例或电动机惯例)、dq轴对齐方式(d轴对齐励磁磁链)、变换系数约定(幅值不变或功率不变)。三者一旦确定,全文与代码必须一致,否则转矩、功率和电压符号会互相矛盾。

五、从方程到仿真模型的落地要点

把上述方程接入MATLAB/Simulink时,通常有两种实现路径。第一种是“状态方程法”:以 ψd、ψq、ψfd、ψ1d、ψ1q、ωr、δ 为状态量,把电流用磁链线性求解(i = L-1ψ),再代入电压方程得到 dψ/dt,用 ode45 或定步长积分推进。第二种是“模块法”:直接调用 Simscape Electrical 的 Synchronous Machine 模块,只需填入 Ld、Lq、Lad、Laq、Rs、H、D 等参数。两种路径的物理内核完全一致,区别只在于是否手工展开状态方程。

无论哪种路径,都建议做一次“空载校验”:令 id = iq = 0,仅给励磁电流 ifd,此时 ψd = Ladifd,vq = ωrψd,机端电压应等于励磁电流乘以电枢反应电感再乘转速。若仿真结果与该解析值不符,说明参数单位或基准值换算有误。这一步是排查建模错误最经济的手段。