前言
在MATLAB课程设计中要做一级RC电路的基于simulink的模型仿真,同时要用appdesigner做到,在appdesigner里修改数值后,自动生成仿真图像。
一、将物理模型转化为数学模型
分析:MATLAB内有一个强大的模块交积分器(integrator)
所以如果可以找到Uc导数(也就是Uc’)或是U2导数,就可以通过积分器就可以得到Uc或U2。
于是我们进行公式推导(字丑不好意思)。
最后我们得到了这个式子
也就将物理模型转化为了数学模型。
二、Simulink建模
我将建模分成三项来做。
1.第一项
通过constant和divide两个模块即可实现。
双击点开任意一个constant模块(我这里点开的是总电压U的)可以看到,我这里的常量值为U,并非一个常数而是一个参数。
参数设置
所以接下来我们来说一下这参数如何设置。
首先,在建模中找到模型资源管理器,点击后就会出现下面的信息框,选中Base Workspace 或者 Model Workspace。
点击这个类似于“田”字的标志,即可新建参数,之后要将参数名称改成与你想要调用的东西一致的名称,例如我这模块会命名为“U”,与constant内的名称相同。
2.第二项
第二项内包含了第一项的内容
同样可以通过constant,divide,add 三个模块表示出来。
3.第三项
将两项通过 add模块 相加减,就得到了Uc’,之后可以通过积分器将Uc’积分成Uc传输到示波器(scope),同时,因为 U = U2 + Uc,所以 U2 = U - Uc,这个公式可以通过上图的 add模块 实现,然后传到示波器里。
至此,simulink的建模就全部完成了。如下图。
4.结果
将数值输入进去后,设计好仿真时间(30us),点击运行,然后点开示波器,即可得到下图。
注意:一定要设置好仿真时间!!!!!!!!!!!!!!!!!!!不然你就只能看到两条直线
三、appdesigner设计
1.画布设计
首先,可以在simulink中打开appdesigner(APP->设计App)
我用到的模块只有两个
拖拽到画布上设计成最简单的样子
为了使图像与我们仿真时间相符,我们要对其X轴的范围及精度进行更改,即修改XTimeSpan和XLimits。
2.变量绑定
接下来对模块进行变量绑定。
点击加号后会跳转simulink,选择你要绑定的变量。
同理,对time scope绑定Uc和U2,两个变量。
3.回调代码
至此,开始写回调代码
首先定义变量,点击代码视图,左边栏的属性,点击加号即可添加函数
之后定义变化的四个变量
U = 1
C = 1
R1 = 1
R2 = 1
然后我们对 编辑字段(数值) 模块进行回调函数的编写。
右键点击模块,找到回调,添加回调。
在函数体内写
app.U = app.UEditField.Value;
app.C = app.CEditField.Value;
app.R1 = app.R1EditField.Value;
app.R2 = app.R2EditField.Value;
assignin("base","U",app.U);
assignin("base","C",app.C);
assignin("base","R1",app.R1);
assignin("base","R2",app.R2);
sim("untitled5")
其中,第一行到第四行都是将你键盘输入的数值赋值给变量。
第五行到第八行是将变量及内部的值传递到Workspace中,才能是simulink进行调用。
最后一句是运行仿真的意思。
然后对另外三个模块都添加回调,内部的函数体与上面的函数是一模一样的,只要复制粘贴就好了。
4.结果
至此,所有事情都做完了。保存后点击运行,可以做到修改框内的数值图像就会变化的功能。
屏幕录制 2024-12-27 175039
总结
以上就是今天要讲的内容,本文主要讲的是物理模型转化数学模型后,如何在simulink建模,同时对appdesigner和simulink的实时交流进行了实践,希望能给点进来的朋友提供帮助,有任何不足之处请指正,同时欢迎各位朋友来讨论。