美文网首页
MATLAB编程与应用系列-第15章 Simulink建模与仿

MATLAB编程与应用系列-第15章 Simulink建模与仿

作者: 德特数据 | 来源:发表于2018-10-31 11:02 被阅读0次

本系列教程来源于出版书籍《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:156204968@qq.com。 出版社:人民邮电出版社, 页数:525。

本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com

15.3 Simulink建模与基本操作

上一节15.2节简单介绍了Simulink的启动和文件的建立,并通过一个简单的示例演示了Simulink仿真模型的建立过程,介绍了示波器的使用,数据处理以及仿真参数设置等基本知识。在这一节中,将继续通过一个实例,更加深入地介绍Simulink各模块的基本操作,包括模块移动,复制,连线,输出数据处理,示波器的使用,模型属性设置,颜色设置和仿真参数设置等,通过这一部分的学习,读者能够更加深入地体会到Simulink模型的建立仿真过程。

15.3.1 演示实例

考察下面一个二阶RLC串联电路电路开关闭合后状态变量的变化情况。电路如图15.15所示。


图15.15.二阶RLC串联电路电路图png

给定电路结构的参数为:电源为直流电源U_s=+5VL_1=0.2HR_1=4\OmegaC_1=1uF。电路开关闭合前为零状态,当开关Kt=0_+时刻闭合后,求电路状态变量电感电流i_L和电容电压u_C的变化情况。

对于如图15.15所示的仿真系统中,可以用系统的状态空间模型来描述电路系统。即可以表示为:
\begin{cases} \dot{x}=Ax+Bu\\ y=Cx+Du \end{cases}
其中x 是系统的状态变量,u是系统的输入,y是系统的输出。在Simulink仿真平台下,可以直接输入变换矩阵A,B,C,D对控制系统进行仿真,在后面章节介绍完S-function后,可以使用s-function对这种以状态空间模型描述的系统进行仿真。那么,首先对图15.15所示电路进行分析。

以电感电流i_L和电容电压u_C为状态变量,利用电流回路定律,可以列出电路的KCL方程:
0=R_1i_L + L_1\frac{d_{i_L}}{d_t}+u_C-U_s
加上电容电压u_c的方程:
i_L = C_1\frac{d_{u_C}}{d_t}
于是可以写出系统的状态空间方程:
\begin{bmatrix}0\\0\end{bmatrix}=\begin{bmatrix}R_1&0\\-1&0\end{bmatrix}\begin{bmatrix}i_L\\u_C\end{bmatrix} + \begin{bmatrix}L_1&1\\0&C_1\end{bmatrix}\begin{bmatrix}\dot{i_L}\\ \dot{u_C}\end{bmatrix}+\begin{bmatrix}-1\\0\end{bmatrix}U_s
R=\begin{bmatrix}R_1&0\\-1&0\end{bmatrix}L=\begin{bmatrix}L_1&1\\0&C_1\end{bmatrix}S=\begin{bmatrix}-1\\0\end{bmatrix}X=Y=\begin{bmatrix}i_L\\u_C\end{bmatrix},于是可以得到原系统的状态方程可以表示为:
\begin{cases} X=-L^{-1}RX-L^{-1}SU_s\\ Y=X\end{cases}
于是状态方程中系数矩阵A,B,C,D则分别为:
A=-L^{-1}R,B=-L^{-1}S,C=eyes(2),D=[0,0]^T
得到系统的状态空间方程后,那么就可以进行系统的模型仿真。在这里,首先使用Matlab的M语言对图15.15所示电路进行仿真。然后利用Simulink仿真工具箱对系统进行仿真,比较二者的差异。同时通过Simulink仿真模型,介绍基本的Simulink操作。

(1)仿真方法一:M文件仿真
程序代码如下,M文件仿真结果如图15.16所示。

%Model parameters input
R1=4;
L1=0.2;
C1=1e-6;
V=5;
 
%state-space equation coefficient description
R=[R1 1;-1 0];
D=[-1;0];
L=[L1 0;0 C1];
 
%standard state-space equation model
%dx=A*x+B*u
A=-inv(L)*R;
B=-inv(L)*D;
C=eye(2);
D=zeros(2,1);
 
sys=ss(A,B,C,D);
s1=tf(sys);
[y,t]=step(s1);
y_amplitude=V*y;

%disp the result in diagram
subplot(211)
plot(t,y_amplitude(:,1))
grid on
ylabel('iL(A)');
subplot(212)
plot(t,y_amplitude(:,2))
grid on
ylabel('uc(V)');
图15.16. M文件仿真结果png

(2)仿真方法二:基于Simulink模型仿真

按照上一节中Simulink文件建立的基本步骤建立图15.17所示的仿真模型。完成模型以后,按快捷键CTRL+S或者Simulink模型窗口菜单栏【File】下的【Save】选项。保存文件名为chapter3_1mdl。要建立图15.17所示的模型,需要以下的系统模块:

· Signal Routing模块库中的Demux模块:它的作用实现输入向量信号的分解,在此模型中,将输出的状态变量电感电流i_L和电容电压u_C分开;

· 系统输出库Sink中的Scope模块:它的作用观测输出变量的图形,在此模型中,用来观测电路状态变量i_L,u_C的变化情况;

· 系统输出库Sink中的out模块:它的作用作为信号的输出端口,通常与输入端口In相配合使用;

系统输出库Sink中的To Workspace模块和To File模块:它们的作用分别是把信号输出到工作窗口中和输出到数据文件.mat文件中。


图15.17.Simulink仿真模型png

选择了模块以后,需要将模块拖放到新建立的仿真模型中,这里有两种方法:
①鼠标单击选中的模块不放,将其拖到新建空白仿真模型中,然后松开鼠标左键;
②鼠标选中模块,然后单击右键,单击弹出菜单中的第一个选项Add to ‘chapter3_1_mdl’,模块就出现在空白仿真模型中。如图15.18所示。

图15.18.鼠标右键选中模块png

将所有需要的模块按上面两种方法拖放到空白仿真模型后,摆好相应的位置,连接各个模块,设置完模块的参数和系统仿真参数,进行仿真,得到图15.19所示的结果。

图15.19.仿真模型结果png

作者:德特数据
联系方式:156204968@qq.com

相关文章

网友评论

      本文标题:MATLAB编程与应用系列-第15章 Simulink建模与仿

      本文链接:https://www.haomeiwen.com/subject/biiotqtx.html