1. 系统架构与硬件平台解析
三电平PCS系统采用DSP28335+FPGA的异构计算架构,充分发挥各自优势。DSP28335作为主控制器,负责核心算法运算和系统调度;FPGA作为协处理器,专注于高速数据采集和PWM信号生成。这种架构设计源于电力电子控制对实时性的严苛要求——PWM开关频率通常在10kHz以上,控制周期必须控制在100μs以内。
硬件接口设计上,系统包含几个关键部分:
- 电网侧接口:通过电压/电流互感器采集电网参数,经信号调理电路送入ADC。特别要注意互感器相位补偿,我们在代码中预留了0.5°步进的补偿参数。
- 功率器件驱动:采用光耦隔离驱动IGBT模块,PWM死区时间通过EPwm模块的DBCTL寄存器配置,典型值设为2μs。
- BMS通信:CAN总线采用250kbps速率,每100ms请求一次电池数据。实际部署中发现,必须启用CAN总线终端电阻(120Ω)才能保证通信稳定。
关键提示:DSP的ADC采样窗口时间需要根据信号调理电路的运放响应时间调整,我们最终设置为250ns,过短会导致采样值波动,过长则影响控制实时性。
2. 软件架构与实时调度设计
代码工程采用分层模块化设计,核心层次包括:
- 硬件抽象层(HAL):封装DSP外设驱动,如
DSP2833x_EPwm.c中的PWM配置函数InitEPwm()包含载波频率、死区时间、计数模式等参数设置。 - 实时调度层:基于状态机实现任务调度,主循环周期为100μs,通过PIE中断触发。状态转换逻辑如下:
c复制switch(CNT_Flag) {
case 0: // 初始化状态
System_Init();
CNT_Flag = 1;
break;
case 1: // 待机状态
if(Start_sys) CNT_Flag = 2;
break;
case 2: // 启动准备
Relay_Control();
CNT_Flag = 3;
break;
...
}
- 算法层:包含锁相环、坐标变换、PI调节器等核心算法模块。以锁相环为例,采用基于二阶广义积分器(SOGI)的改进方案,代码实现如下:
c复制void SOGI_PLL(float u_alpha, float u_beta) {
// 正交信号生成
omega = 2 * PI * grid_freq;
u_alpha_hat = (omega * u_beta - omega * u_alpha_hat_last) / (omega + k_sogi);
u_beta_hat = (omega * u_alpha + omega * u_beta_hat_last) / (omega + k_sogi);
// 相位误差计算
phase_error = atan2(u_beta_hat, u_alpha_hat);
// PI调节更新频率
grid_freq += kp_pll * phase_error + ki_pll * phase_error_integral;
phase_error_integral += phase_error;
}
3. 核心控制算法实现细节
3.1 多模式切换逻辑
系统支持12种运行模式,通过Operation_Mode全局变量切换。每种模式对应不同的电流参考生成策略,以"储能优先"模式为例:
- 直流侧控制:电池充放电电流指令通过CAN总线从BMS获取,经限幅处理后作为有功电流参考
i_d_ref。 - 交流侧控制:无功电流参考
i_q_ref可设为固定值或根据功率因数要求动态计算。 - 模式切换时采用渐变策略,避免电流突变:
c复制// 模式切换过渡处理
if(new_mode != current_mode) {
for(int i=0; i<transition_steps; i++) {
i_d_ref = i_d_ref_old + (i_d_ref_new - i_d_ref_old) * i / transition_steps;
i_q_ref = i_q_ref_old + (i_q_ref_new - i_q_ref_old) * i / transition_steps;
delay(control_cycle);
}
}
3.2 三电平PWM调制策略
采用载波层叠PWM(CBPWM)策略,关键实现步骤:
- 电压平衡控制:通过调整小矢量作用时间维持电容电压均衡,算法核心为:
code复制t_small = (Vdc1 - Vdc2) / Vdc_total * T_switch / 2;
- 特定谐波消除(SHE):针对5次、7次谐波预计算优化开关角度,存储在
SHE_Angle_Table[]数组中。 - 实现代码位于
PWM_Generate()函数,包含死区补偿、脉冲封锁等保护逻辑。
4. 故障保护机制深度解析
系统设计了三层防护体系:
- 硬件保护:过流信号直接连接DSP的PDPINT引脚,可在2μs内封锁PWM。
- 软件快速保护(10μs级):在PWM中断服务函数中检测电流瞬时值,超限立即执行
EALLOW; EPwm1Regs.TZFRC.bit.OST = 1; EDIS;。 - 慢速保护(ms级):主循环中检测有效值过流、温度过高等,触发分级响应。
典型故障处理流程:
flow复制st=>start: 故障发生
op1=>operation: 记录故障码
op2=>operation: 封锁PWM输出
op3=>operation: 断开继电器
cond=>condition: 紧急故障?
e=>end: 系统复位
st->op1->op2->op3->cond
cond(yes)->e
cond(no)->op3
5. 工程实践中的关键问题
5.1 电磁干扰(EMI)对策
- PCB布局:将数字地(DGND)与功率地(PGND)单点连接,ADC采样电路采用π型滤波。
- 软件滤波:对关键信号(如电流采样)采用中值滤波+滑动平均组合算法:
c复制float Current_Filter(float raw) {
static float buffer[5];
// 中值滤波
insert_to_buffer(raw);
float median = get_median(buffer);
// 滑动平均
static float avg = 0;
avg = 0.9 * avg + 0.1 * median;
return avg;
}
5.2 实时性优化技巧
- 中断嵌套:将ADC采样中断设为最高优先级,PWM中断次之,通信中断最低。
- 查表法:将三角函数、Park变换等运算预先存储在Flash中,牺牲空间换时间。
- 汇编优化:对耗时严重的函数(如Park变换)用汇编重写,实测可节省30%执行时间。
6. 测试验证方法论
完整的系统验证应包含:
- 开环测试:注入阶跃信号,用示波器观测PWM响应,验证死区时间和驱动电路。
- 闭环静态测试:固定工作点下测量THD、效率等指标,我们实测THD<3%(额定负载)。
- 动态测试:进行模式切换、负载突变等测试,记录动态响应时间(典型值<10ms)。
- 极端工况测试:包括电网跌落、电池故障模拟等,验证保护机制可靠性。
测试中发现的典型问题及解决方案:
- 问题:离网切换时出现电压震荡
- 原因:锁相环参数在模式切换时未重初始化
- 解决:增加模式切换时的PLL复位逻辑:
c复制if(mode_changed) {
PLL_Init();
mode_changed = 0;
}
这套代码框架经过多个实际项目验证,在30kW-500kW功率等级的PCS设备上均稳定运行。最大的体会是:电力电子控制既要深入理解理论算法,又要对硬件特性有充分认识,两者结合才能做出可靠的产品级代码。后续计划加入参数自整定功能,进一步提升系统适应性。
