1. 储能PCS系统架构解析
30KW储能变流器(PCS)作为新能源系统的核心设备,其设计精髓在于双向DCDC与三电平逆变器的协同工作。这套方案采用TI DSP+CPLD的经典控制架构,完美平衡了实时性与控制精度需求。
1.1 系统拓扑结构
该方案采用两级式结构:前级为双向DCDC负责电池侧电压变换,后级为三电平NPC逆变器实现并离网切换。这种架构相比单级式具有三大优势:
- 电池电压适应范围更宽(200-750V直流输入)
- 可实现充放电无缝切换
- 逆变器工作在固定电压比,效率提升2-3%
关键参数设计要点:
- DCDC开关频率:20kHz(硅基IGBT最佳工作点)
- 逆变开关频率:16kHz(兼顾损耗与THD)
- 直流母线电压:800V(匹配1200V器件耐压裕量)
1.2 硬件平台选型
主控采用TI TMS320F28335+XC95144XL组合,其分工如下:
- DSP负责:
- 电压电流环控制算法
- SVPWM波形生成
- 系统状态管理
- CPLD负责:
- 死区时间动态补偿
- 驱动信号互锁保护
- ADC采样时序控制
经验提示:CPLD必须选用5ns以下延迟的型号,否则动态死区补偿会引入额外相位偏差
2. 双向DCDC关键技术实现
2.1 中断服务优化技巧
原始代码展示的中断服务函数采用了五项关键优化:
c复制#pragma CODE_SECTION(epwm1_isr, "ramfuncs")
__interrupt void epwm1_isr(void){
AdcDataLock(); // 0.8us
DcVoltCtrl(); // 2.5us
CurrentRefCalc(); // 1.2us
CurrentCtrl(); // 3.0us
UpdatePwmDuty(); // 0.5us
EPwm1ClearIntFlag();
}
实测各环节耗时如注释所示,总执行时间8us(150MHz主频)。其中"ramfuncs"段声明将代码从FLASH搬移到RAM执行,访问延迟从6周期降至2周期,这是TI DSP开发的经典优化手段。
2.2 双闭环控制参数整定
电压外环与电流内环的PI参数设计文档揭示以下要点:
| 参数 | 并网模式 | 离网模式 | 单位 |
|---|---|---|---|
| 电压环Kp | 0.05 | 0.08 | A/V |
| 电压环Ki | 50 | 120 | A/Vs |
| 电流环Kp | 1.2 | 1.5 | V/A |
| 电流环Ki | 300 | 400 | V/As |
离网模式积分系数增大的根本原因:并网时电网可提供电压支撑,而离网时需PCS独立维持母线稳定。实测表明,当负载从50%突增至100%时:
- 并网模式电压跌落<3%
- 离网模式电压跌落<5%(无抗饱和处理时会达12%)
3. 三电平逆变器核心算法
3.1 优化型SVPWM实现
代码中扇区判断算法采用几何关系替代传统三角函数:
c复制void SVPWM_SectorCalc(void){
int a = (Ubeta > 0) ? 1 : 0;
int b = (sqrt3_Ualpha - Ubeta > 0) ? 1 : 0;
int c = (-sqrt3_Ualpha - Ubeta > 0) ? 1 : 0;
gSector = a*4 + b*2 + c; //直接算出0-6扇区
}
该算法优势在于:
- 完全避免三角函数计算
- 仅需3次比较和2次加法
- 执行时间固定为5个时钟周期
关键细节:sqrt3_Ualpha必须采用Q15格式(0x6ED9),若直接使用浮点1.732会导致边界扇区误判
3.2 动态死区补偿技术
CPLD实现的智能死区补偿代码如下:
verilog复制always @(posedge clk) begin
deadtime_adj = (I_out > 100) ? 3'd4 : 3'd2; //电流大时增加死区
PWM_A_delayed <= #(DT - deadtime_adj) PWM_A_raw;
PWM_B_delayed <= #(DT + deadtime_adj) PWM_B_raw;
end
补偿策略依据:
- 电流>100A时:死区增加40ns(抵消IGBT关断延迟变化)
- 电流<100A时:基准死区100ns
实测显示该技术使: - 输出电压THD降低1.2%
- 开关损耗减少15%
- 桥臂直通故障率下降90%
4. 工程实践关键细节
4.1 动态阻尼电阻控制
LCL滤波器采用MOS管切换的阻尼电阻方案:
c复制if(gridVoltage_THD > 3.0){
DAMP_RES_SW = 1; //谐波超标时接入阻尼
}else{
DAMP_RES_SW = 0; //正常时断开降低损耗
}
设计要点:
- 阻尼电阻值:2Ω(临界阻尼的1.2倍)
- 切换迟滞:0.5% THD(防止频繁切换)
- 响应时间:<2ms(半个工频周期)
实测数据对比:
| 工况 | 固定阻尼 | 动态阻尼 |
|---|---|---|
| 满载效率 | 97.8% | 98.4% |
| 轻载THD | 2.1% | 2.8% |
| 谐振峰值 | +6dB | +1.5dB |
4.2 抗饱和PI控制器实现
不同于普通的输出限幅,该方案采用积分项动态回退:
c复制void PI_AntiWindup(PI_Obj *v){
if(v->out > v->max) {
v->integral -= (v->out - v->max)/v->Kp;
v->out = v->max;
}
}
与传统clamp方式对比:
| 指标 | 普通限幅 | 动态抗饱和 |
|---|---|---|
| 恢复时间(100%→50%负载) | 20ms | 8ms |
| 超调量 | 12% | 4% |
| 振荡次数 | 3 | 1 |
5. 开发调试经验实录
5.1 ADC采样时序陷阱
在调试中发现,当PWM频率为16kHz时,若ADC采样时刻设置在开关沿附近,会导致:
- 电流采样值波动达±20%
- 电压采样毛刺达50V
优化后的采样策略:
- 设置ADC在PWM周期中点触发(计数器=PRD/2)
- 开启S+H窗口模式(窗口宽度100ns)
- 添加二阶RC滤波(fc=1MHz)
5.2 代码优化实战记录
通过反汇编发现原始代码的瓶颈:
- 浮点除法耗时8us → 改用Q15格式乘法
- 三角函数查表访问延迟 → 采用前文几何算法
- 中断现场保护过多 → 手动优化寄存器压栈
优化前后对比:
| 操作 | 优化前周期数 | 优化后周期数 |
|---|---|---|
| 电压环计算 | 380 | 210 |
| SVPWM生成 | 520 | 185 |
| 中断响应延迟 | 12 | 5 |
这套30KW PCS方案最值得借鉴的是其工程实现哲学:在算法层面做减法(如简化SVPWM),在可靠性层面做加法(如动态死区)。实际部署时建议重点关注:
- 散热设计:IGBT基板温度需控制在80℃以下
- 采样校准:电流传感器零漂需每周校正
- 软件看门狗:必须覆盖DSP和CPLD双芯片