支持QC与PD协议的多模式开关电源仿真建模与交互特性分析
支持QC与PD协议的多模式开关电源仿真建模与交互特性分析
文章目录
摘要
面向移动终端快充电源在多协议、多电压档位和负载扰动条件下的动态交互问题,基于本地工程 FastCharge_MultiMode_PowerSim 建立了支持 QC 与 USB PD 简化交互的多模式 Buck 开关电源仿真模型。工程主模型为 main/fastcharge_multimode_main.slx,根目录 fastcharge_multimode_main.slxc 为缓存文件。模型由 QC 控制器、PD 控制器、协议管理器、参考电压斜率管理器、离散 PID 控制器、PWM 发生器、平均 Buck 功率级、保护与结果记录模块组成。功率级采用离散平均 Buck 模型,而非 Simscape Electrical 器件级开关拓扑;协议层采用 MATLAB Function Block 构造离散状态逻辑,而非传统 Stateflow 图形状态机。仿真结果表明,在 24 V 输入、47 μH 电感、470 μF 输出电容和 20 μs 控制采样周期条件下,5 V 启动、QC 9 V 切换和 PD 20 V 切换均可完成目标电压跟踪;QC 5 V 至 9 V 切换后进入 2% 误差带的时间约为 6.38 ms,PD 20 V 切换约为 23.44 ms。负载阶跃和输入扰动会引起更显著的瞬态偏差,其中输入 24 V 至 20 V 扰动工况最大输出电压达到 10.566 V。故障超时工况触发锁存保护,系统回退至 5 V 目标并关闭控制输出。研究表明,该工程模型能够反映“协议请求-参考电压生成-闭环占空比调节-功率级响应”之间的协同关系,可用于快充协议控制策略的早期验证;其局限在于未实现完整 USB PD 物理层、未引入器件级开关损耗与热模型,后续可扩展为 Simscape Electrical 开关级模型。
关键词:QC协议;USB PD;Buck变换器;离散PID;多模式切换;快充电源;Simulink仿真
1 引言
移动终端与便携式电子设备的充电功率持续提高,使开关电源不再仅承担固定电压稳压功能,而需要在通信协议、控制算法和功率级动态之间形成协同。QC 类快充通常通过 D+/D- 电平组合表达电压请求,USB PD 则通过 Type-C CC 通道和功率数据对象完成电压、电流能力协商。对仿真建模而言,完整重现协议物理层并非所有设计阶段的必要条件;在控制策略验证和系统级交互分析阶段,更关键的问题是:协议请求如何转化为目标电压,目标电压如何平滑施加给闭环控制器,以及功率级在模式切换和扰动下是否保持可接受的动态性能。
本文严格依据工程目录 E:\python_project\QC_Simulink\FastCharge_MultiMode_PowerSim\ 中的模型、脚本和结果数据展开分析。工程由 main/build_fastcharge_model.m 程序化生成 Simulink 主模型,仿真脚本 scripts/run_all_cases.m 定义了 7 组工况,结果文件保存在 data 和 results 目录。需要说明的是,当前模型为可执行的系统级平均模型:Buck 功率级由 MATLAB Function Block 中的差分方程实现;QC 与 PD 均为简化协议交互模型;slprj 目录和 .slxc 文件仅作为缓存,不作为模型事实的主要依据。

2 系统总体方案设计
系统总体结构如图1所示。输入工况由 From Workspace 块提供,包括 mode_sel、DP_level、DM_level、cc_attach、sink_request_idx、Vin_in、Rload_in、qc_timeout_flag 和 pd_timeout_flag。协议层首先由 QC_Controller 和 PD_Controller 分别计算请求电压和有效标志,再由 Protocol_Manager 根据模式选择和保护状态生成 target_voltage。随后,Vref_Manager 对目标电压进行斜率限制,Discrete_PID_Controller 根据输出反馈计算占空比,Buck_PowerStage 按平均模型更新电感电流和输出电压,Measurement_Protection 对过压、过流、欠压和协议超时进行锁存保护。
表1 系统总体模块及功能说明表
| 模块 | 功能 | 论文对应内容 |
|---|---|---|
| QC_Controller | DP/DM 电平识别,输出 QC 请求电压 | 协议交互建模 |
| PD_Controller | CC attach、PDO 请求、合同建立与回退 | 协议交互建模 |
| Protocol_Manager | 模式仲裁、目标电压选择、故障回退 | 模式切换机制 |
| Vref_Manager | 参考电压斜率限制,降低切换突变 | 控制策略 |
| Discrete_PID_Controller | 离散 PID、限幅、抗积分饱和 | 控制策略 |
| PWM_Generator | 占空比限幅和 PWM 日志信号生成 | 控制与记录 |
| Buck_PowerStage | 离散平均 Buck 功率级 | 功率级建模 |
| Measurement_Protection | OVP/OCP/UVLO/协议超时锁存 | 保护机制 |
| Result_Logging | 14 路时间序列保存 | 结果分析 |
模型的主信号流可表示为
{ u m o d e , V D P , V D M , s C C , i P D O } → V t a r → V r e f → D → ( v o , i L , i o ) → e v , p f a u l t . \{u_{\mathrm{mode}},V_{DP},V_{DM},s_{CC},i_{\mathrm{PDO}}\}\to V_{\mathrm{tar}}\to V_{\mathrm{ref}}\to D\to(v_{o},i_{L},i_{o})\to e_{v},p_{\mathrm{fault}}. {umode,VDP,VDM,sCC,iPDO}→Vtar→Vref→D→(vo,iL,io)→ev,pfault.
式中,( u m o d e u_{\mathrm{mode}} umode) 为模式选择信号,( V D P , V D M V_{DP},V_{DM} VDP,VDM) 为 QC 电平,( s C C s_{CC} sCC) 为 PD 连接状态,( i P D O i_{\mathrm{PDO}} iPDO) 为 PD 请求索引,( V t a r V_{\mathrm{tar}} Vtar) 为协议目标电压,( V r e f V_{\mathrm{ref}} Vref) 为限斜率后的控制参考,( D D D) 为占空比,( p f a u l t p_{\mathrm{fault}} pfault) 为保护标志。
3 多模式 Buck 功率级建模
当前工程的功率级文件说明 power_stage/build_buck_powerstage.m 明确指出:模型类型为“averaged discrete Buck model for batch simulation”,可在后续替换为 Simscape Electrical 器件级模型。因此本文功率级分析以平均 Buck 模型为对象,不宣称已建立真实 MOSFET、二极管或同步整流开关级拓扑。

表2 主要电路参数表
| 参数 | 数值 | 单位 | 来源 |
|---|---|---|---|
| 输入电压 (V_{in}) | 24 | V | scripts/init_params.m |
| 开关频率 (f_s) | 100000 | Hz | scripts/init_params.m |
| 控制采样周期 (T_s) | 20e-6 | s | scripts/init_params.m |
| 电感 (L) | 47e-6 | H | scripts/init_params.m |
| 电感电阻 (r_L) | 55e-3 | Ω | scripts/init_params.m |
| 输出电容 (C_o) | 470e-6 | F | scripts/init_params.m |
| 电容 ESR | 30e-3 | Ω | scripts/init_params.m |
| 负载范围 | 4-80 | Ω | scripts/init_params.m |
| 电压档位 | 5/9/12/20 | V | scripts/init_params.m |
| 占空比上限 | 0.92 | - | scripts/init_params.m |
理想 Buck 在连续导通模式下满足
v L = { V i n − v o − r L i L , S = 1 , − v o − r L i L , S = 0 , v_L= \begin{cases} V_{in}-v_o-r_Li_L, & S=1, \\ -v_o-r_Li_L, & S=0, & & \end{cases} vL={Vin−vo−rLiL,−vo−rLiL,S=1,S=0,
i C = i L − v o R . (3) i_C=i_L-\frac{v_o}{R}. \tag{3} \ iC=iL−Rvo. (3)
在平均模型中,开关状态由占空比 (D) 加权,工程 Buck_PowerStage/Logic 实际采用的连续形式可写为
d i L d t = D V i n − v C − r L i L L , d v C d t = i L − v C / R C o . (4) \ \frac{di_L}{dt}=\frac{D V_{in}-v_C-r_L i_L}{L}, \quad \frac{dv_C}{dt}=\frac{i_L-v_C/R}{C_o}. \tag{4} \ dtdiL=LDVin−vC−rLiL,dtdvC=CoiL−vC/R. (4)
离散实现为显式欧拉格式:
i L [ k + 1 ] = i L [ k ] + T s D [ k ] V i n [ k ] − v C [ k ] − r L i L [ k ] L , (5) \ i_L[k+1]=i_L[k]+T_s\frac{D[k]V_{in}[k]-v_C[k]-r_L i_L[k]}{L}, \tag{5} \ iL[k+1]=iL[k]+TsLD[k]Vin[k]−vC[k]−rLiL[k], (5)
v C [ k + 1 ] = v C [ k ] + T s i L [ k + 1 ] − v C [ k ] / R [ k ] C o . (6) \ v_C[k+1]=v_C[k]+T_s\frac{i_L[k+1]-v_C[k]/R[k]}{C_o}. \tag{6} \ vC[k+1]=vC[k]+TsCoiL[k+1]−vC[k]/R[k]. (6)
稳态 CCM 条件下,忽略寄生参数时有
V o ≈ D V i n . (7) \ V_o \approx D V_{in}. \tag{7} \ Vo≈DVin. (7)
考虑电感电阻时,
V o ≈ D V i n − r L I L . (8) \ V_o \approx D V_{in}-r_L I_L. \tag{8} \ Vo≈DVin−rLIL. (8)
电感纹波和输出电压纹波可用工程参数估算为
Δ i L ≈ ( V i n − V o ) D L f s , (9) \ \Delta i_L \approx \frac{(V_{in}-V_o)D}{L f_s}, \tag{9} \ ΔiL≈Lfs(Vin−Vo)D, (9)
Δ v o ≈ Δ i L ( 1 8 C o f s + E S R ) . (10) \ \Delta v_o \approx \Delta i_L\left(\frac{1}{8C_o f_s}+ESR\right). \tag{10} \ Δvo≈ΔiL(8Cofs1+ESR). (10)
上述纹波公式用于理论估算和效率脚本中的电容 ESR 损耗估计;由于主仿真功率级采用平均模型,时间序列中的高频开关纹波不会等价于器件级 PWM 纹波。
开关导通与关断状态空间模型可写为
x ˙ = A 1 x + B 1 V i n , A 1 = [ − r L / L − 1 / L 1 / C o − 1 / ( R C o ) ] , B 1 = [ 1 / L 0 ] , (11) \ \dot{x}=A_1x+B_1V_{in},\quad A_1= \begin{bmatrix} -r_L/L & -1/L\\ 1/C_o & -1/(RC_o) \end{bmatrix}, \quad B_1= \begin{bmatrix} 1/L\\0 \end{bmatrix}, \tag{11} \ x˙=A1x+B1Vin,A1=[−rL/L1/Co−1/L−1/(RCo)],B1=[1/L0], (11)
x ˙ = A 0 x + B 0 V i n , A 0 = A 1 , B 0 = [ 0 0 ] , (12) \ \dot{x}=A_0x+B_0V_{in},\quad A_0=A_1,\quad B_0= \begin{bmatrix} 0\\0 \end{bmatrix}, \tag{12} \ x˙=A0x+B0Vin,A0=A1,B0=[00], (12)
其中 ( x = [ i L v o ] T x=[i_L\;v_o]^T x=[iLvo]T)。平均状态空间方程为
x ˙ = A x + B D V i n , A = A 1 , B = [ 1 / L 0 ] . (13) \ \dot{x}=A x+B D V_{in},\quad A=A_1,\quad B= \begin{bmatrix} 1/L\\0 \end{bmatrix}. \tag{13} \ x˙=Ax+BDVin,A=A1,B=[1/L0]. (13)
在工作点 ( ( D 0 , V i n 0 , x 0 ) (D_0,V_{in0},x_0) (D0,Vin0,x0)) 附近,小信号模型为
Δ x ˙ = A Δ x + B V i n 0 Δ d + B D 0 Δ v i n . (14) \ \Delta\dot{x}=A\Delta x+B V_{in0}\Delta d+B D_0\Delta v_{in}. \tag{14} \ Δx˙=AΔx+BVin0Δd+BD0Δvin. (14)
若忽略 ( r L r_L rL) 并取输出为 ( v o v_o vo),控制到输出传递函数近似为
G v d ( s ) = Δ v o ( s ) Δ d ( s ) = V i n L C o s 2 + L R s + 1 . (15) \ G_{vd}(s)=\frac{\Delta v_o(s)}{\Delta d(s)} =\frac{V_{in}}{LC_os^2+\frac{L}{R}s+1}. \tag{15} \ Gvd(s)=Δd(s)Δvo(s)=LCos2+RLs+1Vin. (15)
4 QC 与 PD 协议交互建模
QC 模块由 protocol/build_qc_logic.m 和 main/build_fastcharge_model.m 中的 qcCode() 共同描述。状态编号为 IDLE、DETECT、NEGOTIATE、SET_VOLTAGE、HOLD 和 FAULT。电平容差为 0.35 V,检测时间为 1 ms,设置保持时间为 3 ms。

QC 判定逻辑形式化为
V Q C = { 9 , ∣ V D P − 3.30 ∣ < 0.35 ∧ ∣ V D M − 0.60 ∣ < 0.35 , 12 , ∣ V D P − 0.60 ∣ < 0.35 ∧ ∣ V D M − 3.30 ∣ < 0.35 , 5 , ∣ V D P − 0.60 ∣ < 0.35 ∧ ∣ V D M − 0.60 ∣ < 0.35 , 5 , o t h e r w i s e . (16) \ V_{\mathrm{QC}}= \begin{cases} 9, & |V_{DP}-3.30|<0.35 \land |V_{DM}-0.60|<0.35,\\ 12, & |V_{DP}-0.60|<0.35 \land |V_{DM}-3.30|<0.35,\\ 5, & |V_{DP}-0.60|<0.35 \land |V_{DM}-0.60|<0.35,\\ 5, & \mathrm{otherwise}. \end{cases} \tag{16} \ VQC=⎩
⎨
⎧9,12,5,5,∣VDP−3.30∣<0.35∧∣VDM−0.60∣<0.35,∣VDP−0.60∣<0.35∧∣VDM−3.30∣<0.35,∣VDP−0.60∣<0.35∧∣VDM−0.60∣<0.35,otherwise. (16)
有效标志可写为
q v a l i d = { 1 , V Q C ∈ { 5 , 9 , 12 } 且电平组合有效 , 0 , 无效电平或故障 . (17) \ q_{\mathrm{valid}}= \begin{cases} 1, & V_{\mathrm{QC}}\in\{5,9,12\}\ \mathrm{且电平组合有效},\\ 0, & \mathrm{无效电平或故障}. \end{cases} \tag{17} \ qvalid={1,0,VQC∈{5,9,12} 且电平组合有效,无效电平或故障. (17)
PD 模块由 PD_Controller/Logic 实现简化协商。它不实现完整 BMC 编码、CRC、GoodCRC 或完整策略引擎,而是以 cc_attach 和 sink_request_idx 表示连接和请求结果。PDO 配置为 ([5,9,12,20]) V,对应电流 ([3.0,3.0,2.5,1.5]) A。

PD 请求电压可表示为
V P D ( i ) = { 5 , i = 1 , 9 , i = 2 , 12 , i = 3 , 20 , i = 4. (18) \ V_{\mathrm{PD}}(i)= \begin{cases} 5, & i=1,\\ 9, & i=2,\\ 12, & i=3,\\ 20, & i=4. \end{cases} \tag{18} \ VPD(i)=⎩
⎨
⎧5,9,12,20,i=1,i=2,i=3,i=4. (18)
合同建立条件为
c P D = ( s C C > 0.5 ) ∧ ( 1 ≤ i r e q ≤ 4 ) ∧ ( τ m s g ≥ 1 m s ) ∧ ( τ t r ≥ 4 m s ) . (19) \ c_{\mathrm{PD}}=(s_{CC}>0.5)\land(1\le i_{\mathrm{req}}\le 4)\land (\tau_{\mathrm{msg}}\ge 1\ \mathrm{ms})\land(\tau_{\mathrm{tr}}\ge 4\ \mathrm{ms}). \tag{19} \ cPD=(sCC>0.5)∧(1≤ireq≤4)∧(τmsg≥1 ms)∧(τtr≥4 ms). (19)
超时回退机制为
n r e t r y < 2 ⇒ r e t r y , n r e t r y ≥ 2 ⇒ V t a r = 5 V . (20) \ n_{\mathrm{retry}}<2 \Rightarrow \mathrm{retry},\quad n_{\mathrm{retry}}\ge 2 \Rightarrow V_{\mathrm{tar}}=5\ \mathrm{V}. \tag{20} \ nretry<2⇒retry,nretry≥2⇒Vtar=5 V. (20)
表3 QC 与 PD 协议模式对比表
| 模式 | 判定信号 | 输出档位 | 时间参数 | 回退策略 |
|---|---|---|---|---|
| QC简化模式 | DP/DM 电平组合 | 5/9/12 V | 1 ms 检测,3 ms 设置保持 | 无效电平或超时回退 5 V |
| PD简化模式 | CC attach 与 PDO 索引 | 5/9/12/20 V | 1 ms 消息,4 ms 功率切换,最多2次重试 | 请求无效或超时后回退 5 V |
5 控制策略与模式切换机制
协议管理器根据 mode_sel 在 QC 和 PD 间选择目标电压。若保护触发,则强制回退 5 V,并将 mode_active 置零。其逻辑可写为
V t a r = { V Q C , m o d e = 1 ∧ q v a l i d = 1 ∧ p f = 0 , V P D , m o d e = 2 ∧ c P D = 1 ∧ p f = 0 , 5 , p f = 1 或协议无效 . (21) \ V_{\mathrm{tar}}= \begin{cases} V_{\mathrm{QC}}, & mode=1 \land q_{\mathrm{valid}}=1 \land p_f=0,\\ V_{\mathrm{PD}}, & mode=2 \land c_{\mathrm{PD}}=1 \land p_f=0,\\ 5, & p_f=1\ \mathrm{或协议无效}. \end{cases} \tag{21} \ Vtar=⎩
⎨
⎧VQC,VPD,5,mode=1∧qvalid=1∧pf=0,mode=2∧cPD=1∧pf=0,pf=1 或协议无效. (21)
参考电压管理器对目标电压施加斜率限制,工程设定为 900 V/s。在 20 μs 采样下,单步变化量为
Δ V r e f , m a x = 900 × 20 × 10 − 6 = 0.018 V . (22) \ \Delta V_{\mathrm{ref,max}}=900\times20\times10^{-6}=0.018\ \mathrm{V}. \tag{22} \ ΔVref,max=900×20×10−6=0.018 V. (22)
离散更新为
V r e f [ k + 1 ] = { V r e f [ k ] + Δ V max , V r e f [ k ] < V t a r − Δ V max , V r e f [ k ] − Δ V max , V r e f [ k ] > V t a r + Δ V max , V t a r , o t h e r w i s e . (23) \ V_{\mathrm{ref}}[k+1]= \begin{cases} V_{\mathrm{ref}}[k]+\Delta V_{\max}, & V_{\mathrm{ref}}[k]<V_{\mathrm{tar}}-\Delta V_{\max},\\ V_{\mathrm{ref}}[k]-\Delta V_{\max}, & V_{\mathrm{ref}}[k]>V_{\mathrm{tar}}+\Delta V_{\max},\\ V_{\mathrm{tar}}, & \mathrm{otherwise}. \end{cases} \tag{23} \ Vref[k+1]=⎩
⎨
⎧Vref[k]+ΔVmax,Vref[k]−ΔVmax,Vtar,Vref[k]<Vtar−ΔVmax,Vref[k]>Vtar+ΔVmax,otherwise. (23)
电压误差定义为
e [ k ] = V r e f [ k ] − V o [ k ] . (24) \ e[k]=V_{\mathrm{ref}}[k]-V_o[k]. \tag{24} \ e[k]=Vref[k]−Vo[k]. (24)
离散 PID 控制律为
u u n s a t [ k ] = K p e [ k ] + I [ k ] + K d e [ k ] − e [ k − 1 ] T s , (25) \ u_{\mathrm{unsat}}[k]=K_p e[k]+I[k]+K_d\frac{e[k]-e[k-1]}{T_s}, \tag{25} \ uunsat[k]=Kpe[k]+I[k]+KdTse[k]−e[k−1], (25)
D [ k ] = s a t ( u u n s a t [ k ] , D min , D max ) . (26) \ D[k]=\mathrm{sat}\left(u_{\mathrm{unsat}}[k],D_{\min},D_{\max}\right). \tag{26} \ D[k]=sat(uunsat[k],Dmin,Dmax). (26)
工程中 ( K p = 0.040 K_p=0.040 Kp=0.040)、( K i = 55.0 K_i=55.0 Ki=55.0)、( K d = 0 K_d=0 Kd=0),实际为 PI 控制。抗积分饱和条件为
I [ k + 1 ] = { I [ k ] + K i e [ k ] T s , u u n s a t = D [ k ] I [ k ] + K i e [ k ] T s , D [ k ] = D max ∧ e [ k ] < 0 I [ k ] + K i e [ k ] T s , D [ k ] = D min ∧ e [ k ] > 0 I [ k ] , o t h e r w i s e . (27) \ I[k+1]= \begin{cases} I[k]+K_i e[k]T_s, & u_{\mathrm{unsat}}=D[k]\\ I[k]+K_i e[k]T_s, & D[k]=D_{\max}\land e[k]<0\\ I[k]+K_i e[k]T_s, & D[k]=D_{\min}\land e[k]>0\\ I[k], & \mathrm{otherwise}. \end{cases} \tag{27} \ I[k+1]=⎩
⎨
⎧I[k]+Kie[k]Ts,I[k]+Kie[k]Ts,I[k]+Kie[k]Ts,I[k],uunsat=D[k]D[k]=Dmax∧e[k]<0D[k]=Dmin∧e[k]>0otherwise. (27)
故障保护触发时,
p f = 1 ⇒ I [ k ] = 0 , D [ k ] = 0. (28) \ p_f=1\Rightarrow I[k]=0,\quad D[k]=0. \tag{28} \ pf=1⇒I[k]=0,D[k]=0. (28)
表4 控制器参数表
| 参数 | 数值 | 单位 | 来源 |
|---|---|---|---|
| (K_p) | 0.040 | - | init_params.m |
| (K_i) | 55.0 | 1/s | init_params.m |
| (K_d) | 0 | s | init_params.m |
| (T_s) | 20e-6 | s | init_params.m |
| (D_{\min}) | 0 | - | init_params.m |
| (D_{\max}) | 0.92 | - | init_params.m |
| 参考电压斜率 | 900 | V/s | init_params.m |
| 保护动作 | 积分清零,占空比置零 | - | build_fastcharge_model.m |

6 仿真方案设计与实验设置
仿真由 scripts/run_all_cases.m 统一执行,停止时间为 0.08 s。脚本运行后将时间序列保存至 data/case*.mat,并将汇总结果保存至 results/case_summary.csv。参数初始化、协议初始化、批量仿真与绘图流程如图8所示。

表5 仿真实验工况表
| 工况 | 名称 | 目的 | 关键条件 |
|---|---|---|---|
| 1 | case01_startup_5v | 5 V 启动 | mode=1,DP/DM=0.6/0.6 |
| 2 | case02_qc_9v_switch | QC 5 V 至 9 V | 20.02 ms 后 DP=3.3,DM=0.6 |
| 3 | case03_pd_20v_transition | PD 握手至 20 V | mode=2,4.02 ms 后 CC attach,PDO index=4 |
| 4 | case04_protocol_mismatch_5v | QC 非法电平回退 | DP/DM=3.3/3.3 |
| 5 | case05_load_step | 12 V 负载阶跃 | 30/55 ms 负载变化 |
| 6 | case06_input_disturbance | 9 V 输入扰动 | 32/55 ms 输入 24-20-24 V |
| 7 | case07_timeout_fault | PD 超时故障 | 35.02 ms 触发 PD timeout |
动态指标按下式统计:
t r = t ( v o : 0.9 V f ) − t ( v o : 0.1 V f ) , (29) \ t_r=t(v_o:0.9V_f)-t(v_o:0.1V_f), \tag{29} \ tr=t(vo:0.9Vf)−t(vo:0.1Vf), (29)
t s = min { t : ∣ v o ( t ) − V f ∣ ≤ 0.02 V f } , (30) \ t_s=\min\{t: |v_o(t)-V_f|\le 0.02V_f\}, \tag{30} \ ts=min{t:∣vo(t)−Vf∣≤0.02Vf}, (30)
M p = v o , max − V f V f × 100 % , (31) \ M_p=\frac{v_{o,\max}-V_f}{V_f}\times100\%, \tag{31} \ Mp=Vfvo,max−Vf×100%, (31)
e s s = v o ( t ) ‾ t ∈ [ T f − 5 m s , T f ] − V f , (32) \ e_{ss}=\overline{v_o(t)}_{t\in[T_f-5\mathrm{ms},T_f]}-V_f, \tag{32} \ ess=vo(t)t∈[Tf−5ms,Tf]−Vf, (32)
k r = v o , max − v o , min v o ‾ × 100 % . (33) \ k_r=\frac{v_{o,\max}-v_{o,\min}}{\overline{v_o}}\times100\%. \tag{33} \ kr=vovo,max−vo,min×100%. (33)
负载调整率和输入电压调整率可分别表示为
S R = Δ V o / V o Δ R / R , S V = Δ V o / V o Δ V i n / V i n . (34) \ S_R=\frac{\Delta V_o/V_o}{\Delta R/R}, \quad S_V=\frac{\Delta V_o/V_o}{\Delta V_{in}/V_{in}}. \tag{34} \ SR=ΔR/RΔVo/Vo,SV=ΔVin/VinΔVo/Vo. (34)
效率估算由 scripts/estimate_efficiency.m 给出:
η = P o P o + P l o s s , (35) \ \eta=\frac{P_o}{P_o+P_{\mathrm{loss}}}, \tag{35} \ η=Po+PlossPo, (35)
P l o s s = P m o s + P s y n c + P s w + P L + P C + P c o r e . (36) \ P_{\mathrm{loss}}=P_{\mathrm{mos}}+P_{\mathrm{sync}}+P_{\mathrm{sw}}+ P_L+P_C+P_{\mathrm{core}}. \tag{36} \ Ploss=Pmos+Psync+Psw+PL+PC+Pcore. (36)
其中 ( P s w = 0.5 V i n I o ( t r + t f ) f s P_{\mathrm{sw}}=0.5V_{in}I_o(t_r+t_f)f_s Psw=0.5VinIo(tr+tf)fs),属于参数化估算结果,不是器件级热仿真结果。
7 结果分析与讨论

5 V 启动工况中,参考电压由斜率管理器从 0 V 缓慢上升至 5 V,输出电压跟随参考电压上升。汇总结果显示最大输出为 5.0013 V,超调量约 1.30 mV,进入 2% 误差带时间约 10.02 ms。由于平均模型不包含开关纹波,末段峰峰波动为数值级微小量。

负载阶跃工况中,负载电阻由 24 Ω 降至 6 Ω 后再升至 18 Ω,电感电流与负载电流随输出功率需求同步变化。该工况最大输出电压为 12.2997 V,相对 12 V 目标存在约 0.2997 V 的瞬态峰值偏差,说明负载扰动比协议电压切换更容易激发闭环暂态。


QC 模式在 20.02 ms 改变 DP/DM 电平后,目标电压由 5 V 切换至 9 V,参考电压按 900 V/s 斜率上升,输出电压进入 2% 误差带的后事件时间约为 6.38 ms。PD 模式在 CC attach 与 PDO 请求后进入 20 V 档位,由于电压跨度更大,后事件进入 2% 误差带时间约为 23.44 ms。




表6 不同模式下输出性能指标对比表
| 工况 | 目标电压/V | 最大输出/V | 超调/V | 稳定时间/s | 末段误差/V | 故障 |
|---|---|---|---|---|---|---|
| case01_startup_5v | 5 | 5.0013 | 0.0013 | 0.01002 | 3.71e-14 | 0 |
| case02_qc_9v_switch | 9 | 9.0008 | 0.0008 | 0.02640 | -3.08e-11 | 0 |
| case03_pd_20v_transition | 20 | 20.0010 | 0.0010 | 0.02746 | 1.93e-10 | 0 |
| case04_protocol_mismatch_5v | 5 | 5.0013 | 0.0013 | 0.01002 | 3.71e-14 | 0 |
| case05_load_step | 12 | 12.2997 | 0.2997 | 0.02720 | 4.69e-6 | 0 |
| case06_input_disturbance | 9 | 10.5660 | 1.5660 | 0.01198 | 1.80e-6 | 0 |
| case07_timeout_fault | 5 | 12.0006 | 7.0006 | 0.01002 | -4.9934 | 1 |
表7 模式切换动态指标统计表
| 工况 | 事件时间/s | 切换前目标/V | 切换后目标/V | 达到2%带时间/s | 后事件稳定时间/ms | 峰值偏差/V |
|---|---|---|---|---|---|---|
| case02_qc_9v_switch | 0.02002 | 5.000 | 9 | 0.02640 | 6.38 | 4.000 |
| case03_pd_20v_transition | 0.00402 | 3.618 | 20 | 0.02746 | 23.44 | 17.044 |
| case05_load_step | 0.03002 | 12.000 | 12 | 0.03004 | 0.02 | 0.375 |
表7中 PD 工况“切换前目标”为 3.618 V,是参考电压在 CC attach 事件时刻仍处于斜率上升过程中的瞬时值,并非协议档位值。这反映了 Vref_Manager 的限斜率作用:协议目标已经变为 20 V,但控制参考并非阶跃给定。

效率估算表明,5 V/10 W、9 V/18 W、12 V/24 W 和 20 V/30 W 工况下估算效率分别约为 94.59%、96.88%、97.62% 和 98.68%。该结果来自参数化损耗模型,并未考虑实际器件温升、驱动损耗、死区效应、磁芯频率特性和 PCB 寄生参数,因此适合作为系统级比较而非最终硬件效率预测。
表8 关键模块与对应 Simulink 实现方式对照表
| 关键模块 | Simulink 实现 | 类型 | 来源 |
|---|---|---|---|
| 主模型 | fastcharge_multimode_main.slx | Simulink 模型 | main |
| QC协议 | QC_Controller/Logic | MATLAB Function Block | build_fastcharge_model.m |
| PD协议 | PD_Controller/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 模式仲裁 | Protocol_Manager/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 参考电压 | Vref_Manager/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 控制器 | Discrete_PID_Controller/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 功率级 | Buck_PowerStage/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 保护 | Measurement_Protection/Logic | MATLAB Function Block | build_fastcharge_model.m |
| 日志 | Result_Logging/To Workspace | To Workspace | build_fastcharge_model.m |
8 结论
本文基于真实 Simulink 工程对支持 QC 与 PD 协议的多模式开关电源进行了建模解读、图表生成和动态性能分析。工程主模型为 fastcharge_multimode_main.slx,并非仅有 .slxc 缓存;模型采用 MATLAB Function Block 实现协议状态逻辑、离散控制和平均 Buck 功率级。仿真结果表明,限斜率参考电压能够避免协议目标突变直接作用于控制器,QC 9 V 与 PD 20 V 切换均可实现稳定跟踪;其中 PD 由于电压跨度更大,动态过渡时间明显长于 QC。负载阶跃和输入扰动工况表明,闭环控制在稳态误差方面表现较好,但输入扰动下存在较大瞬态峰值,需要在后续设计中结合前馈、增益调度或更精细的补偿器整定进一步改善。
该模型的主要意义在于提供了“通信协议请求-控制参考管理-功率级响应-保护回退”的统一仿真框架,适合用于毕业设计阶段的多模式快充控制策略验证。模型局限也较明确:PD 仅为简化协商逻辑,未实现完整 USB PD 物理层和策略层;Buck 功率级为平均模型,未包含 Simscape Electrical 器件级开关过程;效率分析为参数化估算,未考虑热效应、EMI、死区时间和 PCB 寄生。后续可在保持协议管理接口不变的前提下,将 Buck_PowerStage 替换为 Simscape Electrical 开关级模型,并引入器件热网络与更完整的 PD 报文状态机。
论文素材清单
表格文件
表1 系统总体模块及功能说明表;表2 主要电路参数表;表3 QC 与 PD 协议模式对比表;表4 控制器参数表;表5 仿真实验工况表;表6 不同模式下输出性能指标对比表;表7 模式切换动态指标统计表;表8 关键模块与对应 Simulink 实现方式对照表。CSV 文件位于 tables/。
公式编号与用途
式(1)描述系统信号流;式(2)-(10)描述 Buck 基本关系与纹波估算;式(11)-(15)描述状态空间和小信号模型;式(16)-(23)描述 QC/PD 判定、合同和模式切换;式(24)-(28)描述离散控制与抗积分饱和;式(29)-(36)描述动态指标与效率估算。
关键参数来源
电路、控制、保护和损耗参数来自 scripts/init_params.m;QC/PD 协议参数来自 scripts/init_protocol.m;工况来自 scripts/run_all_cases.m;模型结构来自 main/fastcharge_multimode_main.slx 和 main/build_fastcharge_model.m;结果指标来自 data/case*.mat、results/case_summary.csv 与 thesis_outputs/tables/*.csv。
工程解读附录
工程目录树
FastCharge_MultiMode_PowerSim
├─ control
│ ├─ build_controller.m
│ ├─ build_protection.m
│ └─ pid_tune_init.m
├─ data
│ ├─ case01_startup_5v.mat
│ ├─ case02_qc_9v_switch.mat
│ ├─ case03_pd_20v_transition.mat
│ ├─ case04_protocol_mismatch_5v.mat
│ ├─ case05_load_step.mat
│ ├─ case06_input_disturbance.mat
│ └─ case07_timeout_fault.mat
├─ doc
├─ figures
├─ main
│ ├─ build_fastcharge_model.m
│ └─ fastcharge_multimode_main.slx
├─ power_stage
│ └─ build_buck_powerstage.m
├─ protocol
│ ├─ build_pd_logic.m
│ ├─ build_qc_logic.m
│ ├─ pdo_config.m
│ └─ qc_state_table.m
├─ results
│ ├─ case_summary.csv
│ ├─ case_summary.mat
│ ├─ efficiency_table.csv
│ └─ efficiency_table.mat
├─ scripts
│ ├─ estimate_efficiency.m
│ ├─ generate_thesis_assets.m
│ ├─ init_params.m
│ ├─ init_paths.m
│ ├─ init_protocol.m
│ ├─ plot_results.m
│ └─ run_all_cases.m
├─ slprj
└─ fastcharge_multimode_main.slxc
主模型识别说明
主模型为 main/fastcharge_multimode_main.slx。依据包括:run_all_cases.m 中明确加载该文件;MATLAB 可读取其顶层模块;顶层模块包含 QC、PD、协议管理、控制器、Buck 功率级、保护和日志。根目录 .slxc 为缓存文件,slprj 为编译缓存,不作为主模型。
脚本作用总结
build_fastcharge_model.m 程序化生成 Simulink 主模型;init_params.m 初始化电路、控制、保护和损耗参数;init_protocol.m 初始化 QC/PD 协议参数;run_all_cases.m 定义并运行 7 组工况;plot_results.m 生成原始结果图;estimate_efficiency.m 生成效率估算;generate_thesis_assets.m 为本文新增脚本,用于规范化论文图表。
结果文件用途总结
data/case*.mat 保存各工况时间序列日志;results/case_summary.csv 保存最大输出、超调、稳定时间和故障标志;results/efficiency_table.csv 保存输出档位、损耗分量和效率估算;thesis_outputs/figures 保存论文插图;thesis_outputs/tables 保存论文表格 CSV。
模型完整性与恢复依据
模型完整性方面,工程包含可打开的 .slx 主模型,不属于“只有 .slxc 缓存”的情况。当前未发现 .mdl、.mlx、.xlsx、.json、.yaml 或文档说明文件。doc 目录为空。模型未使用传统 Stateflow Chart,只有 MATLAB Function Block 对应的 Stateflow.EMChart;功率级不是 Simscape Electrical 器件级模型,而是离散平均 Buck 模型。上述边界均已在正文中明确说明。
需要源文件得请联系作者,制作不易,请各位看官老爷点个赞和收藏
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)