目录
手把手教你学Simulink——数字控制 DC‑DC 变换器的 ADC 采样与时延补偿仿真
一、为什么要专门做 ADC 采样 + 数字控制时延补偿
二、数字控制时延分解(Buck 例)**
三、关键参数**
四、Simulink 建模(手把手)**
4.1 Step 1️⃣ —— Buck 功率级(同前篇)
4.2 Step 2️⃣ —— ADC 采样建模(关键!)
■ 方法 A(推荐):Sample & Hold 同步 PWM
4.3 Step 3️⃣ —— 数字 PI(离散)
4.4 Step 4️⃣ —— PWM 更新时延(最关键!)
4.5 Step 5️⃣ —— 对比模型(无时延)
4.6 Step 6️⃣ —— 运行 Scenario
五、结果解读(典型)**
✅ 无时延(理想)
✅ 含 1Tsw 时延(Unit Delay)
✅ 采样时刻影响
六、相位裕ge 影响 & 补偿建议**
七、工程注意点**
八、结论**
手把手教你学Simulink——数字控制 DC‑DC 变换器的 ADC 采样与时延补偿仿真
一、为什么要专门做ADC 采样 + 数字控制时延补偿
Buck / Boost / 全桥等数字控制(DSP / C2000 / FPGA) 与模拟控制不同:
模拟 PI →连续作用
数字 PI →离散采样:
ADC 采样 Vo,IL(通常在PWM 周期中固定点,e.g. 三角载波谷/峰)
计算 PI(1~2 CPU cycle)
更新 CMPR(占空比生效下一 PWM 周期)
⇒总时延 = 0.5·Tsw(采样相位) + Tcalc + 1·Tsw(影子寄存器延迟)
典型 =1 ~ 1.5 个 PWM 周期
后果:
相位裕ge ↓
若未建模 ⇒控制参数整定偏乐观 → 实际振荡/慢
需离散模型 + 时延模块(Unit Delay) 仿真才可信
✅ 目标(同步 Buck 例):
Vin=12V,Vref=5V,L=100µH,C=470µF,fsw=100kHz
数字电压 PI(Ts=10µs = Tsw)
ADC 采样时刻 = 三角载波谷点(对称 PWM)
加入1 Unit Delay(PWM 影子锁存) +可选 0.5Tsw 采样滞后
对比:
❌ 无时延(理想连续 PI)
✅ 含 ADC + 1Tsw 时延
负载阶 2.5Ω→1Ω → 看超调 / 振荡趋势
验证:未补偿 PI 在含时延下需降带宽 / 加 Lead‑Lag 补偿
基于 Simulink(Buck + Discrete‑Time PI + ADC Sample&Hold + Unit Delay + PWM Update Timing)
二、数字控制时延分解(Buck 例)**
Vo ──▶ [ADC Sample&Hold(@carrier valley)] │ [Digital PI @Ts=Tsw] │ CMPR_buf ──▶ [PWM Shadow Reg] ──▶ Update @ CTR=ZRO(next period)阶段 | 时延 |
|---|---|
ADC Sample(相对于平均) | 0 ~ 0.5Tsw(取决于采样点) |
计算 PI(忽略 < Ts) | ≈0 |
PWM 影子寄存器生效 | +1 Tsw(更新下一周期) |
总近似 | 1 Tsw ~ 1.5 Tsw |
👉 Simulink 必须显式加Unit Delay (Ts=Tsw) 代表 PWM 锁存!
三、关键参数**
参数 | 值 |
|---|---|
Vin | 12 V |
Vref | 5 V |
L | 100 µH |
C | 470 µF |
Rload | 2.5 Ω → Step 1 Ω @0.3s |
fsw | 100 kHz ⇒ Tsw=10µs |
数字 PI Ts | = Tsw=10µs |
PI(初) | Kp=0.05,Ki=200(连续整定)→ 含时延需 ↓Kp |
仿真 Ts | 1e‑7(开关)/ 控制模块 Ts=10µs (sample‑based) |
ADC 模型 | Sample&Hold @ valley(理想) |
四、Simulink 建模(手把手)**
4.1 Step 1️⃣ —— Buck 功率级(同前篇)
DC 12V → MOSFET Q1 → Diode → L=100µH → C=470µF → R
量测 vo,iL
Gate 来自PWM 模块(见 4.4)
4.2 Step 2️⃣ —— ADC 采样建模(关键!)
有两种等价做法:
■ 方法 A(推荐):Sample & Hold 同步 PWM
用
Zero-Order Hold(Sample Time = Tsw)Input = vo
Sample Time = 10e‑6
此模块仅在 Ts 整数倍更新值(模拟 ADC 锁存)
若想精确表示采样发生在载波谷点:
用
Enabled Subsystem:Enable =
Carrier == min(valley detect pulse 1‑clk)Inside:vo→ Out (Sample & Hold via Unit Delay)
✅ 最简单可靠:Zero‑Order Hold @ Ts=10µs → 代表数字控制器看到的最新采样
4.3 Step 3️⃣ —— 数字 PI(离散)
Discrete‑Time PI Controller (2‑DOF or 自建):e(k) = Vref - v_o_sampled(k) u(k) = Kp*e(k) + Ki*Ts*∑e(k) (sum via Unit Delay) Duty(k) = sat(u(k)/Vmax?, 0, 1) // Buck: u(k)→Duty实际 Buck PI 输出直接 = Duty(因为 D≈Vo/Vin小信号,大信号 clamp)
更严谨:PI →
Duty = sat( PI_out, 0, 1 )
初版可用 Simulink
PID Controller→Controller Type = PI,Time Domain = Discrete, Sample Time = 10e‑6
4.4 Step 4️⃣ ——PWM 更新时延(最关键!)
数字 PWM 典型行为:
CMPR 写入影子寄存器
在
CTR=ZRO(周期起点)拷贝影子 → active CMPR⇒计算出的 Duty(k) 生效于 (k+1) 周期
👉 Simulink 实现:
Duty_calc ──▶ [Unit Delay (Ts=10µs)] ──▶ Duty_used ──▶ PWM Compare✅这个 Unit Delay 就是数字控制额外 1‑Tsw 时延!
PWM:
Triangle Carrier (0~1, f=100kHz, symmetric optional)
Gate = Carrier < Duty_usedDead‑zone 如同步整流
4.5 Step 5️⃣ —— 对比模型(无时延)
旁路 Unit Delay(PI→直接→PWM Compare)
同 PI 参数 → 看“过于乐观”响应
4.6 Step 6️⃣ —— 运行 Scenario
时间 | 事件 |
|---|---|
0~0.3s | R=2.5Ω 稳态 |
0.3s | R→1Ω(2A→4A) |
Scope | vo,Duty,s(t)/e(k) |
✅ 期望:
无时延模型:Kp=0.05 可能 OK
含时延(Unit Delay):同 Kp → 可能超调↑甚至轻微振荡
降 Kp(例 0.03~0.04)或 加Lead Compensator → 恢复相位
负载 step 恢复时间合理(含时延稍慢但稳定)✔
五、结果解读(典型)**
✅ 无时延(理想)
Kp=0.05, Ki=200 → vo稳 5V
负载 step:ΔV≈60mV, 恢复 2ms
✅ 含 1Tsw 时延(Unit Delay)
同 Kp=0.05 →略大 over/undershoot(≈100mV)或 相移致轻微 ringing
降 Kp=0.035 → 稳定,ΔV≈70mV ✔
Duty 波形比无时延滞后 1 PWM 周期(可见 Unit Delay 效果)✔
vo最终锁 5V ✔
✅ 采样时刻影响
若采样 @ 三角 peak vs valley → 微小幅/相差异(高频纹ple 采样点 影响 高频 注入,但均值同)
Zero‑Order Hold @ Ts 足够
六、相位裕ge 影响 & 补偿建议**
数字控制开环传递(简化):
GOL(z)=continuousKPWM⋅Gplant(s)⋅PWM shadowz−1⋅PI1−z−1Tsz−1
z−1⇒ 额外-π·f/f_sw rad 相位 lag
@ crossover fc=5kHz, f_sw=100kHz ⇒ lag ≈ -9°
若 fc 更高 (10~15kHz) ⇒ lag ↑ → 需降 fc 或 Lead
✅ 常用Lead‑Lag digital compensator 或直接降 Kp / 降 fc
七、工程注意点**
实 DSP 因素 | Sim 处理 |
|---|---|
ADC 分辨率 / offset | 加 Quantizer + bias(opt) |
SOC trigger = PWM CTR=ZRO/PRD | Enable Subsystem @ valley detect |
Pipeline latency (C28x CLA) | +1 Unit Delay per extra stage |
影子寄存器 TBPRD/CMPA | Unit Delay 必加 |
变 Ts (Asymmetric PWM) | Sample @ fixed pt (e.g. CTR=ZRO) |
八、结论**
✅ 你掌握了数字控制 DC‑DC(Buck)ADC 采样 + PWM 更新时延仿真方法:
Buck 12V→5V(L=100µH,C=470µF)
ADC = Zero‑Order Hold @ Ts=Tsw(模拟采样锁存)
数字 PI(Discrete, Ts=Tsw)
关键:Unit Delay 代表 PWM 影子寄存器(1 Tsw 时延)
含时延 vs 无时延对比 → 同 PI 参数 含时延相位↓ → 需降 Kp / 加补偿 ✔
负载 step 恢复稳、Duty 滞后 1周期 可见 ✔
📌 此模型是:
C2000 / FPGA 数字电源控制仿真保真度关键(避免 “Sim 稳 → 实板振荡”)
含 Lead‑Lag / 二自由度 PI 整定基础