11.5 MATLAB/Simulink在非线性系统分析中的应用
对于非线性控制系统,繁杂的数学理论和图形绘制比较抽象,计算不仅复杂而且难以理解。
利用Simulink提供的非线性模块,通过简单的操作就可以完成非线性、线性系统的仿真。通过鼠标拖动Simulink模块建立起系统模型后,就可以通过选择仿真菜单,设置仿真参数,启动仿真过程,然后通过示波器观看系统的仿真结果,非常简单快捷。
下面通过实例进行讲述。
【例11-6】 设非线性控制系统如图11.26所示。
图11.26 例11-6的系统框图
其中,非线性环节N为死区非线性,其表达式为
试用Simulink分析系统单位阶跃响应,并绘制响应曲线。
解:使用Simulink建立仿真框图,如图11.27所示。
图11.27 例11-6的Simulink仿真模型框图
在图11.27中,传递函数环节、微分环节来自Simulink\CONTINUOUS;死区非线性(Dead Zone)来自Simulink\DISCONTINUTIES;求和(Sum)来自Simulink\MATH OPERATIONS;双踪示波器(XY Graph)、单踪示波器(Scope)来自Simulink\SINK;阶跃函数(Step)来自Simulink\SOURCE;输出到工作空间(To Workspace)来自Simulink\SINK,用鼠标双击“To Workspace”图标,得到如图11.28所示的To Workspace模块参数对话框。
图11.28 To Workspace模块参数对话框
本题中,需要传输数据向量为c(t)和t,以设置数据向量t为例,在Variable name编辑框中输入向量名“t”, save format编辑选择“Array”(向量)项,然后单击“OK”按钮完成设置。仿真运行后,向量c(t)和t以各自变量名存在于MATLAB工作空间中,以供MATLAB程序使用。
双击死区模块,就会出现该模块的设置窗口,如图11.29所示,图中显示的死区范围是默认值±0.5,分别在Start of dead zone和End of dead zone编辑框内输入“-2”和“+2”,其他选项按默认值设定,然后单击“OK”按钮完成设置。
图11.29 Dead zone模块参数对话框
启动仿真,双击示波器,得到如图11.30所示的图形,它就是系统的阶跃响应曲线。
图11.30 例11-6的系统输出
由于输出结果通过“To workspace”传送到工作空间中,因此系统输出响应曲线也可在工作空间中显示。
启动仿真后,在MATLAB命令窗口中输入“whos”,则显示如下:
- >> whos
- Name Size Bytes Class
- c 62x1 496 double array
- t 62x1 496 double array
- tout 62x1 496 double array
- Grand total is 186 elements using 1488 bytes
然后输入画图命令,即可将系统输出响应曲线绘制出来。
在MATLAB命令窗口中输入如下程序:
- plot(, c) %绘制响应曲线
- xlabel('t'); ylabel('c(t)') %标示横纵坐标
按回车键后显示如图11.31所示的响应曲线。
图11.31 例11-6的系统阶跃响应曲线