4. PCS并网控制总体架构
储能变流器(PCS)的并网控制系统不是单一处理器上的一个程序,而是一套按时间尺度分层、按职责分工、按接口耦合的多处理器协同系统。理解总体架构的关键,是先建立“控制层级”的概念:越靠近功率器件,控制周期越短、确定性要求越高;越远离功率器件,控制周期越长、逻辑越复杂、人机交互越多。PCS并网控制通常划分为三层——器件级快速控制层(微秒级)、变流器级控制与保护层(几十微秒至毫秒级)、系统级调度与监控层(毫秒至秒级)。三层之间通过明确的接口交换数据与命令,任何一层越权或延迟都会直接反映为并网电流畸变、保护误动或调度响应超时。
一、控制层级与时间尺度划分
器件级快速控制层直接面向IGBT/SiC功率模块,承担PWM脉冲生成、死区插入、桥臂直通保护、ADC采样时序控制等任务,典型控制周期为1~10 μs,要求抖动在纳秒级。这一层通常由FPGA实现,因为FPGA的并行逻辑天然适合多路PWM、多路ADC同步触发和硬件级保护比较。
变流器级控制与保护层承担并网电流闭环、锁相环(PLL)、电压/无功外环、直流母线电压控制、低电压穿越逻辑、过流/过压/过温保护判断等,典型控制周期为50~200 μs(对应10~20 kHz开关频率下的控制节拍)。这一层由DSP承担,因为DSP具备浮点运算能力、丰富的外设和确定性中断响应,适合运行PI调节器、坐标变换和状态机。
系统级调度与监控层承担功率调度指令解析、SOC/SOH状态管理、多机并联协调、Modbus/CAN/以太网上报、本地HMI、事件记录与远程升级等,典型周期为1 ms~1 s。这一层由ARM(或ARM+Linux)承担,因为ARM擅长协议栈、文件系统、网络通信和任务调度,但不适合硬实时闭环。
二、DSP/FPGA/ARM分工的工程边界
三者的分工不是简单的“谁快谁做”,而是由确定性、并行度、协议复杂度三个维度共同决定。FPGA的核心价值在于“并行+硬实时”:例如三相PWM需要6路互补脉冲,若用DSP软件生成,中断抖动会直接导致死区时间波动;而FPGA用硬件计数器比较,抖动可控制在几个纳秒。FPGA还负责将ADC采样时刻与PWM载波谷点严格对齐,保证采样的是电感电流平均值而非开关纹波峰值。
DSP的核心价值在于“浮点运算+中断确定性”。并网电流环需要在每个控制周期内完成Clarke/Park变换、PI运算、反变换和占空比计算,典型运算量约200~500次浮点乘加。以TI C2000系列为例,在200 MHz主频下,一个20 kHz控制周期有10000个时钟周期,足够完成上述运算并留有余量。DSP还承担保护逻辑的“软判断”:例如过流保护先由FPGA在硬件层封锁脉冲,DSP再在下一个中断中记录故障码、判断是否重合闸。
ARM的核心价值在于“协议栈+任务管理”。它不参与硬实时闭环,但负责将DSP上报的电压、电流、温度、SOC等数据打包为Modbus寄存器或IEC 61850 MMS报文,同时解析EMS下发的功率指令并转换为DSP可读的目标值。ARM与DSP之间通常采用SPI或双口RAM(DPRAM)交换数据,SPI适合低速参数传递,DPRAM适合高速批量数据(如故障录波)。
三、通信接口与保护监控接口
PCS的通信接口按对象分为三类。第一类是对BMS:通常采用CAN 2.0B,波特率250 kbps或500 kbps,周期100 ms上报单体电压、温度、SOC、SOH及允许充放电功率。第二类是对EMS/调度:中小型PCS常用Modbus TCP(以太网),大型储能电站则要求IEC 61850 MMS/GOOSE,实现遥测、遥信、遥调、遥控。第三类是对本地电表/环境:RS485 Modbus RTU,读取并网点电压、频率、功率因数及环境温度。
保护与监控接口分为硬接口和软接口。硬接口包括:门极驱动故障回读(FPGA直接封锁)、急停按钮(硬件切断接触器)、过温开关(常闭触点串入使能回路)。软接口包括:DSP通过ADC读取的直流母线电压、桥臂电流、散热器温度,以及ARM通过CAN读取的BMS绝缘电阻和继电器状态。工程上要求硬保护独立于软件,即使DSP死机,FPGA仍能在检测到桥臂过流时于1 μs内封锁PWM。
四、软件任务调度框架
PCS软件通常采用“中断+前后台”或“RTOS任务”两种调度框架。DSP侧以中断驱动为主:PWM周期中断触发ADC采样,ADC转换完成中断触发控制算法,控制算法结束后更新PWM比较寄存器。中断优先级从高到低依次为:硬件故障保护、PWM周期控制、通信接收、慢速任务。ARM侧若运行Linux,则采用多线程+消息队列:通信线程、调度线程、HMI线程、日志线程通过共享内存或socket交换数据;若运行裸机或RTOS,则采用时间片轮询+事件标志。
一个典型的DSP中断服务程序(ISR)伪代码如下,展示了控制节拍内的关键动作顺序:
// PWM周期中断 ISR,20 kHz,周期50 μs
void PWM_ISR(void) {
// 1. 读取FPGA锁存的ADC结果(已与载波谷点对齐)
Ia = ADC_read(IA_CH); Ib = ADC_read(IB_CH); Ic = ADC_read(IC_CH);
Vdc = ADC_read(VDC_CH); Temp = ADC_read(TEMP_CH);
// 2. 软件保护判断(硬件保护已由FPGA先行封锁)
if (Vdc > VDC_OVP || Temp > TEMP_OTP) {
PWM_disable(); Fault_log(FAULT_OVP_OTP); return;
}
// 3. 锁相环更新电网相位
PLL_update(&pll, Va, Vb, Vc);
// 4. 电流闭环:dq变换 -> PI -> 反变换
Clarke_Park(Ia, Ib, Ic, pll.theta, &Id, &Iq);
Id_ref = Vdc_ctrl(Vdc, Vdc_ref); // 直流母线外环
Iq_ref = Q_ref / (1.5 * Vgrid_d); // 无功指令
Vd_out = PI_Id(Id_ref - Id);
Vq_out = PI_Iq(Iq_ref - Iq);
Inv_Park(Vd_out, Vq_out, pll.theta, &Valpha, &Vbeta);
// 5. 更新PWM占空比(写入FPGA比较寄存器)
FPGA_write_duty(Valpha, Vbeta);
// 6. 每10个周期向ARM上报一次数据
if (++report_cnt >= 10) { report_cnt = 0; DPRAM_write(&meas); }
}
该ISR的执行时间需控制在30 μs以内,留出20 μs余量应对最坏情况。若使用C2000的CLA协处理器,可将Park变换和PI运算卸载到CLA,进一步缩短主核负担。ARM侧的任务调度周期通常为10 ms,负责将DPRAM中的测量数据打包为Modbus寄存器,并响应EMS的读写请求。
五、架构设计中的常见误区
第一个误区是让ARM直接参与电流环。ARM的Linux调度抖动可达毫秒级,无法满足20 kHz控制节拍,一旦用于闭环会导致并网电流严重畸变。第二个误区是FPGA只做PWM而不做保护。若过流保护完全依赖DSP软件,从故障发生到封锁脉冲可能超过10 μs,功率模块可能已经损坏。第三个误区是通信接口共用地线。CAN、RS485和以太网若共用地线且未做隔离,BMS或EMS侧的浪涌会直接损坏ARM或DSP的收发器,工程上要求CAN和RS485均采用隔离型收发器,以太网采用变压器隔离。
总体而言,PCS并网控制架构的设计原则可以概括为:快保护下沉到FPGA,闭环控制交给DSP,协议调度留给ARM,三层之间用确定性接口耦合,硬保护独立于软件。只有在这四个原则上达成一致,后续的代码实现、调试和并网测试才有稳定的基础。