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擅长协议栈、文件系统、网络通信和任务调度,但不适合硬实时闭环。

PCS并网控制三层架构与处理器分工 系统级调度与监控层(ARM / Linux,1 ms~1 s) 功率调度指令解析 有功/无功/SOC目标 通信协议栈 Modbus TCP / CAN / IEC 61850 HMI与事件记录 本地显示/远程升级 多机并联协调 功率分配/均流 变流器级控制与保护层(DSP,50~200 μs) 并网电流闭环 dq变换 + PI + 前馈 10~20 kHz控制节拍 锁相环PLL 电网相位/频率跟踪 SOGI / DDSRF 保护判断 过流/过压/过温 LVRT/HVRT状态机 直流母线控制 电压外环 功率平衡 器件级快速控制层(FPGA,1~10 μs) PWM脉冲生成 载波比较/死区插入 多路同步输出 ADC采样时序 同步触发/多通道 采样-更新对齐 硬件级保护 桥臂直通封锁 纳秒级响应 编码器/IO 故障锁存 状态回读 指令下发 / 状态上报 调制波 / 采样数据 通信接口:CAN 2.0B(BMS/多机) · RS485 Modbus RTU(电表/环境) · Ethernet Modbus TCP / IEC 61850(EMS/调度) · 光纤(高压隔离场景)

二、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的读写请求。

工程建议:DSP与FPGA之间的接口信号应包含“心跳”和“看门狗”。若DSP超过5 ms未翻转心跳IO,FPGA应主动封锁PWM并置故障码,防止DSP死机后功率模块持续导通。

五、架构设计中的常见误区

第一个误区是让ARM直接参与电流环。ARM的Linux调度抖动可达毫秒级,无法满足20 kHz控制节拍,一旦用于闭环会导致并网电流严重畸变。第二个误区是FPGA只做PWM而不做保护。若过流保护完全依赖DSP软件,从故障发生到封锁脉冲可能超过10 μs,功率模块可能已经损坏。第三个误区是通信接口共用地线。CAN、RS485和以太网若共用地线且未做隔离,BMS或EMS侧的浪涌会直接损坏ARM或DSP的收发器,工程上要求CAN和RS485均采用隔离型收发器,以太网采用变压器隔离。

总体而言,PCS并网控制架构的设计原则可以概括为:快保护下沉到FPGA,闭环控制交给DSP,协议调度留给ARM,三层之间用确定性接口耦合,硬保护独立于软件。只有在这四个原则上达成一致,后续的代码实现、调试和并网测试才有稳定的基础。