简介:面向电机本体研究、课程设计与Matlab/Simulink入门练习的三相异步电机仿真模型,基于数学公式搭建,可模拟启动、稳态运行及负载变化下的电流、电压、转矩与转速等关键波形,方便在既有模型上改参数、做对比和二次开发。压缩包共14个文件,约547KB,以6个txt说明、6张jpg波形与结构图、1个html页面和1个doc文档为主,分别对应建模思路、运行结果展示和理论补充,目录虽精简但便于按图索骥地理解模型结构。已有249人学习下载,适合电气工程、自动化专业学生及从事电机控制调试的工程师参考。读者可获得一套可直接运行的成品仿真框架、波形结果与配套文字说明,用于课程设计、论文仿真章节或故障工况分析的快速验证,也能借此梳理电机数学模型的搭建流程、参数入口与调整方法。
1. 公式搭出来的电机模型,反而比拖现成模块更接近真相
三相异步电机本体模型这几个字听着像课程设计,可一旦真在 Matlab Simulink 里用数学公式从零搭一遍,就会发现它解决的其实是个很具体的问题:现成的异步电机模块是个黑匣子,波形跑得漂亮,但你在方程层面动不了它。用 dq 坐标下的电压、磁链、转矩、运动四个方程自己拼一个本体模型,起动冲击、转矩脉动、弱磁区转矩塌陷这些现象,全都能追到某一项系数或某一个符号上。把模型跑通这件事本身不是目的,目的是后面接矢量控制、做参数辨识、注入故障时,手里有一块能拆开看的地基。这正是用公式搭建、能“很好地模拟”的价值所在:它把黑匣子换成了透明的方程。
2. 坐标变换:abc 三相模型为什么必须先变到 dq
2.1 定转子互感随转子位置转,电感矩阵就成了时变矩阵
三相静止坐标系下写电压方程并不难,难在电感矩阵。定子三相自感在隐极异步电机里是常数,定子相间互感也是常数,真正会动的是定转子之间的互感矩阵,它的每一个元素都带着转子电角度 θ。用代码写出来大概是这样:
% 三相静止坐标系下定转子互感矩阵(隐极、气隙均匀) % theta 为转子电角度,Lm 为定转子互感幅值 M_sr = 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) ];这个矩阵里 9 个元素全部随 θ 变化,而 θ 又在跟着转速跑。把它代进电压方程u = R*i + d(L*i)/dt,求导会拆出两项:一项是L*di/dt,另一项是i*dL/dθ*ω_r。后者就是速度电动势的来源,也是 abc 模型难用的根源——系数在每一个仿真步里都在变,你想让数值积分稳定,步长就得压到很小。
这就是为什么直接用三相方程搭模型会“跑得动但跑不快”。转矩里还叠加了随 2θ 变化的脉动分量,稳态波形上那些毛刺不是噪声,是方程本身的性质。想把它们和真正的故障区分开,就得先把时变系数消掉。
2.2 Clarke 变换与 Park 变换各解决了哪一半问题
坐标变换干的事,是换一组基,让系数矩阵不再随 θ 转。两步走,各有分工。
Clarke 变换把三相 abc 压成两相 αβ。三相三线制下i_a + i_b + i_c = 0,三个量里只有两个独立,第三个是冗余的,变换只是把这个冗余去掉,没有引入任何近似:
% Clarke 变换(等幅值形式,前提是三相三线制、无零序) T_clarke = 2/3 * [ 1, -1/2, -1/2; 0, sqrt(3)/2, -sqrt(3)/2 ];注意系数2/3。它保证变换后 α 轴分量与 a 相幅值相等,代价是功率不守恒,后面转矩公式里的 3/2 就是从这里欠下的债。
Park 变换再把 αβ 转到跟着磁场一起转的 dq 坐标系,旋转角取同步电角 θ1:
% Park 变换:theta1 为 d 轴与 a 轴之间的夹角 T_park = [ cos(theta1), sin(theta1); -sin(theta1), cos(theta1) ];两步合起来,原本以同步频率正弦变化的电压、电流,在 dq 系里变成直流量,稳态时导数为零。这才是 dq 模型能大步长仿真、能直接做 PI 调节的根本原因——控制器面对的是一组常量,而不是一直在转的相量。
提示:Clarke 和 Park 的矩阵形式与系数约定在不同教材里不一致,等幅值和等功率两套写法混用是后面转矩对不上的头号原因。建模前先定死一套,写进模型注释。
2.3 等幅值变换还是等功率变换:3/2 系数从哪冒出来
这两套约定没有对错,只有配套关系。等幅值变换下,dq 两相量的幅值等于三相相量的幅值,但瞬时功率要写成:
% 等幅值约定下的瞬时功率(注意 3/2) P = 1.5 * (u_ds*ids + u_qs*iqs);等功率变换把系数改成 1,代价是 dq 量的幅值要乘上 √(3/2) 才等于相量幅值。工程上大多数人用等幅值,因为示波器里看到的 d 轴电流数值和相电流峰值直接对得上,调参时心里有数。
这个 3/2 会一路传染到转矩方程。电磁转矩在等幅值约定下是:
% 等幅值约定:p 为极对数,psi 为磁链,i 为电流 Te = 1.5 * p * (psi_ds*iqs - psi_qs*ids);如果某天你发现仿真出来的转矩只有理论值的三分之二,不用怀疑电机,先查这个系数。血泪经验是:模型里的 3/2 只要漏一次,后面所有效率、温升、加速时间的结论全废,而且波形看起来还挺“正常”。
变换带来的第二个隐性收益是可观测性。abc 系里三相电流各转各的,你很难从波形判断转子磁场到底定向在哪;dq 系里 d 轴电流直接对应励磁分量,q 轴电流直接对应转矩分量,两个通道解耦得干干净净。后面要接磁场定向控制,这一步是绕不过去的。
3. 四个方程怎么闭环:电压、磁链、转矩、运动
3.1 电压方程里的速度电动势项
在静止的 αβ 系里,电压方程就是u = R*i + dψ/dt,干净。换到以 ω1 旋转的 dq 系,磁链相量的坐标在转,求导会多出一项-jω1*ψ,拆成实部虚部就是一对交叉耦合项:
% 同步旋转坐标系下定子电压方程(电动机惯例) u_ds = Rs*ids + dpsi_ds - w1*psi_qs; % d 轴:dψ/dt 减去 ω1·ψq u_qs = Rs*iqs + dpsi_qs + w1*psi_ds; % q 轴:dψ/dt 加上 ω1·ψd正负号取决于旋转方向和 dq 轴的相对位置约定,不同教材写法相反,但物理含义一致:d 轴磁链会在 q 轴感应出电压,反之亦然。这两项就是“速度电动势”,转速越高、磁链越大,耦合越强。
转子侧同理,只不过转子回路的旋转速度是转差 ω1 - ωr:
% 笼型转子短路,转子电压为零,转差角速度 w_slip = w1 - wr 0 = Rr*idr + dpsi_dr - w_slip*psi_qr; 0 = Rr*iqr + dpsi_qr + w_slip*psi_dr;看出门道了没有:转子方程左边是 0,因为鼠笼没有外接电源。这意味着转子电流完全由转差和磁链决定,它不是一个独立可调的输入,而是被约束出来的。很多人在模型里给转子加了个电压源,本意是模拟绕线式电机,结果忘了把转子电阻的折算关系对上,转矩就直接翻车。
注意:ω1 是同步角速度,不是转子角速度。变频调速时它跟着给定频率变,不是常数。把 50Hz 对应的 314 rad/s 写死在模块里,一变频模型就崩,这是最常见的“模型只在额定点对”的原因。
3.2 磁链方程的漏感与定转子折算
磁链方程看着简单,ψ = L*i,坑全在电感怎么定义。定子自感包含漏感和励磁电感两部分,转子同理:
Ls = Lls + Lm; % 定子自感 = 定子漏感 + 励磁电感 Lr = Llr + Lm; % 转子自感 = 转子漏感 + 励磁电感(已折算到定子侧) psi_ds = Ls*ids + Lm*idr; psi_dr = Lr*idr + Lm*ids;所有转子量必须折算到定子侧才能和定子量放进同一个方程。折算靠匝比 k = Ns/Nr,规则是:电流除以 k,电压乘 k,电阻和电感乘 k²,磁链乘 k。折算的目的是保持功率不变——转子铜耗折算前后必须相等,这条是校验折算对不对的唯一硬标准。
漏感系数 σ 是这个方程组里最有用的一个中间量:
sigma = 1 - Lm^2/(Ls*Lr); % 漏感系数,典型值 0.05 ~ 0.15σ 决定了定子电流的暂态时间常数 σLs/Rs,通常在毫秒级;而转子时间常数 Tr = Lr/Rr 在几十到几百毫秒。两个时间常数差两个数量级,这就是后面要讲的“刚性”问题的物理来源。
3.3 转矩方程的两种写法与符号约定
转矩方程有三种等价写法,用途不同。第一种用定子磁链和电流:
Te = 1.5 * p * (psi_ds*iqs - psi_qs*ids);第二种用定转子电流,代入磁链方程就能从第一种推出来:
Te = 1.5 * p * Lm * (iqs*idr - ids*iqr);第三种最贴近磁场定向控制,用定子电流和转子磁链:
Te = 1.5 * p * (Lm/Lr) * (iqs*psi_dr - ids*psi_qr);第三种写法在调试时最有用:转子磁链 ψ_dr 在稳态下近似恒定,转矩几乎正比于 iqs,一眼就能看出控制通道有没有问题。第一种写法更适合校验,因为它只依赖定子侧可观测量。
符号约定必须提前定死。按电动机惯例,Te 为正表示电动,转子加速;负载转矩 TL 取正表示阻碍旋转。如果两者符号搞反,仿真会出现转速一路飙到无穷大的奇观,而方程本身“没错”,只是约定拧了。
3.4 状态变量选电流还是选磁链:代数环的根源
方程列完了,怎么塞进 Simulink 才是真正的分水岭。最直接的想法是拿四个电流当状态,电压方程写成di/dt = L⁻¹(u - R*i - ω*L'*i),其中 L 是 4×4 电感矩阵,每一步都要求逆。
问题在于:Simulink 的连续模块在计算输出时,如果输出直接依赖输入(直通),而输入又反过来依赖输出,就形成代数环。矩阵求逆正好是直通环节,一旦某个参数让 L 接近奇异(比如漏感设成 0),求逆直接报错,仿真停摆。
常见的实现思路是换状态变量:定子电流 + 转子磁链,四个状态,避开矩阵求逆。推导过程略去,最终形式如下:
function [dis, diq, dpsi_dr, dpsi_qr] = im_dq(uds, uqs, ids, iqs, ... psi_dr, psi_qr, w1, wr, p, ... Rs, Rr, Ls, Lr, Lm) % 输入:定子电压 dq 分量、定子电流、转子磁链、同步角速度、转子电角速度、 % 极对数、定转子电阻电感(转子量已折算到定子侧) % 输出:四个状态量的导数 sigma = 1 - Lm^2/(Ls*Lr); % 漏感系数 Tr = Lr/Rr; % 转子时间常数 wslip = w1 - wr; % 转差角速度 % 转子磁链方程:一阶惯性 + 转差耦合 + 定子电流激励 dpsi_dr = -psi_dr/Tr - wslip*psi_qr + (Lm/Tr)*ids; dpsi_qr = -psi_qr/Tr + wslip*psi_dr + (Lm/Tr)*iqs; % 定子电流方程:消去转子电流后得到,避免矩阵求逆 dis = ( uds - Rs*ids - (Lm/Lr)*dpsi_dr + (Lm/Lr)*wr*psi_qr ... + w1*sigma*Ls*iqs ) / (sigma*Ls); diq = ( uqs - Rs*iqs - (Lm/Lr)*dpsi_qr - (Lm/Lr)*wr*psi_dr ... - w1*sigma*Ls*ids ) / (sigma*Ls); end代码里能看到几个关键点。转子磁链的两个方程是一阶惯性环节加交叉耦合,天然稳定,不需要求逆。定子电流方程里出现了dpsi_dr本身,这是消元的结果,实现时要么把磁链导数直接代入,要么用一个代数约束解出来,前者更省事,代价是表达式变长。
还有一个细节:sigma*Ls在分母上,σ 越小,定子电流的增益越大,数值上越刚。这就是漏感不能设得太小的原因——物理上漏感为零意味着定转子完全耦合,数学上意味着方程处处奇异。参数辨识时如果算出来的 σ 小于 0.03,先怀疑测量误差,别急着信。
4. Simulink 实现骨架:从铭牌参数到能跑的模型
4.1 铭牌到 R1、R2'、Lm、Ls 的参数换算
模型的方程是通用的,难的是参数。铭牌上只有额定功率、电压、电流、转速、功率因数、效率,几个电感电阻全得靠试验或者工程估算。标准做法是空载试验加堵转试验:
% 由铭牌与空载/堵转试验换算 dq 模型参数(示例流程,数值仅示意量纲) UN = 380; IN = 7.0; fN = 50; p = 2; % 线电压、线电流、频率、极对数 Rs = (R_ab)/2; % 直流电阻试验:两相端电阻的一半 % 空载试验:I0、P0 为空载线电流与三相总损耗 Z0 = UN/(sqrt(3)*I0); R0 = P0/(3*I0^2); X0 = sqrt(Z0^2 - R0^2); % 空载电抗,近似为励磁电抗 % 堵转试验:Uk、Ik、Pk 为堵转时的电压、电流、损耗 Zk = Uk/(sqrt(3)*Ik); Rk = Pk/(3*Ik^2); Xk = sqrt(Zk^2 - Rk^2); Rr = Rk - Rs; % 折算到定子侧的转子电阻 Xls = Xk/2; Xlr = Xk/2; % 漏抗均分,工程近似 Xm = X0 - Xls; % 励磁电抗 Lm = Xm/(2*pi*fN); Lls = Xls/(2*pi*fN); Llr = Xlr/(2*pi*fN); Ls = Lls + Lm; Lr = Llr + Lm;这里的每一个近似都值得知道来源。漏抗均分假设定转子漏感相等,对普通鼠笼电机误差可以接受,对深槽或双笼电机就偏了。空载电抗直接当励磁电抗忽略了定子漏抗和铁耗,频率低时误差明显。这些近似不是“对”,而是“够用”,模型精度和参数获取成本之间必须做一次交换。
如果连试验条件都没有,只能从铭牌硬估,常见的路子是用额定功率因数和效率反推电流的有功无功分量,再套经验比例。这种估法误差能到 30%,仿真出来的起动电流和实际对不上很正常。真要定量分析,参数辨识这一步省不了。
4.2 求解器与步长:为什么这组方程是刚性的
前面提过,定子暂态时间常数 σLs/Rs 在毫秒量级,转子时间常数 Lr/Rr 在几百毫秒量级,两者差两个数量级。这种系统叫刚性系统,意思是显式求解器为了稳定,步长必须被最快的那个模态卡死,哪怕你只关心慢过程。
实际配置上有两条路。固定步长配 ode4(四阶龙格库塔),步长取 1e-5 秒,能扛住起动瞬间的电流冲击,代价是仿真时间变长。变步长配 ode23tb 或 ode15s,最大步长限制在 1e-4,求解器自己会在大电流段缩小步长,稳态段放大步长,总耗时反而更短。
选错求解器的典型症状是:空载稳态跑得好好的,一加负载或者一堵转,数值就发散成 NaN。这不是模型错了,是积分器被刚性项打穿了。判断方法很简单,把步长减半再跑一次,如果波形显著变化,说明原来的步长根本不够。
还有一个隐藏配置项是仿真起始时间。t=0 突加三相电压,磁链从 0 开始积分,必然产生一个直流偏置分量,这个分量衰减得很慢,会在起动电流上叠出一个不对称的包络。想看到干净的起动波形,要么按稳态解析解给磁链赋初值,要么让电压从零缓慢爬升。这是模型“能不能很好模拟”的分界线之一。
4.3 四种工况的测试台怎么搭
模型跑通不等于验证过。至少要搭四组工况,每组看不同的量:
| 工况 | 负载转矩 TL | 同步角速度 ω1 | 主要观察量 |
|---|---|---|---|
| 空载起动 | 0 | 额定 314 rad/s | 起动电流倍数、转速上升时间 |
| 额定负载 | 额定值阶跃 | 额定 | 稳态转差、定子电流、转矩纹波 |
| 堵转 | — | 额定 | 转子锁死时 ωr=0,看起动转矩与电流 |
| 变频调速 | 风机类平方转矩 | 按 V/F 给定 | 低速转矩能力、磁链是否恒定 |
堵转工况的实现要小心:不是把转速初值设成 0 就完事,得把机械方程断开,强制 ωr 恒为 0,否则转子会自己转起来。变频工况则要把 ω1 和电压幅值绑定,保持 U/f 恒定,不然低速时磁链饱和、高速时磁链不足,波形会误导你以为模型有问题。
每换一个工况,都要回头核对一遍功率平衡:输入电功率减去定转子铜耗,应该等于机械功率加上损耗。这个校验比看波形靠谱得多,数值对不上,波形再漂亮也是错的。
5. 避坑排查:模型跑飞前必须检查的五件事
5.1 代数环与奇异矩阵
现象:模型一点运行就弹出代数环警告,或者参数一改就报矩阵奇异,仿真直接停在 t=0。
原因:状态变量选的是四个电流,电感矩阵求逆是直通环节,和电压方程形成了闭环;再加上漏感取值过小,矩阵条件数爆炸。
解决:改用定子电流加转子磁链的四状态方程,从结构上消掉求逆;如果非要保留电流模型,就把求逆挪到手写的 S-Function 里,用显式积分自己控制,别让 Simulink 的模块图去猜。顺带检查 σ 是否小于 0.03,小于就先回去查参数。
5.2 步长与堵转电流
现象:空载稳态波形正常,一进入起动或者堵转,电流曲线突然跳到 1e6 量级或者变成 NaN。
原因:起动瞬间电流能达到额定值的 6 到 7 倍,磁链变化率极大,固定步长 1e-3 的显式积分器稳定域不够,数值解直接发散。
解决:固定步长压到 1e-5,或者换 ode23tb 并把最大步长限制在 1e-4。改完再跑一次,如果波形随步长减半还在明显变化,说明模型里还有别的刚性源,继续往下查。
5.3 定转子折算
现象:转矩稳态值对不上,效率算出来超过 100%,或者功率平衡怎么都调不平。
原因:转子电阻、电感没有折算到定子侧,或者折算时匝比取反了,导致功率不守恒。
解决:统一在参数入口做一次折算,模型内部全部用折算值;校验方法是算一遍转子铜耗,折算前后必须相等。这条校验通过之前,不要相信任何波形结论。
5.4 角度与单位
现象:转速曲线看着对,但转矩脉动周期差一倍,或者机械转速和电频率的关系对不上。
原因:机械角速度 ωm 和电角速度 ωr 混用,rad/s 和 rpm 混用,极对数时而乘时而不乘。
解决:模型内部统一用 rad/s 和电角度,只在输入输出边界做一次换算,ωr = p * 2π * n / 60。把所有单位写进信号线命名里,别靠记忆。
5.5 初始条件与变频时的同步速
现象:t=0 附近电流冲击异常大,稳态波形上有缓慢衰减的直流分量;变频时低速段转矩塌陷。
原因:磁链初值全设为零,突然加三相电压必然激励出暂态直流分量;变频时 ω1 写死成额定值,电压幅值没跟着频率走,磁链不恒定。
解决:按给定频率和电压算稳态磁链解析解,作为初值赋给积分器;变频通道里把 ω1 和电压幅值绑成 U/f 曲线,低速时适当抬高电压补偿定子压降。这两条做完,波形会干净得让你怀疑之前跑的是不是同一个模型。
6. 保真度、可观测性与计算成本:本体模型该做到多细
做到这里会遇到一个绕不开的取舍:模型到底该多细。三种典型选择摆在面前,各自的代价很不一样。
| 方案 | 建模方式 | 优势 | 代价 |
|---|---|---|---|
| 内置模块 | 参数化黑盒 | 开箱即用,速度快 | 方程不可改,现象不可追 |
| dq 公式模型 | 四个方程手搭 | 每一项可观测、可改 | 忽略空间谐波、铁耗、饱和 |
| 有限元 | 场路耦合 | 齿槽转矩、饱和都能算 | 计算量大,不适合长时间工况仿真 |
dq 本体模型的位置在中间:它丢掉了空间谐波和磁路饱和,换来了毫秒级的仿真速度和每一个状态量的可见性。做控制器设计、参数辨识、故障注入,这个精度足够;要做电磁噪声或者齿槽转矩分析,它就力不从心了。
我的判断标准是看你要回答什么问题。如果问题是“这套控制策略在负载突变时会不会失稳”,dq 模型完全够用,甚至参数粗糙一点都行,因为稳定性主要由控制环决定。如果问题是“这台电机在特定工况下的温升分布”,那 dq 模型给不了答案,得往上加损耗模型或者直接上有限元。
真正容易踩的坑是过度建模:为了追求“像真的”,往模型里塞铁耗电阻、饱和曲线、谐波电感,结果参数一个都测不准,仿真跑得慢,结论反而更不可信。模型的价值不在于复现所有细节,而在于每个保留的项都有明确的物理含义和可验证的参数来源。
从那以后我每次搭这类模型,都强制走一遍“功率平衡校验 + 步长减半复跑 + 参数敏感性扫描”这三步,任何一步对不上就停下来查,不往下走。这套流程救过我很多次,也让我慢慢接受一个事实:模型跑出漂亮波形不难,难的是知道它为什么漂亮,以及什么时候它会不漂亮。这份用数学公式搭起来的三相异步电机本体模型,把四个方程、参数换算脚本和四种工况的测试台固化在了一起,想直接对着改、对着验证的,拿去跑一遍就明白了。希望帮到你。
本文还有配套的精品资源,点击获取