11.5 MATLAB/Simulink在非线性系统分析中的应用

对于非线性控制系统,繁杂的数学理论和图形绘制比较抽象,计算不仅复杂而且难以理解。

利用Simulink提供的非线性模块,通过简单的操作就可以完成非线性、线性系统的仿真。通过鼠标拖动Simulink模块建立起系统模型后,就可以通过选择仿真菜单,设置仿真参数,启动仿真过程,然后通过示波器观看系统的仿真结果,非常简单快捷。

下面通过实例进行讲述。

【例11-6】 设非线性控制系统如图11.26所示。

P_327-1

图11.26 例11-6的系统框图

其中H_327-05,非线性环节N为死区非线性,其表达式为

P_327-2

试用Simulink分析系统单位阶跃响应,并绘制响应曲线。

解:使用Simulink建立仿真框图,如图11.27所示。

P_328-1

图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模块参数对话框。

P_328-2

图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”按钮完成设置。

P_328-3

图11.29 Dead zone模块参数对话框

启动仿真,双击示波器,得到如图11.30所示的图形,它就是系统的阶跃响应曲线。

P_329-1

图11.30 例11-6的系统输出

由于输出结果通过“To workspace”传送到工作空间中,因此系统输出响应曲线也可在工作空间中显示。

启动仿真后,在MATLAB命令窗口中输入“whos”,则显示如下:

  1. >> whos
  2. Name Size Bytes Class
  3. c 62x1 496 double array
  4. t 62x1 496 double array
  5. tout 62x1 496 double array
  6. Grand total is 186 elements using 1488 bytes

然后输入画图命令,即可将系统输出响应曲线绘制出来。

在MATLAB命令窗口中输入如下程序:

  1. plot(, c) %绘制响应曲线
  2. xlabel('t'); ylabel('c(t)') %标示横纵坐标

按回车键后显示如图11.31所示的响应曲线。

P_329-2

图11.31 例11-6的系统阶跃响应曲线