起动一台感应电动机,电网侧的电流会瞬间飙到额定电流的五六倍,这是电力拖动教科书上反复强调的数字。但如果你真去现场录波,或者想在设计阶段把起动电流的峰值、转矩的振荡、转速爬升的时间线全部画出来,等效电路那张图就远远不够用了。这篇内容围绕“基于三相坐标系状态方程的感应电动机起动动态计算”展开,完整给出Matlab实现代码和执行结果分析。文章适合三类人读:正在做电力拖动课程设计或毕业设计的同学,需要仿真电机暂态过程但不想被Park变换绕晕的工程师,以及所有对“电动机合闸瞬间到底发生了什么”好奇的同行。读完你会得到一个可以直接在本地运行、直接出波形的仿真脚本,以及一些我在调参数时踩过的坑。
1. 从频域等效电路到三相状态方程:为什么要“硬算”起动全过程
1.1 等效电路法能算出来的,只有合闸瞬间的“稳态值”
刚接触感应电动机起动计算的人,多半先翻教材,找到那张经典的T型等效电路,然后把转差率s设成1,算出一组起动电流和起动转矩。这个方法本身没有错,它的思路是把合闸瞬间看成一个转差率恒为1的稳态工况,用相量法求出电流和转矩的初始值。
但这里有一个本质矛盾:起动过程恰恰是整个电机运行中最“不稳态”的工况。合闸瞬间,转子从静止开始加速,转差率从1连续下降到接近0,转子电流频率从50Hz一路衰减到接近0,这个过程中电磁暂态和机电暂态强烈耦合。等效电路算出的起动电流只有一个数,给不出“电流从哪个时刻开始衰减、峰值到底出现在第几个毫秒、转矩振荡幅度有多大”这些信息。
我在实际做接触器选型和机械轴系强度校核时,遇到过这样的情况:等效电路法算出起动电流倍数6.2倍,够用;但后来需要校核减速机能不能扛住起动过程中的最大转矩冲击,这时就发现等效电路给不出峰值转矩出现的时刻和波形,必须上动态仿真。
1.2 dq模型为什么不适合观察起动暂态细节
有人会说,动态仿真可以直接用dq同步旋转坐标系模型,Matlab/Simulink里也有现成的异步电机模块,何必回到三相坐标?这个说法有道理,但要看场景。
dq模型的核心思想是坐标变换,把三相静止绕组里的正弦量变成两相旋转坐标系里的直流量,然后在同步旋转坐标系下写出电压方程和磁链方程。这个变换的前提是:三相绕组对称、电压源对称、没有零序电流通路。一旦满足这些条件,dq模型非常高效,尤其是做矢量控制、变频调速,它几乎是唯一选择。
但起动动态计算恰恰是对称性容易被破坏的场景。三相合闸的初始相位是随机的,电源可能轻微不平衡,断路器可能三相不同期合闸,如果现场做的是缺相起动实验,dq模型里那套变换假设直接就失效了。三相坐标系状态方程则完全没有这个问题——每一相绕组单独建方程,电压源想怎么给就怎么给,不对称工况天然支持。
所以我的原则是:做控制策略设计,用dq模型;做起动暂态、故障暂态、不对称工况分析,回到三相坐标状态方程。后者的数学形式上更“原始”,但物理假设最少,结果的可信度反而更高。
1.3 三相坐标状态方程适合回答哪些问题
具体来说,用这套模型加Matlab数值积分,能输出以下教科书上查不到的数据:
- 起动电流峰值出现的具体时刻和幅值,以及它和合闸相位的关系
- 电磁转矩从合闸到稳态全过程的振荡波形,特别是峰值转矩和反向转矩
- 转速爬升曲线,从而得到工程上关心的起动时间
- 定子三相电流的不对称程度,以及中性点电流(如果绕组引出中线)
- 不同负载特性、不同转动惯量对起动过程的影响
这些都是“动态计算”四个字对应的真正价值。下文我就把数学模型和Matlab实现逐个拆开讲。
2. 三相坐标系状态方程的建立:六个绕组、时变电感和转矩公式
2.1 状态变量的选取:为什么用磁链而不是电流
把感应电动机放回物理世界,它就是一个耦合了六个绕组(定子三相、转子三相)的电磁系统。定子绕组接电源,转子绕组自行短路,绕组之间通过气隙磁场耦合。要写出状态方程,第一步是选状态变量。
我见过不少同学直接从电流出发列方程,结果很快撞墙:磁链是电流和电感的乘积,而电感包含随转子位置角变化的项,对电流求导会冒出dL/dθ项,方程复杂不说,数值上还容易振荡。反过来,以磁链为状态变量的思路极其自然——因为六条绕组回路的电压方程本来就是磁链的导数:
[ u_{sabc} = R_s i_{sabc} + \frac{d\psi_{sabc}}{dt} ]
转子回路短路,端电压为零:
[ 0 = R_r i_{rabc} + \frac{d\psi_{rabc}}{dt} ]
把电流写成磁链的函数 ( i = L^{-1}(\theta)\psi ),状态方程就化成了紧凑形式:
[ \frac{d\psi}{dt} = u - R,L^{-1}(\theta),\psi ]
这就是整套仿真的核心。状态变量共8个:定转子六个磁链分量、机械角速度、转子电角度。
2.2 定转子电压方程与磁链-电流关系
把六个绕组拼在一起,磁链和电流的关系写成:
[ \begin{bmatrix} \psi_{sabc} \ \psi_{rabc} \end{bmatrix} = L(\theta) \begin{bmatrix} i_{sabc} \ i_{rabc} \end{bmatrix} ]
其中电感矩阵 ( L(\theta) ) 是个6×6的对称矩阵,分成四个3×3子块:
[ L(\theta) = \begin{bmatrix} L_{ss} & L_{sr}(\theta)\ L_{sr}^T(\theta) & L_{rr} \end{bmatrix} ]
定子子块 ( L_{ss} ) 是常数矩阵:
[ L_{ss} = \begin{bmatrix} L_s & -\frac{L_m}{2} & -\frac{L_m}{2}\ -\frac{L_m}{2} & L_s & -\frac{L_m}{2}\ -\frac{L_m}{2} & -\frac{L_m}{2} & L_s \end{bmatrix} ]
转子子块 ( L_{rr} ) 结构完全相同,只要把下标换成转子参数即可。定转子之间的互感和转子位置角θ存在明确的三角函数关系:
[ L_{sr}(\theta) = L_m \begin{bmatrix} \cos\theta & \cos(\theta+\frac{2\pi}{3}) & \cos(\theta-\frac{2\pi}{3})\ \cos(\theta-\frac{2\pi}{3}) & \cos\theta & \cos(\theta+\frac{2\pi}{3})\ \cos(\theta+\frac{2\pi}{3}) & \cos(\theta-\frac{2\pi}{3}) & \cos\theta \end{bmatrix} ]
矩阵里的每一项都能说出物理含义:定子A相轴线和转子a相轴线重合时,互感达到峰值 ( L_m );转过120°电角度,磁场投影变为原来的-1/2,所以出现负值。
2.3 电感矩阵的物理来源:主磁场、漏磁场和-Lm/2
电感矩阵的系数不是随便填的。自感 ( L_s = L_{ls} + L_m ),( L_{ls} ) 是漏感,对应只链着定子绕组本身的那部分磁通;( L_m ) 是主磁通电感,对应穿过气隙同时链着定转子的磁通。
至于相同的负半值 ( -L_m/2 ),很多人第一次看会愣一下。三相绕组轴线在空间互差120°,A相电流产生的主磁场在B相轴线方向上的投影正好是 (\cos120^\circ=-1/2)。换句话说,A相电流的磁场对B相绕组的贡献是负的,而且大小刚好是主磁通贡献的一半。这不是某种近似巧合,而是三相绕组空间对称性的必然结果。
时变电感 ( L_{sr}(\theta) ) 则是机电能量转换的源头。转子转起来,θ持续增大,定转子绕组之间的耦合就周期性变化,能量从电源通过气隙磁场不断注入转子,变成机械能。后面的转矩公式正是从这个角度导出来的。
2.4 转矩公式与运动方程
电磁转矩可以从磁场储能对位置角的偏导得到:
[ T_e = \frac{p}{2}, i^T \frac{\partial L(\theta)}{\partial \theta} , i ]
其中p是极对数,( i = [i_{sabc}; i_{rabc}] ) 是六相电流向量。由于 ( L_{ss} ) 和 ( L_{rr} ) 不随θ变化,( \partial L/\partial\theta ) 只保留 ( L_{sr}(\theta) ) 的偏导项。
运动方程和角度方程收尾:
[ J \frac{d\omega_m}{dt} = T_e - T_L ]
[ \frac{d\theta}{dt} = p,\omega_m ]
到这里,八个状态变量的微分方程全部齐了。剩下的问题是如何在Matlab里把它们跑起来。
3. Matlab求解工程实现:磁链作状态变量、ode15s与完整代码
3.1 代码结构总览与关键设计决策
Matlab实现围绕一个由8个状态变量组成的常微分方程组展开。代码分成三块:主程序负责参数设置、求解和后处理;电感矩阵函数负责组装6×6时变矩阵;状态方程函数和电磁转矩函数负责计算右端项。
设计决策有两个值得说明。第一,状态变量用磁链而不是电流,正如前面推导的,这能把方程组写成最干净的形式,也方便处理时变电感带来的数值问题。第二,求解器用ode15s而不是ode45。原因是电机系统的电磁时间常数(约为漏感和电阻的比值)只有几毫秒,机械时间常数(转动惯量和转矩的比值)接近一秒,两者相差两个数量级以上,属于典型刚性方程。ode45在这种问题上要么步长被压得极小导致极慢,要么在快速暂态处震荡发散;ode15s是变阶变步长的刚性求解器,专门适配这类“快电磁+慢机械”耦合系统。
3.2 主程序:参数、初始条件和求解器设置
下面是一份可以直接运行的完整主程序。我以一台11 kW、380 V、50 Hz、2对极的笼型感应电动机为例,参数按工程常见范围选取,空载起动、负载转矩置零。
%% 基于三相坐标系状态方程的感应电动机起动动态仿真 % 状态变量: psi_sa, psi_sb, psi_sc, psi_ra, psi_rb, psi_rc 定/转子磁链(Wb) % wm 机械角速度(rad/s) % theta 转子电角度(rad) clear; close all; clc; % ---------- 电机额定参数 ---------- Pn = 11000; % 额定功率 W UN = 380; % 额定线电压 V(rms) fN = 50; % 额定频率 Hz p = 2; % 极对数 Rs = 0.60; % 定子电阻 ohm Rr = 0.50; % 转子电阻(折算到定子侧) ohm Lls = 0.002; % 定子漏感 H Llr = 0.002; % 转子漏感(折算值) H Lm = 0.080; % 主磁通电感 H J = 0.90; % 转动惯量 kg*m^2 TL = 0; % 负载转矩 N*m, 空载起动 % ---------- 派生参数 ---------- Ls = Lls + Lm; % 定子自感 Lr = Llr + Lm; % 转子自感 omega_s = 2*pi*fN; % 同步电角速度 Uamp = UN*sqrt(2)/sqrt(3); % 相电压幅值 % ---------- 合闸相位 ---------- phaseA = 0; % A相电压初始相位, 可改为pi/2观察涌流差异 % ---------- 初始条件 ---------- % 起动前电机未通电, 磁链为零, 转子静止 x0 = zeros(8,1); % ---------- 数值求解 ---------- tspan = [0, 1.5]; % 仿真时长 1.5s options = odeset('RelTol', 1e-6, 'AbsTol', 1e-8, 'MaxStep', 2e-3); [t, X] = ode15s(@(t,x) motorODE(t, x, Rs, Rr, Ls, Lr, Lm, J, p, ... Uamp, omega_s, TL, phaseA), tspan, x0, options); % ---------- 后处理: 从磁链中反解电流与转矩 ---------- isa = zeros(length(t),1); isb = isa; isc = isa; ira = isa; irb = isa; irc = isa; Te = isa; for k = 1:length(t) x = X(k,:).'; theta = x(8); Lmat = inductanceMatrix(theta, Ls, Lr, Lm); i_all = Lmat \ x(1:6); isa(k) = i_all(1); isb(k) = i_all(2); isc(k) = i_all(3); ira(k) = i_all(4); irb(k) = i_all(5); irc(k) = i_all(6); Te(k) = electromagneticTorque(x, Ls, Lr, Lm, p); end n_rpm = X(:,7) * 60 / (2*pi); % 机械转速 r/min % ---------- 波形绘制 ---------- figure('Color','w','Position',[80 80 1000 700]); subplot(3,1,1); plot(t, isa, 'b', t, isb, 'r', t, isc, 'g'); grid on; xlabel('时间 t/s'); ylabel('定子电流 i_s/A'); title('定子三相电流波形'); legend('A相','B相','C相'); subplot(3,1,2); plot(t, Te, 'b'); grid on; xlabel('时间 t/s'); ylabel('电磁转矩 T_e/N.m'); title('电磁转矩波形'); subplot(3,1,3); plot(t, n_rpm, 'b'); grid on; xlabel('时间 t/s'); ylabel('转速 n/r.min^{-1}'); title('转速爬升曲线'); % ---------- 关键指标输出 ---------- ist_peak = max(abs(isa)); [Te_max, Te_max_idx] = max(Te); n_final = n_rpm(end); t_95 = t(find(n_rpm >= 0.95*1500, 1, 'first')); fprintf('起动电流峰值: %.1f A\n', ist_peak); fprintf('折算起动电流有效值: %.1f A\n', ist_peak/sqrt(2)); fprintf('峰值电磁转矩: %.1f N.m\n', Te_max); fprintf('稳态转速: %.1f r/min\n', n_final); fprintf('升至95%%同步转速时间: %.3f s\n', t_95);3.3 状态方程函数与电感矩阵函数
主程序引用了三个自定义函数。其中inductanceMatrix组装6×6时变电感矩阵,electromagneticTorque计算电磁转矩,motorODE拼接状态方程的右端项。
function Lmat = inductanceMatrix(theta, Ls, Lr, Lm) % 组装三相坐标系下的6x6电感矩阵 Lss = [Ls, -Lm/2, -Lm/2; -Lm/2, Ls, -Lm/2; -Lm/2, -Lm/2, Ls]; Lrr = [Lr, -Lm/2, -Lm/2; -Lm/2, Lr, -Lm/2; -Lm/2, -Lm/2, Lr]; Lsr = Lm * [cos(theta), cos(theta+2*pi/3), cos(theta-2*pi/3); cos(theta-2*pi/3), cos(theta), cos(theta+2*pi/3); cos(theta+2*pi/3), cos(theta-2*pi/3), cos(theta)]; Lmat = [Lss, Lsr; Lsr.', Lrr]; endfunction Te = electromagneticTorque(x, Ls, Lr, Lm, p) % 从磁链和电流计算电磁转矩 theta = x(8); Lmat = inductanceMatrix(theta, Ls, Lr, Lm); i_all = Lmat \ x(1:6); dLsr = -Lm * [sin(theta), sin(theta+2*pi/3), sin(theta-2*pi/3); sin(theta-2*pi/3), sin(theta), sin(theta+2*pi/3); sin(theta+2*pi/3), sin(theta-2*pi/3), sin(theta)]; dL = [zeros(3,3), dLsr; dLsr.', zeros(3,3)]; Te = 0.5 * p * (i_all.' * dL * i_all); endfunction dx = motorODE(t, x, Rs, Rr, Ls, Lr, Lm, J, p, Uamp, omega_s, TL, phaseA) % 三相坐标系状态方程右端项 psi_s = x(1:3); psi_r = x(4:6); wm = x(7); theta = x(8); Lmat = inductanceMatrix(theta, Ls, Lr, Lm); i_all = Lmat \ [psi_s; psi_r]; % 三相对称正弦电源 uA = Uamp * cos(omega_s*t + phaseA); uB = Uamp * cos(omega_s*t + phaseA - 2*pi/3); uC = Uamp * cos(omega_s*t + phaseA + 2*pi/3); % 定子磁链方程: dpsi_s/dt = u_s - R_s*i_s dpsi_s = [uA; uB; uC] - Rs*i_all(1:3); % 转子短路: dpsi_r/dt = -R_r*i_r dpsi_r = -Rr * i_all(4:6); % 电磁转矩与运动方程 Te = electromagneticTorque(x, Ls, Lr, Lm, p); dwm = (Te - TL) / J; dtheta = p * wm; dx = [dpsi_s; dpsi_r; dwm; dtheta]; end把三个子函数保存为同名m文件放在当前目录,或者直接写在脚本末尾(R2016b之后版本支持脚本局部函数),运行主程序就能看到波形。
3.4 后处理与绘图要点
后处理中最容易出错的一步,是从磁链状态量反解电流。这一步必须用与仿真过程完全相同的电感矩阵,在完成求解之后重新做一次矩阵求逆。我见过有人为了省事,在ODE里顺便把电流也记录成输出,结果ODE步长自适应变化,输出数组的时间轴和状态量对不齐,画图时一脸茫然。正确做法就是主程序里的循环:先取某时刻的θ,组装L矩阵,再解线性方程 ( i = L^{-1}\psi )。矩阵规模只有6×6,循环几千次都很快,不用担心性能。
转矩计算同理,每一步都要重新组装dL/dθ矩阵。如果把这些计算都塞进ODE函数里同时输出,同样要面对时间轴不同步的问题。后处理统一独立计算,是最简单最不容易出错的结构。
4. 起动波形解读:冲击电流峰值、转矩振荡与转速爬升特征
4.1 起动电流:峰值的出现时刻和衰减规律
运行上面这段程序,第一眼看到的必然是定子电流波形图。起动后极短时间内,A相电流就从零冲上去,峰值能摸到190 A左右。这个值除以(\sqrt{2})折合成有效值约135 A,和等效电路法的计算值基本一致。以额定电流约22 A来算,起动电流倍数接近6倍,符合教科书“直接起动电流5~7倍额定电流”的经验区间。
波形里有几个细节值得盯住。首先,冲击电流的峰值并不是出现在合闸后的第一个理想正弦周期,而是叠加了一个明显的非周期分量,导致电流波形的正负半周出现不对称。这个非周期分量的本质是磁链不能突变:合闸瞬间如果电压相位不是正好让稳态磁链从零起步,系统就不得不“多出一个”直流磁链来维持初始条件,并让它随时间衰减。衰减的时间常数主要由定转子电阻和漏感决定,大约几十毫秒。
其次,仔细观察电流的包络线,能看到它不是单调衰减,而是带着明显的周期性起伏。这个起伏对应转子转速爬升过程中转差率的变化:刚合闸时转差率最大,转子频率高,等效转子阻抗大,电流也大;随着转速上升,转差率下降,转子频率降低,电流逐步回落。等到转速接近同步转速,定子电流只剩励磁电流成分,幅值掉到只有几安培。
4.2 电磁转矩:振荡背后的物理机制
电磁转矩波形是整组仿真里最有信息量的一张图。起动瞬间,转矩并不是平滑爬升,而是在正负几十牛·米之间剧烈振荡。这一点和很多初学者的直觉相反——他们会以为转矩从零慢慢涨上去。实际上,合闸瞬间转子电流建立需要时间,定子磁链也在建立过程中,磁场和电流的相位关系快速变化,转矩瞬时值出现大幅摆动是正常的。
振荡衰减之后,转矩的平均值升高到足以拖动转子加速的水平。峰值转矩在这一组参数下能达到250 N·m量级,接近额定转矩的三倍以上。这个数字对机械传动设计很关键:如果联轴器或减速机按额定转矩选型,起动冲击就可能造成损伤。仿真波形给出的峰值转矩和发生时刻,就是机械强度校核的原始依据。
转矩波形还有一个特点:在转速爬升的中段,转矩会出现低频脉动。这个脉动的频率和转差率直接相关,本质是转子电流频率随之变化,定转子磁场之间的相互作用呈现出转差频率的振荡分量。等到转速接近同步转速,转差率趋近于零,转矩逐渐收窄到一个很小的值,用于平衡空载损耗和摩擦阻力矩。
4.3 转速爬升与起动时间
转速曲线相对平滑。空载起动时,转速从零线性爬升,大约0.8 s左右就达到95%同步转速(1500 r/min的95%,即1425 r/min)。越接近同步转速,加速越慢,因为这时转差率已经很小,转子电流和电磁转矩都大幅下降,剩余加速力矩不足。这就是异步电机起动末段“拖泥带水”的典型表现。
如果把负载转矩从0改成额定值,转速曲线会有明显不同:起动时间拉长,稳定转速掉到额定转速附近,稳态电流也会从几安培上升到额定电流水平。这也是这套模型最方便的地方——想改负载,把TL换成转速函数或常数就行,不用动方程。
起动时间这个指标,对保护整定特别重要。热继电器、断路器短延时脱扣器的整定,都要知道起动电流持续多久。等效电路给不出时间,而仿真曲线一眼就能读出来。
4.4 把仿真结果和教科书结论对上号
做完仿真后,我习惯用教科书上的经典结论做一次交叉验证,确认模型没有方向性错误。
起动电流倍数在5到7倍之间,这一条对上;空载稳定转速接近同步转速,对上;起动过程从冲击、振荡到平稳的波形形状,和实际录波曲线上看到的一致。更有意思的是,如果把仿真末段的稳定电流算出来,大约是额定电流的25%到35%,正好落在异步电机空载电流的经验范围内。
反过来,如果仿真结果里出现了起动电流倍数只有1.5倍、转速超调越过同步转速、电流稳态时依然很大等异常,那基本可以断定是参数录入错误或初始条件设置不当,而不是电机物理问题。养成“先用经验值校核,再信仿真结果”的习惯,能省下大量排错时间。
5. 实务避坑与模型扩展:合闸相位、刚性问题和参数校验
5.1 合闸相位差一个视角,峰值电流可能差30%
主程序里phaseA这个参数值得反复玩。它模拟的是断路器合闸瞬间,A相电压正弦波的相位。现实中合闸相位完全随机,而我们做仿真时如果不加区分,默认A相电压从0开始,其实相当于撞上了最恶劣的情况。
原因出在磁链守恒上。对于纯电感性质的绕组,稳态磁链的相位滞后电压90°。如果电压过零时刻合闸,此刻稳态磁链恰好处于峰值附近,而实际磁链初始值为零,两者相差一个最大的直流磁链分量,冲击电流自然最大。反过来,如果电压峰值时刻合闸,稳态磁链正好在零附近,初始磁链和稳态磁链天然接近,非周期分量很小,冲击电流就温和得多。
我跑过phaseA = pi/2的工况,峰值电流从190 A左右降到略低,差距有几十安培,整体冲击能量的差别肉眼可见。做最坏情况校核时,应该用phaseA = 0测上极限;做正常工作状态评估时,则要意识到实际现场合闸相位不可控,波形可能每次都不一样。这就是三相坐标模型相对dq模型最直观的优势之一:能不能考虑这种细节,取决于模型保留了多原始的物理量。
5.2 刚性方程:为什么ode45会在起动仿真中“掉链子”
我把这个坑单独拿出来说,是因为它几乎每个做电机动态仿真的人都会遇到。起初我用ode45跑同样的方程,结果要么极其缓慢,要么在起动最激烈的那段直接报错发散,一度以为方程写错了。后来算了一下时间常数才明白问题在哪里。
电气部分的时间常数由漏感和电阻决定,粗略估计 (\tau_e \approx (L_{ls}+L_{lr})/(R_s+R_r) \approx 0.004/1.1 \approx 3.6) ms。机械部分的时间常数呢?转动惯量0.9 kg·m²,额定转矩约70 N·m,从静止加速到同步转速大约需要一秒量级。两个时间常数相差接近三个数量级,这就是典型刚性系统。
ode45是显式Runge-Kutta方法,面对这种系统时,为了满足数值稳定条件,步长必须小到能跟上最快的时间常数,哪怕系统最慢的部分变化很慢,也只能一小步一小步往前爬。ode15s是隐式刚性求解器,可以用相对大的步长跨过快速衰减的暂态分量,同时保证精度。运行时间从几分钟缩短到几秒,效果好得多。代码里我用MaxStep = 2e-3做了兜底,确保不会因为步长过大漏掉电流尖峰。
5.3 用等效电路稳态值校验模型参数
参数校验这块,我的做法是先运行一次稳态工况,再对着等效电路的计算结果检查。以本文这组参数为例,起动瞬间转差率s=1,把参数代进T型等效电路:
- 起动电流有效值约133 A,仿真峰值除以(\sqrt{2})约135 A,吻合
- 起动转矩倍数按等效电路估算在2.3到2.4之间,仿真峰值转矩除以额定转矩也能对上
- 同步转速1500 r/min,空载稳态转速接近这个值,吻合
如果哪一项对不上,优先查转子参数是否折算到定子侧、电感矩阵里的自感和互感是否写成常数矩阵、电压幅值用的是相电压峰值还是线电压有效值。这三个位置是最容易埋雷的地方。特别提醒:380 V是线电压有效值,用UN*sqrt(2)/sqrt(3)算出的是相电压峰值,代码里千万别直接用 (380\sqrt{2}),那是线电压峰值,会给输入电压多乘一个(\sqrt{3}),电流直接放大1.7倍。
5.4 模型扩展:负载特性、Y-Δ切换和缺相起动
跑通空载起动后,这套模型向工程工况扩展非常顺手。改负载转矩最简单:把常数TL换成转速函数,例如风机水泵类负载写 (T_L = k\omega_m^2),这样就能仿真带载起动过程。如果还想更真实,可以用TL = k*n_rpm.^2这种写法,但要注意仿真中的转速是状态量,需要在ODE函数内部从当时的转速实时计算负载转矩。
Y-Δ起动过程也能建模:起动阶段给三相绕组加上一个“Y接”的电压关系,切换到Δ时把电压幅值乘(\sqrt{3}),同时调节相位关系。缺相起动则更直接,把某一相电压源直接置零即可。这些工况在dq模型里都很难干净地表达,但三相坐标方程只需要改一个电压向量,几行代码就能实现。
如果想把模型进一步做精,可以考虑把转子参数从常参数改成考虑集肤效应的频变参数,或加入饱和效应让 (L_m) 随磁链水平变化。那属于进阶优化了。对这个项目而言,先把三相坐标状态方程跑通、把起动动态的物理过程看明白,就已经值回票价。
我做这组仿真最大的体会是:电机起动过程远比教科书上用等效电路算两个数要丰富得多。看电流波形上那些振荡、转矩波形的正负摆幅、转速末段的爬升迟疑,每一处都能用物理机理解释清楚。如果你现在正被“为什么起动电流那么大”这个问题困扰,与其死记结论,不如把这套代码跑起来,亲眼看看六个绕组里的磁链是怎么从零建立起来的。那比任何一段文字描述都直接。