7.2kW光伏储能Heric并网逆变器DSP控制算法与工程实现

发布时间:2026/9/1 2:20:23
7.2kW光伏储能Heric并网逆变器DSP控制算法与工程实现 之前做光伏储能样机的时候我卡得最久的地方不是功率板焊接也不是 DCDC 调压而是“拓扑怎么选”和“DSP 控制算法怎么写”这两件事。网上的资料要么只讲 H4 桥并网要么只丢一个控制框图真正把 Heric 拓扑、TMS320F280039C 外设配置、并网控制环路和 PCB 设计要点串起来的教程很少。本文以 7.2kW 单相光伏储能 Heric 并网逆变器为例完整梳理从系统架构、硬件设计要点到 DSP 控制算法实现的全流程项目资料包含 DSP 代码、PCB 和原理图文章重点讲解其中的控制算法研究与工程落地思路。适合阅读本文的读者有三类一是正在做光伏并网逆变器、储能变流器相关课题的学生二是想把 Heric 拓扑从仿真搬到实物、但卡在 DSP 外设和控制算法细节上的工程师三是准备做数字电源方向、想系统了解 C2000 系列开发方法的人。读完你会搞清楚为什么选 Heric 而不是 H5 或 H4TMS320F280039C 的哪些外设是专门为数字电源准备的单相并网锁相环和电流环怎么写以及样机调试时最容易踩的坑是什么。1. 背景与核心概念1.1 Heric 拓扑解决了什么问题无变压器并网逆变器因为体积小、成本低、效率高已经成为户用光伏和储能的主流方案。但去掉工频变压器后光伏组件对地寄生电容和电网之间会形成共模回路。桥臂开关管高频动作时共模电压不断跳变会在这条回路上激励出高频漏电流。漏电流过大会带来三个问题超过安规限值、降低并网电能质量、还可能带来触电隐患。H5 拓扑和 Heric 拓扑都是为抑制无变压器拓扑共模漏电流而设计的。H5 是在 H4 桥的直流侧增加了一个开关管续流阶段通过直流侧开关管切断桥臂与直流母线的联系。Heric 则是在 H4 桥的交流侧增加由两个反向串联开关管组成的双向旁路支路续流阶段电流走交流旁路桥臂开关管全部关断电感电流不再经过桥臂续流。这样一来续流期间各点电位被钳位共模电压变化幅度大幅减小漏电流也就被压住了。从效率角度看Heric 拓扑在部分负载下比 H5 更有优势因为续流损耗走旁路开关不经过主开关管。这就是为什么 7.2kW 单相光伏储能逆变器经常选择 Heric 拓扑。它的代价是多了两个交流旁路开关管控制时序和驱动电路会稍微复杂一些但这对 DSP 控制来说并不是难事。1.2 为什么选择 TMS320F280039CTMS320F280039C 属于 TI C2000 实时 MCU 系列定位就是数字电源、电机控制和电池管理。相比普通 MCU它有几个非常契合并网逆变器控制的特性。首先是浮点运算单元 FPU。7.2kW 单相并网控制中会大量使用浮点运算比如 SOGI 锁相环、准 PR 控制器、功率计算浮点 MCU 写起来比定点 MCU 省心很多不容易出现标幺化和 Q 格式转换导致的精度问题。其次是 TMU 三角函数加速单元。单相 PLL、正余弦计算、坐标变换会频繁调用 sin、cos 这类函数TMU 能缩短这些计算的执行时间保证 20kHz 中断里算法跑得完。第三是 CLA 控制律加速器。CLA 可以看成是一个能独立运行的控制协处理器它可以直接访问 ADC 结果寄存器并行执行一些简单控制算法。对于后续想扩展 MPPT、电池管理或者更复杂控制策略的开发者来说CLA 能释放主 CPU 的负载。另外C2000 的 EPWM 模块和 ADC 触发机制对数字电源非常友好。EPWM 可以产生带死区的互补 PWMADC 可以由 EPWM 事件触发采样确保每个开关周期在固定时刻采样这对电流环的性能至关重要。CMPSS 比较器子系统还能实现硬件级过流保护不依赖软件响应时间。1.3 7.2kW 单相光伏储能系统架构7.2kW 单相光伏储能系统通常不是一级拓扑而是多级结构。光伏组件先经过 Boost 变换器做 MPPT把光伏电压抬升到直流母线电压储能电池通过双向 Buck-Boost 变换器接到直流母线直流母线再经过 Heric 逆变桥、交流滤波电感和继电器接入电网。有些方案会把电池直接并联在直流母线上母线电压由电池电压决定光伏 Boost 负责能量搬运。具体拓扑结构要根据电池电压范围和电网电压范围来确定。从功率量级上看7.2kW 在 220V 单相电网下的电流有效值约为 32.7A峰值接近 46A。这决定了功率管选型、母线电容、电感、采样电路量程和 PCB 走线宽度后续所有硬件设计都要围绕这个电流等级展开。DSP 控制板负责以下任务采样光伏电压电流、电池电压电流、直流母线电压、电网电压、并网电流运行 MPPT 算法、充放电管理、母线电压环、并网电流环和锁相环输出 PWM 驱动 Heric 主开关管和旁路开关管控制并网继电器和预充电回路实现过压、过流、过温保护。2. 系统方案与硬件设计要点2.1 功率主回路设计功率主回路的架构可以分成前级变换器和后级 Heric 逆变器两部分。前级变换器负责把光伏和电池的能量统一汇到直流母线同时稳定母线电压后级 Heric 逆变器负责把直流母线能量转换成与电网同频同相的正弦电流馈入电网或者反过来从电网取电给电池充电。后级 Heric 主回路核心器件是四个主开关管和两个交流旁路开关管。主开关管承受的是直流母线电压交流旁路开关管因为存在反向串联结构每个管子承受的电压和应力与主开关管不同。7.2kW 功率等级下开关频率通常取 16kHz 到 24kHz本文按 20kHz 讲解。选择 IGBT 还是 SiC MOSFET取决于成本、效率目标和散热方案不能只看电流等级还要看开关损耗和续流二极管反向恢复特性。交流侧滤波器一般使用 L 或 LCL 结构。L 滤波结构简单、控制容易但电感体积大LCL 滤波高频衰减能力强总电感量更小但存在谐振峰需要无源阻尼或有源阻尼控制上更复杂。7.2kW 单相并网逆变器工程上更常见的是 LCL但为了先把控制算法跑通样机阶段先用 L 滤波器比较稳妥。母线电容的作用是维持直流母线电压稳定、吸收前后级功率脉动。单相并网逆变器存在固有二倍频功率脉动母线电容需要足够大这也直接影响成本和体积。2.2 控制板设计要点控制板的核心是 TMS320F280039C 最小系统包括电源供电、时钟、复位、JTAG 下载电路和启动配置。DSP 供电通常是 3.3V需要独立的电源芯片并且要与功率板的驱动电源隔离。采样电路设计非常关键。电网电压采样建议用电阻分压加差分运放把 ±311V 的电网电压映射到 ADC 可接受的 0 到 3.3V 范围。并网电流采样可以用霍尔传感器、隔离运放或采样电阻加隔离放大器7.2kW 电流较大流经采样电阻的损耗不可忽略霍尔方案更常见。直流母线电压采样与电网电压采样类似但要注意母线电压是单极性偏置设计不同。驱动电路方面主开关管和旁路开关管都需要隔离驱动。驱动芯片应具备足够的峰值电流能力最好带负压关断和米勒钳位防止开关管在高 dv/dt 下误开通。旁路开关管因为是交流回路需要根据实际电压方向设计驱动电源。保护电路不能只靠软件。硬件层面要设计过流比较电路快速封锁 PWMDSP 内部使用 CMPSS 比较器把 ADC 采样电流与阈值比较一旦超限立刻触发 EPWM 的 TZ 动作强行把 PWM 输出置为安全状态。这个响应速度在微秒级是软件中断做不到的。2.3 PCB 布局与安全设计PCB 布局直接决定样机能否稳定工作。功率部分按电流走向布置母线电容尽量靠近桥臂减小功率回路的寄生电感驱动信号走线要短驱动芯片靠近功率管采样走线要远离高频开关节点采用差分走线降低干扰。功率地和信号地要分开最后在单点汇合避免采样地受功率地噪声污染。安全方面必须强调并网逆变器直流母线电压高达几百伏调试时不能直接用手触碰功率部分。建议使用隔离变压器或调压器对电网输入降压示波器使用差分探头先低压验证控制算法再逐步升压到额定工况。如果实验条件允许最好在功率板和电网之间串联一个限流电阻或调压器限制意外故障时的电流冲击。3. 开发环境与软件工程搭建3.1 CCS 与 C2000Ware 环境TMS320F280039C 的开发环境是 TI Code Composer Studio也就是 CCS。新建工程时建议直接基于 C2000Ware 中的 F28003x 例程修改而不是从空目录手写。C2000Ware 里包含了芯片外设驱动库、位域定义头文件和大量可运行的示例工程比如 EPWM 产生 PWM、ADC 采样、CMPSS 过流保护等。版本方面以你手头安装的 CCS 和 C2000Ware 版本为准不同版本之间构建系统可能不同有基于工程文件的项目方式也有基于 CMake 的方式。本文不讲具体版本号重点演示配置思路。刚开始接触时先跑通一个简单的 LED 闪烁例程确认仿真器连接、编译下载链路正常再往里面添加外设初始化代码。需要注意 F280039C 的引脚复用功能很多同一个引脚可能是 GPIO、ADC、EPWM、SCI、SPI 中的多个功能。修改引脚分配时要对照数据手册确认复用关系同时在 GpioCtrlRegs 中正确配置输入输出方向和内部上拉状态。3.2 工程文件结构控制算法涉及的代码模块比较多建议按功能分层组织。下面是一个适合并网逆变器项目的目录结构示例project/ ├── src/ │ ├── main.c │ ├── system_init.c │ ├── adc_driver.c │ ├── epwm_driver.c │ ├── protection.c │ ├── pll_sogi.c │ ├── current_control.c │ ├── voltage_control.c │ └── isr.c ├── include/ │ ├── system_init.h │ ├── adc_driver.h │ ├── epwm_driver.h │ ├── protection.h │ ├── pll_sogi.h │ ├── current_control.h │ └── voltage_control.h └── hardware/ └── board_config.hboard_config.h用来放硬件相关的宏定义比如采样系数、ADC 通道映射、PWM 频率、控制周期、保护阈值等。这样换一块硬件时只需要修改这个头文件不需要大改算法代码。3.3 外设初始化顺序外设初始化顺序看起来简单但顺序错了会导致采样异常或 PWM 误动作。推荐顺序是关闭看门狗初始化系统时钟。初始化 GPIO 复用功能。初始化 ADC配置采样通道和触发源并将结果寄存器关联到 EPWM 触发事件。初始化 EPWM配置载波频率、死区、比较值初始值。初始化 CMPSS 硬件过流保护绑定到 EPWM 的 TZ 保护输入。初始化 PIE 中断向量表注册 PWM 中断服务函数。全局开中断启动 EPWM。初始化 EPWM 时默认比较值要设置成不会导致过大占空比输出的安全值避免初始化瞬间输出异常驱动信号。CMPSS 的过流阈值也要在使能 PWM 前配置好否则可能出现“启动即炸管”的问题。4. 核心控制算法拆解4.1 单相锁相环 SOGI-PLL并网逆变器工作的前提是输出电流与电网电压同频同相。三相系统可以直接用 Clarke 变换和 Park 变换得到电网电压矢量角度单相系统只有一个电压信号没有办法直接做 dq 变换所以要先构造一个与电网电压正交的虚拟信号。最常用的方法是 SOGI 二阶广义积分器。SOGI 输入单相电网电压输出两个信号一个与原电压同相位的 alpha 轴分量另一个是滞后 90 度的 beta 轴分量。有了这两个正交分量就可以把单相系统看成静止坐标系下的两相系统后续做 Park 变换得到 dq 分量。SOGI 还有一个好处它本身是一个谐振于电网频率的滤波器对输入电压中的谐波有一定抑制作用锁相环得到的角度比直接过零检测稳定得多。4.2 直流母线电压外环直流母线电压环的任务是维持母线电压稳定。在两级式结构中后级逆变器控制并网功率前级变换器控制母线电压或者反过来由后级控制母线电压。对于光伏储能系统通常做法是光伏 Boost 执行 MPPT电池双向变换器稳定母线电压并网逆变器按功率指令向电网输送电流。母线电压环的输出一般作为并网电流的幅值参考。电网电压基本不变要输出更大的有功功率就需要增大并网电流幅值。这里要注意电压环带宽和电流环带宽必须拉开差距。电流环带宽可以设计到 1kHz 左右电压环带宽通常只有 100Hz 左右否则两个环路相互作用会出现母线电压振荡和并网电流波动。由于单相系统存在二倍频功率脉动母线电压本身会存在 100Hz 的纹波电压环控制器不能对 100Hz 纹波响应太强否则会把二倍频纹波引入电流参考导致并网电流谐波变大。工程上可以在电压环输出后加陷波器或者降低电压环带宽把 100Hz 分量滤掉。4.3 准 PR 电流内环并网电流控制的本质是让电感电流跟踪一个与电网电压同频同相的正弦参考值。在 dq 旋转坐标系下可以用 PI 控制器实现无静差跟踪但需要解耦和坐标变换在静止坐标系下如果直接用 PI 控制器跟踪正弦波会有稳态误差因为它对正弦信号没有无穷大增益。PR 控制器能解决这个问题。PR 控制器的传递函数在谐振频率处增益非常大可以对正弦参考实现无静差跟踪。不过实际电网频率会波动纯 PR 控制器在频率偏离谐振点时增益迅速下降工程中更常用的是准 PR 控制器引入一个带宽系数 wc让谐振点附近保持足够增益又不会对频率偏移过于敏感。准 PR 控制器的调节参数主要有三个Kp 决定动态响应速度Kr 决定谐振增益大小wc 决定谐振带宽。一般先根据系统带宽要求确定 Kp再逐步增大 Kr观察并网电流波形最后调整 wc 兼顾抗频率波动和抗谐波能力。这个调参过程没有捷径需要结合示波器波形逐步试。4.4 Heric 调制策略与共模漏电流抑制Heric 拓扑的调制策略属于单极性调制的一种。以电网电压正半周为例主桥臂中某个上管高频 PWM对应下管按互补方式工作或恒关断另一个桥臂的对角下管常通负载电流从电网正端流向负端。续流阶段主开关管全部关断交流旁路开关管导通电感电流通过旁路续流桥臂不再形成共模电压跳变。负半周的控制与正半周对称只是换了一组桥臂常通另一组桥臂高频开关。下面是一个简化开关逻辑表实际工程需要根据驱动极性、死区时间和开关管耐压方向微调工作区间主开关管状态交流旁路开关正半周功率传输上桥臂高频PWM下桥臂对管导通关断正半周续流全部关断导通负半周功率传输另一组桥臂高频PWM上桥臂对管导通关断负半周续流全部关断导通需要注意Heric 拓扑的调制逻辑如果写错比如续流阶段旁路管没有导通那么拓扑就退化成普通的 H4 桥共模漏电流问题会重新出现甚至因为开关时序错误导致桥臂直通。工程上建议先用低速低压测试调制波形确认每个开关周期内的逻辑关系正确再加大功率。4.5 储能双向功率控制逻辑光伏储能逆变器与普通光伏逆变器的区别在于能量可以双向流动。放电模式下逆变器把光伏和电池的能量馈入电网电流与电网电压同相充电模式下逆变器工作在有源整流状态电流与电网电压反相电网能量进入直流母线给电池充电。双向功率控制的核心是电流参考的方向切换。电流参考由功率指令除以电网电压幅值再乘以电压相位波形得到。功率指令为正时参考电流与电网电压同相功率指令为负时参考电流反向。功率指令不能阶跃变化要设置爬坡率否则电流冲击会非常大。另外还要考虑模式切换时的软起停。比如从放电模式切换到充电模式如果直接翻转电流方向电感电流会瞬间突变可能导致过流保护动作。正确的做法是先把功率指令降到零等电流平稳后再往反方向爬坡。5. 完整实战案例最小并网控制框架这一部分给出一个简化但完整的最小并网控制框架。代码以示例思路为主需要根据实际硬件和工程配置进行调整不能直接复制到任意板卡上运行。示例假设开关频率 20kHz控制周期 50us电网频率 50Hz。5.1 主中断控制流程参数初始化完成后整个控制系统运行在 EPWM 中断中。每次进入中断执行一次采样、一次锁相环更新、一次电流环更新和一次 PWM 占空比更新。// 文件路径src/isr.c __interrupt void EPWM1_INT_ISR(void) { // 1. 读取ADC采样值并转换为实际物理量 ReadAdcAndScale(); // 2. 软件保护检测 if (SoftwareProtectionCheck() ! 0) { DisablePwmOutput(); return; } // 3. 更新锁相环 SOGI_Update(g_sogi, g_sample.vGrid); PLL_Update(g_pll, g_sogi.alpha, g_sogi.beta); // 4. 生成电流参考 g_iRef g_powerRef / g_vGridAmplitude * g_pll.sinTheta; // 5. 电流环控制 float32_t err g_iRef - g_sample.iGrid; g_modulate PR_Update(g_pr, err); // 6. 更新PWM占空比 UpdatePwmDuty(g_modulate); // 7. 清除中断标志 EPwm1Regs.ETCLR.bit.INT 1; PieCtrlRegs.PIEACK.all PIEACK_GROUP3; }实际工程中电流参考的生成要更复杂一些还要叠加无功功率指令、母线电压环输出、死区补偿等。但核心流程就是这样采样、锁相、算参考、调电流、出占空比。5.2 ADC 采样与标幺化ADC 采样结果需要根据硬件采样电路换算成实际电压和电流值。标幺化的主要作用是让算法不依赖具体硬件量程方便参数移植。// 文件路径include/board_config.h #define ADC_VBUS_GAIN 0.15f // 母线电压采样增益单位 V/LSB按实际分压比计算 #define ADC_VGRID_GAIN 0.12f // 电网电压采样增益 #define ADC_IGRID_GAIN 0.02f // 并网电流采样增益单位 A/LSB #define GRID_FREQ_HZ 50.0f #define CONTROL_FREQ_HZ 20000.0f #define CONTROL_PERIOD_S 0.00005f// 文件路径src/adc_driver.c void ReadAdcAndScale(void) { g_sample.vBus (float32_t)AdcResult.ADCRESULT0 * ADC_VBUS_GAIN; g_sample.vGrid (float32_t)AdcResult.ADCRESULT1 * ADC_VGRID_GAIN; g_sample.iGrid (float32_t)AdcResult.ADCRESULT2 * ADC_IGRID_GAIN; }采样系数必须和硬件采样电路一一对应。更换硬件后第一件事就是重新标定这些系数否则控制环路参数再准也没有意义。5.3 S