ARTICLE DETAIL

资讯详情

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

转速电流双闭环直流调速系统Simulink仿真与PI参数整定

转速电流双闭环直流调速系统Simulink仿真与PI参数整定 简介这份文档围绕转速电流双闭环直流调速系统仿真设计展开面向电气工程、自动化等专业学生及相关工程技术人员可帮助读者掌握双闭环调速系统的结构、原理与MATLAB/Simulink仿真建模方法。资源包内为1个doc文档压缩包整体大小1.65MB内容完整已有269人学习/下载适用于课程设计、毕业设计或工程参考。文档从系统组成与原理图入手介绍了晶闸管整流主电路、ASR转速调节器、ACR电流调节器以及转速电流负反馈嵌套连接等工作机制详细推导了电流调节器设计过程包括电流环结构框图化简、小惯性环节近似处理、PI参数计算等并在Simulink中建立仿真模型设置各模块参数、仿真算法与仿真时间运行得到波形图进而分析系统静态与动态特性、抗干扰性能。整体设计思路清晰从原理分析到建模仿真环环相扣能够帮助读者快速完成双闭环直流调速系统的设计与仿真验证。1. 转速电流双闭环是直流调速仿真的默认起步方式做直流调速仿真最怕的不是电机不转而是电流冲击把功率管烧掉。单闭环只控制转速负载突变时电流完全不受约束仿真里可能直接看到电流爆到几十倍额定。转速电流双闭环直流调速系统仿真设计要做的就是把转速外环和电流内环拆开电流环负责把电枢电流压在限幅之内转速环负责静态精度和动态跟随。这样系统对外表现出良好的抗负载扰动能力对内又能让电流按允许值快速上升。这个结构是电机控制里最经典的主从串联构型无论是课程设计还是工程原型验证都会先用它验证控制器思路。下面按我习惯的做法从模型、仿真到参数整定完整走一遍。2. 先把双闭环调速系统的传递函数和参数表列清楚2.1 串级连接中的电流环和转速环各自负责什么双闭环的层次关系是固定的转速调节器 ASR 的输出作为电流给定i_ref电流调节器 ACR 的输出去控制整流装置。换句话说转速环是外环电流环是内环。外环给内环限幅内环要响应快。启动瞬间如果给定转速较大ASR 的输出会很快到限幅值此时电流环按i_ref I_max工作以最大允许电流加速。转速接近给定后ASR 退出饱和电流给定开始下降转入转速调节。从这个结构可以看出电流环必须比转速环快得多。如果电流环响应慢转速环看到的就不再是一个近似可控的电流源而是带着滞后和振荡的电流那么外环参数怎么做都很难稳住。所以整定顺序永远是先电流环后转速环这也是下面所有步骤的前提。2.2 直流电机的连续域模型与时间常数仿真模型的核心是“电压—电流—转速”的耦合链。忽略粘性摩擦并假设磁通恒定负载扰动为T_L可以得到方程组电枢回路: U_a R_a * i_a L_a * di_a/dt K_e * ω 机械运动: K_t * i_a J * dω/dt T_L对这个方程组做拉氏变换可以得到两个常用传递函数。第一个是从电枢电压差U_a - E到电枢电流i_a的传递函数1/(L_a*s R_a)第二个是从电枢电流到转速的传递函数K_t/(J*s)。第二个是纯积分环节说明如果电流恒定转速会线性增长所以转速环一定要有积分作用否则负载扰动会造成静差。调参之前需要把参数列成一张表否则到仿真阶段会乱。我用下面这组入门参数后面整定和仿真都用它符号含义数值Ra电枢电阻1.0 ΩLa电枢电感0.02 HKe反电动势系数SI 单位0.132 V·s/radKt电磁转矩系数SI 单位0.132 N·m/AJ转动惯量0.05 kg·m²K_s晶闸管整流装置放大倍数50T_s晶闸管装置失控时间0.00167 sI_max允许最大电流12 AU_max整流输出电压限幅220 V注意Ke和Kt在 SI 单位制下数值相等但很多教材会把Ce写成V/rpm的形式这时Kt要用9.55 * Ce换算否则仿真里转矩和转速的数量级会对不上。2.3 用 Python 做一次模型预检搭 Simulink 之前我会先用 Python 把对象传递函数算一遍防止把时间常数写反。下面脚本用control库构建电流和转速对象import control as ct # 直流电机参数SI 单位 Ra 1.0 La 0.02 Ke 0.132 Kt 0.132 J 0.05 # 电磁时间常数决定电流环响应快慢 Te La / Ra # 机电时间常数转动惯量和电枢回路共同决定 Tm J * Ra / (Ke * Kt) # 电流对象U_a - E 到 I_a G_i ct.tf([1], [La, Ra]) # 速度对象I_a 到 omega是纯积分环节 G_w ct.tf([Kt], [J, 0]) print(Te %.4f s % Te) print(Tm %.4f s % Tm) print(G_i:, G_i) print(G_w:, G_w)脚本里把两个对象分开不在一个传函里合并开环增益这样 Simulink 里的模块和公式能一一对应。Te只有 0.02s说明电流环可以设计得比转速环快很多Tm约 2.87s说明转速属于慢变量。晶闸管整流装置还有大约 1.67ms 的失控时间这个时间会参与电流环参数计算不能在模型里丢掉。3. 用Simulink搭转速电流双闭环直流调速系统仿真模型3.1 Simulink 模型的最小模块清单在这个模型里我不用 Simscape 的电机物理端口免得一开始就陷入电机内部磁链问题。先用连续模块搭一个电压—电流—转速的解耦模型控制器验证通过后再换成更精细的电气模型即可。模块库路径用途StepSimulink / Sources转速给定PID ControllerSimulink / ContinuousASR、ACR 各一个SaturationSimulink / Nonlinear电流和电压限幅Transfer FcnSimulink / Continuous整流装置、电枢、机械积分SumSimulink / Math Operations反电动势反馈叠加GainSimulink / Math Operations反电动势系数KeScopeSimulink / Sinks观察转速和电流波形把模型命名为current_speed_double_loop.slx。不要在一张画布上只放两个 PID Controller 就连起来先给每个调节器配好限幅。限幅是双闭环系统的保护机制不是可选项。3.2 电流内环的搭建步骤先创建 ASR 和 ACR 两个 PID Controller初始参数放P1, I0后面统一整定。在 ACR 输出端放第一个 Saturation上限U_max下限-U_max表示整流装置能输出的最大电压。随后把整流装置表示为K_s/(T_s*s 1)的一阶惯性环节输入是控制器输出的控制电压输出是整流后的电枢电压U_a。电枢回路传函用G_i 1/(L_a*s R_a)但需要注意这个传函的输入是U_a - E不是单纯的U_a所以要先用一个 Sum 把反电动势减掉。电流反馈直接从G_i输出引出经过一个一阶低通滤波1/(T_fi*s 1)回到 ACR 的负输入。这里先忽略电流传感器的放大系数也就是反馈系数为 1。如果实际系统里电流互感器带有变比仿真中要在反馈通道上加对应的 Gain。设置参数可以放在一个 MATLAB 脚本里比逐个双击模块改要快% sim_param_sets.m Ra 1.0; La 0.02; Ke 0.132; Kt 0.132; J 0.05; K_s 50; T_s 0.00167; I_max 12; U_max 220; T_fi 0.001; % 电流反馈滤波时间单位 s T_fn 0.005; % 转速反馈滤波时间单位 s在 Simulink 模块参数里直接填变量名例如 ACR 的 Saturation 上限填U_max下限填-U_max。这样改参数只改脚本不用来回打开模块对话框。3.3 转速外环的搭建步骤转速外环的结构更简单。在G_i输出之后接G_w K_t/(J*s)输入是电枢电流输出是机械角速度ω。如果反馈需要转成 rpm就在输出端加一个 Gain数值是60/(2*pi)如果不转直接把给定也写为ω_ref 157 rad/s对应约 1500 rpm。从机械输出引一条转速反馈经过1/(T_fn*s 1)一阶滤波后送到 ASR 的负输入端。这样转速环对象中包含电流环的闭环惯性和转速滤波惯性比直接拿测量转速怼进调节器更接近实际。ASR 输出端放第二个 Saturation上限I_max下限-I_max。这里尤其要注意ASR 限幅必须在 ACR 之前否则电流环会失去保护。3.4 运行仿真前检查的三个参数搭建完先别急着调 PI检查一张表检查项错误表现处理方式ASR 限幅是否小于等于I_max电流给定超过允许值收紧 ASR 输出限幅电流反馈极性电流环正反馈出现发散确认 ACR 负输入接的是反馈反电动势反馈方向模型变成正反馈转速飞车确认 Sum 里是U_a - E我用一组能直接跑通测试的参数放在下面这不是最终整定结果只是先把波形走出来% loose_initial_params.m Kp_i 0.1; Ki_i 5; Kp_n 0.5; Ki_n 0.1;给定 Step 设成 157仿真时间 5s。此时启动电流一般不会冲到理想值但模型结构已经对了。下一步才开始动 PI 参数。4. 双闭环调速仿真里电流环和转速环的 PI 参数整定4.1 电流环按典型 I 型系统给初值参数整定顺序必须从内往外先电流环后转速环。把 ASR 暂时只留很小的比例增益或者直接用一个常数代替i_ref先单独验证电流环。这样做的好处是电流出问题时不会被外环的积分饱和掩盖。电流环被控对象包括整流装置惯性、电枢回路和反馈滤波。把 PI 零点抵消电枢大时间常数Te小时间常数合并成T_t T_s T_fi按典型 I 型校正的阻尼比 0.707 计算Kp_i 0.5 * Te / (K_s * T_t) Ki_i Kp_i / Te用前面的参数计算Te 0.02sT_t 0.001 0.00167 0.00267s得到Kp_i ≈ 0.075Ki_i ≈ 3.75。这个结果是在忽略反电动势条件下得到的实际仿真中反电动势会削弱电流环增益所以我一般会把Kp_i上调 20% 看波形。4.2 转速环按典型 II 型系统给初值电流环闭环后可以等效成1/(2*T_t*s 1)的一阶惯性环节。转速环对象包含这个等效惯性、速度对象K_t/(J*s)和转速反馈滤波T_fn合并小惯性T_in 2*T_t T_fn。取典型 II 型系统常用的中频宽h 5tau_n h * T_in Kp_n (h 1) / (2 * h * T_in) * J / Kt Ki_n Kp_n / tau_n代入T_in 2*0.00267 0.005 0.01034s算出来tau_n ≈ 0.0517sKp_n ≈ 21.97Ki_n ≈ 424.9。这个Ki_n偏大直接跑会有明显振荡。我一般先用Kp_n 10、Ki_n 50起步再逐步增大Ki_n而不是直接落地到公式初值。4.3 从波形判断参数是否合理不要只看转速动不动。理想的启动波形是转速线性上升、电流先顶到I_max、转速接近给定后电流回落进入双闭环调节。如果电流在上升阶段就出现明显振荡首先怀疑电流环 PI而不是转速环。我习惯把波形判读和调参方向做成一张表波形现象优先调整对象调法电流启动阶段尖峰过高ACR 积分过强减小Ki_i电流振荡后发散ACR 比例过大减小Kp_i转速存在稳态静差ASR 积分不足增大Ki_n转速超调过大ASR 比例或转速滤波降低Kp_n减小T_fn突加负载后恢复慢ASR 积分 / 电流限幅增大Ki_n或提高I_max记住这个顺序先电流环后转速环先比例后积分。每次只改一个参数波形稳定后再改下一个否则很难判断是谁引起的振荡。5. 在转速反馈通道做二阶低通有源滤波器设计与仿真测试5.1 为什么用二阶低通而不只靠测速机的机械滤波如果测速发电机或编码器的转速反馈里有明显换向纹波一阶 RC 滤波虽然能压住高次谐波但要在 1kHz 处衰减 40dB 需要把截止频率压得很低这会带来严重相位滞后。二阶低通有源滤波器设计与仿真测试的价值在于每倍频程提供 12dB 衰减同时把阻尼比放在 0.707 附近能在截止频率附近保持相对平坦的幅频特性。5.2 用巴特沃斯系数生成传递函数做系统级仿真时我一般直接用传递函数代替有源电路等验证完再定电阻电容值。巴特沃斯二阶低通的传递函数为H(s) wc^2 / (s^2 2*zeta*wc*s wc^2)zeta 0.707假设转速环期望闭环带宽是 40 rad/s那么反馈滤波截止频率wc至少取 400 rad/s约 64Hz否则会吃掉转速环相位裕度。用 Python 可以快速看幅相特性import numpy as np from scipy import signal fc 64 wc 2 * np.pi * fc b, a signal.butter(2, wc, analogTrue, btypelow) w np.logspace(1, 4, 500) w, mag, phase signal.bode((b, a), w) # 打印 30Hz 和 100Hz 处相移 for f in [30, 100]: idx np.argmin(np.abs(w / (2 * np.pi) - f)) print(f, Hz 相移:, phase[idx], deg)你会看到在 64Hz 处衰减约 3dB在 160Hz 处大约衰减 12dB但在 30Hz 处相移已经接近 10°。所以最终方案里要重新看一遍转速环相角裕度不能只看幅频。5.3 有源电路的时间常数匹配如果要落到 Sallen-Key 有源电路一个简单经验值取R1 R2 R、C2 C1/2。此时阻尼比正好是sqrt(C2/C1) 0.707截止角频率wc 1/(R*sqrt(C1*C2))。反过来选R 1kΩ要实现 64Hz 截止wc ≈ 402rad/s算得C1 ≈ 3.5μFC2 ≈ 1.75μF取标准值3.3μF和1.8μF即可。把这个二阶滤波传递函数串进 Simulink 的转速反馈通道替代原来的一阶滤波再做一次从零到额定转速的启动仿真观察电枢电流纹波和转速环稳定性。若电流纹波仍大把wc降到 300rad/s若转速环出现低频振荡则把wc提高。把仿真得到的滤波传递函数换成 Sallen-Key 元件值后再跑一次启动阶跃比较i_a纹波。本文还有配套的精品资源点击获取
返回列表