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轴为独立分量,在三相对称、无中线时恒为零。
二、磁链方程
在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。
五、从方程到仿真模型的落地要点
把上述方程接入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,机端电压应等于励磁电流乘以电枢反应电感再乘转速。若仿真结果与该解析值不符,说明参数单位或基准值换算有误。这一步是排查建模错误最经济的手段。