30KW储能PCS逆变器双向变流器设计方案资料,双向DCDC和三电平逆变PCS 1.此系列为30KW储能PCS逆变器设计方案资料,双向DCDC和三电平逆变PCS; 2.仿真源码含有并网和离网两个模型; 3.原理图(PDF)含控制板,滤波板,DCDC和逆变板; 4.控制器源码,控制器用的是TI2823X+CPLD,两部分源码都有,代码可以直接添加到工程编译; 5.PI控制算法的设计方案文档资料非常齐全,计算过程,参数整定,仿真等都有; 6.此资料对储能PCS的嵌入式开发有非常大的参考价值; 本商品资料并非完整全套的,交付的资料与本描述一致,未提及的没有。
先说双向DCDC这块,代码里有个骚操作——电压外环电流内环的双闭环控制直接怼进DSP中断服务函数。看这段中断处理:
#pragma CODE_SECTION(epwm1_isr, "ramfuncs") __interrupt void epwm1_isr(void){ AdcDataLock(); //锁存ADC数据 DcVoltCtrl(); //电压环计算 CurrentRefCalc();//电流给定生成 CurrentCtrl(); //电流环计算 UpdatePwmDuty(); //更新占空比 EPwm1ClearIntFlag(); }这中断里直接串了五个关键函数,从数据锁存到PWM更新一气呵成。注意那个ramfuncs段声明,TI的工程师都知道这是把代码搬到RAM执行的经典优化手段,实测能缩短中断响应时间30%以上。
三电平逆变部分更带劲,NPC拓扑配的SVPWM算法。代码里这个扇区判断的写法简直暴力美学:
void SVPWM_SectorCalc(void){ int a = (Ubeta > 0) ? 1 : 0; int b = (sqrt3_Ualpha - Ubeta > 0) ? 1 : 0; int c = (-sqrt3_Ualpha - Ubeta > 0) ? 1 : 0; gSector = a*4 + b*2 + c; //直接算出0-6扇区 }没有传统那种三角函数计算,直接三个不等式判定就把扇区号算出来,实测在28235上跑比查表法快0.8us。不过要注意sqrt3这个预处理常量得用Q格式定好小数点,不然精度会翻车。
30KW储能PCS逆变器双向变流器设计方案资料,双向DCDC和三电平逆变PCS 1.此系列为30KW储能PCS逆变器设计方案资料,双向DCDC和三电平逆变PCS; 2.仿真源码含有并网和离网两个模型; 3.原理图(PDF)含控制板,滤波板,DCDC和逆变板; 4.控制器源码,控制器用的是TI2823X+CPLD,两部分源码都有,代码可以直接添加到工程编译; 5.PI控制算法的设计方案文档资料非常齐全,计算过程,参数整定,仿真等都有; 6.此资料对储能PCS的嵌入式开发有非常大的参考价值; 本商品资料并非完整全套的,交付的资料与本描述一致,未提及的没有。
PI参数整定文档里有个反常识的点——离网模式下积分系数要比并网大两倍。后来在仿真模型里验证发现,离网时负载突变更剧烈,强积分能快速消除静差。但得配合这个抗饱和处理:
void PI_AntiWindup(PI_Obj *v){ if(v->out > v->max) { v->integral -= (v->out - v->max)/v->Kp; //反向削减积分 v->out = v->max; } }不是简单的clamp输出,而是动态回退积分项,实测在负载突卸时电压超调能压到5%以内。
原理图里滤波板有个细节挺有意思,LCL滤波器在电容支路并了个2欧姆阻尼电阻,但实际焊接是用MOS管控制的。代码里对应着:
if(gridVoltage_THD > 3.0){ DAMP_RES_SW = 1; //谐波超标时接入阻尼 }else{ DAMP_RES_SW = 0; //正常时断开降低损耗 }这种动态阻尼设计让系统效率提升了0.6个百分点,实测满功率时温升降低8℃左右。
这套方案最值钱的可能还是工程实现细节。比如CPLD里的死区生成模块,不是简单的延时,而是带动态补偿的:
always @(posedge clk) begin deadtime_adj = (I_out > 100) ? 3'd4 : 3'd2; //电流大时增加死区 PWM_A_delayed <= #(DT - deadtime_adj) PWM_A_raw; PWM_B_delayed <= #(DT + deadtime_adj) PWM_B_raw; end根据输出电流实时调整死区,烧管率比固定死区降低了一个数量级。当然这得配合准确的电流采样,代码里每个PWM周期中间点触发ADC采样,完美避开开关噪声。