4. 数字控制延时与采样效应
在模拟控制中,误差放大器、比较器和驱动电路虽然也有延时,但通常只有几十到几百纳秒,且随频率变化平缓。进入数字控制后,信号必须经过“采样—量化—计算—更新”这一串离散环节,延时不再是一个可以忽略的小量,而是直接进入环路传递函数、改变相位特性的关键参数。很多数字电源样机在连续域设计时相位裕度看起来有 50° 以上,实际闭环却出现明显振荡,根源往往就是没有把总延时算进去。
延时的三个来源
数字控制环路中的延时可以拆成三段来看,它们串联在一起,共同构成从“被控量真实变化”到“PWM 占空比真正响应”的时间差。
第一段是 ADC 采样时刻与采样保持延时。ADC 并不是连续跟踪输出电压,而是在某个时刻“抓拍”一个瞬时值。这个抓拍时刻相对于 PWM 周期的位置,决定了采样到的是电感电流的平均值、峰值还是谷值。以峰值电流模式为例,若在开关管导通中点采样,得到的是电流上升沿的中间值;若在开关管关断时刻采样,则接近峰值。采样时刻选错,不仅引入延时,还会把开关纹波混入反馈,造成占空比抖动。此外,采样保持电路本身有孔径时间,ADC 转换需要若干时钟周期,这部分通常为几百纳秒到 1 μs 量级。
第二段是计算延时。ADC 结果送入控制器后,需要执行电压环 PI 运算、电流环运算、限幅、坐标变换等。若使用定点 DSP 或 MCU,一条乘法加累加可能占用几个到几十个时钟周期;若使用带 FPU 的 Cortex-M4,单次 PI 计算可压缩到 1 μs 以内。计算延时取决于代码效率和主频,是可以通过优化显著压缩的一段。
第三段是 PWM 更新延时。计算结果写入 PWM 比较寄存器后,并不会立刻改变输出。多数 PWM 模块采用影子寄存器,在计数器过零或周期匹配时才把新占空比载入。若在周期中途写入,最坏情况下要等到下一个周期边界才生效,平均额外引入半个到一个开关周期。若采用“立即更新”模式,则可能产生窄脉冲或不对称波形,需要谨慎使用。
总延时如何吃掉相位裕度
把三段延时合并,得到等效总延时 Td。在频域中,纯延时对应传递函数 e−sTd,其幅值为 1,但会引入与频率成正比的相位滞后:
φ_delay(f) = −360° × f × Td
其中 f 为频率,Td 为总延时。这个公式说明:延时对相位的惩罚随频率线性增加。在穿越频率 fc 处,相位损失为 360°×fc×Td。举例来说,若开关频率 fs = 200 kHz,开关周期 Ts = 5 μs,ADC 采样加转换占 1 μs,计算占 1.5 μs,PWM 更新平均占 2.5 μs,则 Td ≈ 5 μs,恰好等于一个开关周期。若设计穿越频率 fc = 20 kHz,则延时带来的相位损失为 360°×20k×5μ = 36°。原本连续域设计有 55° 相位裕度,扣除 36° 后只剩 19°,系统已经接近不稳定边缘。
更严重的是,延时不仅降低相位裕度,还会使增益交越点附近的相位曲线快速下坠。如果 fc 继续提高,比如取 fs/5 = 40 kHz,相位损失达到 72°,几乎不可能稳定。因此数字电源中穿越频率通常被限制在 fs/10 到 fs/20 之间,这不是保守,而是延时物理约束的结果。
延时补偿的基本思路
既然延时无法消除,工程上要做的是“承认它、量化它、补偿它”。补偿不是把延时变没,而是让控制器在延时存在的前提下仍然保持足够的相位裕度。
思路一:在控制器中引入相位超前。最直接的方法是在电压环 PI 之后串联一个超前校正环节,或者把 PI 改成“PI+超前”的形式。超前环节在穿越频率附近提供正相位,抵消一部分延时滞后。例如在 20 kHz 处需要补 20°,可以设计一个零点低于 fc、极点高于 fc 的超前网络,零点取 8 kHz、极点取 50 kHz,在 20 kHz 处可提供约 25° 超前。代价是高频增益被抬高,可能放大开关噪声,因此极点不宜取得过高。
思路二:降低穿越频率。如果相位裕度不足,最稳妥的办法是把 fc 降下来。fc 减半,延时相位损失也减半。对于 Td = 5 μs 的系统,fc 从 20 kHz 降到 10 kHz,相位损失从 36° 降到 18°,裕度立刻改善。代价是动态响应变慢,负载阶跃恢复时间变长。这需要在动态性能和稳定性之间做权衡。
思路三:优化采样与更新时刻。这是数字控制特有的手段。把 ADC 采样点放在开关纹波最小的时刻,例如电感电流谷值或平均值处,可以减少反馈中的纹波分量,从而允许更高的增益。把 PWM 更新安排在周期边界,避免“半周期更新”带来的额外延时。某些 MCU 支持“采样—计算—更新”在同一周期内完成,即所谓“单周期控制”,可把 Td 压缩到接近一个 Ts 以内。
思路四:采用预测或状态观测。在电流环中,可以用上一周期的电流斜率预测本周期采样时刻的电流值,提前一个周期得到近似结果,从而抵消部分计算延时。这种方法对参数敏感,适合电感值稳定、工况变化不剧烈的场合。
一个可执行的延时核算示例
假设一台 Boost 变换器:fs = 200 kHz,Ts = 5 μs,目标 fc = 15 kHz,连续域设计相位裕度 60°。控制器为 168 MHz Cortex-M4,ADC 采样加转换 0.8 μs,中断响应加 PI 计算 1.2 μs,PWM 影子寄存器平均等待 2.5 μs,则 Td = 4.5 μs。延时相位损失 = 360°×15k×4.5μ = 24.3°。实际相位裕度约为 60° − 24.3° = 35.7°,仍可接受,但余量不大。若希望恢复到 45° 以上,可把 fc 降到 12 kHz,损失降为 19.4°,裕度回到约 40.6°;或者在 15 kHz 处加入约 10° 的超前补偿。两种做法可以组合使用,先降 fc 到 13 kHz,再补 8° 超前,兼顾动态与稳定。
需要强调的是,上述数值属于教学示例中的合理假设,实际项目中应以数据手册、示波器测量和环路分析仪扫频结果为准。延时核算的价值在于:它让“相位裕度还剩多少”从模糊感觉变成可计算、可验证的工程判断,从而指导穿越频率选择、补偿器设计和代码时序优化。