
简介一份面向大学电气工程、自动化及相关专业学生的MATLAB/Simulink仿真实验指导手册围绕直流他励电动机电枢串联电阻启动仿真与单闭环有静差/无静差转速负反馈调速系统两大实验展开。手册以PDF格式打包共1个文件容量约230KB轻量易用。内容详细拆解了每个实验的完整要求从在Simulink环境中搭建仿真模型到用示波器或二维绘图观测并分析结果再到绘制转速、电枢电流、电磁转矩等特性曲线并鼓励调整启动电阻大小、分段数或P/PI调节器参数进行对比同时记录模块参数及调整过程。这种“任务驱动过程记录”的流程能帮助读者在完成课堂作业或项目实验的同时深入理解电动机启动特性和转速闭环控制理论锻炼建模、调试与结果分析能力。目前已有64人学习下载是一份适合自主实践与课程配套的实用参考。1. 直流他励电动机单闭环调速为什么先建模再仿真才是捷径拿到“2024年MATLAB仿真实验指导手册”这样一个标题多数人会直接打开Simulink找电机模型拖几个模块出来双击设置参数点运行然后对着转速波形发呆。直流他励电动机看起来是电机学里结构最简单的一类但真正把单闭环调速系统在MATLAB里仿真到波形干净、抗扰动合理要处理的并不是电机本身而是数学模型如何映射到仿真模块以及速度环的PI参数该怎么从传递函数推出来。本文围绕直流他励电动机的特性方程、单闭环调速系统的结构、Simulink建模参数和阶跃响应调参给出可直接照做的仿真实验方案。适合自动化、电气工程方向的工程师、研究生以及做电机控制仿真但不想把时间耗在查模块用法上的从业者。2. 直流他励电动机的数学模型与仿真参数选取2.1 从电机学方程到传递函数三组方程定全局直流他励电动机在恒定励磁条件下可以用电枢回路、反电动势和运动方程来描述。仿真里最常用的是以下三个式子。电枢回路电压方程Ua Ea Ra * Ia La * dIa/dt反电动势与转速成正比Ea Ce * n转矩平衡方程忽略弹性转矩和间隙Te - TL J * dn/dt * (pi/30)其中 Ua 为电枢电压Ra 为电枢电阻La 为电枢电感Ia 为电枢电流Ce 为电动势常数n 为转速Te 为电磁转矩TL 为负载转矩J 为折算到电机轴上的转动惯量。这里的关键是Ce 在数值上等于转矩常数 Ct这是直流电机模型里最容易出错的地方。对上述方程做拉普拉斯变换电枢回路可以写成Ia(s) (Ua(s) - Ce * n(s)) / (Ra La*s)运动方程写成n(s) (Ct * Ia(s) - TL(s)) / (J * s * pi/30)由此可以得到直流他励电动机的动态结构图电压输入端先经过电枢回路惯性环节输出电流电流经过转矩常数得到电磁转矩减去负载转矩后积分得到转速转速再通过 Ce 反馈到输入端。这个闭环不是速度环而是电机内部的电动势反馈。单闭环调速系统是在这个内环外面再加一个速度负反馈环而不是直接用一个PI控制器去控制整个电机模型。在给仿真设置参数时常见的小型直流他励电动机参数如下表这组数据可以直接用于Simulink仿真不需要额外折算。参数数值说明额定电压 Ua220 V电枢额定电压电枢电阻 Ra0.5 Ω含电刷接触电阻电枢电感 La0.01 H用于电流上升时间计算电动势常数 Ce0.132 V/(r/min)同时作为转矩常数 Ct转动惯量 J0.05 kg·m²折算到电机轴额定转速 n_N1500 r/min仿真目标值负载转矩 TL5 N·m初始负载2.2 整流装置与触发装置的传递函数近似单闭环调速系统的被控对象不仅仅是电机本身还包括功率变换装置。2024年做MATLAB仿真常见的功率变换器是三相全控整流桥或PWM斩波器。仿真模型中整流装置可以近似为一阶惯性环节G_s(s) K_s / (T_s * s 1)K_s 是整流装置放大系数T_s 是滞后时间常数。对三相全控整流T_s 通常取 0.00167 s对应一个工频周期内触发脉冲的平均滞后对PWM变换器T_s 取开关周期的二分之一比如 10 kHz 开关频率下 T_s 0.00005 s。如果忽略整流装置的滞后把 K_s 直接并入比例环节仿真出来的转速响应会比实际乐观很多出现“仿真能转、实物炸管”的情况。单闭环调速仿真中这个一阶惯性环节必须保留。触发装置如果单独建模可以再加一个纯滞后环节 e^(-τs)在Simulink里用 Transport Delay 模块实现τ 取 0.001 s 量级即可。2.3 用状态空间形式在MATLAB里先做开环验证在搭Simulink模型之前我一般先在MATLAB脚本里用状态空间模型验证被控对象的开环特性。这样能快速确认电机参数和数据单位有没有问题不用等Simulink模型跑完才发现转速上升慢是因为转动惯量单位写错了。% 直流他励电动机状态空间模型状态: [Ia; n] Ra 0.5; % 电枢电阻 La 0.01; % 电枢电感 Ce 0.132; % 电动势常数 转矩常数 J 0.05; % 转动惯量 TL 5; % 负载转矩 A [-Ra/La, -Ce/La; Ce*pi/(30*J), 0]; B [1/La, 0; 0, -pi/(30*J)]; C [0, 1]; % 输出转速 D [0, 0]; motor_ss ss(A, B, C, D); % 输入1为电枢电压输入2为负载转矩 step(motor_ss(1), 1.5); grid on;这段代码将电枢电流和转速作为状态变量输入是电枢电压和负载转矩。注意 A 矩阵第二行第二列为 0因为转速的积分只来自电磁转矩与负载转矩之差且转动惯量项已经折算到状态方程里。运行这一步如果阶跃响应里转速最终稳定在一个有限值说明 Ce 和转矩常数的对应关系没有问题如果转速直线上升不收敛通常是 Ce 没有参与到电枢回路反馈中。3. 在MATLAB/Simulink里搭建单闭环调速模型3.1 建模路线取舍物理模型与传递函数模型Simulink里搭建直流他励电动机的单闭环调速系统有两条路线。第一条是使用 Simscape Electrical 的直流电机物理模型优势是能模拟换向、电刷压降等细节但需要额外配置 solver 和电气网络节点仿真速度慢。第二条是用传递函数或状态空间模块自己搭把第二章的方程直接变成 Gain、Integrator、Sum 模块的组合优势是每个环节都看得见、参数调整直观适合教学和参数整定。单闭环调速仿真实验手册更推荐第二条路线。自建模型的结构参考以下顺序转速给定信号经过PI控制器输出限幅值再进入整流装置一阶惯性环节输出电枢电压电枢电压经过电枢回路传递函数得到电流电流经过转矩常数和负载转矩比较后积分得到转速转速反馈回输入端。在Simulink里不需要把电机内部电动势反馈画成一个完整回路——把传递函数写成闭环形式直接用一个 Transfer Fcn 模块表示“电枢电压-转速”的传递函数即可。实际搭建时我建议按下面模块列表配置Simulink模块参数用途Step幅值 1500阶跃时间 0.1 s转速给定PID ControllerP0.8I5限幅输出 [-50, 50]速度调节器Transfer Fcn整流装置分子 [Ks]分母 [Ts, 1]模拟整流滞后Transfer Fcn电枢回路分子 [1]分母 [La, Ra]电枢电压转电流Gain数值 Ct转矩常数Step负载扰动幅值 5阶跃时间 0.6 s突加负载Integrator初值 0增益 pi/(30*J)转速积分Gain转速反馈数值 1单位换算后反馈Scope无波形观察3.2 限幅是单闭环调速仿真里最能看出经验的参数Simulink模型能跑通不等于仿真结果正确。最容易踩的坑是PI控制器的输出限幅。整流装置输出电压上限是220 VPI控制器输出必须限幅在 [-220, 220]否则仿真中电枢电压会超过物理极限转速曲线看起来收敛很快实际是无效数据。更合理的做法是把限幅设为 ±200 V留出整流装置的管压降余量。转速反馈系数也要注意单位。Simulink里转速以 r/min 为单位参与运算但如果从电机模型里引出的是 rad/s反馈系数就不是 1而是 60/(2*pi)。很多人在仿真里转速波形不对不是PID没调好而是反馈通道里缺了这个换算。建议在模型中加一个标注清晰的 Gain 模块命名 feedback_gain避免回头排错时到处找。PI控制器采样时间方面单闭环调速仿真可以用连续时间控制器不要选离散域因为整流装置时间常数已经体现了离散化影响。如果一定要用离散PID采样周期设置为 0.001 s对应1 kHz并注意在PID模块里勾选连续时间积分器否则积分饱和现象会比连续系统严重得多。3.3 用m脚本驱动仿真做参数批量扫描Simulink模型搭好后每次改参数都打开模块对话框会很慢。更高效的方式是在m脚本里通过 set_param 修改模块参数用 sim 命令批量仿真。下面这段代码可以扫描三组P参数对比转速响应。% 设置模型路径 model dc_motor_speed_loop; load_system(model); % 三组P参数对比 P_values [0.4, 0.8, 1.6]; colors [r, g, b]; for k 1:length(P_values) % 修改PID模块的P参数 set_param([model /Speed PID], P, num2str(P_values(k))); % 运行仿真时长1.2秒 simOut sim(model, StopTime, 1.2); % 获取转速输出 t simOut.tout; n simOut.yout{1}.Values.Data; plot(t, n, colors(k), LineWidth, 1.5); hold on; end grid on; legend(P0.4, P0.8, P1.6); xlabel(时间/s); ylabel(转速/(r/min));代码里 P 参数每次通过字符串写入模块注意 num2str 不要保留多余的小数位set_param 对数字字符串格式要求不高但尽量传短格式。另一点是 sim 命令每次运行前要确认模型未修改未保存否则会弹出对话框阻塞循环。建议在循环前先调用 save_system(model)保存一次模型快照。4. 电流截止负反馈单闭环调速不烧电机的关键环节4.1 为什么单闭环调速必须做电流保护速度单闭环系统里只有转速反馈在起作用。启动瞬间转速为零转速偏差最大PI控制器输出很快打到限幅值整流装置输出电压直接接近最大值电枢电流可能达到额定电流的十倍以上。这对于仿真来说不会报警但对实际系统就是换向器打火、熔断器动作。2024年做MATLAB仿真实验电流保护是必须体现的环节否则仿真实验数据拿到工程现场没有参考价值。常见的做法是加入电流截止负反馈电流低于阈值时反馈不起作用电流一旦超过阈值反馈信号以负反馈形式叠加到速度调节器输出端把电压拉下来。这样做既不影响正常运行时速度环的开环增益又能把电流限制在允许范围内。4.2 电流截止负反馈在Simulink里的实现方法搭建电流截止负反馈不需要额外写S函数用 Simulink 的比较器和切换模块就能实现。取电流信号与阈值 I_th 做差经过一个 Dead Zone 模块只让超过阈值的部分通过然后再乘以反馈系数 K_i 接到求和点。Dead Zone 的起止设为 [-I_th, I_th]输出端得到的就是“超出电流阈值的那部分实际值”。阈值 I_th 一般取额定电流的 1.5 到 2 倍。仿真里额定电流可以由额定功率和额定电压估算。以第二章参数为例额定电流约为 11 A阈值取 20 A。反馈系数 K_i 的物理意义是把多余电流折算成电压调节量计算公式K_i Ua_max / (I_block - I_th)其中 Ua_max 是整流装置最大输出电压I_block 是希望堵转时的电流上限。如果希望堵转电流不超过 30 A那么 K_i 220 / (30 - 20) 22。在Simulink里就是两个Gain模块串联或者直接在增益参数里写 220/10。4.3 截止反馈与PI调节器的配合细节加上电流截止负反馈后速度环的开环传递函数不再是标准的 PI 控制对象。电流反馈相当于在PI输出端增加了一个非线性支路。调参时先断开电流截止环节把PI参数整定好再接上截止反馈。因为截止反馈只在启动和堵转时动作正常运行区不影响PI的稳定性但如果反过来先整定带截止反馈的系统PI参数会被电流环的强非线性误导。仿真中验证电流截止效果的指标是启动电流峰值。用 Scope 观察电枢电流波形如果没有截止反馈电流峰值会冲到几十安培加上截止反馈后电流峰值被限制在阈值附近且转速上升速度会略慢。这是正常现象不要因为电流波形出现了“削顶”就认为是PI参数不合适。削顶部分正是截止反馈在做限流只要转速调节时间增加不超过30%这个参数组合就是合适的。恢复特性是另一个要观察的点电流一旦低于阈值截止反馈支路输出为零不能出现反复抖动。如果电流在阈值附近振荡说明 K_i 设置过大或者Dead Zone输出之后缺少一阶惯性滤波。可以在截止反馈支路加一个小时间常数的惯性环节比如 0.005 s用来平滑阈值切换点。5. 速度单闭环PI参数整定用阶跃响应与PID Tuner调参5.1 先理解单闭环调速被控对象的简化形式单闭环调速系统从速度给定到转速输出的开环传递函数由整流装置、电枢回路、转矩常数、积分环节构成。写成典型形式G(s) K / (s * (T_s * s 1) * (T_a * s 1))其中 K 包含整流放大系数、PI控制器的比例增益、转矩常数和转动惯量折算系数的乘积。电枢时间常数 T_a La / Ra 0.01 / 0.5 0.02 s整流装置时间常数 T_s 0.00167 s。两个惯性环节加上一个积分环节这是典型的II型系统结构PI参数整定的核心是让开环穿越频率落在两个惯性转折频率之间。速度调节器采用PI控制时PI的零点 1/(K_p / K_i) 要设置在两个惯性环节转折频率的左侧也就是远低于 1/T_a。常规做法是把PI的时间常数设定为电枢时间常数的 4 到 5 倍这样积分环节主导低频增益比例环节保证中频段相位裕度。T_pi Ta * 4; % PI时间常数 K_i K_p / T_pi; % 积分系数5.2 用MATLAB命令行对线性化模型做自动整定Simulink里搭完非线性模型后可以先用命令行对线性化被控对象做PI整定初始参数直接写入模型省去盲调。被控对象的传递函数由整流装置和电机环节串联构成在MATLAB里用tf函数手工构造再调用pidTuner。% 构建单闭环调速被控对象传递函数 Ks 44; % 整流装置放大系数 Ts 0.00167; % 整流滞后时间常数 Ta 0.02; % 电枢时间常数 K_motor 1 / (0.05 * pi / 30); % 转矩-惯量折算系数, 约190.9 % 被控对象: Ks * (1/(Ta*s1)) * (K_motor/s) * (1/(Ts*s1)) G_plant Ks * (1 / (Ta*tf(s) 1)) * (K_motor / tf(s)) * (1 / (Ts*tf(s) 1)); % 打开PID Tuner并指定PI控制器 pidTuner(G_plant, PI);这里 K_motor 的计算逻辑是转矩常数 Ct 乘以 pi/30 得到机械角速度方程里的增益分母上还有转动惯量 J。因为 Ce Ct 0.132所以 K_motor 0.132 * pi / (30 * 0.05) 约等于 0.276。加上整流和电枢环节开环增益约为 44 * 0.276 12.1。如果转动惯量增大开环增益下降系统响应变慢这是机械惯性起主导作用的体现。pidTuner 打开后选择“较快的响应”滑块目标相位裕度设在 50 度左右点击更新即可把参数导出到工作区。比手工试凑快得多。整定后的参数会偏保守因为pidTuner认为被控对象是线性时不变的实际仿真里的电流截止负反馈和限幅会降低系统增益所以从pidTuner拿到的参数直接用于仿真转速响应会比预期的稍微慢一些这是正常的。5.3 PI参数对阶跃响应的影响与调整方向直接在Simulink里跑阶跃仿真观察转速波形按下面的规律微调参数。这张表总结了不同参数变化带来的响应变化便于定向调整。现象原因调整方法超调大转速冲过设定值再回落比例增益Kp过大降低Kp同时保持Ki/Kp比值不变稳态误差大转速低于给定Ki过小增大Ki保持Kp不变振荡不衰减相位裕度不足同时降低Kp和Ki或者增大PI时间常数响应慢到达给定时间长开环增益过低增大Kp观察电流是否触发截止电流持续顶在限幅值负载超出电机能力增大限幅值或检查负载转矩设置调整PI参数时保持 Ki/Kp 比值固定为 1/T_pi 很重要。只动Kp相当于同时改变开环增益和零点位置会同时影响超调和调节时间不好判断根因。先把 T_pi 固定单独扫描 Kp找到临界振荡点再把 Kp 乘上 0.6 作为初值再微调。这个做法比随机试参靠谱也方便写进实验报告。6. 从转速波形和扰动响应验证单闭环调速仿真结果6.1 阶跃响应里应该看到的三组数据仿真运行结束后不要只看波形形状要把具体数值记下来超调量、调节时间、稳态误差。转速给定是 1500 r/min如果最终稳定在 1495 r/min稳态误差 0.33%说明积分环节是有效的稳定在 1400 r/min 则说明转速反馈环节增益不正确。调节时间可以按进入稳态值 ±5% 区间不再出来的时间点读取。6.2 突加负载扰动仿真验证的稳定裕度用第二节的负载Step模块在0.6秒时突加5 N·m负载观察转速跌落和恢复情况。一个合格的PI参数转速跌落应在20 r/min以内恢复时间不超过0.3秒。如果转速跌落过大先检查电流截止反馈是否在扰动期间被触发——负载增大、电枢电流上升若超过电流阈值截止反馈会限制电流转速跌落就会比理论值大。这很可能是实际现象而非故障。6.3 单闭环调速仿真的能力边界单闭环调速系统中的电流截止负反馈能抑制过流但无法精确控制电流动态过程。大惯量系统启动时单闭环会经历“限流升速-退出限流-转速超调-回调”的过程。如果想更精细地控制起动电流波形需要升级到转速电流双闭环结构。单闭环仿真做到能够清晰呈现转速波形、电流截止保护动作和扰动恢复就已完成实验目标。本文还有配套的精品资源点击获取