高压高频电源的PID算法,听起来就是把 Kp、Ki、Kd 三个数填进代码的事,但真上手调一台输出电压上万伏、开关频率几十到几百千赫的设备时,你会发现教科书里那套 PID 公式在第一轮测试就让你怀疑人生:输出电压纹波像心电图,一加载就触发过压保护,甚至还没跑到目标值,功率管已经开始发烫。这并不奇怪,高压高频电源的闭环里,有高频变压器、倍压整流级、寄生电容和数字控制延迟,这些在普通低压电源里被随手忽略的环节,在这里全部变成了决定环路稳定性的主角。
这篇文章写给两类人。一类是刚接触高压电源、准备用数字控制做稳压稳流的工程师;另一类是已经把设备调到“能出电”、但始终不放心动态性能的开发者。我会把高压高频场景下 PID 算法的难点、环路结构选型、离散化实现细节、参数整定流程和调试中的典型坑逐一拆开,让你拿到一份可以直接照着做的工程清单。注意,这里说的不是某个特定芯片的固件配置,而是适用于大多数数字控制高压电源的通用方法论。
1. 高压高频电源的特殊性:PID在这里为什么难调
1.1 高压倍压网络让被控对象从二阶变成高阶
普通降压型电源的控制对象基本是一个二阶系统:电感电流加输出电容,占空比对输出电压的传递函数里只有一对主导极点,相位在穿越频率附近还留得住。高压高频电源不一样。为了把几百伏的原边电压升到几千伏甚至几十千伏,通常会在高频变压器副边接倍压整流电路。倍压级的好处是省二极管和电容耐压,但它同时引入了一串RC充放电节点。每个倍压单元都有自己的等效电容和等效电阻,串联起来之后,输出端等效成一个阶数更高的低通网络。
这意味着什么?PID计算时看到的“对象”不再是干净的一对极点,而是多个时间常数叠加后的高阶惯性环节。单看稳态,比例积分就能把电压稳住;看动态,系统会有更长的相位滞后,而且滞后量随负载电流和输出电压非线性变化。高压输出的分压采样电阻网络本身也带有寄生电容,反馈分压器的带宽如果不够,实际上又给环路串入一个极点,这个极点频率可能落在10kHz到100kHz之间,恰好和你要设计的穿越频率撞在一起。
还有个容易被忽视的问题:高压变压器本身。原边到副边的匝间电容折算到原边后,会和变压器漏感形成谐振峰。这个峰在频域上的位置往往在几十千赫到几百千赫,对开关频率以下的低频环路不直接产生作用,但一旦你的 PID 带宽推得太高,或者采样信号里耦合了这个频段的振铃,控制器就会把它当成真实反馈,产生一连串不可控的修正动作。
1.2 开关频率越高,延迟这把刀越锋利
高频给控制带来的核心问题不是算不快,而是延迟占比越来越大。数字PWM的零阶保持效应,在频率 fc 处的相位滞后大约是 180°×fc/fsw。如果控制器还要花一个完整的开关周期去完成ADC转换和算法计算,这一份计算延迟又会贡献 360°×fc/fsw 的相位滞后。假设开关频率 200kHz,你想把穿越频率做到 20kHz,也就是 fc/fsw=0.1,光这两项加起来就滞后了 54°。再留出被控对象本身的相位,45 度相位裕度很快就被吃光。
所以高压高频电源的带宽不可能做到普通电源那么激进。很多设备把穿越频率设计在开关频率的 1/20 到 1/10 之间,常用值大约 8~15kHz。这个数字不是拍脑袋给的,而是综合了延迟、噪声和功率器件开关损耗之后的经验范围。你要是看到有人在 500kHz 的 LLC 电源上吹嘘电压环带宽做到 80kHz,基本可以判断他要么没测过真机的相位,要么整个环路工作在某种特殊条件下,不具备普适性。
我调过的一台设备,开关频率 250kHz,最初把穿越频率按 25kHz 设计,仿真里看着相位裕度还有 40°,一上样机,轻载阶跃就出现持续衰减振荡。后来把穿越频率压到 12kHz,相位裕度回到 55°,同样的 PID 结构,什么参数都没再大改,振荡自然消失了。延迟给环路上限焊死了一条线,你在这条线之内折腾才有意义。
1.3 高压电场对采样信号的干扰不可忽略
高压高频电源的另一个独特麻烦是采样噪声。高压回路在开关瞬态的 dV/dt 非常陡,变压器匝间电容、倍压二极管的结电容都会把共模电流耦合到控制地平面。最典型的现场表现是 ADC 读数在开关动作瞬间出现尖刺,幅值可达正常信号的百分之几。这个百分之一放在电源纹波指标里可能可接受,但放进 PID 的微分项,会被放大几十倍变成占空比抖动。
| 干扰来源 | 典型频段 | 对环路的影响 |
|---|---|---|
| 开关节点 dV/dt 耦合 | 开关频率及其谐波 | 采样值叠加尖刺,微分项被放大 |
| 变压器匝间电容谐振 | 数百kHz~MHz | 高频极点,相位进一步滞后 |
| 高压分压网络寄生电容 | 10kHz~100kHz | 反馈带宽受限,等效串联极点 |
这也是为什么高压高频电源的 PID 必须把采样滤波和环路带宽放在一起考虑,不能把信号调理完全交给硬件而算法端不管。很多工程师在低压电源上调出来的 PID 参数一换到高压设备上就不正常,多半不是参数算法变了,而是采样点位的底噪完全不是一个量级。后面第五节我会专门讲这种情况怎么排查。
2. 控制环结构的选择:电压环、电流环与采样时序
2.1 单电压环在高压大动态负载下的短板
很多人一开始习惯只做电压环:采样高压输出电压,和设定值做 PID,输出直接作为 PWM 占空比。低压小功率电源这样做能跑,但高压大动态场合很快露怯。高压负载经常是电容性负载,比如充电设备。输出电压和真实电流之间存在明显相位差,电压环要同时完成“限制充电电流”和“稳住输出电压”两件事,条件有限时会顾此失彼。最直观的现象是开机瞬间占空比冲到顶,输出电容被大电流猛灌,电压超调后靠积分器慢慢拉回来,功率器件却在超调过程中承受了额外应力。
单电压环在负载突变时也缺少对电流的主动约束。输出端一旦打火,电流瞬间增大,电压环还在按“电压偏低→加大占空比”的逻辑工作,相当于火上浇油。所以在功率稍大或负载非线性明显的设备上,我基本不用纯电压环。不是电压环 PID 本身有错,而是它在高压场景下缺少一个关键的中间状态变量,导致控制器对系统真实状态的理解不完整。
2.2 电流内环+电压外环的两环结构
更可靠的结构是电流内环加电压外环。内环把高频变压器的原边电流或者高压输出的负载电流作为反馈量,用较高的带宽先压住电流动态;外环负责电压精度,把电压误差转换成电流指令。内环响应快,电流一旦超过限幅立刻往回拉,外环再怎么“要求加力”也不会直接变成占空比冲击。
两环结构还有一个额外好处:恒流恒压切换容易做。电压环输出当电流指令,电流环输出当占空比指令,再加上一个主从选择逻辑,就能在电压控制和电流限制之间平滑切换。这个点在第五节细说。
带宽分配上,常见做法是电流内环穿越频率做到开关频率的 1/10 左右,电压外环再低一个数量级。我在某台设备上把内环放到 10kHz、外环放到 1kHz 左右,动态响应和抗噪声能力取得了比较舒服的平衡。比例级联顺序不能反过来,外环必须慢,否则两个环互相激励,整台设备就变成自激振荡器。判断内外环是否“打架”有个笨办法:单独给内环做阶跃,先看它稳不稳;再把外环合上,如果原来稳定内环突然开始出现毛刺,说明带宽间距太小,外环还在往上加码。
2.3 采样点与PWM同步:数字控制时序的必修课
数字控制里时序设计往往比 PID 参数本身更影响成败。第一个原则是采样点避开开关瞬态。三角载波的波峰和波谷时刻,功率管刚完成切换,高压回路正在振铃,这时候采样最容易采到尖刺。正确做法是把 ADC 触发点安排在 PWM 周期的中间位置,此时开关动作已经结束几百纳秒,电感电流也接近周期平均值,采到的值最有代表性。
第二个原则是计算延迟要固定。ADC 转换完成之后,算法模块立刻读取结果,下一步的占空比计算和 PWM 比较寄存器更新要在一个周期内稳定完成。为了让占空比更新不撕裂波形,用影子寄存器同步装载,禁止边计算边更新。实测中这个时序调整可以把输出电压噪声降低一个数量级以上,比单纯加大滤波电容划算得多。
我遇到过一次很隐蔽的问题:中断里读 ADC 结果,但因为采样保持时间配置不够,高压信号源内阻较大,电容还没来得及充满就开始转换,读回的值比真实值偏低。PID 看到电压偏低就加大占空比,设备硬生生被拉到比目标值高出百分之十几。排查了两天,最后是示波器对比 DAC 输出的内部值和外部万用表读数才发现差了一个恒定比例。这个教训说明,采样量化链路里任何一环的延迟和误差都被 PID 当作真实偏差去补偿,时序不规范,参数再准也白搭。
3. 数字PID的工程实现:抗积分饱和、微分滤波这些细节
3.1 位置式和增量式,选哪个更稳
离散域 PID 常见两种写法。位置式直接计算输出占空比:
float pid_position(float setpoint, float feedback, float dt) { float error = setpoint - feedback; integral += error * dt; float d_err = (error - error_prev) / dt; error_prev = error; return kp * error + ki * integral + kd * d_err; }增量式只算上一次输出基础上加多少:
float pid_increment(float setpoint, float feedback, float dt) { float error = setpoint - feedback; float delta = kp * (error - error_prev) + ki * error * dt + kd * (error - 2.0f * error_prev + error_prev2) / dt; error_prev2 = error_prev; error_prev = error; out += delta; return out; }从公式看增量式天然不带累计积分项,输出变化平缓,误动作少。但它在高压电源里有隐患:一旦输出被限幅后增量继续累加,限幅外的部分会消失,实际占空比和控制器内部状态脱节。所以我更偏爱位置式+抗饱和,内部状态明确,出问题好查。位置式的缺点是若初始化不当,首次输出可能异常大,解决方法是启用时先把积分器清零,输出从 0 开始爬升。
这里有个容易踩的坑:位置式里 Kp、Ki、Kd 的“单位”容易混。很多芯片浮点库直接写out = Kp*error + Ki*integral + Kd*derivative,如果 integral 是误差的时间积分,Ki 的单位就变成 1/s 的倒数,和 PID 参数表里常见的无量纲 Ki 完全不是一回事。同一套参数在不同固件代码里差一大截,通常就是这个原因。我建议团队内部统一用一种约定:积分项保持integral += error * dt,Ki 当作积分增益;微分项写derivative = (error - error_prev) / dt,Kd 当作微分增益。参数整定表也按这个约定记录,避免换算混乱。
3.2 微分项的正确打开方式:少对误差求导,多对测量值滤波
实践中最容易翻车的参数是 Kd,一个原因是微分对高频噪声天生敏感。采样值所有小幅抖动经过微分都会被放大,驱动占空比高频抖动,变压器因此发出刺耳啸叫。解决思路有两个层面。
第一,优先对测量值做微分而不是对误差做微分。设定值阶跃时误差瞬间跳变,对误差求导会得到一根巨大的冲击脉冲,控制里完全没意义。对反馈值求导可以避免这个问题,公式上把微分项写成负号,因为参考值不变时误差导数和反馈导数互为相反数:
float derivative_on_fb = (feedback - feedback_prev) / dt; feedback_prev = feedback; out = kp * error + ki * integral - kd * derivative_on_fb;第二,微分结果必须限幅和滤波。一阶低通是常见做法,也可以用所谓的“伪微分”:把纯微分乘上一个增益限制系数 N,等效成高通滤波与比例环节组合。工程上我常用 N=8 到 16,再配合一阶低通,微分项对 500kHz 级别的开关噪声基本不敏感。
光有软件滤波还不够,采样前的硬件去毛刺也很重要。模拟输入端加 RC 滤波是正确的,但要注意 RC 截止频率不能太低,否则它在控制带宽内引入额外极点,等于把硬件滤波的相位代价转嫁给环路。一般把 RC 转折频率设计在采样带宽的 3 倍以上。我自己在设备上常用 100kΩ 对 1nF,转折频率约 1.6kHz,但采样带宽如果做到 10kHz,这个 RC 就会在穿越频率附近增加不可忽略的相位滞后。后来把电阻改成 20kΩ,转折频率推到 8kHz,微分噪声略增但相位问题解决了,总体效果更好。
3.3 抗积分饱和:限幅之外还要管住积分器
给输出加一个 min/max 限幅是最低级但必要的保护,麻烦的是限幅后积分器还在累计,误差无法在短时间内消除,于是出现严重的过冲。典型例子:输出还没到设定值但占空比已经顶到上限,积分器还在正向累加;等输出终于靠近设定值时,积分器早就充满了,控制器必须花很长时间把多余积分排掉,这个排掉的过程就是肉眼可见的超调。
解决抗饱和有几种成熟做法。条件积分最简单:只有当输出没过限且误差方向和限幅方向不矛盾时才更新积分。反计算法则用饱和差回退积分器,表达式上等价于在积分项里加一个跟踪项:
float unsat_out = kp * error + integral + derivative_term; float out = clamp(unsat_out, out_min, out_max); float track_gain = 1.0f / tracking_time; // 常见取积分时间的1/2 integral += (error * dt) + track_gain * (out - unsat_out) * dt;这两个做法我都在实际设备上用。条件积分实现简单,适合启动阶段;反计算法跟踪更平滑,适合正常运行时偶尔饱和。抗饱和效果最终看一个指标:从饱和状态退出到恢复线性控制的时间,应该控制在几个到几十个开关周期内,如果几百个周期都退不出来,说明跟踪增益太小或者积分器本身出了问题。我在某台设备上看到过,反计算的跟踪时间取了积分时间的 10 倍,结果退出饱和要将近 2ms,输出电压出现一个明显下凹,后来把跟踪时间缩到积分时间的 0.5 倍,凹坑几乎消失。
3.4 软启动与恒流恒压切换:防止模式切换瞬间失控
高压电容充电场景下,PID 参数无论如何整定,开机瞬间都会面临误差饱和。设定值是 10000V,输出电压是 0,误差从 10000 开始,比例项和积分项立刻饱和。解决办法之一是软启动:设定值不直接跳到目标,而是按斜坡爬升,让误差始终落在线性区。斜坡斜率根据充电时间和最大电流限制来定,不能太慢浪费产能,也不能快到让电流环失去意义。
恒流恒压切换是另一个容易忽略的细节。用电压环和电流环两个 PID 块并行计算,但输出端做个选择逻辑:当前处于恒压模式时,电压环输出有效,电流环的输出被限幅钳位,同时电流环积分器被冻结;反之亦然。切换的瞬间两个调节器输出不能跳变,否则占空比突变,负载上会看到明显的电压尖峰。这个在第五章用实际现象再说一遍。
启动时序我习惯分三步:第一步只允许电流环工作,把电流指令用斜坡从 0 抬到限流值;第二步输出电容充到接近目标电压的 90% 再合上电压环;第三步电压环接管前,先把它内部的积分器初始化成当前对应的稳态输出值,而不是从 0 开始。这样做可以把启动过冲从 30% 压到 5% 以内,而且不会让电流环和电压环在中间状态互相较劲。
4. 参数整定实战:从模型估算到样机调试的完整链路
4.1 先估算被控对象:一个可用的二阶等效模型
拿到一台新设备,不要急着在示波器上扫描 Kp。先把控制对象摸一遍。对全桥或半桥高压电源,我习惯把占空比到输出电压的链路近似成二阶低通加一个等效延迟环节。二阶低通用增益、自然频率和阻尼比描述:自然频率主要受输出电容和等效电感影响;阻尼比受线圈内阻、二极管压降和负载等效电阻影响;等效延迟则等于数字控制的一到两个开关周期。
这些参数可以通过离线测试得到:开环状态下,在额定输入电压的 30% 左右给一个小阶跃,记录输出电压的上升时间和超调量,再用典型二阶响应公式反推。不要求模型多精确,只要能给出“主导极点大概在哪个频段”就够后续选型了。我见过很多调试失败,不是 PID 算法不行,而是连穿越频率和自然频率都没分开,把 Kp 往上一调,系统先撞到对象固有谐振点上。
具体操作步骤是:
- 断开反馈环,DSP 直接给一个固定的中等占空比,比如 30%,等待输出稳定。
- 记录此时输出电压作为基准。
- 在上一个 PWM 周期里把占空比阶跃到 35%,用示波器记录输出电压的完整上升过程。
- 从响应曲线读取 10% 到 90% 上升时间 tr 和超调量 Mp,用二阶系统公式反推自然频率和阻尼比。
- 多测几个工作点,取一组能覆盖多数情况的平均参数。
这个试验必须在低压低功率下做,占空比阶跃幅度也不要太大,榜怕高压输出一下冲到保护点。我一般把输出目标控制在额定值的 10% 以下,纯看动态形态,不追求数量。
4.2 从临界比例法拿到初始参数:但我劝你不要在样机上玩振荡
临界比例法是经典整定方法:把积分和微分置零,只留下 Kp,从小慢慢增大,直到系统出现等幅振荡,记下此时的增益 Ku 和振荡周期 Tu,套用经典参数表:
| 控制器 | Kp | Ti | Td |
|---|---|---|---|
| P | 0.5×Ku | — | — |
| PI | 0.45×Ku | 0.85×Tu | — |
| PID | 0.6×Ku | 0.5×Tu | 0.125×Tu |
这里 Ti 是积分时间,积分系数 Ki=Kp/Ti,Td 是微分时间,微分系数 Kd=Kp×Td。这套公式作为初值够用,但直接拿去高压设备上会有风险。
这个方法本身没错,但在高压高频电源上直接在样机里玩等幅振荡非常危险。等幅振荡意味着输出电压在设定点附近剧烈摆动,任何一个摆幅超过过压保护阈值,轻则跳闸,重则把输出整流管和电容打到损坏。我的做法是先把临界比例法拿到仿真里做:用第一节建立的二阶模型,把 Kp 从小到大扫一遍,找出临界点。仿真得到的 Ku 和 Tu 虽然和样机有偏差,但作为初始参数已经足够,样机上只需要再微调一圈。
4.3 仿真阶段要盯的三个指标:穿越频率、相位裕度、增益裕度
仿真不只是为了好整定,更是为了确认系统在频域上有足够余量。PID 整定最终要落到三个频域指标:
- 穿越频率:开环幅频曲线穿过 0dB 线对应的频率,决定响应快慢。建议取开关频率的 1/20 到 1/10,高压设备我习惯偏下限。
- 相位裕度:在穿越频率处相位距离 -180° 的差距,工程上控制在 45° 到 60°。低于 30° 基本会在某个负载点振荡,超过 75° 响应太迟钝。
- 增益裕度:相位穿过 -180° 时幅频曲线的距离,通常要求大于 10dB,防止器件参数漂移后临界稳定。
设计余量参考表:
| 指标 | 推荐范围 | 作用 |
|---|---|---|
| 穿越频率 fc | 0.05~0.1×fsw | 兼顾响应速度和延迟相位 |
| 相位裕度 PM | 45°~60° | 防止轻载重载切换振荡 |
| 增益裕度 GM | >10dB | 吸收制造公差和温漂 |
| 积分饱和退出时间 | 若干开关周期 | 避免过冲和恢复太慢 |
仿真里把这些指标过了,再回样机调,思路就清晰很多。我见过不少人跳过仿真,直接在样机上边看波形边加 Kp,最后得到的参数只能用在这台机器的这个温度、这个负载点上,换个批次就得重新折腾。而仿真里留足裕量的参数,往往能一次跨过大多数批量差异。
4.4 样机整定顺序:先低压后高压,先内环后外环
上样机阶段的顺序比参数本身重要。第一刀先低压:把输入电压降到设计值的 30%~50%,输出目标值也相应降低,让设备处在低压低功率状态。此时功率器件应力小,允许大胆试错。第二刀先内环:先把电压外环断开,给电流环一个固定电流指令,调内环 PI,直到电流阶跃响应没有大超调。第三刀合上外环:电压环从很小的比例系数开始往上加,每加一档做一次小设定值阶跃,记录过冲和恢复时间。
现场微调的常用经验是:Kp 先决定响应的“冲劲”,Ki 负责把稳态余差吃掉,Kd 只在输出有动态超调且噪声可控时才加。实际过程中三者互相影响,不要指望一次调到位。每调完一组参数,至少做三种工况验证:空载启动、满载启动、满载切空载。空载到满载切换是高压电源最容易振荡的工况,这个测试要排在最前面做。
我在整定某台模拟项目设备时,遇到一个现象:低压下用大负载调好的 PI 参数,一提升到高压就出现 200Hz 左右低频波动。排查了很久,发现是高压输出寄生电容和分压反馈网络在低频段构成了一个隐藏零点,低压工况下这个零点被负载电阻阻尼压住了,高压下负载电流小,阻尼不足就露出来了。解决方式不是调 PID,而是增大反馈分压电阻的补偿电容,把反馈网络自身的零点移到更低频。可见样机调试不只是调参数,硬件网络的频响也要跟着看。
5. 调试中的典型翻车现场与解决方案
5.1 微分项被采样噪声“绑架”:占空比乱跳和变压器啸叫
现象很典型:输出纹波不大,但 PWM 占空比在小数点后两位疯狂跳变,变压器发出尖锐啸叫,功率管温度异常升高。用示波器观察 ADC 原始值,能看到每个开关周期都有几毫伏到几十毫伏的尖刺,对应的控制输出抖动明显放大。原因就是第三节说的微分问题。
排查顺序,我按经验排成下面几步,每一步都有意义:
- 先把微分项 Kd 临时设成 0,看输出抖动是否消失。这一步判断噪声是主要通过微分进入控制还是本身就占据了反馈主通道。
- 如果设成 0 后抖动大幅减小,说明微分项是罪魁祸首;如果还有抖动,检查采样同步和滤波。
- 确认是微分后,改成对测量值做微分,而不是对误差做微分,这能同时消除设定值阶跃冲击。
- 给微分项加一阶低通,转折频率取控制在 2~5 倍穿越频率的位置,既保留必要动态又不放过开关噪声。
- 最后给微分项输出加一个绝对限幅,防止偶发大尖刺瞬间推出失控占空比。
多数情况下到第二步就能解决。如果你做完前四步还是不干净,还可以用“采样值中值滤波”,在三个连续 ADC 结果里取中间值再送 PID。中值滤波对尖刺免疫效果好,但会引入一个较小的等效延迟,放在低带宽的电压环里可以接受,放在高带宽电流环里要慎重评估。
5.2 寄生电容偷走相位裕度:轻载稳、满载振
有些设备会出现“轻载稳定,重载后输出开始周期性振荡”的怪毛病,振荡频率远低于开关频率,大概在几百赫兹到几千赫兹。排查时先怀疑电流内环带宽,然后怀疑采样相位,最后在传递函数里加入变压器和倍压级的寄生电容等效模型后,才定位到根因:重载时负载等效电阻下降,系统阻尼发生变化,原本靠裕量压住的寄生谐振被激发出来。
这种问题不能只靠调小 Kp 解决,因为降低增益同时牺牲了响应速度。更好的办法是降低穿越频率,把它压在寄生谐振频率以下,同时让输出电容尽量靠近高压整流级,减少引线电感。硬件上能做的还有在倍压级输出端并联一个小阻值阻尼电阻,平抑谐振峰。软件端没有万能解,除非把前馈补偿加进来,用零点抵消谐振极点,那是 Z 变换和状态空间层面的精细活,普通项目不一定需要做到那一步。
我调过的另一台设备,重载振荡频率约 1.2kHz,穿越频率当时放在 8kHz。把穿越频率降到 4kHz 后,振荡消失,但动态响应也明显变慢。后来在输出级加了一个几十欧的 RC 阻尼支路,把寄生谐振峰削掉 6dB 以上,才把穿越频率重新提到 7kHz,整体性能反而比原来更好。这个案例说明,高压电源的稳定性是硬件和软件一起决定的,PID 参数只是最后那层胶水。
5.3 负载突变和打火工况:积分饱和会把过冲放大
高压设备最常见的一个工况是负载突然被切断,比如高压线缆拔插或负载继电器断开。负荷消失后输出电容上还剩大量电荷,电压会冲高,同时控制器还在按之前的功率指令输出。此时若 PID 内部还在累积极限值附近的积分,响应会更晚,过冲看起来像积分饱和和负载突变叠加的结果。
处理这类问题,我把对策分成三层。底层是硬件保护和过压钳位,这个是必须有的;中层是算法的条件积分和反计算,限制控制器自身“上头”;顶层是打火/断载检测:检测到输出电压上升速率超过阈值时,直接把占空比降到安全值,让积分器和输出状态一起复位。有这层快速响应机制,PID 参数反而不需要调得特别激进。
打火工况更特殊。高压输出打火瞬间,电压骤降,电流骤增,如果不加干预,PID 会为了追回电压而把占空比推得更满,相当于助燃拉弧。我设计的检测逻辑是:如果输出电压在 50~200 微秒内跌落超过 15%,并且原边电流同时超过设定阈值,就判定为打火,输出占空比立刻置为 0,等电压回路重新建立后再按软启动流程恢复。这个逻辑在实测中能把打火能量限制在正常模式的 1/5 左右,对功率管和输出整流管都友好得多。
5.4 恒流恒压切换和温度漂移:两个容易被忽略的隐性坑
恒流恒压切换出问题通常表现为切换点附近输出电压或电流出现毛刺,严重时设备在两个模式之间反复横跳。即使你已经在代码里做了两个 PI 块并行计算,还要特别注意切换判断的滞环阈值:电压和电流都处在临界状态时,测量噪声会不停地推着控制器在两个模式之间切换。把切换点做成带滞环的区间,比如“电压低于目标 5% 且电流达到限值”才进入恒流,离开条件也留有余量,设备才能稳定下来。
我在某台设备上调试恒压 15kV、恒流 50mA 的切换,最开始用单点比较,电压只差 0.1% 就来回切换,输出脉冲一个接一个,变压器响得没法听。加了一个 5% 的滞环区间后,切换次数从每秒几百次降到几乎没有,电流和电压波形都干净了。
温度漂移是长时间运行的隐性坑。高压分压电阻用久了冷却不到位,阻值变化会让反馈增益漂移;输出电容老化会让控制对象的自然频率偏移。如果当初相位裕度只做到 35°,这批漂移加在一起可能把设备推向振荡。因此调试阶段我建议把相位裕度目标放在 50° 以上,增益裕度 10dB 以上。设备能安稳度过不同温度点测试的,这个余量就是供应商参数波动时你最后的一道防线。我在样机阶段会专门做一个高低温循环测试,把负载设定在满载和半载各跑半小时,记录输出电压的毛刺和振荡变化,用来确认设计的温度余量是否足够。
最后说一句自己反复踩出来的体会:高压高频电源的 PID 调试,本质上不是调参数,而是在摸清整个被控对象的脾气。你花在采样时序、抗饱和逻辑和负载工况分析上的时间,通常比最后那几个数值得多。参数变了,换个负载重新调,那是没办法的事;但如果你把环路结构和保护机制搭对了,大多数设备只要一轮整定就能在所有工况下稳定跑完测试。这一点,是参数表给不了你的信心。