news 2026/5/1 7:17:17

Matlab Simulink下自定义单相MMC模型的最近电平逼近调制实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Matlab Simulink下自定义单相MMC模型的最近电平逼近调制实现

matlab simulink 在自带系统的单相MMC模型上实现了最近电平逼近调制,模型和函数是自己改的

直接打开Simulink自带的MMC案例时,看到系统默认用的载波移相调制,寻思着把调制策略换成最近电平逼近(NLC)。从Library Browser里拽出来几个Matlab Function模块就开始魔改,结果发现原模型的子模块电容电压平衡逻辑和NLC压根不兼容。

先把原模型的调制波生成部分给扬了,自己搭了个实时计算电平数的函数。关键是要根据当前时刻的调制比和电容总电压动态调整输出电平,这里有个坑——Simulink的function块里不能用persistent变量存历史状态,只能靠延时模块硬凑:

function n = NLC_Calc(u_ref, V_cap_sum) % 计算当前需要投入的子模块数量 N = 40; % 总子模块数 V_step = V_cap_sum / N; n = round(u_ref / V_step); n = max(min(n, N/2), -N/2); % 限制在±20之间 end

这破函数看起来简单,实际调试时发现当调制波突变时会出现电平数跳变。后来在函数外面套了个Rate Limiter模块,把电平变化率限制在每周期最多增减2个,波形立马顺眼多了。

matlab simulink 在自带系统的单相MMC模型上实现了最近电平逼近调制,模型和函数是自己改的

子模块投切逻辑才是重头戏。原模型的排序法在NLC里完全失效,得根据方向信号动态调整排序顺序。折腾出个带权重因子的冒泡排序,把即将过压的电容往前排:

function [gate] = CapacitorBalance(capVoltages, direction) weights = abs(capVoltages - 5000) .* (1 + 0.1*direction); % 5000是目标电压 [~, index] = sort(weights, 'descend'); gate = zeros(size(capVoltages)); gate(index(1:20)) = 1; % 选前20个投入 end

运行仿真时发现电容电压波动比原模型大得多,把排序算法的执行周期从50us改成20us后,电压波动从±8%降到了±3%。不过CPU占用率直接飙到90%,风扇开始鬼畜旋转。

最后在示波器上看输出波形,阶梯状特征明显多了。FFT分析显示13次谐波突然拔高,估计是固定步长仿真导致的副作用。切到变步长ode23t算法后,THD从7.2%降到5.8%,但仿真时间翻了3倍。这性能损耗和效果提升之间的平衡,够喝一壶的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:42:48

OFA-SNLI-VE模型实战:教育行业图文理解训练系统搭建全过程

OFA-SNLI-VE模型实战:教育行业图文理解训练系统搭建全过程 1. 为什么教育场景特别需要图文语义判断能力 你有没有遇到过这样的情况:学生交上来的作业里,配图和文字描述明显对不上?比如作文写“春天的田野开满油菜花”&#xff0…

作者头像 李华
网站建设 2026/5/1 2:48:01

用ms-swift做了个AI助手,效果惊艳且部署简单

用ms-swift做了个AI助手,效果惊艳且部署简单 你有没有试过花一整天配置环境、改几十行代码、调参到凌晨三点,就为了跑通一个大模型微调流程?我试过。直到遇见 ms-swift——它没让我重装三次 CUDA,没让我在 config 文件里迷失方向…

作者头像 李华
网站建设 2026/5/1 2:45:49

告别投稿焦虑:Elsevier Tracker让学术投稿效率提升3倍的效率工具

告别投稿焦虑:Elsevier Tracker让学术投稿效率提升3倍的效率工具 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker Elsevier Tracker作为你的科研效率伙伴,是一款专为学术研究者打造的投稿状态…

作者头像 李华
网站建设 2026/5/1 2:42:59

coze-loop真实案例:如何用AI提升团队代码质量

coze-loop真实案例:如何用AI提升团队代码质量 1. 为什么代码质量总在“将就”和“重构”之间反复横跳? 你有没有经历过这样的场景: Code Review时发现一段嵌套五层的for循环,但没人敢动——“它现在能跑,改了怕出问…

作者头像 李华
网站建设 2026/5/1 2:45:00

verl生产环境维护手册:定期更新与备份建议

verl生产环境维护手册:定期更新与备份建议 verl作为专为大型语言模型后训练设计的强化学习框架,在生产环境中承担着高负载、长时间运行的关键任务。不同于开发阶段的快速迭代,生产环境的稳定性、可恢复性和可持续性是首要目标。本文聚焦于ve…

作者头像 李华