300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 谐波分析matlab仿真 教程:利用GUI对Simulink模型进行谐波分析

谐波分析matlab仿真 教程:利用GUI对Simulink模型进行谐波分析

时间:2020-06-01 08:43:07

相关推荐

谐波分析matlab仿真 教程:利用GUI对Simulink模型进行谐波分析

本帖最后由 137550162 于 -6-6 18:38 编辑

最近在做一个GUI界面,涉及到了调用Simulink的谐波分析功能以及修改Simulink模型中功能块参数。为了方便以后处理这种问题,现单独把这块重做了一个界面程序以供交流。

主界面:

11.jpg (15.9 KB, 下载次数: 140)

-6-6 18:33 上传

点击负载设置:

12.jpg (34.97 KB, 下载次数: 95)

-6-6 18:33 上传

点击执行:

13.jpg (21.73 KB, 下载次数: 111)

-6-6 18:33 上传

执行后界面:

14.jpg (20.4 KB, 下载次数: 101)

-6-6 18:33 上传

点击绘图区域执行图形重绘界面:

15.jpg (34.13 KB, 下载次数: 102)

-6-6 18:33 上传

具体步骤以及源程序将会在下面详细介绍。

1、首先需要有一个能够正常仿真的Simulink模型,将需要进行谐波分析的信号引入到示波器中:

1.jpg (27.93 KB, 下载次数: 100)

Simulink中相关信号连接方式

-6-6 09:11 上传

2.jpg (25.91 KB, 下载次数: 77)

GUI界面设计

-6-6 09:22 上传

如左上图所示,本GUI将对负载(Load)的参数进行设置并对A相电流(示波器的第三通道)进行谐波分析。右上图为GUI设计界面(简化后的界面)。

2、MATLAB提供了对示波器数据进行谐波分析的功能,前提是需要将示波器的波形数据保存到工作空间,让其调用,相关设置如下:

3.jpg (15.45 KB, 下载次数: 80)

示波器设置1

-6-6 09:40 上传

4.jpg (13.7 KB, 下载次数: 121)

示波器设置2

-6-6 09:40 上传

双击示波器-->点击参数设置图标-->选择‘History’选项-->将‘Save ...’项勾上-->设置‘Variable name’(这个名称在谐波分析以及GUI调用时需要),设置‘Fomat’为‘Structure with time’(即就是将数据保存为以时间为基准的结构体中)-->点击‘OK’即可。

3、(用过‘powergui’的可以忽视本步骤)在Simulink中进行谐波分析时我们可以借助‘powergui’中的‘FFT Analysis’功能来进行。分析前需要执行一次仿真。不然没有数据可供分析:

5.jpg (4.24 KB, 下载次数: 122)

powergui

-6-6 09:46 上传

6.jpg (21.58 KB, 下载次数: 85)

powergui界面

-6-6 09:46 上传

双击‘powergui’块,进入选项界面-->点击‘FFT Analysis’进入谐波分析界面:

7.jpg (119.99 KB, 下载次数: 105)

谐波分析

-6-6 09:46 上传

由于需要分析的是示波器的第三通道,将‘input’设置为3即可。其他设置项需要根据分析的具体情况而定,不过开始时间的设置需要注意,不能小于仿真结束时间,分析周期建议一个周期就够了,上面波形中红色的范围即就是分析的部分。将这个调用出来主要是验证GUI中调用的结果。

4、查看负载模型的可操作参数以及参数属性:

双击负载块,进入参数设置界面,可以看到可以设置的参数有好几个,而我们需要知道的是这些参数怎样在Simulink中传递(貌似我所知道的基本都是字符串传递),以及这些参数在Simulink中的具体参数名(一般与设置界面中的名称有些出入,查看具体属性靠谱些)。这里我们需要用到的函数是‘get_param('objpath','ObjectParameters')’,在命令窗口中输入该命令,查看我们需要了解的具体数据(具体函数描述可以看帮助文档)。

8.jpg (24.79 KB, 下载次数: 110)

Load

-6-6 10:36 上传

9.jpg (8.48 KB, 下载次数: 120)

get_param命令

-6-6 10:14 上传

10.jpg (26.44 KB, 下载次数: 128)

参数结构体

-6-6 10:14 上传

我们可以看到返回到h变量中的是一个结构体数据,这些数据包含了所有有关‘Load’块的信息,我们这里需要用到的是最下面几个数据(在‘MaskObject’之后的参数名才是我们需要调用和传递需要的参数)‘BranchType’负载桥类型,‘Resistance’电阻值,‘Inductance’电感值,‘Capacitance’电容值。进一步查看我们会发现这几个数据的类型都是‘string’,虽然在‘BanchType’参数中是‘enum’类型,但传递的任然是字符串数据。这个可以让我们清楚一点,那就是在GUI中我们只需将要设置的数据都统一用字符串表示即可(尤其是编辑框中的数据传递,由于从编辑框中获取的数据本身就是字符串类型,因此无需转换即可直接传递)。

5、(后续将继续编辑上传,不知道可不可以申请为精华帖^_^)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。