直流电动机三种励磁方式的Simulink建模仿真详解

发布时间:2026/10/3 9:19:47
直流电动机三种励磁方式的Simulink建模仿真详解 开头做电机控制这些年我一直觉得直流电动机是理解自动控制系统最好的入门载体——结构直观、方程简洁又能把“励磁方式”这种看似理论的概念直接映射到仿真波形上。最近整理手头的电机建模仿真资料发现很多初学者卡在同一个地方他励、串励、并励三种电机明明都是直流电机为什么方程长得不一样为什么同一个PID参数换一种励磁方式就发散为什么串励电机空载会飞车这期内容我就把三种励磁方式下直流电动机的建模仿真一次性讲透。从物理方程入手到Simulink模型搭建再到参数整定和波形分析全程基于我实际调试过的模型和经验。不管你是刚接触电机仿真的学生还是想快速搭一个能用的电机模型做算法验证的工程师这篇内容都可以直接照着操作复现。我在最后还会专门列一个“踩坑清单”把仿真发散、初始值设置、电感饱和处理这些常见问题一次性说清楚省得你在网上东拼西凑地找答案。1. 先说清楚一件事为什么三种励磁方式必须分开建模直流电动机的基本工作原理简单说就是电枢电流在磁场中受安培力作用产生转矩。但“磁场从哪来”这个问题决定了电机的外特性完全不一样。他励、串励、并励三种电机区别就在于励磁绕组和电枢绕组之间的连接关系。他励电动机的励磁绕组和电枢绕组各自独立供电励磁电流只由励磁电源决定跟电枢回路互不影响。这意味着主磁通基本恒定不考虑电枢反应转矩和电枢电流呈线性关系。这种电机适合需要精确调速、恒转矩输出的场合比如机床主轴。串励电动机的励磁绕组和电枢绕组串联励磁电流等于电枢电流。问题来了主磁通是电枢电流的函数转矩近似和电枢电流的平方成正比。所以串励电机的启动转矩特别大适合起重机、电力机车这种需要重载启动的场合。但它的空载转速会冲到很高有“飞车”风险所以绝对不允许空载运行。并励电动机的励磁绕组和电枢绕组并联在同一个电源上。励磁电压等于电枢电压所以励磁电流相对稳定但会受到电源电压波动的影响。它的特性介于他励和串励之间转速随负载变化不大适合要求转速稳定的场合比如小型发电机配套的原动机。搞清楚了这些物理层面的差异你才能理解为什么要分别建模。如果不管励磁方式直接套用同一个传递函数仿真结果必然是错的。建模仿真的本质就是把物理规律翻译成数学方程翻译错了后面全白搭。2. 三种励磁方式的数学模型推导这一节我会从电压方程、转矩方程、运动方程三个维度把模型写清楚。你不需要背公式关键是理解每个方程背后的物理意义这样后面搭仿真模型时才知道每个模块在算什么。2.1 他励电动机线性模型是基础他励电动机的励磁绕组单独供电假设励磁电流恒定则主磁通Φ恒定。电枢回路的电压方程为Ua Ea Ia·Ra La·(dIa/dt)其中Ua为电枢电压Ea为反电动势Ia为电枢电流Ra为电枢电阻La为电枢电感。反电动势和转矩分别满足Ea Ce·Φ·n T Ct·Φ·IaCe是电动势常数Ct是转矩常数n是转速。如果采用国际单位制Ce和Ct在数值上是相等的。运动方程为J·(dn/dt) T - TL - B·nJ是转动惯量TL是负载转矩B是粘性摩擦系数。我刚开始做仿真时总想把模型做得越复杂越好加了各种非线性因素结果仿真速度慢参数也难以确定。实际工程中如果励磁恒定他励电动机用线性模型就够了二阶系统的特性已经能反映大部分动态行为。2.2 并励电动机注意电枢反应和励磁电压耦合并励电动机的励磁绕组和电枢绕组并联接到同一电源U所以励磁回路方程为U If·Rf Lf·(dIf/dt)If为励磁电流Rf为励磁绕组电阻Lf为励磁绕组电感。励磁电流建立主磁通电枢回路方程和转矩方程形式上与他励相同。但这里有一个关键区别当电源电压U变化时励磁电流If会跟着变化主磁通Φ也随之变化所以模型不能简单假设Φ恒定。此外电枢电流Ia产生的电枢反应会削弱主磁通这个效应在负载较大时不可忽略。如果需要精确建模可以用一个修正系数k_ar来处理Φ_actual Φ_no_load - k_ar·Ia我在仿真中发现如果不考虑电枢反应轻载情况下波形和实测数据对得上但重载时误差明显偏大。所以并励电动机的模型比他人励多了一个“磁场弱化”的环节这也是并励电机转速在小范围内上翘的原因——负载增加电枢反应去磁磁通减小转速反而略有上升。2.3 串励电动机非线性是核心难点串励电动机的励磁绕组与电枢绕组串联所以If Ia。主磁通Φ是电枢电流的非线性函数。在磁路未饱和时可以近似认为Φ k·Ia此时转矩为T Ct·Φ·Ia Ct·k·Ia²转矩和电流的平方成正比这是串励电机启动转矩大的根本原因。但磁路饱和后Φ随Ia增长变缓转矩近似从平方关系过渡到线性关系。精确建模需要用磁化曲线也就是Φ-Ia的关系曲线通常用饱和函数来拟合。串励电动机的一个重要特性是轻载时转速极高。从电压方程推导U Ea Ia·(Ra Rf) ≈ Ce·Φ·n Ia·R_total当负载很小时Ia很小Φ也很小为了产生足够的反电动势来平衡电源电压转速n必须升得很高。这就是串励电机不允许空载运行的原因。仿真时如果不做限速保护或设置最低负载转矩模型极容易发散。2.4 三种模型的对比总结我用一张表把核心区别整理出来建模仿真前先对照这张表检查自己的方程有没有写错项目他励并励串励励磁绕组供电独立电源与电枢并联与电枢串联励磁电流恒定受电源电压影响等于电枢电流磁通Φ恒定近似恒定考虑电枢反应随Ia非线性变化转矩特性T ∝ IaT ∝ IaT ∝ Ia²未饱和空载转速较高但安全稳定极高有飞车风险适用场合精确调速、恒转矩恒转速、负载波动小重载启动、牵引3. 在Simulink里搭三种电机的仿真模型理论方程理清楚之后接下来就是实操环节。我用的是MATLAB/Simulink环境版本是R2022a但以下方法在R2018及以上版本都可以直接操作。搭模型的核心思路是电压方程算电流转矩方程算转矩运动方程算转速转速反馈回去算反电动势形成一个闭环。3.1 准备工作参数设定仿真开始前先把电机参数确定下来。这里以一台2kW的直流电动机为例参数如下你也可以用自己手头的电机铭牌参数替换参数他励并励串励额定电压 U (V)220220220电枢电阻 Ra (Ω)0.50.50.3电枢电感 La (mH)10108励磁电阻 Rf (Ω)2002000.3励磁电感 Lf (H)20208mH电动势常数 Ce (V·s/rad)0.80.80.5饱和前转动惯量 J (kg·m²)0.050.050.05粘性摩擦系数 B (N·m·s/rad)0.010.010.01注意串励电机的励磁绕组电阻Rf和电感Lf都比较小因为励磁绕组线径较粗、匝数较少要通过电枢电流。这里Ce取的是磁路未饱和时的等效值实际仿真中我会用查表模块代替常数。3.2 他励电动机模型搭建步骤第一步新建一个Simulink模型文件。从Simulink库中拖入以下模块Step阶跃输入、Gain增益、Add加法器、Integrator积分器、Scope示波器和信号线。第二步搭建电枢电流计算环节。电压方程Ua - Ea Ia·Ra La·(dIa/dt)移项得dIa/dt (Ua - Ea - Ia·Ra)/La。注意这里需要把Ia通过内存模块Memory或状态空间模块保存并反馈否则会出现代数环问题。我习惯用State-Space模块来搭整个电机模型但很多初学者觉得状态空间不好理解所以我先用手动搭积分器的方法讲一遍。在Add模块中输入是Ua减去Ea再减去Ia·Ra差值经过Gain模块乘以1/La再经过Integrator就得到Ia。这里Gain的值是1/La也就是100。第三步搭建反电动势和转矩环节。Ea Ce·Φ·n在模型里用一个Gain模块增益为Ce乘以Φ。因为励磁恒定Φ是常数Ce·Φ可以直接算成一个常数。转矩T Ct·Φ·Ia同理用Gain模块实现。第四步搭建运动方程环节。dω/dt (T - TL - B·ω)/J这个和电枢电流的计算逻辑一样用Add模块计算(T - TL - B·ω)乘以Gain(1/J)再积分得到转速ω。转速再经过一个Gain模块反馈回反电动势计算环节。我这里用角速度ω做计算如果你习惯用转速n注意Ce的单位换算。第五步连接Scope模块把Ua、Ia、n、T四个关键变量引出来观察。设置仿真时间5秒求解器用ode45步长自动点击运行。3.3 他励电动机的仿真结果分析给定阶跃电压220V初始负载转矩01秒后突加10N·m负载转矩。看示波器波形有几个现象需要注意启动初期电流会有一个很大的冲击峰值这是因为转速还没建立起来反电动势为零电源电压全部加在电枢电阻和电感上。以我们的参数理论启动电流峰值接近440A实际因为电感延时会稍微小一点这个电流冲击值是判断控制器设计是否合理的重要指标。转速从零开始上升经过一个二阶系统的动态过程后稳定在额定转速附近。稳态时转速约等于(U - Ia·Ra)/(Ce·Φ)。当1秒钟突加负载时转速会短暂下降然后经过动态调节重新稳定但稳态转速会比空载时略低一点因为电枢电阻分压增加了。他励电动机的仿真波形整体来说非常“规整”就是一个典型的二阶系统阶跃响应这让它成为初学者理解直流电机模型的绝佳素材。也正因如此后续做双闭环调速控制时他励电机是最容易调出效果的。3.4 并励电动机模型搭建差异并励电动机的模型搭建在他励模型的基础上需要增加两个环节。第一是励磁回路模块。并励电动机的励磁绕组直接接在电源两端所以需要单独计算励磁电流If。按照方程If U/Rf忽略电感动态时用Gain模块直接算If U·(1/Rf)。如果需要考虑励磁绕组电感则拟合他励电流的积分环节从U到If。第二是磁通随电压变化的环节。励磁电流If决定了主磁通Φ如果忽略磁路饱和Φ k·If。所以模型中Φ不再是常数而是If乘以一个比例系数。如果考虑磁路饱和可以用Lookup Table查表模块输入If输出Φ。我实用中发现取线性关系已经能覆盖大多数工业仿真的需求饱和修正可以在后续做精细化模型时再加。其余电枢回路、反电动势、转矩、运动方程和他励模型完全一致。但要注意由于励磁电压和电枢电压都来自同一个电源U当U变化时励磁电流和电枢电流同时变化模型的动态特性比他励更复杂。这也是并励电机直接启动时转速冲击较小的原因——电压升高磁通同步增加反电动势建立更快。3.5 串励电动机模型搭建磁化曲线的处理串励电动机的模型搭建难度最大核心在于磁通Φ和电枢电流Ia之间的非线性关系。如果你直接用常数Ce轻载时转速会飞到离谱仿真必然发散。我的做法是用饱和函数拟合磁化曲线。在磁路未饱和段Φ k·Ia进入饱和段后Φ增长变缓最终趋于一个最大值Φ_max。在Simulink中可以用Fcn模块写一个自定义函数。比如用双曲正切形式拟合Φ Φ_max·tanh(k·Ia/Φ_max)当Ia很小时tanh(k·Ia/Φ_max)≈k·Ia/Φ_maxΦ≈k·Ia符合线性段当Ia很大时tanh趋近于1Φ趋近于Φ_max符合饱和特性。这个函数形式简单参数也只有两个k和Φ_max用起来非常顺手。在串励模型中还有一点要注意转矩公式T Ct·Φ·Ia其中Φ是Ia的非线性函数所以不能把Ct·Φ当成常数增益。我用Fcn模块直接计算T Ct·Φ_max·tanh(k·Ia/Φ_max)·Ia。同时反电动势Ea Ce·Φ·n也需要用同一个Φ值。这里Φ是中间变量建议单独拉一条信号线出来避免重复计算。剩余的运动方程部分和他励电机相同。但负载转矩TL要特别注意串励电机仿真时如果TL设得太小或设为零转速会直线上升很快超出物理合理范围。我建议至少设置一个额定负载的10%作为最低负载模拟实际使用场景中串励电机不允许空载的条件。如果要仿真空载飞车现象可以故意把负载设成0观察转速冲高发散的过程这对理解串励电机的特性很有帮助但注意仿真步长要足够小否则数值发散会掩盖物理现象。3.6 三种模型的速度响应对比分析单独看每种电机的波形固然重要但把三种电机的阶跃响应放在同一张图里对比才能看出励磁方式的本质差异。我是这样做的在三种模型中输入同样的额定电压阶跃设置相同的转动惯量和初始负载运行结束后把Scope数据导出到MATLAB工作区用plot命令统一绘制转速对比曲线。对比结果非常直观他励电机的转速上升过程平滑超调量适中最终稳定在额定转速并励电机的转速上升初期略有延迟因为励磁电流和电源电压同时建立磁通增长需要时间所以反电动势建立得慢一些动态响应略慢串励电机的转速上升最快启动初期电流大导致转矩大加速度明显高于前两者但是如果没有限速或负载转速会冲得很高波形末端往往以发散告终。这张对比图建议每一个做电机仿真的人都亲手画一遍比看任何教科书上的特性曲线都让人印象深刻。你会亲眼看到“串励电机启动转矩大”这句话在波形上到底意味着什么也会理解为什么实际应用中要在串励电机上装超速保护。4. 参数计算与控制器设计中的几个关键点模型能跑起来只是第一步真正让仿真贴近实际必须在参数处理上下工夫。这里分享几个我在实操中反复用到的技巧。4.1 转动惯量的折算真实电机系统往往不是电机单独运行而是带着负载一起转。负载的转动惯量需要折算到电机轴上。折算公式是J_total J_motor J_load·(ω_load/ω_motor)²如果是齿轮传动速比为iN_motor/N_load则负载折算惯量为J_load/i²。我见过很多初学者忽略这个折算直接用电机的额定惯量。对于大惯量负载比如转台、卷扬机阻抗比很大模型动态响应会跟实际严重不符。仿真前一定要先算好总惯量。4.2 电流环和转速环的参数初值估算如果你后续要做双闭环调速仿真零点几秒的动态过程往往取决于控制参数。我提供一组工程经验初值供参考适用于二阶系统的典型调试转速环比例系数Kp_n取值范围一般为5到20积分时间常数Ti_n在0.1到0.5秒之间。电流环比转速环快得多Kp_i取1到5Ti_i在0.01到0.05秒之间。这套经验值来自经典工程整定法适合绝大多数功率等级的直流电机模型。真正的整定还是要根据开环Bode图来调但初值给对了能省很多试凑时间。4.3 电感饱和与温度影响的处理我在仿真初期总忽略温度和磁路饱和的影响结果只能在很窄的工作范围内跟实测吻合。后来学聪明了直接把磁化曲线以Lookup Table的形式做成可配置模块想考虑饱和时加一条表不想用就设成线性。温度对电阻的影响则简单处理电阻值乘以(1 α·ΔT)α取0.0039/K铜ΔT取预期温升。这样做虽然粗糙但比完全忽略强得多。另外要记住电枢电感La并非恒定值电流越大铁心饱和程度越深电感量越小。对于精确模型La应该也做成电流的函数。不过常规工业仿真一般不考虑这一点如果追求高精度建议用有限元仿真软件先算电磁参数再导入到这个模型中。5. 常见仿真陷阱与排查方法仿真模型搭好之后90%的时间都花在排查问题上。这一节我把踩过的坑系统整理一下按概率从高到低排列每一条都是我实际遇到过的情况。5.1 代数环问题症状是仿真报错“Algebraic loop detected”或结果反复震荡。原因模型中某个信号同时作为输入和输出参与计算形成闭环而没有经过任何动态环节积分器或延迟。最常见的地方是我前面提到的电流反馈计算如果直接用Ia的当前值计算电压降而Ia又取决于电压降就形成了代数环。解决办法有两个一是让电流信号经过一个Memory模块或Unit Delay模块打破代数环二是把整个模型改用State-Space模块统一搭建从数学上避免代数环。我推荐后者状态空间模型代码整洁也方便后续线性化和控制器设计。5.2 仿真步长太大导致结果发散症状是仿真能运行但波形高频抖动或直接发散到无穷大。原因可能不是物理模型的问题而是数值积分步长太大无法捕捉快速变化的电机电流动态。特别是串励电动机模型励磁回路和电枢回路时间常数都很小需要更小的步长。解决办法把求解器的最大步长改小比如从auto改成1e-4或更小。同时观察电流波形如果仍有毛刺逐步减小步长。还有一个小技巧在磁化曲线变化剧烈的位置Simulink的变步长求解器会自动加密计算步点前提是“Zero-crossing detection”保持开启。5.3 初始值设置不当导致启动冲击异常大电机模型刚接上电源的瞬间电流冲击值是一个重要的考核指标。但仿真中如果初始状态不对比如励磁电流初始值设为零而实际电机有剩磁结果会跟实际不符。建议在Integrator模块的初始条件中把励磁电流设成稳态值If0转速设成初始转速这样能模拟“已建磁但未转”的真实状态。串励电机尤其要注意因为励磁电流等于电枢电流启动瞬间电流冲击大磁通随之暴增转矩和加速度都非常大。如果初始步长过大一步就可能把转速冲到几千上万转仿真秒发散。5.4 串励电机空载飞车现象对仿真数值要求极高当你故意把负载设为零来观察飞车现象时几乎必然碰到数值发散的问题。这不是模型错了而是真实物理过程本身就是不稳定的——转速上升反电动势增加但磁通随电流减小而减小反电动势不足以抑制转速形成正反馈。要仿真这个现象我建议把求解器换成ode23t或ode15s等刚性求解器并设置最大步长不超过1e-5秒。同时给转速加一个上限比如额定转速的3倍防止数值溢出把整个模型搞崩。观察飞车过程中电流和磁通的变化比单纯背“串励电机不允许空载”这句结论要深刻得多。5.5 为什么会得到负转速或负转矩如果仿真结果里出现负转速通常不是模型错误而是初始条件设置问题电机开始处于反转状态而电枢电压恰好施加了正向电压。另外转矩方向定义要注意电磁转矩驱动正转负载转矩阻碍旋转两者方向相反。在模型中用Add模块的符号要注意统一我见过很多人在这一步把符号搞反导致转速方向反了。6. 实操心得我做这套仿真走过的弯路从零搭完三种电机的仿真模型我个人感受最深的一点是建模仿真真正的门槛不在软件操作而在对物理模型的抽象能力。软件操作翻翻文档就能学会但把“磁场由励磁电流产生”这句话翻译成一个乘法器模块把“磁路饱和”翻译成一个tanh函数这些才是核心能力。我在刚开始做串励电机模型时试图严格复现磁化曲线的每一段把饱和曲线做成几十个采样点的Lookup Table结果仿真速度慢数据准备也麻烦。后来简化成双曲正切拟合效果几乎一致但参数只需要两个调模型的时间节省了一大半。所以我的经验是模型精度够用就好不要过度工程化。你的控制器算法才是最终要验证的对象电机模型只要能在关键动态特性上跟实际吻合就可以接受。另一个经验是关于参数整定的顺序问题。我建议先调他励电机的模型因为它最简单、最容易收敛。等你在他励模型上把双闭环调试的流程走通再去改并励和串励的模型。很多人在串励模型上调PID参数总是调不好其实不是你PID水平不行而是串励模型本身是强非线性的不能用线性系统的那套整定方法直接套。把负载转矩固定在一个恒定值在局部工作点线性化后再调参数会顺利很多。还有一个小技巧做仿真一定要养成保存不同版本模型的习惯。我在调串励电机磁化曲线参数的时候经常改一个参数后波形变得完全看不懂想回到上一版又忘了原来的参数值。用简单的编号管理版本比如motor_model_v1_linear.slx、motor_model_v2_saturation.slx能省掉无数返工时间。仿真结束之后建议你把Scope里的数据导出来做成正式的波形图用于报告或论文。示波器的截图不够美观用MATLAB的plot命令重新绘制加上坐标轴标签和图例效果完全不同。这也是从“能跑模型”到“工程交付”之间重要的一步。关于后续扩展的内容这套模型可以直接延伸的方向不少。加一个PID控制器做转速闭环改成他励电机的双闭环调速系统把磁化曲线升级为查表加入负载转矩随机扰动模拟真实工况甚至可以把模型从Simulink导出为C代码用于硬件在环测试。掌握了三种励磁方式的核心建模方法之后这些扩展都只是工作量问题而不是技术门槛问题。