ARTICLE DETAIL

资讯详情

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

增程式发电系统电压环的二自由度控制设计与实践

增程式发电系统电压环的二自由度控制设计与实践 1. 为什么增程式发电系统需要一个“更好的电压环”这几年增程式混动车型热度一直不减我身边好几个做BMS和电机控制的同行都转去做增程器了。说起来增程器这套系统在结构上并不复杂发动机驱动永磁同步电机发电发出来的交流电经过PWM整流后灌到直流母线上再给动力电池充电或者直接驱动后级的牵引电机。真正让人头疼的反而是看起来“最不起眼”的直流母线电压控制环节。先说一个我实测过的现象。我手头有一套基于Boost拓扑的增程式发电实验平台永磁同步电机额定功率45kW直流母线目标电压设成DC 400V。最开始用的就是传统PI电压外环加电流内环的双环结构空载情况下母线电压纹波控制在±3V以内表现还不错。但只要模拟整车大功率急加速负载瞬间从5kW跳到35kW母线电压当场跌落超过38V即使PI参数反复整定恢复时间也要180ms以上。如果发电机转速在2000rpm附近、此刻系统前向通道增益不够还伴随低频振荡——那种电压来回“喘振”的波形看着就让人心里发毛。这个现象背后其实是一个经典的控制本质问题电压环既要“跟得住”——让母线电压快速追踪给定值又要“扛得住”——抑制负载突变、发电机转速波动带来的扰动。传统PI控制器只有一个误差信号入口它的比例和积分增益一旦确定跟随性和抗扰性就绑死在一起了。你想让负载突变时电压跌落小就得上调比例增益结果空载启动或者转速阶跃时超调量暴涨你想让启动过程稳一点就得压一压响应带宽结果负载突变时母线电压拉不回来。这种“跷跷板”矛盾在增程式发电系统里尤其明显因为发电机的转速是随时变的整流器工作点也会随之漂移控制器得在一个很宽的工作范围内保持稳定。我踩过不少坑之后最终确定下来的方案是给电压环引入二自由度控制结构也就是把“目标值跟随控制器”和“扰动抑制控制器”拆开各自独立整定。这块内容很多教材上只是提了一嘴“二自由度PID”但真正在增程式永磁电机发电系统里落地时坑比想象中多得多。这篇博文就把我这套系统的完整设计过程、参数整定方法以及实测数据摊开讲给正卡在电压环调试上的同行一个可以直接抄作业的参考。2. 电压环建模与控制需求拆解2.1 从主电路拓扑出发理解“电压环到底在控什么”在设计控制器之前得先把被控对象摸清楚。增程式永磁电机发电系统的主电路通常有两种方案一种是“AC-DC-AC”架构永磁电机输出三相交流电经过PWM整流器直接变换为直流电再并入直流母线另一种是在整流器和母线之间加一级Boost变换器先把整流后的电压抬升到稳定目标值。我这边采用的是第二种方案因为Boost级可以放宽对发电机转速的要求发动机在低转速区间工作时也能维持母线电压稳定。如果忽略高频开关分量Boost变换器在连续导电模式下的小信号模型可以用一个一阶惯性环节近似这是做控制器设计时最常用的简化方式。电压环的传递函数可写为G(s) Vdc(s) / d(s) Vin / [L·C·s² (L/R)·s 1]其中Vin是Boost输入侧等效电压L是Boost电感C是母线电容R是等效负载电阻。这个二阶模型实际还叠加了PWM整流器的延迟环节通常用一个一阶惯性环节e^(-τs)近似τ取1~2个开关周期。搞懂这个模型之后一个关键认知就出来了电压环的被控对象在不同负载电流下极点是会漂移的。大负载时R变小系统阻尼增加极点往左半平面远离虚轴移动轻载时R很大甚至接近空载模型接近纯LC振荡环节相位裕度变小控制器一不小心就会激发振荡。这也是为什么增程器在低负载工况下比满负荷时更容易出现电压抖动。2.2 增程式发电场景下的三大动态扰动源我梳理了这套系统在整车实际运行中遇到的动态扰动总结下来主要有三类。第一类是最常见的负载突变。整车的驱动电机功率随油门踏板位置随时变化加速时从直流母线上抽取的电流可能瞬间上升几十安培甚至上百安培对应母线电压的瞬态跌落。这一类扰动的作用点在电压环的反馈通道外部控制器的抗扰性能直接影响整车的驾驶体验。第二类是发动机转速波动。增程器里的发动机不像并网发电机组那样稳定运行在额定转速它要跟随整车功率需求在一定范围内调速比如从1500rpm到4200rpm之间动态调整。转速变化会直接影响永磁电机反电动势进而改变Boost输入侧的电压Vin导致电压环模型中的前向增益发生变化。转速阶跃时相当于给电压环加了一个幅值不小的扰动输入。第三类是整流器死区效应和电流采样误差引起的周期性扰动。这部分不属于低频动态范围但会叠加在母线电压纹波上如果控制器带宽设计不当很容易把它们放大。我之前遇到过母线电压在开关频率附近出现明显纹波尖峰排查到最后发现是电压采样滤波器的截止频率选得过高导致PWM开关纹波直接串进了反馈信号。三类扰动对电压环的需求是不一样的负载突变需要控制器有足够高的带宽来实现快速恢复发动机转速波动需要控制器对前向增益变化不敏感采样和死区扰动则需要控制器自身的噪声抑制能力够强。传统PI想要同时满足这三个需求几乎不可能做到这就是我要换二自由度结构的根本原因。2.3 传统PI在增程式场景下的“跷跷板难题”量化分析为了把问题量化我在Matlab/Simulink里对传统PI电压环做了频域扫描。实验平台的参数是母线电压目标值DC 400VBoost电感5mH母线电容2mF等效负载电阻在空载和满载之间变化开关频率10kHz。当作电压环带宽测试时我逐渐调高PI比例系数观察开环传递函数的穿越频率。当穿越频率从50Hz提升到120Hz附近时负载突变的电压恢复时间确实从400ms缩短到了180ms。但与此同时母线电压阶跃响应比如目标值从380V调到400V时的超调量也从5%涨到了16%部分工况下甚至出现了两次振荡才稳定下来的情况。再把穿越频率继续往150Hz推就会看到相位裕度跌破30度空载阶段开始出现2Hz左右的低频“喘振”此时就算把积分系数调到很小也压不住。这个测试让我彻底确认了传统PI在这个场景下的天花板不是PI参数的整定技巧问题而是结构本身的自由度不足。目标值跟随特性和负载扰动抑制特性共用同一组增益参数这就是“跷跷板”的数学根源。3. 二自由度控制器结构选择与前向设计3.1 滤波器前置型VS前馈补偿型为什么我最后选了前者二自由度控制在工业上并不是新概念它有多种实现结构工程上常见的有三种滤波器前置型、前馈补偿型和回路整形型。滤波器前置型的思路是在传统PI回路外面再增加一个前置滤波器F(s)控制器输出u(s) PI(s)·[F(s)·r(s) - y(s)]相当于给定值先经过一个整形环节再进入控制回路。前馈补偿型则是在PI基础上并联一个前馈通道直接根据给定值的变化生成前馈量。我在做方案对比实验时发现前馈补偿型对模型精度要求太高。我们对Boost前向增益的估计本身就受温度和电感饱和程度影响一旦模型失配前馈量就会变成额外的扰动输入。滤波器前置型的结构简单不改变原有回路的极点布局对模型误差的容忍度更高现场调试起来也更顺手。3.2 前置滤波器F(s)的设计目标与极点配置过程最终我采用的结构由两部分组成一个PI反馈控制器负责扰动抑制一个二阶低通前置滤波器F(s)负责给目标值整形。PI反馈控制器的设计目标是最大化抗扰性能。设计时暂时把F(s)1直接用带宽法和相位裕度法整定PI参数。具体做法是让开环传递函数在目标穿越频率处相位裕度保持在50°以上我选定的穿越频率是140Hz对应的PI参数为Kp0.85Ki80。前置滤波器F(s)的设计目标是约束目标值突变的响应速度。我需要系统在给定值阶跃时做到无超调或者微超调同时不影响反馈回路已经定好的抗扰带宽。经过多次仿真对比我确定了一个二阶低通形式F(s) ωn² / (s² 2·ζ·ωn·s ωn²)其中ωn2π·30ζ1.05。这个滤波器会让给定值变化被“柔化”母线电压的阶跃响应变成典型的临界阻尼单调上升曲线实测上升时间约18ms完全无超调。而系统的抗扰带宽仍然保持在140Hz负载突变时的恢复速度和纯PI参数最优状态几乎一致。3.3 与传统PI、串级PID的对比实验结果记录我在同一套实验平台上分别测试了传统PI参数最优整定、串级PID电压外环加电流内环均用PID和二自由度控制器。测试条件统一为母线电压从空载状态突加35kW负载记录电压跌落深度和恢复时间。传统PI的最优结果是跌落38V恢复时间180ms恢复过程有轻微振荡。串级PID因为多了一个电流内环抗扰能力有所提升跌落约28V恢复时间120ms但代价是阶跃响应超调量达到11%在发动机转速阶跃时还出现过一次电流超调报警。二自由度控制器的表现是跌落到26V恢复时间95ms电压曲线平滑无振荡同时目标值阶跃响应依然维持无超调。实验结果强烈支持一个结论二自由度控制器在增程式发电系统的电压环上确实实现了“跟随”和“抗扰”的解耦而这恰恰是传统单回路结构无法同时做到的事。4. 控制器参数整定与鲁棒性验证方法4.1 基于极点配置的参数整定实操步骤二自由度控制器的参数整定听起来玄乎但实际操作时可以分成三个步骤每一步都有明确的依据。第一步确定被控对象模型参数。需要通过实验测出Boost变换器的开环增益和极点在各个负载工况下的变化范围。我通常采用的方法是给一个小的占空比阶跃扰动记录母线电压响应曲线用最小二乘拟合出传递函数参数。这一步很关键模型参数不准后面所有的设计都白搭。第二步整定PI反馈参数。这个阶段把F(s)旁路按传统PI的整定方法来我建议直接采用带宽法。先定目标穿越频率建议落在开关频率的1/70到1/50之间。我们开关频率10kHz目标穿越频率取140Hz。然后测出开环传递函数的幅频曲线和相频曲线用“相位裕度不小于50°”作为约束条件反推Kp和Ki。如果相位裕度不足先减Kp保持Ki不变观察穿越频率的变化。第三步设计前置滤波器F(s)同时验证闭环传函的阶跃响应。F(s)的带宽应该明显低于PI回路的带宽一般取目标穿越频率的1/5到1/3。因为F(s)太低会把给定值的响应拖慢太多太高则起不到限制超调的作用。ζ取1.0到1.1之间即可这是一个典型的临界阻尼配置能保证无超调且上升时间最短。我在实际调试中把这套流程固化成了一个Excel计算表输入模型参数和目标穿越频率自动算出PI参数和F(s)参数。每次换平台或者换工况只需要重新测一波模型参数整定时间从一个星期压缩到了半天。4.2 鲁棒性测试从额定点到极限工况参数整定完成后不能只盯着额定工况看增程器的工况覆盖范围非常宽必须做鲁棒性验证。我做的第一项测试是宽负载扫描从空载R∞到满载R4.6Ω每隔10%负载记录一次电压环开环传递函数的相位裕度和增益裕度。测试结果是相位裕度最小出现在空载附近约42°增益裕度始终大于12dB虽然低于额定点的50°但仍在稳定边界内。这印证了我之前的判断轻载工况是二自由度控制器需要重点盯防的区域如果空载相位裕度小于35°就该适当降低PI增益。第二项测试是转速阶跃鲁棒性。把发动机转速从1800rpm阶跃到3200rpm等效为Vin从250V突变到420V。传统PI在这个测试中会出现15%左右的电压超调而二自由度控制器实际测到的电压波动控制在7%以内这是因为F(s)滤波器把给定值的等效变化也做了平滑处理。第三项测试是参数摄动适应。人为把母线电容参数在仿真中改动±20%模拟电容老化观察控制器是否失稳。结果是PI的恢复时间延长了约12%但仍能稳定。实测中我还把电流采样滤波器的截止频率从2kHz调到了1.5kHz来模拟传感器老化电压环的相位裕度变化在5°以内说明控制系统对传感器参数变化有一定的鲁棒性。5. 数字化实现中的关键细节与坑点5.1 离散化方法与采样延迟补偿二自由度控制器在模拟域设计好了之后落地到MCU/DSP里还有一个数字化过程。这里有个非常容易出问题的点就是离散化。我在项目初期用的是MATLAB的c2d函数直接把PI和F(s)离散为Z域模型采样频率和PWM开关频率一致都是10kHz。第一版烧进DSP里测试结果让我很不解仿真里表现良好的参数实测母线电压在目标值附近出现了周期性的小振荡频率大约在5Hz左右。后来排查发现是离散化方法选错了——我用的是零阶保持器ZOH离散化但对于连续域设计结果挪到离散域应该先考虑带采样延迟的模型再进行离散化或者采用匹配极点零点的离散化方法。我当时的修正办法是先建立一个包含一拍采样延迟即e^(-Ts·s)的广义被控对象模型把延迟也纳入到设计模型中去然后重新整定PI参数。这样离散化之后相位裕度的损失被显式地考虑进了设计过程低频振荡问题随即消失。这里分享一个经验在做数字控制器的频域校核时别只看连续域的波特图一定要把离散化后的Z域模型也画出来对比一下。很多工程师跳过了这一步结果在模拟调试时发现系统不稳定浪费大量时间。5.2 积分饱和、死区补偿与启动保护逻辑电压环的积分器在增程器系统里有个天生的麻烦发电系统启动瞬间母线电压从0开始爬升给定值和实际值偏差巨大积分器会在启动过程中迅速饱和导致母线电压第一次冲到目标值以上很多。我处理的办法分两层。第一层是常规的抗积分饱和当控制器输出到达占空比限幅值时冻结积分器的累加第二层是启动阶段分段爬坡把电压给定值从0开始按一定斜率逐渐上升到目标值上升斜率取200V/s。这样从源头上减少了启动瞬间的积分饱和。实测下来母线电压从0爬到400V全程无超调时间约2秒满足整车启动要求。另一个容易踩的坑是整流器死区效应。死区时间在电压环的低频模型里体现不出来但它会在稳态时产生一个与电流方向相关的等效电压误差导致母线电压静差。只靠电压环积分器虽然能消除静差但会让积分器一直处于一个偏置状态动态响应变差。我在电流内环层面加了死区补偿按电流采样方向和死区时间直接补偿占空比电压环的积分器输出回到0附近的正常工作区间。5.3 一套可直接参考的MCU实现伪代码下面这段伪代码是我在TMS320F28379D上实现的二自由度电压环控制框架核心逻辑可以直接移植到其他MCU平台。// 电压环二自由度控制10kHz中断调用 // 输入: Vdc_ref, Vdc_fb // 输出: Iref_d (作为电流内环的给定) float F_filter_state_x1, F_filter_state_x2; // F(s)滤波器状态变量 float PI_integral; // PI控制器积分项 float Vref_filt; // 滤波后的电压给定值 float error_fb; // 反馈误差 void VoltageLoop_2DOF(float Vdc_ref, float Vdc_fb) { // 1. 前置滤波器F(s)更新柔化给定值 // 采用双线性变换后的二阶差分方程实现 Vref_filt b0 * Vdc_ref b1 * F_filter_state_x1 b2 * F_filter_state_x2; F_filter_state_x2 F_filter_state_x1; F_filter_state_x1 Vref_filt a1 * F_filter_state_x1 a2 * F_filter_state_x2; // 2. 误差计算 error_fb Vref_filt - Vdc_fb; // 3. 带有抗饱和的PI更新 if (PI_output IMAX || PI_output 0) { PI_integral 0; // 冻结积分 } else { PI_integral Ki * T_s * error_fb; // 积分限幅 PI_integral clamp(PI_integral, IINT_MIN, IINT_MAX); } PI_output Kp * error_fb PI_integral; // 4. 输出限幅到电流内环给定范围 Iref_d clamp(PI_output, IREF_MIN, IREF_MAX); }注意前置滤波器的差分方程系数b0、b1、b2、a1、a2不是随便填的必须根据采样频率Ts和连续域F(s)的ωn、ζ用双线性变换计算得到。我用的是MATLAB的c2d(tustin)方法算出来的系数然后一次性固化到代码里。高频采样平台的浮点运算开销非常小在28379D上跑这套逻辑耗时只有不到2μs完全不用担心占用问题。6. 实测数据复盘与硬核避坑清单6.1 负载突变实测对比数据最后放出我实测的一组对比数据工况条件是发电机转速稳定在2600rpm发电系统从空载直接突加阻性负载到满载35kW记录母线电压跌落最低点和恢复到400V±2%的时间。控制方案电压跌落深度恢复时间超调量备注传统PI最优整定38V180ms阶跃响应16%负载突变后有小振荡串级PID28V120ms阶跃响应11%转速阶跃时电流报警二自由度PIF(s)26V95ms阶跃响应0%全程无振荡从数据里可以清晰看到二自由度控制器的抗扰能力几乎与串级PID持平但目标的跟随性能却做到了零超调这是串级PID做不到的。对于整车控制器来说零超调意味着不用担心母线过压损坏IGBT器件对安全性有实质性帮助。6.2 我踩过的几个高频坑坑一模型阶数取高了反而过拟合。最初我也尝试过把LCL输出滤波器的高频特性也建进模型结果设计出来的控制器在低频段性能反而变差。后来回归到Boost的一阶等效模型把高频模型的不确定性交给相位裕度来兜底。坑二前置滤波器和回路带宽不能离得太近。我做过一个对照组F(s)带宽取到90HzPI回路穿越频率140Hz两者相距不足一个十倍频程。对应母线电压阶跃响应出现了明显的“阶梯效应”——电压上升一段停一下再上升这是因为目标值整形后的频率成分与PI回路的动态过程产生了耦合。把F(s)带宽压到30Hz之后这个问题彻底消失。所以两者之间至少保持4倍以上的频率间距。坑三负载突变的大小直接决定参数重新整定与否。如果应用场景从小功率5kW扩展到超大功率50kW以上电感电流连续模式到断续模式的转换点会变化Boost传递函数的极点位置可能大幅移动原来的PI参数可能不再满足幅值裕度要求。碰到这种情况建议要做全工况的频域扫描复核而不是只靠时域波形判断。坑四电压采样滤波器的相位延迟不可忽视。我有一次为了让母线电压纹波更小把采样滤波器的截止频率从2k降到了800Hz结果电压环的实际相位裕度下降了约12°接近系统稳定边界。这里提醒各位电压采样滤波器的相位延迟和电压环带宽直接相关滤波器的截止频率至少要放在目标穿越频率的10倍以上否则要把它的相移纳入到控制对象模型里一起设计。6.3 调试过程中效率最高的顺序最后聊聊整个控制器的调试顺序这个顺序是我反复摸索出来的按这个顺序来可以少走很多弯路。先从开环模型辨识开始先给小占空比阶跃记录完整的母线电压响应曲线拟合出传递函数参数。然后断开F(s)单独整定PI反馈回路用频域分析仪或者注入正弦扰动的方法实测开环响应确保相位裕度达标。接着把F(s)接上先让给定值做小幅阶跃确认阶跃响应无超调之后再做突加负载测试看抗扰性能是否达到设计指标。最后做全工况扫描和鲁棒性测试包括转速阶跃、参数摄动模拟、死区补偿校验。这套流程中我特别想强调的是“先模型后参数”的道理。很多工程师拿到控制器就急着调Kp、Ki结果调了一周也找不到全局最优。先花一天时间把被控对象摸清楚之后所有参数整定都变成了有依据的数学计算效率和可靠性都会高很多。从我个人体会来说增程式永磁电机发电系统的电压环绝对不是一个“随便挂个PI都能跑”的环节。整车运行工况复杂负载动态范围大发动机转速波动频繁传统PI结构的自由度确实不够用。二自由度控制器结构清晰、整定流程标准化配对数字化实现也没有本质难度非常适合作为增程器发电系统电压环的默认方案。如果你现在正被电压环的动态性能压得头疼不妨按这篇文章里的思路重新设计一版应该能少走不少弯路。
返回列表