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

混合型MMC多电平仿真:整流侧双闭环环流抑制及均压控制的仿真搭建

混合型MMC多电平,整流侧仿真,加入了电压电流双闭环,环流抑制,子模块电容电压均压控制,采用载波移相调制 PS:仿真搭建不易,仅一个仿真

最近在实验室熬了几个通宵,终于搞定了混合型MMC多电平整流侧的仿真。这玩意儿真是电路拓扑和控制策略的缝合怪,光是让仿真能跑起来就烧了我三杯咖啡,今天必须把踩过的坑记下来。

先说说控制架构这个重头戏。电压外环套电流内环的双闭环结构算是基本操作了,但实际调试时PI参数差点让我头秃。电流环的响应速度必须比电压环快三倍以上,否则动态过程直接给你表演波形震荡。贴段核心代码感受下:

function [id_ref, iq_ref] = outer_voltage_loop(vdc_actual, vdc_ref) persistent integral_term; if isempty(integral_term) integral_term = 0; end error = vdc_ref - vdc_actual; integral_term = integral_term + 0.001*error; // 积分系数别乱动! id_ref = 0.5*error + integral_term; // 外环输出作为内环的d轴给定 iq_ref = 0; // q轴在整流模式先置零 end

这个积分系数调了二十多遍才不发散,建议新手先拿0.001试手。注意这里iq_ref没启用,因为本次仿真是纯整流模式,但架构里已经预留了逆变模式的接口。

环流抑制绝对是个磨人的小妖精。当子模块数量超过20个时,相间环流可能达到工作电流的15%,这时候得祭出环流抑制控制器。关键是要提取出二倍频分量,我用的是移动平均滤波器搭配陷波器的组合拳:

def circulating_current_detect(arm_current): window_size = int(3 * fs / f0) ma_filter = np.convolve(arm_current, np.ones(window_size)/window_size, mode='same') # 50Hz陷波器设计 b, a = signal.iirnotch(2*f0, 30, fs) # 特别注意是二倍频! filtered_current = signal.filtfilt(b, a, arm_current - ma_filter) return filtered_current

这里有个隐藏的坑——陷波器相位延迟必须补偿,否则抑制信号会和实际环流错位。仿真时因为这个延迟导致过压炸过两次电容模型,血泪教训。

混合型MMC多电平,整流侧仿真,加入了电压电流双闭环,环流抑制,子模块电容电压均压控制,采用载波移相调制 PS:仿真搭建不易,仅一个仿真

子模块均压控制我用了经典排序法结合占空比补偿。每个控制周期都要对上百个电容电压做快速排序,这里用了C语言的qsort函数硬刚:

int compare_voltage(const void* a, const void* b) { return (*(Submodule*)a).v_cap > (*(Submodule*)b).v_cap ? 1 : -1; } void balance_control(Submodule sm[], int size) { qsort(sm, size, sizeof(Submodule), compare_voltage); // 前10%的模块减少投入时间 for(int i=0; i<size/10; i++){ sm[i].duty_cycle *= 0.95; } // 后10%的模块增加投入时间 for(int i=size-1; i>size*0.9; i--){ sm[i].duty_cycle *= 1.05; } }

实测这个暴力排序法在200个以下子模块时还能扛住,超过这个数量级得换更聪明的分组排序算法。不过本次仿真只有63个子模块,先凑合用着。

载波移相调制部分最怕时序不同步,我用了FPGA里常见的相位累加器思路。每个桥臂的载波相位按360/N度偏移,这里N=7:

always @(posedge clk) begin phase_acc <= phase_acc + 7'd21; // 21=360/17≈21.17 取整 if(phase_acc >= 360) phase_acc <= phase_acc - 360; carr_wave = (phase_acc < 180) ? phase_acc : phase_acc-360; end

这里有个骚操作——用7位寄存器实现相位累加,故意制造量化误差来观察对THD的影响。结果发现当子模块数超过30时,这点误差基本可以忽略不计。

仿真跑通那一刻,我差点给电脑磕了个头。示波器上跳出来的波形堪称艺术品:直流电压稳如老狗,交流侧电流THD只有2.3%,最绝的是各电容电压偏差被死死压在±3%以内。不过说真的,这玩意儿的复现难度堪比用乐高搭埃菲尔铁塔——每个控制环都在互相伤害,参数整定全靠玄学。建议后来者先吃透理论再动手,别像我一样头铁硬肝。

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

相关文章:

  • VSCode 2026车载开发环境搭建:5步完成QNX/Android Automotive双栈调试、CANoe集成与S32DS协同开发
  • 智能客服机器人后台管理系统的AI辅助开发实践:从架构设计到性能优化
  • gte-base-zh开箱即用:Xinference部署与WebUI体验全流程
  • CPU内部构造大揭秘:从寄存器到ALU,一文搞懂计算机的‘大脑‘如何工作
  • TracePro材料命名冷知识:为什么Hikari玻璃和HOYA要用日文原名?
  • Java后端服务集成伏羲气象API:微服务架构设计与实现
  • ESP32-S3驱动MH100X微波多普勒雷达传感器:从原理到自动门控制实战
  • M2LOrder WebUI实战:支持Markdown格式输入与富文本情感结果渲染
  • Qwen-Image-Edit-2509场景应用解析:从电商到内容创作,覆盖多行业需求
  • 2026年公众号编辑器TOP5推荐 微信图文排版终极指南 - 鹅鹅鹅ee
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI开发指南:.NET应用集成模型API
  • 银河麒麟V10+鲲鹏ARM架构下DBeaver安装全攻略(附JDK17配置避坑指南)
  • 解锁LoRA微调潜力:从参数调优到实战避坑指南
  • ResNet18到ResNet152:PyTorch官方代码逐行解析(附实战调试技巧)
  • 文献管理插件失效自救指南:从CNKI到Zotero的通用修复逻辑
  • 2026年牛肉供应优选:哪些厂家口碑佳、品质稳?白牦牛肉/牛肉/白牦牛/新鲜牛肉/鲜牛肉,牛肉供货商哪家好 - 品牌推荐师
  • 高效掌握MissionPlanner:面向无人机开发者的开源地面控制站指南
  • 左侧和右侧假设检验拒绝域关系及可视化
  • FLUX.1-dev部署教程:离线环境安装——预打包依赖+证书白名单配置
  • 为什么你的Pytorch源码编译总失败?Libtorch编译中的5个隐藏陷阱
  • 圣女司幼幽-造相Z-Turbo实战教程:使用LoRA权重切换不同圣女造型风格
  • [函数设计实战] 巧用循环与幂运算,高效求解特殊a串数列和
  • 避坑指南:OpenStack内存超分导致虚拟机卡顿的5个排查步骤
  • 告别模糊,Eclipse工具栏图标缩放全攻略:从原理到实战
  • ELISPOT显色底物选择指南
  • GPT-5.4 接入 OpenClaw 失败?10 个高频报错的完整排查手册(2026)
  • 利用Wireshark分析HTTP协议下的登录数据泄露风险
  • 技术探索:文本驱动CAD建模的技术原理与实践路径
  • Local Moondream2使用心得:提升AI绘画创作效率的核心工具
  • 突破设备壁垒:Macast实现跨设备媒体投射家庭娱乐/办公演示场景解决方案