支持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 组工况,结果文件保存在 dataresults 目录。需要说明的是,当前模型为可执行的系统级平均模型:Buck 功率级由 MATLAB Function Block 中的差分方程实现;QC 与 PD 均为简化协议交互模型;slprj 目录和 .slxc 文件仅作为缓存,不作为模型事实的主要依据。

在这里插入图片描述

2 系统总体方案设计

系统总体结构如图1所示。输入工况由 From Workspace 块提供,包括 mode_selDP_levelDM_levelcc_attachsink_request_idxVin_inRload_inqc_timeout_flagpd_timeout_flag。协议层首先由 QC_ControllerPD_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}VtarVrefD(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={VinvorLiL,vorLiL,S=1,S=0,
i C = i L − v o R .   (3) i_C=i_L-\frac{v_o}{R}. \tag{3} \ iC=iLRvo. (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=LDVinvCrLiL,dtdvC=CoiLvC/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} \  VoDVin. (7)
考虑电感电阻时,
  V o ≈ D V i n − r L I L .   (8) \ V_o \approx D V_{in}-r_L I_L. \tag{8} \  VoDVinrLIL. (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} \  ΔiLLfs(VinVo)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/Co1/L1/(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.mmain/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,VDP3.30∣<0.35VDM0.60∣<0.35,VDP0.60∣<0.35VDM3.30∣<0.35,VDP0.60∣<0.35VDM0.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_attachsink_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)(1ireq4)(τmsg1 ms)(τtr4 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<2retry,nretry2Vtar=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=1qvalid=1pf=0,mode=2cPD=1pf=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×106=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[k1], (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]=Dmaxe[k]<0D[k]=Dmine[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=1I[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)Vf0.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,maxVf×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[Tf5ms,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,maxvo,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.slxmain/build_fastcharge_model.m;结果指标来自 data/case*.matresults/case_summary.csvthesis_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 模型。上述边界均已在正文中明确说明。

需要源文件得请联系作者,制作不易,请各位看官老爷点个赞和收藏
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐