matlab根据标准参数调节后 交流电流的示波器波形显示的和正确的不一样 为什么会这样?

刚开始玩电机的时候也不喜欢 MATLAB,每次都是直接码代码,然后去转电机。

效果不好就在代码里改来改去,晕晕乎乎调了一周进展也不大。这种情况就是陷入了调参数的怪圈,恶性循环进而打击自信,进步也很缓慢。

后来学会了 simulink,才明白学习 FOC 一定要配合 MATLAB,进步快很多。

1、理解离散系统:在 FOC 中经常涉及到上个开关周期的角度,电压,或者预测下个周期的角度,电流,一般都是通过延时模块实现。

为什么要使用这个模块呢?比如一般 PWM 比较值寄存器被改写后都是使能了预装载,采样后触发计算到比较值生效可以延时 0.5 个开关周期 Ts,也可以延时 1 个开关周期 Ts,或者 1.5 个 Ts。不同的延时对于控制效果有什么区别呢?只需要在 simulink 定义延时时间即可,非常方便对比不同的方案下的区别。这种调试在实物上实现要复杂很多!

2、实现参数自整定:把所有的环路参数放在 m 文件里,在运行工程前,修改电机参数,环路参数等等,先运行 m 文件,可以实现参数自整定。要修改参数也只用改 m 文件,类似宏定义一样,环路的参数自整定和这个也差不多了。

m 文件实现参数自整定

3、强大示波器功能:simulink 的示波器功能非常强大,可以不限制查看任意波形,这在实物调试中也很难做到,除非去开发上位机配合查看,但是也有通道和数据量的限制。一般 ARM M0 的平台也没有资源去开发上位机。

尤其是现在比较通用的直流侧单电阻采样波形,可以清晰看到每个扇区对应的电流波形和单电阻波形的对应关系:

4、模块化的平台,缩短开发周期:一般开发一种新的观测器,阅读文献之后,经过 simulink 验证。在搭建好平台之后,把观测器,速度环,电流环,转矩补偿等等封装成各自的模块。需要验证哪个模块,即进行对应的修改。经过 simulink 验证的方法,基本都可以在实物中实现。如果 simulink 仿真失败,基本就直接放弃了。一般一个新的观测器仿真需要一到两周,可以大大缩短开发周期。

在搭建了完整的仿真平台后,实物和仿真模型基本可以做到 95%以上的对应,除了一些非线性相关的因素,因为在仿真中无法模拟,需要在实物中实现。对于有经验的开发人员,拿到了离散的仿真模型,基本就等于拿到了代码。

当然如果模型在连续域仿真,那当我没说,这种方法以无限的计算量替代离散仿真,基本等同于耍流氓。。。

滑模和电流模型集成到同一平台
滑模模型,和公式一一对应

5、s 函数代码级仿真:如果有足够的精力,simulink 是可以实现 c 语言代码级仿真的。用 s 函数替代离散模块,代码放在 s 函数里,完全可以实现跟实物对应的仿真。移植到实物中代码也可以快速调试通过。

s 函数运行的指令是在命令窗口输入:”mex xx.c“,xx 是 s 函数文件名。

6、在线参数变化的仿真。

一般来,Ld 和 Lq 会随着电流出现饱和特性,所以可以通过 m 文件编程,实现 Ld 和 Lq 在线根据电流查表确定电感值。但是实际的无感 FOC 控制依然使用固定值,电机模型使用的饱和模型,这样子可以评估无感 FOC 的控制方法对电感饱和是否敏感,或者对电感的敏感程度。

用如下文档里的代码生成电感表格:

将表格导入如何可编辑的电机模型即可:

表格需要自己对应代码整理一下。

7、模拟 MCU 的运行方式。使用 Simulink 离散模块搭建的方式,可以模拟 MCU 的硬件执行的结构。一般 MCU 最重要的是主频和中断,分别对应 Simulink 的最上层执行时间和定时执行的中断部分。如下图:

powergui 模块设置仿真步长和类型

使用 powergui 模块设置成离散模式,设置仿真步长 5e-7,相当于仿真最上层是 2MHz 的执行频率,这个 2M 就类似于 MCU 的主频,显示,电机模型本体响应的计算就以这个频率执行。

然后通过脉冲模块设置定时触发执行的控制模块,就相当于是定时执行的中断:

使用 Pulse Generator 模块,执行周期 1e-4,相当于中断频率 10k,控制环路都放在中断里,就跟 MCU 的运行结构非常类似了。执行频率对于离散控制来说是核心参数,不同的执行频率仿真结果区别很大。

千万不要在 powergui 里设置成 continuous 仿真模式,那样会通过很高的计算频率掩盖环路的问题,用连续模式仿真成功基本等同于耍流氓!

8、评估环路的阶跃响应:在伺服中比较常见的测试电流环带宽,一般测试交流给定幅相曲线。

以阶跃响应为例,可以把电机角度固定成 0,电流解耦角度和逆变角度都强制给 0,然后电流环的 Id 给参考,测试 Id 环路的参考和反馈,即可得到阶跃响应。如下图:

以磁链模型为例,当电机模型磁链跟计算使用磁链相等时,观测角度和误差如下:

计算磁链和电机模型磁链相等

当温度上升,磁链降低到只有计算值的 80%,再去比较估算角度和误差,就能判断控制方法对磁链的变化敏感程度。

电机模型的磁链只有计算使用磁链的 80%

对于研究电机控制来说,前期的主要工作放在文献和仿真上,到了代码已经是很后期的工作了。这种工作并不是靠代码量来决定工作进展,也许研究了一个月就改了一行代码却能够解决大问题。

对于我来说,如果不让我使用 simulink 我觉得自己就基本失业了,工作也没有任何乐趣可言。转电机并不是无脑的去写代码做实验,而是通过 simulink 去打磨模型,通过模型的搭建深入理解了方法才去开始实物阶段的实验。要想深入理解 FOC,使用 MATLAB 是必经之路,没有捷径可走。模型对电机的诠释是无法用实验来代替的。

到现在为止,MATLAB 的功能也许我才用了不到 1‰。如果单纯能把 MATLAB 玩得很溜,我觉得年薪百万也不是难题。至少我的工作离不开 MATLAB。

我要回帖

更多关于 示波器在matlab哪个模块 的文章

 

随机推荐