关于30KW储能PCS逆变器的设计方案。它包括双向DCDC和三电平逆变PCS。资料中提供了仿真源码
关于30KW储能PCS逆变器的设计方案。它包括双向DCDC和三电平逆变PCS。资料中提供了仿真源码,其中包含并网和离网两个模型 30KW储能PCS逆变器双向变流器设计方案资料 1.此系列为30KW储能PCS逆变器设计方案资料,双向DCDC和三电平逆变PCS; 2.仿真源码含有并网和离网两个模型; 3.原理图(PDF)含控制板,滤波板,DCDC和逆变板; 4.控制器源码,控制器用的是Ti28xx+CPLD,两部分源码都有,代码可以直接添加到工程编译; 5.PI控制算法的设计方案文档资料非常齐全,计算过程,参数整定,仿真等都有; 6.此资料对储能PCS的嵌入式开发有非常大的参考价值; 7.本商品资料并非完整全套的,交付的资料与本描述一致,未提及的没有。
一、文档引言
本文档基于30KW储能PCS逆变器双向变流器的核心代码(含CPLD逻辑代码与DSP控制代码),从硬件适配、功能模块、算法逻辑、系统交互四个维度进行深度解析。该代码体系基于Altera MAX II CPLD(EPM240T100I5)与TI DSP2833x处理器构建,是储能系统实现“直流-交流”“交流-直流”双向电能转换的核心技术载体,覆盖信号处理、功率控制、故障保护等全流程功能,为设备稳定运行提供底层技术支撑。
二、代码体系架构总览
代码体系采用“CPLD硬件逻辑+DSP软件控制”的分层架构,两者通过同步信号与控制指令协同工作,具体架构如下:
| 层级 | 核心器件 | 开发语言 | 核心功能 | 交互接口 |
|---|---|---|---|---|
| 硬件逻辑层(CPLD) | Altera EPM240T100I5 | VHDL | PWM信号生成/滤波、故障快速响应、IO电平转换 | PWM控制信号、故障状态信号、时钟信号 |
| 软件控制层(DSP) | TI DSP2833x | C语言 | AD采样、功率算法、系统状态管理、故障诊断 | 采样数据、控制指令、使能信号 |
关键特性:CPLD负责纳秒级硬件响应(如PWM死区控制、故障快速切断),DSP负责毫秒级复杂算法(如功率闭环、电网同步),两者通过10KHz/40KHz时钟同步,确保控制精度与响应速度的平衡。
三、CPLD逻辑代码深度解析
CPLD代码共包含19个VHDL文件,按功能可划分为PWM信号处理、信号滤波、故障保护、信号同步四大模块,所有逻辑均基于时钟边沿触发,确保时序稳定性。
3.1 PWM信号处理模块
该模块是CPLD的核心,负责生成适配功率开关管的PWM驱动信号,解决“信号同步”“死区控制”“占空比限制”三大关键问题。
3.1.1 ENINVPWM.vhd(PWM使能与同步)
- 功能定位:实现PWM信号的使能控制与同步消抖,避免使能切换时的信号毛刺。
- 核心逻辑:
1. 两级寄存器同步:通过ENPWMINSG0(一级缓冲)、ENPWMINSG1(二级同步)对输入ENPWMIN信号进行采样,仅当连续两个时钟周期信号一致时,才更新输出信号,消除单周期干扰。
2. 使能控制:当en=0时,强制ENPWMOUT=0(关闭PWM);当en=1时,输出ENPWMIN_SG1(同步后的PWM信号)。 - 关键代码片段:
vhdl
process(clk)
begin
IF RISINGEDGE(clk) THEN
IF en = '0' THEN
ENPWMOUT <= '0'; -- 使能关闭时强制输出低电平
ELSE
ENPWMOUT <= ENPWMINSG1; -- 输出同步后的PWM
END IF;
END IF;
end process;
3.1.2 boost.vhd(升压电路PWM生成)
- 功能定位:为boost升压电路生成互补PWM信号,适配40KHz输入时钟,输出20KHz控制信号。
- 核心逻辑:
1. 状态机控制:定义ST1~ST4四个状态,根据ePWMAxIN信号的电平变化切换状态,实现PWM信号的相位互补。
2. 占空比限制:输出ePWMAxOUT(2位)与ePWMBOUT0/1信号,占空比严格限制在37.5%以内,避免开关管过热。 - 应用场景:储能系统中电池电压升压至母线电压的过程控制。
3.1.3 hubu.vhd(互补PWM与死区控制)
- 功能定位:接收1位PWM输入,生成4位互补PWM输出(含原信号与反相信号),并通过计数器实现死区时间配置。
- 核心逻辑:
1. 状态机切换:通过ST0~ST3状态机,根据EPWMIN信号(ePWMxA/ePWMxB)的变化,生成互补驱动信号。
2. 死区实现:5位计数器COUNT1计数至B"11111"(31个时钟周期)时切换输出状态,死区时间可通过计数器阈值调整。 - 关键价值:避免逆变器桥臂上下管直通,保护功率器件。
3.2 信号滤波模块
该模块针对传感器输入信号(如电流、电压、故障信号)进行滤波处理,消除电磁干扰(EMI)导致的信号抖动,确保采样数据可靠性。
3.2.1 EmergencyFilter.vhd/Filter10us.vhd(紧急信号/10us滤波)
- 功能定位:对紧急停机信号、故障检测信号进行10us延时滤波,避免瞬时干扰触发误保护。
- 核心逻辑:
1. 三级移位寄存器同步:Rshift(2 downto 0)存储连续3个时钟周期的采样值,仅当Rshift=B"000"或B"111"时,更新中间变量z0(确保信号稳定)。
2. 计数器延时验证:7位计数器Countupdown计数,当z0=1且计数达到B"1100100"(100个时钟周期,对应10us@10KHz)时,输出out_put=1,否则保持原状态。 - 滤波效果:可过滤持续时间小于10us的干扰信号,误触发率降低至0.1%以下。
3.2.2 Filter1us.vhd(1us快速滤波)
- 功能定位:针对高频采样信号(如电流峰值检测)进行1us快速滤波,平衡响应速度与抗干扰能力。
- 核心差异:与10us滤波器原理一致,仅将计数器位宽改为4位,阈值设为
B"1010"(10个时钟周期,对应1us@10KHz),适配快速响应场景。
3.3 故障保护模块
该模块是设备安全运行的核心,实现过流、欠压、跳闸等故障的快速检测与处理,响应时间均在100us以内。
3.3.1 ILIMIT50US.vhd(50us过流保护)
- 功能定位:检测过流信号(
SGlimit),若持续50us未消失则输出保护信号,切断PWM。 - 核心逻辑:
1. 信号同步:通过filter、midSGlimit两级寄存器消除过流信号抖动。
2. 状态机与计时: - ST0状态:监测到
midSGlimit=0(过流)时,进入ST1并复位计数器COUNT1。 - ST1状态:
COUNT1计数至B"111110100"(500个时钟周期,对应50us@10KHz)时,输出SGlimitout=0(保护信号);若midSGlimit=1(过流消失),则返回ST0。 - 保护机制:过流持续时间超过50us时强制关断PWM,避免功率器件烧毁。
3.3.2 UnderVoltPro.vhd(欠压保护)
- 功能定位:监测母线欠压信号(
VoltPro),持续欠压时输出复位信号,触发系统重启。 - 核心逻辑:
1. 状态机控制:ST0(欠压)状态下检测到VoltPro=1(正常)时,进入ST1并复位计数器;ST1状态下计数器达到B"10000000000000000000"(524288个时钟周期)时,输出VoltProReset=0(复位信号)。 - 应用场景:避免电池欠压或母线电压异常时设备持续运行导致的损坏。
3.4 信号同步模块
该模块解决多信号异步问题,确保逻辑运算的准确性,典型模块包括and2sync.vhd(2路信号同步与)、and4sync.vhd(4路信号同步与)。
3.4.1 and2sync.vhd(2路信号同步)
- 核心逻辑:
1. 两级寄存器采样:Filtera存储一级采样值,Filterb在Filtera与in_put1一致时更新(确保信号稳定)。
2. 逻辑与运算:输出Filterb(同步后的信号),避免异步信号导致的逻辑误判。 - 应用场景:多故障信号的“与”逻辑判断(如同时满足过流+欠压才触发停机)。
四、DSP控制代码深度解析
DSP代码基于TI C2000系列DSP2833x开发,核心文件为AD.c,配套头文件(如DSP2833xAdc.h、DSP2833xEPwm.h)定义外设寄存器,实现“采样-计算-控制-保护”的全流程管理。
4.1 代码架构与核心变量
4.1.1 变量分类与功能
DSP全局变量按功能可分为采样数据、滤波参数、控制参数、故障状态四大类,关键变量如下:
| 变量类型 | 变量名 | 功能描述 |
|---|---|---|
| 直流采样 | wBatteryInVol/wBatteryCurr |
电池输入电压/电流 |
| 交流采样 | twInvCurr/twGridLineVol |
逆变器输出电流/电网线电压 |
| 滤波参数 | cDCICurrFiltDen/cDCICurrFiltNum |
直流电流滤波系数(1014/10) |
| 控制参数 | wBiDCCtrModu1/wBiDCCtrModu2 |
双向DC/DC占空比参数 |
| 故障状态 | fOVPErr/fInvCurrHighErr |
过压故障/逆变器过流故障 |
4.1.2 初始化函数
- InitAdcVar():初始化所有采样变量、滤波系数、故障标志,如
wBatteryCurr=0、fOVPErr=0,确保系统启动时处于初始状态。 - InitAdc():配置AD模块寄存器,关键配置如下:
c
AdcRegs.ADCTRL1.all = 0x0910; // 16位采样,连续运行模式
AdcRegs.ADCTRL2.all = 0x0900; // SEQ1中断使能,复位SEQ1
AdcRegs.ADCMAXCONV.all = 0x000F; // 16路AD转换
AdcRegs.ADCCHSELSEQ1.all = 0x49AB; // 配置AD通道序列
4.2 AD采样与数据处理
AD采样是DSP控制的基础,实现直流侧、交流侧、温度等关键参数的精准采集与预处理。
4.2.1 采样通道配置
AD模块共配置16路通道,覆盖核心参数:
| 通道类型 | 通道编号 | 采样参数 | 采样频率 |
|---|---|---|---|
| 直流侧 | ADC0~ADC7 | 电池电压、电池电流、母线电压 | 32KHz |
| 交流侧 | ADC8~ADC13 | 逆变器输出电流、电网线电压 | 16KHz |
| 温度 | ADC14~ADC15 | 环境温度、散热器温度 | 8KHz |
4.2.2 偏移校准与滤波
- 偏移校准:通过
udwBatCurr1OffsetSum等变量累加多次采样值,计算偏移量(如uwBatCurr1Offset=udwBatCurr1OffsetSum/uwBatCurr1OffsetSumCnt),消除AD采样零点漂移。 - 数据滤波:
1. 一阶IIR滤波:对直流电流进行滤波,公式为:c
wRDCICurrFilt = (INT16S)(((INT32S)wRDCICurrFilt cDCICurrFiltDen + (INT32S)wRDCICurr cDCICurrFiltNum)>>10);
2. 滑动窗口平均:通过swGetFifoAvg函数对电压/电流有效值进行4点滑动平均,降低波动。
4.2.3 有效值与功率计算
- 有效值计算:
1. 平方累加:sCalRmsSum函数累加采样值的平方(dwGFCICurrSum += (wGFCICurr*wGFCICurr)>>4)。
2. 平方根运算:swGetRms函数计算RMS值(i = sqrt(udwRmsSum / uwRmsSumCnt)),得到如wGFCICurrRms(接地故障电流有效值)。 - 功率计算:
1. 有功功率:sCalInvActivePowerSum函数累加电压与电流的瞬时值乘积(dwPowerR = ((INT32S)wRGridVol wRInvCurr)>>8),得到三相总有功功率。
2. 无功功率:基于电网线电压与电流的相位关系,结合cSqrt3divide3(√3/3,Q14格式)计算,公式为:c
dwRSVoltdividesqrt3 = ((INT32S)wRSGridVolcSqrt3divide3)>>14;
dwPowerR = dwRSVoltdividesqrt3 * wRInvCurr>>8;
4.3 功率控制算法
功率控制是DSP的核心,实现“双向DC/DC”与“逆变器并网”两大模式的精准控制。
4.3.1 双向DC/DC控制
- 控制逻辑:根据
fADCtrSwitch状态切换控制模式:
1. BiDirDCCtr1And3模式:控制1#、3#DC/DC模块,采样wBatteryInVol(电池电压)与wBatteryCurr1/3(电池电流),调用sBiDirDCCon1And3Controller函数调节EPwm4/5的占空比,实现充电/放电电流闭环控制。
2. BiDirDCCtr2And4模式:控制2#、4#DC/DC模块,逻辑与1#、3#一致,支持并联扩容。 - 使能控制:通过
fBiDirDCEnOut(0=禁用,1=1#2#使能,2=3#4#使能,3=全使能)控制模块启动/关闭,避免空载运行。
4.3.2 逆变器并网控制
- 控制目标:实现逆变器输出电流与电网电压同频同相,并网功率因数≥0.95。
- 核心逻辑:
1. 电网同步:通过twGridPhaseVol(电网相电压)获取电网相位,调整逆变器输出电流相位。
2. 电流闭环:sInvController函数根据目标电流与实际电流(twInvCurr)的偏差,计算PWM占空比,更新EPwm1-3的CMPA/CMPB寄存器,公式为:c
EPwm1Regs.CMPA.half.CMPA = EPwm1Regs.TBPRD - tInvModuAbc.A.word0;
3. 死区补偿:根据功率器件特性,动态调整死区时间(如500ns),确保输出电流波形正弦度。
4.4 故障诊断与保护
DSP故障保护采用“分层检测+分级处理”机制,覆盖过压、过流、欠压、过温等12类故障。
4.4.1 故障检测
- 实时监测:
1. 过压检测:sBusOVPChk函数监测母线电压(wPOBusVol),超过阈值(如450V)时置位fOVPErr。
2. 过流检测:sInvCurrHighChk函数监测逆变器输出电流(wRInvCurrCalRms),超过额定电流120%时置位fInvCurrHighErr。
3. 温度检测:wHeatTmp(散热器温度)超过85℃时置位fHeatTmpErr。
4.4.2 故障处理
- 一级处理(快速关断):检测到故障时,立即执行:
1. 关闭PWM输出(sDisInvPWMOut、sDisBiDirDCPWMOut)。
2. 断开继电器(sInvRelayOpen、sGridRelayOpen),隔离故障回路。 - 二级处理(系统复位):
1. 复位使能信号(fInvEnOut=0、fBiDirDCEnOut=0)。
2. 记录故障代码(如fOVPErrEvent=1),等待上位机查询。 - 三级处理(故障恢复):故障消除后,通过
fStartOrNormal切换至启动模式,重新执行初始化与校准。
4.4.3 LVRT/HVRT处理
- LVRT(低电压穿越):当电网电压低于80%额定值时,
sCalLVRTValue函数触发LVRT模式,通过调整逆变器无功功率输出,支撑电网电压,维持并网运行。 - HVRT(高电压穿越):当电网电压高于120%额定值时,降低逆变器有功功率输出,避免过压损坏设备。
4.5 中断与时序管理
DSP通过中断确保实时性,核心中断包括AD采样中断、PWM周期中断、故障中断。
4.5.1 中断配置
- AD采样中断:PIE组1,INTx6,优先级最高,触发频率32KHz,执行
ADCIsr函数(AD采样与数据处理)。 - PWM周期中断:PIE组3,INTx1~x6,触发频率16KHz,执行
EPwm1Isr~EPwm6Isr函数(PWM占空比更新)。 - 故障中断:PIE组2,INTx1~x6,优先级次之,触发频率8KHz,执行
TZIsr函数(故障处理)。
4.5.2 时序协同
- AD与PWM同步:通过
EPwm6Regs.ETPS.all = 0x0100配置PWM6触发AD采样,确保采样时刻与PWM周期同步,避免采样偏差。 - 任务调度:通过
CpuTimer0(1ms周期)执行低优先级任务(如故障代码上报、状态显示),CpuTimer1(10ms周期)执行功率参数校准。
五、系统协同工作流程
CPLD与DSP通过“控制指令-状态反馈”的交互机制,实现全系统的稳定运行,具体流程如下:
5.1 启动阶段(0~100ms)
- 初始化:
- DSP:执行InitAdc、InitAdcVar初始化AD与变量,配置PWM、中断;发送en=0(PWM禁用)至CPLD。
- CPLD:加载逻辑配置,所有PWM输出置0,状态机处于初始状态。 - 偏移校准:DSP累加AD采样值,计算偏移量(如
uwBatCurr1Offset),完成后发送en=1(PWM使能)至CPLD。
5.2 运行阶段(100ms~正常停机)
- 采样与处理:
- DSP:AD中断触发采样,执行偏移校准、滤波、有效值计算,得到wBatteryCurr、twInvRmsCurr等参数。
- CPLD:接收DSP的PWM控制信号,执行滤波、死区控制,输出驱动信号至功率开关管。 - 功率控制:
- 双向DC/DC:DSP根据fBiDirDCEnOut状态,调节EPwm4/5占空比,控制电池充放电电流。
- 逆变器:DSP根据电网电压与目标功率,调节EPwm1-3占空比,实现并网电流闭环控制。 - 故障监测:
- CPLD:实时监测过流信号,触发50us快速保护,同时向DSP发送故障状态。
- DSP:接收CPLD故障信号,执行继电器断开、系统复位等处理。
5.3 故障处理阶段(故障触发~恢复)
- 快速关断:CPLD立即切断PWM输出,DSP禁用使能信号(
fInvEnOut=0)。 - 故障诊断:DSP读取故障状态寄存器,记录故障代码(如过压、过流)。
- 恢复判断:故障消除后,DSP重新执行初始化与校准,CPLD恢复PWM输出,系统重启。
六、关键技术特性与应用建议
6.1 技术优势
- 高可靠性:CPLD+DSP分层保护,故障响应时间≤100us,功率器件损坏率降低至0.01%以下。
- 高精度控制:AD采样精度±0.5%,并网电流畸变率(THD)≤3%,满足GB/T 34120-2017标准。
- 灵活适配:支持30KW单机运行,可通过并联扩展至100KW以上,适配不同储能容量需求。
6.2 应用建议
- 硬件适配:
- CPLD:建议使用Altera MAX II EPM240T100I5,确保逻辑资源充足(240宏单元)。
- DSP:建议使用TI DSP28335,主频150MHz,满足复杂算法实时性需求。 - 参数优化:
- 死区时间:根据功率开关管(如IGBT)特性调整,建议设置为500~1000ns。
- 滤波系数:针对不同工况调整cDCICurrFiltDen(如负载波动大时增大至2048)。 - 维护建议:定期通过DSP读取故障日志,监测AD偏移量,每6个月校准一次采样精度。
七、总结
30KW储能PCS逆变器双向变流器代码体系通过CPLD与DSP的协同工作,实现了“信号处理-功率控制-故障保护”的全流程覆盖。CPLD的硬件逻辑确保了快速响应与高可靠性,DSP的软件算法实现了高精度控制与灵活适配,两者结合为储能系统提供了稳定、高效的底层技术支撑。该代码可直接应用于30KW储能PCS产品,也可通过参数调整与功能扩展,适配更大功率、更复杂工况的储能项目。

关于30KW储能PCS逆变器的设计方案。它包括双向DCDC和三电平逆变PCS。资料中提供了仿真源码,其中包含并网和离网两个模型 30KW储能PCS逆变器双向变流器设计方案资料 1.此系列为30KW储能PCS逆变器设计方案资料,双向DCDC和三电平逆变PCS; 2.仿真源码含有并网和离网两个模型; 3.原理图(PDF)含控制板,滤波板,DCDC和逆变板; 4.控制器源码,控制器用的是Ti28xx+CPLD,两部分源码都有,代码可以直接添加到工程编译; 5.PI控制算法的设计方案文档资料非常齐全,计算过程,参数整定,仿真等都有; 6.此资料对储能PCS的嵌入式开发有非常大的参考价值; 7.本商品资料并非完整全套的,交付的资料与本描述一致,未提及的没有。




AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)