ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

他励直流电机三种制动方式的MATLAB仿真与参数整定

他励直流电机三种制动方式的MATLAB仿真与参数整定 简介面向电气工程与电机控制学习者的MATLAB/Simulink仿真分析文档聚焦他励直流电动机在回馈制动过程中电枢电流、转速、转矩的变化规律及相互关系适合课程设计、毕业设计或相关课题研究参考。资源包共1个文件为docx格式文档压缩包大小678KB内容包含制动方式分类、系统工作原理、电动机参数设定、Simulink建模过程和仿真结果分析可直接作为理解回馈制动的完整学习材料。文档从位能负载反向制动和突然降低电枢电压两种工况入手详细展示了初始转速2000r/min下转速下降、转矩与电流同步变化等关键现象并归纳了回馈制动将机械能转化为电能回馈电网的特点。目前已有162人学习下载对于需要借助仿真手段深入理解直流电动机制动特性、优化制动系统设计的读者具有实用参考价值。1. 他励直流电机为什么非谈制动不可他励直流电机在工业现场最常见的命运不是启动不起来而是停不下来。转子惯量、负载惯性加上电枢回路里储存的电磁能量会让一台切断电源的电机继续空转几十秒甚至几分钟。对龙门刨床、矿井提升机这类需要快速准确停车的设备来说这个时间不可接受。更隐蔽的问题是当负载是位能性负载起重机的重物时电机不仅停不下来还会被负载拖着反转转速越过零后继续向反方向加速最终导致飞车。制动分析正是为了处理这些场景。MATLAB 在这个问题里的价值体现在两点。第一制动过程的数学模型是强耦合的非线性微分方程组手算只能得到稳态点而制动恰恰是暂态过程需要数值积分才能看到转速和电流随时间的变化轨迹。第二他励直流电机在不同制动方式下的边界条件差异很大能耗制动和反接制动在转矩方向、能量流向上完全相反建模时一个小小的符号错误仿真结果就会从“减速停车”变成“反向加速”。本篇围绕他励直流电机的三种制动方式——能耗制动、反接制动、回馈制动从方程推导到 MATLAB 仿真模型搭建再到参数整定和结果判读给出一个可以完整复现的分析路径。适用于电机控制方向的工程师、自动化专业的研究生以及所有需要把电机暂态过程“看明白”而不是“算出来就完”的人。2. 他励直流电机三种制动方式的数学模型与参数边界2.1 他励直流电机的电压方程与转矩方程他励直流电机的特点是励磁绕组和电枢绕组各自独立供电。电枢回路的电压方程写为[ U_a E_a R_a i_a L_a \frac{di_a}{dt} ]其中 (R_a) 是电枢回路总电阻包含电枢绕组电阻和外部串入电阻(L_a) 是电枢回路总电感反电动势 (E_a C_e \Phi n)(C_e) 是电动势常数(\Phi) 是每极磁通(n) 是转速。电磁转矩 (T_e C_T \Phi i_a)其中 (C_T) 与 (C_e) 之间满足关系 (C_T 9.55 C_e)当转速单位是 rpm、转矩单位是 N·m 时。机械运动方程[ J \frac{d\omega}{dt} T_e - T_L ]这里 (\omega) 是机械角速度单位 rad/s(J) 是折算到电机轴上的总转动惯量单位 kg·m²。制动分析的关键就在这个方程里制动时电磁转矩 (T_e) 的方向必须与转速方向相反转速才能下降。不同制动方式的区别本质上是“如何让 (T_e) 反向”的工程实现问题。建模前需要明确一个约定所有方程默认转速正方向为电机电动状态下的转向转矩正方向与转速正方向一致。当实际转矩为负值时表示转矩方向与转速方向相反电机处于制动状态此时 (T_e \cdot n 0)功率为负电机从轴上吸收机械能。2.2 能耗制动电枢脱离电网后接制动电阻的过程能耗制动的电路操作是断开电枢电源将电枢两端通过一个制动电阻 (R_b) 短接励磁绕组保持通电。此时电枢回路电压方程为[ 0 E_a (R_a R_b) i_a L_a \frac{di_a}{dt} ]注意这里电压右边是 0因为电源已经切除。反电动势 (E_a) 的方向在电机转动时保持不变因此电流方向与电动状态相反电磁转矩变为负值电机制动。从能量角度看动能通过电机转换为电能后全部消耗在 (R_a R_b) 上。(R_b) 取值越小电流越大制动转矩越大停车越快但同时电枢电流峰值越高换向器火花也越严重。工程上限制制动电流峰值不超过 2 倍额定电流因此 (R_b) 的下限为[ R_{b,\min} \frac{E_a}{2 I_N} - R_a ]转速高的时候反电动势大制动转矩也大随着转速下降反电动势线性减小制动转矩跟着减小所以能耗制动的“刹车感”是前期猛、后期软转速趋近于零时制动转矩也趋近于零最后靠摩擦或机械抱闸完成停车。2.3 反接制动转速反向与电枢反接的两种路径反接制动分两种情况。第一种是电枢反接电机运行中把电枢电源极性对调此时电枢电压 (-U_a) 与反电动势 (E_a) 方向相同电压方程为[ -U_a E_a (R_a R_p) i_a L_a \frac{di_a}{dt} ]回路里两个电压相加电流急剧增大必须串入较大的限流电阻 (R_p)。电流方向反向电磁转矩反向电机快速减速。当转速降到零时如果不及时切除电源电机会开始反转所以必须配合速度继电器或时间继电器在 (n \approx 0) 时刻动作。第二种是转速反向反接制动也叫倒拉反转运行常见于位能性负载下放重物。此时电机接正向电源但重物拖着电机反转转速为负反电动势方向也随之变为与电动状态相反回路电流增大电磁转矩方向是正与电动状态相同但转速为负所以仍然制动。电机最终稳定在一个负转速点上重物匀速下放。反接制动的特点是制动转矩大、制动快但能量效率极低全部能量连同电源输入的电能都消耗在限流电阻上发热严重。并且电枢反接瞬间电枢电流可能达到额定电流的 8~10 倍不串电阻会直接烧毁换向器。2.4 回馈制动转速超过理想空载转速时的功率反向回馈制动不改变电路的连接方式也不需要外部制动电阻。它发生在电机实际转速高于理想空载转速的时候。他励直流电机的理想空载转速 (n_0) 由 (n_0 U_a / (C_e \Phi)) 决定。当电机被负载加速到 (n n_0) 时反电动势大于电枢电压电枢电流方向自然反向电磁转矩反向变成制动转矩。此时的功率流动是轴上机械能转换为电能由电机回馈给电网。电压方程自动变为[ U_a E_a R_a i_a L_a \frac{di_a}{dt} ]但因为 (E_a U_a)所以电枢电流为负功率 (P U_a \cdot i_a 0)电机处于发电状态。回馈制动的三种典型场景电车下坡时重力分力拖动电机超速吊车重物下放时电机转速被倒拖超过 (n_0)以及改变电枢电压调速时电压突然降低导致瞬间 (n n_0)。回馈制动的经济性最好但只在转速超过 (n_0) 的区间有效不能单独把电机从高速制到零通常与其他制动方式配合使用。制动方式电路操作制动转矩范围能量去向是否需要限流电阻能否制到零能耗制动电枢脱网并接 (R_b)随转速线性衰减消耗在电阻上需要可接近零反接制动电枢反接电枢电源反极性大且相对恒定消耗在电阻电源必须串大电阻可制到零需及时切电回馈制动不需改变接线随超速量变化回馈电网不需要不能3. 在 MATLAB 中搭他励直流电机制动仿真的完整步骤3.1 用 m 文件编写他励直流电机状态方程模型最直接的方式是用微分方程做数值积分而不是直接用 Simulink 搭模块。m 文件的好处是模型代码完全透明参数调整直接改变量批量跑不同制动电阻和负载条件的工况非常方便。定义状态向量 (x [i_a; \omega])根据电压方程和运动方程写出状态导数函数function dx motor_brake(t, x, param) % 状态x: x(1)电枢电流ia(A), x(2)机械角速度omega(rad/s) ia x(1); omega x(2); % 电枢电压Ua能耗制动时Ua0反接制动时Ua-UN回馈制动时UaUN Ua param.Ua; % 反电动势 Ea Ce*Phi*omega Ea param.Ce_Phi * omega; % 电枢回路电阻电枢电阻外部串入电阻 R_total param.Ra param.Rext; % 电流变化率 di/dt (Ua - Ea - R_total*ia) / La dia (Ua - Ea - R_total*ia) / param.La; % 电磁转矩 Te Ct_Phi * ia Te param.Ct_Phi * ia; % 角加速度 domega/dt (Te - TL) / J domega (Te - param.TL) / param.J; dx [dia; domega]; end函数接收时间 (t)、状态向量 (x) 和结构体参数param。注意param.Ce_Phi和param.Ct_Phi分别表示 (C_e \Phi) 和 (C_T \Phi) 的乘积值单位分别是 V/(rad/s) 和 N·m/A。这里采用了简化写法把每极磁通 (\Phi) 与常数合并默认励磁电流恒定、磁路不饱和这是他励直流电机分析的通行前提。当需要分析弱磁调速时Ce_Phi应写成 (\Phi(i_f)) 的函数但制动分析一般不涉及。R_total是电枢绕组电阻和外部串入电阻之和。能耗制动时param.Rext就是制动电阻 (R_b)反接制动时是限流电阻 (R_p)。通过改变param.Ua和param.Rext的值同一个状态方程函数可以模拟所有制动方式这就是 m 文件建模的复用性。3.2 直流电机主程序参数表、ode45 求解与三种制动方式调用主程序负责定义电机参数、设置制动方式、调用 ode45 求解器并绘制曲线。电机参数的典型值如下表实际分析时替换为所研究的电机铭牌数据参数符号典型值单位额定电枢电压(U_N)220V额定电枢电流(I_N)40A电枢电阻(R_a)0.5Ω电枢电感(L_a)0.015H转动惯量(J)0.8kg·m²额定转速(n_N)1500rpm电动势常数(C_e \Phi)1.32V/(rad/s)主程序的完整代码%% 他励直流电机制动过程分析主程序 clear; clc; close all; % 电机参数定义 param.Ra 0.5; % 电枢电阻(ohm) param.La 0.015; % 电枢电感(H) param.J 0.8; % 转动惯量(kg*m^2) param.Ce_Phi 1.32; % Ce*Phi, V/(rad/s) param.Ct_Phi 9.55 * param.Ce_Phi; % Ct*Phi, N*m/A param.TL 5; % 负载转矩(N*m)制动过程中假设恒定 UN 220; % 额定电枢电压(V) % 工况1能耗制动——电机先稳定运行t0.2s时电枢脱网接制动电阻 param.Ua UN; param.Rext 0; x0 [30; 1500*pi/30]; % 初始电流30A初始转速1500rpm换算为rad/s t_span1 [0 0.2]; % 电动阶段运行0.2s建立初始状态 [t1, x1] ode45((t,x) motor_brake(t,x,param), t_span1, x0); param.Ua 0; % 电枢脱网 param.Rext 2.0; % 制动电阻2ohm t_span2 [0.2 1.5]; % 制动阶段持续1.3s x_brake_start x1(end, :); % 以电动阶段的终值为制动阶段初值 [t2, x2] ode45((t,x) motor_brake(t,x,param), t_span2, x_brake_start); t_all [t1; t2]; x_all [x1; x2]; n_all x_all(:,2) * 30/pi; % 角速度转转速(rpm) figure; subplot(2,1,1); plot(t_all, x_all(:,1), b-, LineWidth, 1.5); xlabel(时间 (s)); ylabel(电枢电流 (A)); title(能耗制动电枢电流变化); grid on; subplot(2,1,2); plot(t_all, n_all, r-, LineWidth, 1.5); xlabel(时间 (s)); ylabel(转速 (rpm)); title(能耗制动转速变化); grid on;代码的逻辑说明电动阶段先用 0.2 秒的仿真让电机达到稳态再把稳态值作为制动阶段的初始条件。这样比直接假设一个初始转速更符合物理过程因为仿真得到的初始电流与初始转速是自洽的不会出现“电流 30A 但转速和反电动势对不上”的矛盾。param.Ct_Phi 9.55 * param.Ce_Phi中的 9.55 是 (60/(2\pi))用于转矩常数和电动势常数的单位换算这个关系对任何他励直流电机都成立。角度与弧度换算1500*pi/30是把 rpm 转成 rad/s。如果直接用一个时间区间跑仿真需要在积分过程中动态改变param.Ua处理起来要写事件函数Events比两阶段调用方式复杂。当前这种“分段积分、终值传递”的做法更清晰也便于对比不同制动电阻下的效果。3.3 三种制动方式仿真的差异化处理能耗制动需要改的只有param.Ua 0和param.Rext R_b。反接制动的关键差异是param.Ua -UN且Rext必须取足够大的限流值运行到转速接近零时停止仿真。回馈制动的建模比较特殊不需要改变任何参数只需让转速初始值高于 (n_0) 即可% 回馈制动初始转速高于理想空载转速1600rpm电枢仍接额定电源 param.Ua UN; param.Rext 0; x0 [10; 1600*pi/30]; % 初始电流10A转速1600rpm n0 t_span [0 0.8]; [t, x] ode45((t,x) motor_brake(t,x,param), t_span, x0); n x(:,2) * 30/pi; figure; plot(t, x(:,1), b-, LineWidth, 1.5); hold on; plot(t, n/100, r--, LineWidth, 1.5); % 转速除以100便于同图显示 xlabel(时间 (s)); ylabel(电流(A) / 转速/100 (rpm)); legend(电枢电流, 转速/100); title(回馈制动过程); grid on;回馈制动的初始转速 1600 rpm 对应的同步转速 (n_0 U_N/(C_e \Phi) \approx 220/1.32 \approx 166.7) rad/s折算约 1592 rpm因此 1600 rpm 已经超过了 (n_0)。仿真结果里可以看到电流从一开始就是负的电磁转矩也是负的电机在发电减速直到转速降到 (n_0) 以下电流变为正重新回到电动状态。回馈制动仿真一个容易踩的坑是初始电流符号。如果初始时 (n n_0)反电动势大于端电压电流自动为负。不要把初始电流写成正数去“强行”模拟那样 dt 起算的暂态过程会先经历一个电流换向阶段和实际物理不符。初始状态应该用稳态关系 (i_a (U_a - E_a)/R_a) 直接计算让仿真从物理平衡点起步。4. 制动电阻怎么定、仿真参数怎么设关键参数的计算与判读4.1 电枢回路串电阻的选型从允许电流反推电阻值能耗制动和反接制动都需要选外部电阻选择依据是制动瞬间的峰值电流。制动开始时转速还没降下来反电动势最大此时若有外加电压反接则电流最大否则次之。允许最大电流工程上取 ([1.5, 2.5] \times I_N)重载或频繁制动时取下限轻载时取上限。用 MATLAB 做参数扫描比手动算更直观。把制动电阻 (R_b) 从 0.5Ω 到 4Ω 拉一组值每个值跑一次仿真记录制动时间和电流峰值画成曲线看趋势Rb_values [0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0]; peak_current zeros(size(Rb_values)); brake_time zeros(size(Rb_values)); param.Ua 0; % 能耗制动 param.TL 0; % 空载制动便于观察纯电磁制动效果 for k 1:length(Rb_values) param.Rext Rb_values(k); x_start [20; 1500*pi/30]; t_span [0 3]; [t, x] ode45((t,x) motor_brake(t,x,param), t_span, x_start); peak_current(k) min(x(:,1)); % 电流反向最大幅值 % 转速降到初始值5%以下的时间视为制动完成 n x(:,2) * 30/pi; idx find(abs(n) 1500*0.05, 1); if isempty(idx) brake_time(k) NaN; else brake_time(k) t(idx); end end figure; subplot(1,2,1); plot(Rb_values, abs(peak_current), bo-, LineWidth, 1.5); xlabel(制动电阻 (Ω)); ylabel(电流峰值 (A)); title(能耗制动电阻与电流峰值关系); grid on; subplot(1,2,2); plot(Rb_values, brake_time, rs-, LineWidth, 1.5); xlabel(制动电阻 (Ω)); ylabel(制动时间 (s)); title(能耗制动电阻与制动时间关系); grid on;min(x(:,1))取的是电流最小值能耗制动时电流反向为负所以用min找反向峰值。转速降到初始值 5% 以下定义为制动完成这个阈值不是标准定义实际工程也可以用“转速低于额定值的 3%~10%”或者直接看电流是否衰减到接近零来判断。从曲线可以看到明显规律电阻越小峰值电流越大制动时间越短两者的变化趋势反向。选型就是在允许电流峰值和允许制动时间之间取折中。4.2 反接制动限流电阻与切换时刻的配合反接制动的限流电阻按 (R_p U_N / (2 I_N) - R_a) 估算使制动瞬间电流不超过 (2 I_N)。但要注意这个电阻值是按电压 220V 和反电动势叠加估算的实际反电动势随转速变化所以电流峰值在线性下降到零之前的每个时刻都不相同。仿真中观察限流电阻是否合适的指标是电流曲线的包络——理想情况下整个制动过程中电流峰值不超过设定限且不出现长时间电流平台。反接制动的另一个核心参数是切换时刻。仿真中可以用事件函数检测转速过零function [value, isterminal, direction] speed_zero_event(t, x, param) value x(2); % 角速度 isterminal 1; % 触发后终止积分 direction -1; % 仅检测转速下降穿越零的方向 end主程序中设置options odeset(Events, (t,x) speed_zero_event(t,x,param));并传入ode45。转速过零时ode45返回的x(end,2)会非常接近零此时终止积分仿真结束。切换时刻的意义是如果在这个时刻不切除电源电机会反向启动从制动状态切换到反向电动状态这就是“反接制动必须防止反转”的仿真表现。还有一类问题是频繁制动时电阻的热容量校验。仿真输出的电流曲线积分 (I^2 t) 就是电阻的发热能量指标。MATLAB 可以用trapz(t, x(:,1).^2)计算电流平方对时间的积分再乘以外串电阻值得到能耗能量。对发热要求严格的场合这个值应小于制动电阻允许的短时过载能量指标。4.3 对结果判读要注意的 3 个常见误读第一个误读是把电枢电流过零当成制动结束。能耗制动中电流过零时转速也接近零这个判据勉强成立但在反接制动中电流过零的时刻是转速刚刚开始反向的临界点此时电机已经越过零速开始反转制动过程早就该在过零之前结束。判据要和制动方式匹配。第二个误读是不区分负载转矩方向。前面仿真里param.TL 5默认负载转矩方向与转速方向相同是阻力矩起帮助制动的作用。但位能性负载的转矩方向恒指向重物一侧转速为正时它是阻力矩转速被制到零以后它会拖着电机反转变成驱动力矩。不考虑方向变化仿真的后半段会失真。处理方式是把param.TL写成转速方向的函数param.TL sign(x(2)) * TL_mag或者单独判断正反转区间。第三个误读是忽略电枢电感。电感 (L_a) 的值虽然在稳态计算中不起作用但在制动启动瞬间的电流上升率上作用很大。忽略电感意味着电流瞬时达到稳态计算值会高估制动初期的电流峰值在评估换向器火花风险时得出偏乐观的结论。5. 用 Simulink 验证 m 文件模型的三个控制点m 文件模型结果可靠的前提是微分方程没有写错。一个简单而有效的验证方法是搭一个 Simulink 模型做交叉对照。Simulink 里搭他励直流电机不需要自己画积分器直接用 Simscape Electrical 的 DC Machine 模块或者用 Simulink 标准库的积分器搭三个子模块——电枢回路方程、运动方程、反电动势与转矩关联。最省事的路径是直接调 Simscape Electrical 库里的DC Machine恒励磁模块参数面板里的电枢电阻、电枢电感、转动惯量、额定电压和额定转速与 m 文件的参数一一对应。对照的验证方法两种模型分别仿 2.2 节里能耗制动的工况把电枢电流和转速图像叠在一张图上画。差异小于 2% 说明 m 文件建模无误。Simulink 模型的优势是后续改电路结构方便——想观察能耗制动电阻并联一个续流二极管的效果直接拖一个二极管模块就完成不用改方程。m 文件的优势是批量扫描快、参数清晰、不用受 Simulink 求解器步长的约束。6. 制动过程仿真的加速收敛技巧从初始条件到求解器容差仿真收敛问题和“算得慢”多数不是微分方程本身的困难而是初始条件或求解器选项不恰当。他励直流电机的电枢电感通常很小如果初始电流与稳态值偏差大ode45 会自动把步长压得很小去追踪电流快速变化导致仿真时间成倍增加。更麻烦的是当电枢电流接近零而转速较高时状态导数对电流的依赖变弱积分器可能误判为刚性系统浪费大量时间。一个实用的做法是用稳态关系计算初始条件而不是随意给值。稳态时 (\frac{di_a}{dt} 0) 且 (\frac{d\omega}{dt} 0)由方程可直接算出电流和转速的稳态解析值。比如空载稳态运行时 (i_a \approx 0)(n \approx n_0)直接设x0 [0; n0*pi/30]即可让仿真从平衡点起步。如果负载不为零则 (i_a T_L / (C_T \Phi))再由电压方程反推转速两步计算就能得到精确初始状态。求解器选项也值得调整。默认的相对容差 (10^{-3}) 对波形趋势够用但对制动时间这种需要“从曲线中找过零时刻”的指标不够精确。把odeset(RelTol, 1e-6, AbsTol, 1e-7)传进去过零时刻的精度能提升一个量级代价是计算时间可能增加一到两倍。制动过程的实时性要求不高这个代价值得付出。尤其当仿真的最终目标是提取“转速降到 5% 所需时间”这类指标时容差不够会导致 find 函数找到的索引位置偏移好几个时间步长进而让制动时间产生百分之几的误差——这个误差在选型比较中足以改变结论。对于频繁调整参数做批量扫描的工况可以考虑把状态方程函数改用file风格而不是嵌套匿名函数并把param改为全局变量省去每次调用时传递结构体的开销。收益不大但对几百组参数的扫描能节省约 15% 的时间。更值得关注的是用parfor并行计算不同制动电阻下的仿真结果——每组仿真之间没有数据依赖天然适合并行在四核心电脑上可以接近线性加速。MATLAB 的tspan设置建议用双元素形式[0 1.5]而不是多元素向量0:0.01:1.5。双元素形式让 ode45 自己决定输出步长只会输出必要的插值点在拟合曲线时用deval函数在需要的时间点取值这样既保证了求解精度又控制了数据量。多元素向量会强制积分器在每个指定时间点输出结果看似精密实际拖慢求解过程。事故处理技巧如果仿真输出全是 NaN先查日志看是在哪个时间步出现的然后把对应时刻的状态打印出来。绝大多数 NaN 出现在反接制动时间点附近——这个时刻电流和反电动势都接近零电流为分母的表达式可能出现除零。把状态方程里的除法改为带eps保护的形式比如dia (Ua - Ea - R_total*ia) / (param.La 1e-12)就能规避这类问题。这种处理在数值上是无感的因为1e-12相对于实际电感值完全可以忽略。本文还有配套的精品资源点击获取
返回列表