三相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大核心模块,模块间通过全局变量和函数调用实现数据交互,形成闭环控制流程:

  1. 系统初始化模块:负责硬件初始化、全局变量初始化、配置参数加载;
  2. 数据采集模块:实现电压、电流、温度等物理量的采样与校准;
  3. 核心控制模块:包含PLL锁相、DQ坐标变换、PI调节、PWM调制等核心算法;
  4. 硬件驱动模块:底层GPIO、PWM、ADC、SDFM等外设的驱动实现;
  5. 故障保护模块:过流、过压、欠压、温度异常等故障检测与处理;
  6. 监控与交互模块:数据日志记录、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
    TINV
    iLAsensed = ((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. 占空比限幅:将输入占空比限制在[-1.0, 1.0];
  2. 开关状态控制:根据占空比正负控制上下桥臂导通(AQCSFRC寄存器强制PWM输出高低);
  3. 死区配置:应用预设死区时间(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更新:TINV
    driverUpdate()→更新3相PWM占空比;
    6. 数据记录:DLOG4CHrun()→记录关键变量;
    7. 有效值计算:POWERMEASSINEANALYZERrun()→计算电压/电流有效值与频率。
  • ISR2():辅助中断(CPU定时器触发),执行SFRA数据采集与后台处理。

六、代码特点与扩展建议

(一)代码优势

  1. 模块化设计:核心控制与硬件驱动分离,便于移植到不同硬件平台;
  2. 灵活配置:通过宏定义切换控制模式、PLL类型、采样参数,适配不同应用场景;
  3. 完善保护:覆盖过流、过压、频率异常等多种故障,提升系统可靠性;
  4. 可调试性:支持SFRA频率响应分析与数据日志记录,便于系统优化。

(二)扩展建议

  1. 增加MPPT控制:在直流侧加入最大功率点跟踪算法,提升光伏转换效率;
  2. 优化PI参数:采用自适应PI或模糊PI算法,改善非线性负载下的控制性能;
  3. 故障日志:增加故障记录功能,存储最近10次故障类型与发生时间;
  4. 远程通信:扩展CAN或EtherCAT通信接口,支持集群控制与远程监控。

七、总结

该三相10kW光伏并网逆变器代码基于TI F28379D DSP实现了完整的并网控制功能,从硬件初始化、数据采集、核心控制到故障保护形成闭环,支持多种工作模式与灵活配置。代码结构清晰、模块化程度高,可作为中大功率光伏逆变器的控制核心,通过参数调整与功能扩展适配不同功率等级与应用场景。

三相10Kw光伏并网逆变器。包含全套理图/PCB/源代码

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐