当前位置: 首页 > news >正文

最近在拆解某大厂量产的6.6kW OBC程序时,发现他们PFC和LLC的代码架构有点意思。先看这段PFC的电压环控制核心代码

大厂量产的6.6kw OBC车载充电机程序 PFC和LLC源代码

__interrupt void PFC_ISR(void) { static float Vdc_Err, Duty_Step; //ADC采样值转换成实际电压 Vdc_Actual = (AdcResult.ADCRESULT0 >> 4)*0.0125; Vdc_Err = Vdc_Ref - Vdc_Actual; //带抗饱和的PID算法 if(!PFC_SoftStart_Flag) { Duty_Step = 0; } else { Duty_Step = Kp*Vdc_Err + Ki*Vdc_Err_Integral; Duty_Step = LIMIT(Duty_Step, -0.05, 0.05); //限制步长变化率 } EPwm1Regs.CMPA.half.CMPA = (uint16_t)(Duty_Step * 1000); EPwm1Regs.CMPB = DeadTime_Compensation(EPwm1Regs.CMPA); //死区补偿 }

这段代码有几个实战细节值得注意:首先是ADC采样的0.0125转换系数,对应的是12位ADC基准3.0V时的电压分辨率。工程师用右移4位操作代替了常规的除以16,这种位操作在实时控制中能节省几个时钟周期。再看Duty_Step的限制范围±0.05,对应的是每个控制周期最大5%占空比变化,这种斜率限制对电磁兼容有帮助。

LLC部分的移相控制更有意思,特别是频率跟踪策略:

void LLC_Freq_Update(float Vbat) { float Freq_Base = 85e3; //基准频率85kHz float Freq_Adj = 0; if(Vbat < 300) { Freq_Adj = (300 - Vbat) * 0.15; //低压段频率补偿 } else if(Vbat > 420) { Freq_Adj = (420 - Vbat) * 0.08; //高压段频率补偿 } EPwm2Regs.TBPRD = (uint16_t)(SYSCLK/(Freq_Base + Freq_Adj)); //突发模式阈值判断 if(I_Load < 2.0) { EPwm2Regs.TBCTL.bit.PHSEN = 0; //关闭相位同步 EPwm2Regs.CMPC = 0; //进入burst模式 } }

这里Vbat参数其实是电池电压采样值,在不同电压段采用不同斜率调整频率。特别注意当负载电流低于2A时直接关闭PWM输出进入burst模式,这种设计能有效降低轻载损耗。实测中发现,当SYSCLK=120MHz时,TBPRD寄存器的值必须大于等于8才能稳定运行,否则会出现PWM异常。

在调试PFC+LLC协同工作时,遇到过最头疼的问题是轻载震荡。后来在代码里加了这段状态机才解决:

typedef enum { MODE_TRICKLE, MODE_CC, MODE_CV } CHARGE_MODE; void Charge_StateMachine(void) { static uint16_t skip_cnt = 0; switch(Charge_Mode) { case MODE_TRICKLE: if(I_Charge > 0.1) { skip_cnt++; if(skip_cnt > 30) { //持续30个周期 Charge_Mode = MODE_CC; LLC_Enable_SoftStart(); } } break; case MODE_CC: if(Vbat >= Vbat_CV_Thres) { Charge_Mode = MODE_CV; PFC_Enable_PWM_Limited(); } break; case MODE_CV: if(I_Charge < 0.05) { Charge_Mode = MODE_TRICKLE; LLC_Enter_BurstMode(); } break; } }

状态迁移时需要注意PFC和LLC的使能顺序。比如从涓流充电切换到恒流模式时,必须等LLC完成软启动后再放开PFC的占空比限制,否则会出现母线电压过冲。这里的30个周期延时对应实际约15ms,正好是LLC软启动所需时间。

这些代码片段虽然只是整个OBC程序的冰山一角,但已经能看到量产级代码对时序和状态管理的极致追求。下次有机会再聊聊他们用DSPCLA协处理器实现的故障快速响应机制,那个设计才叫暴力美学。

http://www.jsqmd.com/news/115423/

相关文章:

  • 2025年12月Plc,PLC电工,学plc系统厂家品牌推荐榜,彰显工控国产技术实力 - 品牌鉴赏师
  • cesium126,230816,Ce for Ue 在 Sublevel 中添加各自的天气光照系统的要点:
  • 通用音频系统全链路实战指南
  • 当数字员工搭载AI销冠系统,如何迅速提升销售效率?
  • .net 6及以上版本 普通控制台程序 初始化项目介绍(非WebAPI)
  • 2025年12月plc程序,西门子PLC,三菱PLC厂家推荐:工控行业权威盘点与品质红榜发布 - 品牌鉴赏师
  • 还在手动创建优惠券?RPA一键生成希音活动,效率提升50倍![特殊字符]
  • 融合 Dify 与数眼智能:打造大学生专属 AI 模拟面试助手全攻略
  • 智能衣柜—穿搭助手,内置温湿度传感器,潮湿天气启动除湿功能,防止衣服发霉,APP还能记录衣服穿着频率,推荐久没穿的衣服,避免穿搭重复。
  • hal!HalRequestSoftwareInterrupt是KAPC的情况和hal!HalpApcInterrupt调试记录
  • LLM学习宝典:从理论基础到工程实践的完整路径_大模型入门学习教程(非常详细)看这一篇就够了!
  • pbootcms产品添加与修改
  • vmware安装macos
  • 9 个降AI率工具推荐,继续教育学生必看!
  • 2025大模型学习全攻略:零基础也能快速上手_【小白入门大模型】从零开始学大模型
  • 还在手动分析用户行为?RPA+AI解码希音消费密码,效率暴增100倍![特殊字符]
  • jsxjfnnfdm
  • 研究生福音:8款免费AI工具实测,1小时生成万字问卷论文,真实参考文献必备!
  • 【接口测试】8_Postman _Postman测试报告
  • jdjxjfjcjc
  • 从男孩到男人:爱、榜样与放手的艺术
  • 还在手动处理退款?RPA自动处理希音退款,效率提升20倍!⚡
  • 2025年成都电梯公司选择指南:家用、商用与别墅电梯的深度解析与专业推荐 - 速递信息
  • 【故障检测】基于matlab 6开关电压源逆变器三相中使用27个离散状态开路故障检测【含Matlab源码 14743期】
  • 用户界面(UI)测试自动化:从理论到实战的全面解析
  • 单元测试:代码质量的基石
  • 2025年12月全国黑熊BTO阪熊润滑油,黄熊E720BTO阪熊润滑油,绿熊E620BTO阪熊润滑油厂家品牌推荐榜,彰显国产技术实力 - 品牌鉴赏师
  • 用户体验(UX)测试方法论:从理论到实践的全面解析
  • 【软考系统架构设计师】八、软件可靠性
  • 【弹簧】基于matlab解决弹簧-质量-阻尼系统的强制振动问题【含Matlab源码 14737期】