三相10Kw光伏并网逆变器的全套原理图、PCB、源代码
三相10Kw光伏并网逆变器。包含全套理图/PCB/源代码
一、概述
本文档详细解读基于TI F28379D DSP芯片的三相10kW光伏并网逆变器代码系统。该代码采用模块化设计,涵盖核心控制、硬件抽象、参数配置、驱动适配等多个功能层级,支持交流开环、电流环独立逆变、电流环并网锁相环三种工作模式,具备电压/电流采样、PLL锁相、PI调节、PWM驱动、故障保护、数据监控等完整功能,可满足10kW级光伏并网逆变器的高精度控制需求。
二、代码文件结构与核心模块划分
(一)文件清单与功能定位
| 文件名称 | 核心功能 | 所属模块 |
|---|---|---|
| INVERTER_3PV.c | 全局变量定义、核心控制逻辑(PLL运行、PI调节、DQ变换、数据计算)、状态机管理 | 核心控制模块 |
| INVERTER_3PV.h | 数据类型枚举、全局变量声明、函数原型定义、宏定义 | 核心头文件 |
| INVERTER3PVhal.c | 硬件初始化(ADC、PWM、GPIO、SDFM)、底层驱动实现、中断配置 | 硬件抽象层 |
| INVERTER3PVhal.h | 硬件相关宏定义、寄存器操作封装、驱动函数声明 | 硬件抽象头文件 |
| INVERTER3PVmain.c | 主函数入口、系统初始化流程、后台任务调度、中断服务函数映射 | 系统启动模块 |
| INVERTER3PVsettings.h | 系统参数配置(时钟、电压电流阈值、PWM参数、引脚定义) | 配置模块 |
| device相关文件 | TI F28379D芯片底层驱动库(ADC、CAN、PWM等外设驱动) | 芯片驱动依赖 |
(二)核心模块划分
代码系统按功能可划分为6大核心模块,模块间通过全局变量和函数调用实现数据交互,形成闭环控制流程:
- 系统初始化模块:负责硬件初始化、全局变量初始化、配置参数加载;
- 数据采集模块:实现电压、电流、温度等物理量的采样与校准;
- 核心控制模块:包含PLL锁相、DQ坐标变换、PI调节、PWM调制等核心算法;
- 硬件驱动模块:底层GPIO、PWM、ADC、SDFM等外设的驱动实现;
- 故障保护模块:过流、过压、欠压、温度异常等故障检测与处理;
- 监控与交互模块:数据日志记录、GUI变量交互、状态机管理。
三、核心模块详细功能解读
(一)系统初始化模块
1. 初始化流程(主函数入口)
主函数通过main()函数启动系统,初始化流程如下:
1. 设备底层初始化:TINV_HAL_setupDevice()(时钟、看门狗、Flash配置);
2. 状态机初始化:设置后台任务指针(Alpha状态、A/B任务);
3. PWM配置:禁用PWM时钟→配置3相PWM参数→启用PWM时钟;
4. 外设初始化:ADC(电压/电流/温度采样)、GPIO(LED/继电器/风扇)、SDFM(滤波模块);
5. 控制参数初始化:TINV_globalVariablesInit()(RAMP、DQ变换、PI系数、参考值);
6. SFRA配置:TINV_setupSFRA()(系统频率响应分析模块);
7. 保护配置:TINV_HAL_setupBoardProtection()(过流保护阈值设置);
8. 中断配置:TINV_HAL_setupInterrupt()(映射ISR中断服务函数);
9. 进入后台循环:执行状态机任务与SFRA后台处理。
2. 关键初始化函数说明
- TINV_globalVariablesInit():初始化核心控制变量,包括:
- RAMP发生器:配置载波频率(TINVACFREQ)与控制频率(TINVISRCONTROL_FREQUENCY);
- DQ变换模块:重置ABC-DQ0正/负序变换结构体;
- PLL模块:根据
TINVSPLLTYPE选择SRF或DDSRF锁相环,配置LPF系数; - PI控制器:加载默认比例系数(TINVPIKP)和积分系数(TINVPIKI);
- 采样校准:设置电流/电压采样偏移量(TINVCURRENTOFFSET)与缩放比例(TINVCURRENTSCALE)。
(二)数据采集模块
1. 采样对象与硬件映射
| 采样对象 | 采样方式 | 硬件映射 | 校准方式 |
|---|---|---|---|
| 逆变侧电感电流(iLA/iLB/iLC) | ADC采样 | ADCA/ADCC/ADCD通道→ADCIN14/ADCIN4/ADCIN2 | 偏移补偿+缩放:(采样值-Offset)×Scale |
| 逆变器输出电压(vA/vB/vC) | ADC采样 | ADCA通道→ADCIN4/ADCIN3/ADCIN1 | 偏移补偿+缩放 |
| 电网电压(vGA/vGB/vGC) | ADC采样 | ADCA/ADCC/ADCD通道→ADCIN2/ADCIN2/ADCIN0 | 偏移补偿+缩放 |
| 电网电流(iGA/iGB/iG_C) | SDFM采样 | SDFM1模块→SD1D1/SD1D2/SD1_D3引脚 | 32位数据缩放(TINVSD32PUSCALEFACTOR) |
| 直流母线电压(vbus) | ADC采样 | ADCD通道→ADCIN5 | 直接缩放(TINVVBUSSCALE) |
| 温度(tempA/tempB/tempC/AMB) | ADC采样 | ADCB通道→ADCIN0~ADCIN3 | 直接采样转换 |
2. 采样核心函数
- TINVreadCurrVoltage():读取电压/电流原始采样值,通过偏移量和缩放比例校准:
c
TINViLAsensed = ((float32t)TINVHALILAFB TINVADCPUSCALEFACTOR - TINViLAsensedOffset) TINViLAsensedScale; - TINVreadTemp():读取温度传感器采样值,直接转换为浮点型温度数据;
- TINVreadCurrSDFMSignals():通过SDFM模块读取电网电流,滤波后缩放为实际电流值。
(三)核心控制模块
1. 控制模式切换
代码支持3种控制模式,通过TINVINCRBUILD宏定义切换(在INVERTER3PVsettings.h中配置):
| 模式编号 | 模式名称 | 核心功能 | 应用场景 |
|---|---|---|---|
| 1 | 交流开环模式 | 固定占空比输出,通过RAMP生成正弦波,无电流反馈 | 出厂调试 |
| 2 | 电流环独立逆变模式 | 电流闭环控制,强制输出正弦波,无电网锁相 | 独立逆变供电 |
| 3 | 电流环并网PLL模式 | 电网锁相+电流闭环,跟踪电网频率/相位,实现并网发电 | 光伏并网 |
2. 核心控制算法
(1)PLL锁相环
根据TINVSPLLTYPE选择两种锁相环实现:
- SRF-PLL(同步旋转坐标系锁相环):
TINVSPLLTYPE = TINVSPLLSRF,通过ABC-DQ0变换提取电网电压正序分量,实现频率和相位跟踪; - DDSRF-PLL(直接数字合成同步旋转坐标系锁相环):
TINVSPLLTYPE = TINVSPLLDDSRF,具备更快的动态响应,适用于电网频率波动场景。
锁相环核心运行逻辑:
#if TINV_SPLL_TYPE == TINV_SPLL_SRF
SPLL_3ph_SRF_run(TINV_abc_dq0_pos_vG.q, &TINV_spll_3ph_2); // 输入q轴电压分量
TINV_acSine = sin(TINV_spll_3ph_2.theta[1]); // 输出正弦波(相位跟踪)
TINV_acCosine = cos(TINV_spll_3ph_2.theta[1]); // 输出余弦波
#else
SPLL_3ph_DDSRF_run(&TINV_spll_3ph_1, d/q轴正/负序分量);
TINV_acSine = sinf(TINV_spll_3ph_1.theta[1]);
TINV_acCosine = cosf(TINV_spll_3ph_1.theta[1]);
#endif
(2)DQ坐标变换
实现ABC三相坐标系与DQ0同步旋转坐标系的相互转换,用于解耦有功功率(d轴)和无功功率(q轴)控制:
- ABC→DQ0正序变换:
ABCDQ0POS_run(),输入三相电压/电流与锁相环正弦/余弦波,输出d/q/0轴分量; - DQ0→ABC变换:
DQ0ABCrun(),输入d/q/0轴参考值,输出三相调制信号; - 应用场景:电网电压/电流的正负序分离、PI控制后的调制信号转换。
(3)PI控制器
采用双闭环控制结构,电流环PI控制器核心代码:
TINV_gi_id_out = DCL_runPI_C2(&TINV_gi_id, TINV_id_ref, TINV_abc_dq0_pos_iL.d);
// 输出限幅:±1.0(PWM占空比范围)
TINV_gi_id_out = (TINV_gi_id_out > 1.0f) ? 1.0f : TINV_gi_id_out;
TINV_gi_id_out = (TINV_gi_id_out < -1.0f) ? -1.0f : TINV_gi_id_out;
- 输入:电流参考值(TINVidref)、反馈值(dq0变换后的d轴电流);
- 输出:限幅后的PWM占空比参考值(-1.0~1.0);
- 辅助补偿:加入电网电压前馈补偿(abcdq0pos_vG.d)与交叉耦合项补偿(2πfLiq),提升动态响应。
(4)PWM调制
通过TINV_driverUpdate()函数生成3相PWM信号,核心逻辑:
- 占空比限幅:将输入占空比限制在[-1.0, 1.0];
- 开关状态控制:根据占空比正负控制上下桥臂导通(AQCSFRC寄存器强制PWM输出高低);
- 死区配置:应用预设死区时间(TINVINVDEADBANDPWMCOUNT),避免桥臂直通。
(四)故障保护模块
1. 保护类型与检测逻辑
| 保护类型 | 检测条件 | 处理动作 | 故障状态 |
|---|---|---|---|
| 过流保护(OverCurrentTrip) | EPWM跳闸标志检测(EPWMTZINTERRUPT_DCAEVT1) | 关闭继电器→重置参考值(id_ref=0)→设置板卡状态为故障 | boardStatus_OverCurrentTrip |
| 驱动器故障(DSATTrip) | EPWM单触发跳闸(EPWMTZINTERRUPT_OST) | 禁用PWM输出→清除跳闸标志→重启驱动 | boardStatus_DSATTrip |
| 仿真器停止(EmulatorStopTrip) | EPWM周期跳闸(EPWMTZINTERRUPT_CBC) | 强制PWM输出低电平→关闭所有功率器件 | boardStatus_EmulatorStopTrip |
| 欠压/过压保护 | 直流母线电压低于TINVUNDERVOLTLIMIT或高于TINVOVERVOLTLIMIT | 断开电网连接→停止逆变输出 | Fault_UnderVoltageDcBusFault |
| 电网频率异常 | 电网频率超出[45Hz, 65Hz](TINVUNIVERSALGRIDMIN/MAXFREQ) | 禁止并网→进入待机状态 | Fault_UFACFault/OFACFault |
2. 保护核心函数
- TINV_updateBoardStatus():周期检测EPWM跳闸标志,更新板卡状态(空闲/无故障/故障);
- TINVHALclearAllTrips():清除所有PWM跳闸标志,用于故障恢复;
- 故障恢复逻辑:当
TINVclearEPWMTripsRef置1时,执行:禁用驱动→清除跳闸→启用驱动→恢复PWM输出。
(五)监控与交互模块
1. 数据监控变量
代码定义了丰富的GUI监控变量,用于实时反馈系统状态:
- 电气参数:
TINVguiVbus(母线电压)、TINVguiACFreq(电网频率)、TINVguiIrmsA/B/C(三相电流有效值); - 功率参数:
TINVguiActivePower(总有功功率)、TINVguiReactivePower(总无功功率)、TINVguiPFA/B/C(功率因数); - 状态参数:
TINVpvInverterState(逆变器状态)、TINVboardStatus(板卡故障状态)。
2. 状态机管理
后台任务通过状态机实现周期性调度,分为A任务(1ms周期)和B任务(5ms周期):
- A任务(A1()):执行SFRA后台处理与GUI串口通信;
- B任务:
- B1():更新板卡状态→清除跳闸标志;
- B2():LED状态翻转(状态指示);
- B3():继电器控制(并网连接)、风扇控制(温度散热)。
3. SFRA模块(系统频率响应分析)
用于分析系统动态特性,支持电压环/电流环频率响应测试:
- 配置参数:起始频率(TINVSFRAFREQSTART)、频率点数(TINVSFRAFREQLENGTH)、注入幅值(TINVSFRAAMPLITUDE);
- 数据交互:通过SCI接口与GUI通信,上传频率响应数据(幅值/相位)。
(六)硬件驱动模块
1. PWM驱动
- 3相全桥PWM配置:
TINVHALsetup3PHPWM(),设置PWM周期(TINVINVPWMPERIOD)、死区时间(TINVINVDEADBANDPWM_COUNT); - 引脚映射:Q1A/Q3A(A相上桥臂)→EPWM1A/EPWM1B,Q2A/Q4A(A相下桥臂)→EPWM2A/EPWM2B,B/C相类似;
- 驱动更新:
TINVHALupdate_TinvPWM(),根据占空比更新PWM比较寄存器值。
2. 继电器与风扇控制
- 继电器控制:
TINVHALclosePhaseRelay()(闭合A/B/C相电网继电器)、TINVHALcloseNeutralRelay()(闭合中性线继电器); - 风扇控制:
TINVHALfanOn()/TINVHALfanOff(),通过GPIO43控制风扇启停,由TINV_fanSet变量控制。
四、关键配置参数说明(INVERTER_3PV_settings.h)
| 配置项 | 含义 | 默认值 | 调整场景 |
|---|---|---|---|
| TINVINCRBUILD | 控制模式选择 | 1 | 1=开环调试,2=电流环独立,3=并网模式 |
| TINVACFREQ | 电网频率 | 60Hz | 50Hz电网需改为50 |
| TINVVDCNOMINAL | 直流母线标称电压 | 800V | 适配光伏组件串电压 |
| TINVILMAX_SENSE | 最大电感电流采样值 | 25A | 匹配电流传感器量程 |
| TINVILTRIP_LIMIT | 过流保护阈值 | 16A | 小于TINVILMAX_SENSE |
| TINVPIKP/TINVPIKI | PI控制器系数 | 0.1401/0.0785 | 需根据系统动态特性调整 |
| TINVCURRENTOFFSET | 电流采样偏移量 | 1.7 | 校准零点漂移 |
| TINVSPLLTYPE | PLL类型 | TINVSPLLDDSRF | 电网波动大时选择DDSRF |
五、中断服务函数(ISR)
系统核心控制逻辑在中断服务函数中执行,主要ISR函数:
- ISR1():核心控制中断(PWM周期触发),执行:
c
1. 采样读取:TINVreadCurrVoltage()→TINVreadTemp()→TINVreadCurrSDFMSignals();
2. PLL运行:根据控制模式执行RAMP生成或电网锁相;
3. DQ变换:三相电压/电流转换为dq0分量;
4. PI调节:电流环PI计算,输出占空比参考值;
5. PWM更新:TINVdriverUpdate()→更新3相PWM占空比;
6. 数据记录:DLOG4CHrun()→记录关键变量;
7. 有效值计算:POWERMEASSINEANALYZERrun()→计算电压/电流有效值与频率。 - ISR2():辅助中断(CPU定时器触发),执行SFRA数据采集与后台处理。
六、代码特点与扩展建议
(一)代码优势
- 模块化设计:核心控制与硬件驱动分离,便于移植到不同硬件平台;
- 灵活配置:通过宏定义切换控制模式、PLL类型、采样参数,适配不同应用场景;
- 完善保护:覆盖过流、过压、频率异常等多种故障,提升系统可靠性;
- 可调试性:支持SFRA频率响应分析与数据日志记录,便于系统优化。
(二)扩展建议
- 增加MPPT控制:在直流侧加入最大功率点跟踪算法,提升光伏转换效率;
- 优化PI参数:采用自适应PI或模糊PI算法,改善非线性负载下的控制性能;
- 故障日志:增加故障记录功能,存储最近10次故障类型与发生时间;
- 远程通信:扩展CAN或EtherCAT通信接口,支持集群控制与远程监控。
七、总结
该三相10kW光伏并网逆变器代码基于TI F28379D DSP实现了完整的并网控制功能,从硬件初始化、数据采集、核心控制到故障保护形成闭环,支持多种工作模式与灵活配置。代码结构清晰、模块化程度高,可作为中大功率光伏逆变器的控制核心,通过参数调整与功能扩展适配不同功率等级与应用场景。
三相10Kw光伏并网逆变器。包含全套理图/PCB/源代码

更多推荐

所有评论(0)