1. 项目概述
在电力电子领域,三电平PCS(Power Conversion System)系统因其高效率、低谐波等优势,已成为新能源发电、储能系统中的核心设备。本次分享的基于TI DSP28335平台的三电平PCS系统代码,是我在工业级储能项目中实际验证过的方案。这套代码完整实现了三电平拓扑的控制算法、保护逻辑和通讯功能,可直接用于2kW-50kW功率等级的并网/离网型PCS开发。
与常见的两电平拓扑相比,三电平结构虽然控制复杂度更高,但能显著降低开关器件电压应力,提升系统效率(实测效率可达98.2%)。DSP28335作为经典的C2000系列控制器,其150MHz主频和增强型PWM模块非常适合实现这种需要高精度时序控制的场景。下面将从硬件架构、核心算法、代码实现三个维度展开说明。
2. 硬件架构与信号链路
2.1 主电路拓扑设计
本系统采用T型三电平拓扑(TNPC),由12个IGBT组成的三相桥臂构成。相比二极管钳位型三电平,T型结构减少了钳位二极管数量,更适合中低压应用。关键参数如下:
- 直流母线电压:800V(400V*2)
- 开关频率:20kHz
- 最大输出电流:30A RMS
注意:实际调试中发现,当母线电压超过750V时需特别注意IGBT驱动信号的传播延迟匹配,否则会导致中性点电位不平衡。
2.2 DSP28335外围电路
核心控制板围绕DSP28335设计,关键接口包括:
- PWM输出:使用EPWM1A/B-EPWM6A/B共12路PWM,死区时间通过DBCTL寄存器配置为500ns
- ADC采样:配置为同步采样模式,采样窗口设置为150ns,关键信号包括:
- 三相输出电压(Vabc)
- 直流侧上下电容电压(Vdc1, Vdc2)
- 电感电流(Iabc)
- 故障保护:所有PWM通道均接入Trip Zone,过流保护响应时间<2μs
3. 核心控制算法实现
3.1 三电平SVPWM调制
代码中采用简化七段式SVPWM算法,主要优化点包括:
- 扇区判断:通过Clark变换后的Vα、Vβ值快速确定扇区
c复制int Sector = 0;
if (Vbeta > 0) Sector += 1;
if (3*Valpha - Vbeta < 0) Sector += 2;
if (-3*Valpha - Vbeta < 0) Sector += 4;
- 作用时间计算:通过查表法避免实时浮点运算
- 中性点平衡控制:增加电压偏差项到调制波
实测THD对比:
| 调制方式 | 满载THD | 轻载THD |
|---|---|---|
| SPWM | 5.2% | 8.7% |
| SVPWM | 3.1% | 4.5% |
3.2 双闭环控制策略
电流环采用准PR控制器,在基频处设置50Hz谐振峰:
c复制// PR控制器实现
I_error = I_ref - I_actual;
P_term = Kp * I_error;
R_term += Kr * I_error * (2*cos(w0*Ts));
output = P_term + R_term;
电压环为PI控制,特别注意:
- 外环带宽设置为内环的1/5-1/10
- 加入抗饱和处理(Anti-windup)
4. 关键代码模块解析
4.1 主中断服务程序
配置为10kHz执行周期,优先级最高:
c复制interrupt void ISR_MainCtrl(void) {
ADC_ReadResults(); // 读取ADC结果
Prot_Check(); // 保护检测
PLL_Calc(); // 锁相环计算
CurrentLoop(); // 电流环计算
VoltageLoop(); // 电压环计算
SVPWM_Gen(); // PWM生成
EPWM_Reload(); // 更新PWM寄存器
}
4.2 保护机制实现
多级保护设计:
- 硬件保护(纳秒级):
- 比较器直接触发Trip Zone
- 软件保护(微秒级):
c复制if (I_peak > 35.0) { // 过流保护 Sys_Status |= FAULT_OC; PWM_Disable(); } - 状态机管理:
- 故障后需手动复位才能重启
5. 调试经验与问题排查
5.1 常见异常现象处理
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 中性点电压不平衡 | 驱动信号延迟不一致 | 调整PCB布局,缩短走线长度 |
| 轻载时振荡 | PR控制器Q值过高 | 降低Kr增益,增加阻尼项 |
| 并网电流畸变 | 锁相环动态响应不足 | 调整PLL带宽参数 |
5.2 关键调试工具
- 实时观测:利用CCS的Graph工具监控变量
- 配置步骤:
matlab复制
Add Watch Variable -> Select Global -> Set Sample Rate
- 配置步骤:
- 死区时间验证:通过示波器测量上下管驱动信号
- 效率测试:建议使用Yokogawa WT1800高精度功率分析仪
6. 代码优化技巧
- 定点数优化:将浮点运算转换为Q格式
c复制#define Q15 (1.0/(1<<15)) int16_t I_ref_Q15 = I_ref * (1/Q15); - 查表法加速:预计算SVPWM时间参数
- DMA应用:ADC采样结果通过DMA传输
这套代码经过3个版本的迭代,最终在-40℃~85℃环境温度下通过72小时老化测试。实际项目中,建议重点关注IGBT驱动电路的可靠性设计,这是现场故障的高发点。对于需要进一步扩展功能的开发者,可以基于现有框架增加MPPT、虚拟同步机等高级算法模块。