控制系统仿真及MATLAB语言(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-28 09:06:48

点击下载

作者:吴忠强,刘志新 等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

控制系统仿真及MATLAB语言

控制系统仿真及MATLAB语言试读:

前言

系统仿真是近几十年发展起来的一门综合性技术科学,尤其为自动控制系统的分析、设计提供了先进的手段。随着计算机的广泛应用,利用计算机进行仿真试验和研究已成为从事控制领域研究的工程技术人员所必须掌握的一门技术。仿真技术已广泛的应用于工程及非工程领域,并取得了极大的社会及经济效益。

MATLAB软件的诞生,使控制系统的分析与设计问题变得简单。它为控制系统的设计与仿真提供了一个强有力的工具。目前,MATLAB软件已经成为控制领域的标准设计与计算工具。因此,从事控制工程的专业技术人员和学生迫切需要一本介绍控制系统仿真及MATLAB语言的书籍,以满足实际工作及学习的需要。

全书共7章,内容包括概论、MATLAB与Simulink基础、控制系统的数学描述及建模、连续系统的离散化方法、控制系统的时频分析法及根轨迹法、控制系统的校正和控制系统的状态空间设计法。

本书的第1章、第3章、第4章及附录由吴忠强编写。第5章的时频分析部分及第6章由刘志新编写。第5章的根轨迹部分及第7章由魏立新编写。第2章由丁华锋编写。全书由吴忠强汇总整理,刘福才教授主审。由于水平和经验有限,难免有不当之处,恳请读者批评指正。编者2009年1月第1章概论1.1仿真技术概述

计算机仿真技术是近几十年发展起来的一种综合性实验技术,它建立在系统科学、系统建模、控制理论、计算机技术及计算方法等学科的基础上,对系统设计、研究和决策提供了一种先进而有效的手段,并已被广泛应用于工程及非工程领域,取得了显著的社会效益和经济效益。1.1.1 仿真的定义和分类

仿真是用模型(物理模型或数学模型)代替实际系统进行实验和研究的一种方法。为使仿真的结果能被实际证实真实可靠,仿真所遵循的基本原则是相似原理,包括几何相似、环境相似和性能相似。

仿真可以按不同的原则分类。

1.按模型的类型分类

按所用模型的类型可分为物理仿真、数学仿真和数学-物理仿真。

1)物理仿真

物理仿真应用几何相似原理,制作一个与实际系统相似但几何尺寸较小的物理模型(如把飞机模型放在与气流场相似的风洞中)进行实验研究。物理仿真的优点是能最大限度地反映系统的物理本质,具有直观性强和形象化的特点。它的缺点是构造物理模型所需的费用高、周期长、技术复杂。另外,在物理模型上做试验,修改模型的结构及参数困难,实验限制条件多,容易受到环境条件的干扰。

2)数学仿真

数学仿真应用性能相似、环境相似的原理,按照真实系统的数学关系,建立系统的数学模型,并在计算机上进行实验研究。数学仿真的特点是制作模型比较经济,修改参数方便,周期短,但形式抽象、直观性差。

3)数学-物理混合仿真

在某些系统中,把数学模型与物理模型或实物连接在一起进行实验,即将系统的一部分建立数学模型,并放到计算机上,而另一部分构造其物理模型或直接采用实物,然后将它们连接成系统进行实验,这种形式的仿真就称为数学-物理混合仿真或半实物仿真。这种仿真具有数学与物理仿真的共同优点,当然费用也必将大大增加。

2.按计算机类型分类

按计算机类型可分为模拟仿真、数字仿真和混合仿真。

1)模拟仿真

采用数学模型在模拟计算机上进行的实验研究称为模拟仿真。其优点如下:(1)在模拟计算机上进行的计算是“并行的”,因此运算速度快。(2)在模拟计算机上进行的计算是“连续的”因而更接近实际的连续系统。

这两点使得模拟计算机在快速、实时仿真方面至今保持有一定的优势。其缺点如下:(1)计算精度比较低,一般为千分之几。(2)对一些特殊环节(如纯时延或较为复杂的非线性环节)用电子线路进行仿真不仅线路上比较复杂,而且精度不易保证。(3)对采样控制系统,以及当控制系统中有比较多的逻辑判断环节进行仿真时,应用模拟计算机比较困难。(4)仿真的自动化程度较低,如排题版还要接线员去接线。

2)数字仿真

数字仿真利用数字计算机作为仿真工具。其优点如下:(1)即使是小型的数字机,运算精度通常也可达到6位或7位有效数字,精度远远高于模拟机。(2)对于一些特殊环节,用数字机来仿真也很容易。对于仿真采样系统和具有逻辑判断环节的系统的仿真则更是数字机的独特功能。(3)用数字机对控制系统进行仿真,整个被仿真系统都包含在一组程序中,所以使用起来十分方便,修改参数也很容易。(4)仿真工作的自动化程度高。

数字仿真也有缺点。数字机的运算工作是“串行”的,所以运算速度较低,对于一些反应较快的系统若要求“实时仿真”有困难。正是由于这个原因,用数字机进行系统参数的寻优计算则要占用大量的时间,远不如模拟机来得快。

3)混合仿真

由于模拟计算机及数字计算机在控制系统仿真技术中各有优缺点,因此就产生了将这两种机器结合起来进行仿真的混合仿真系统。它的基本结构有两种:一种是在模拟机的基础上增加一些数字逻辑功能,称为混合模拟机;另一种是由模拟机、数字机及混合界面三者联合起来构成一个模拟-数字混合计算系统。混合仿真一般应用于以下几种情况:(1)要求对控制系统进行反复迭代计算时,如参数寻优、统计分析等。(2)要求与实物连接进行实时仿真,同时又有一些复杂的函数需要用数字机来仿真时。(3)对于一些用数字计算机控制的系统进行仿真。此时数字机用于模拟系统中的控制器,而模拟计算机用于模拟被控对象。1.1.2 仿真过程(1)建立系统的数学模型。可以采用机理建模,也可以采用系统辨识的方法建模。数学模型是系统仿真的依据,十分重要。对于控制系统而言,数学模型不仅包括对象,而且还包括了控制器及各种构成系统所必需的部分。(2)建立仿真模型。通过一定的算法对原连续系统的数学模型进行离散化处理,建立相应的差分方程。(3)编制仿真程序。采用适当的高级语言编写出可在计算机上运行的仿真程序。(4)进行仿真实验和结果分析。通过实验对仿真系统模型及程序进行校验和修改。反复多次运行程序直至达到设计要求。

这里涉及3个基本要素(实际系统、数学模型和计算机)和3个基本活动(模型建立、仿真实验和结果分析),共有两次模型化:第一次是将实际系统变成数学模型;第二次是将数学模型变成仿真模型,如图1-1所示。图1-1 数字仿真的基本内容

具体地讲,将一个能近似描述实际系统的数学模型进行二次模型化,转换成一个仿真模型,然后把它们放到计算机上进行运算的过程就是仿真。1.2数字仿真软件

作为控制系统仿真技术的核心,数字仿真软件始终是该领域研究开发的热点。人们总是以最大限度地满足使用者(特别是工程技术人员)方便、快捷、精确的需求为目的,不断地使数字仿真软件推陈出新。

随着计算机与数字仿真技术的发展,数字仿真软件经历了以下4个阶段。(1)程序编制阶段

在人们利用数字计算机进行仿真实验的初级阶段,所有问题(如微分方程求解、矩阵运算、绘图等)都是仿真实验者用高级算法语言(如BASIC、FORTRAN、C语言等)来编写的。往往是几百条语句仅仅解决了矩阵求逆一类的基础问题,人们大量的精力不是放在研究系统问题上,而是过多地研究软件编制、数值稳定性等旁支问题,使仿真工作的效率较低,数字仿真技术难于广泛应用。(2)程序软件包阶段

针对程序编制阶段所存在的问题,许多系统仿真技术研究人员将他们编制的数值计算与分析程序以“子程序”的形式集中起来形成了应用子程序库,又称为应用软件包以便仿真实验者在程序编制时调用。这一阶段中的许多成果为数字仿真技术的应用奠定了基础,但还是存在使用不方便、调用烦琐、专业性要求过强、可信度低等问题。人们开始认识到,建立具有专业化与规格化的高效率的“仿真语言”是十分必要的,以使数字仿真技术真正成为一种实用化的工具。(3)交互式语言阶段

从人-机信息交换便利的角度出发,将数字仿真所涉及的问题上升到“语言”的高度所进行的软件集成,其结果就产生了交互式的“仿真语言”。仿真语言与普通高级算法语言的关系如同C语言与汇编语言的关系一样,仿真语言可用一条指令实现系统特征值的求取,而不必考虑用什么算法以及如何实现等低级问题。20世纪80年代初,由美国学者Cleve Moler等人推出的交互式MATLAB语言以它独特的构思与卓越的性能为控制理论界所重视,MATLAB现已成为控制系统仿真领域最为普及与流行的应用软件。(4)模型化图形组态阶段

尽管仿真语言将人-机界面提高到“语言”的高度,但是对于从事控制系统设计的专业人士来讲还是有许多不便之处,他们对于基于模型的图形化(如框图)描述方法更亲切。随着视窗(Windows)软件环境的普及,基于模型化图形组态的控制系统仿真软件应运而生,它使控制系统计算机仿真进入到一个崭新的阶段。目前,最具代表性的模型化图形组态软件当数美国Math Works软件公司1992年推出的Simulink,它与该公司著名的MATLAB软件集成在一起,成为当今最具影响力的控制系统仿真软件。1.3仿真技术的应用与发展1.3.1 仿真技术的应用

仿真技术最初主要应用于航空、导弹、原子能、宇航等控制系统。主要实现以下几个目的:(1)新系统的建立。如新的控制规律的研究,新的调节器、仪表的应用,新的控制系统的形成与调试等。(2)实现对控制系统的最佳设计与最佳控制。(3)操纵人员的训练。

由于这些系统比较复杂,成本又极其昂贵,加上安全性的考虑,因此采用仿真技术后,收益是十分明显的。随着仿真技术的发展,它在化工系统、冶金系统、电力系统等工程系统中也逐步得到了广泛的应用。可以肯定地说,控制系统的仿真技术是对控制系统进行研究、设计不可缺少的一项重要技术。

建立在仿真技术基础上的各种仿真器可用来训练操纵人员,这是仿真技术应用的一个重要方面,如训练飞行员的飞机仿真器、训练宇航员的宇航仿真器、训练潜艇驾驶员的潜艇仿真器。随着技术的发展和能源供应的日益紧张,用仿真器来训练水上船舶、地面车辆的驾驶员及各种系统的操纵人员也越来越被人们所重视。

近年来,仿真技术在对非工程领域的研究方面也正起着越来越大的作用,如研究对药物的反应、疾病的成因等。1.3.2 仿真技术的发展趋势(1)在硬件方面,基于多CPU并行处理技术的全数字仿真系统将有效地提高仿真系统的速度,从而使仿真系统“实时性”得到进一步加强。(2)随着网络技术的不断完善和提高,分布式数字仿真系统将被人们广泛采用,从而达到“投资少、效果好”的目的。(3)在应用软件方面,直接面向用户的高效能数字仿真软件将不断推陈出新,各种专家系统与智能化技术将更深入地应用于仿真软件开发中,使得在人-机界面、结果输出、综合评判等方面达到更理想的境界。(4)虚拟技术的不断完善。虚拟现实技术是一种综合了计算机图形技术、多媒体技术、传感器技术、显示技术和仿真技术等多种学科而发展起来的高新技术。采用虚拟现实技术,培训人员置身于模拟系统中就尤如身在真实环境里一样,使培训效果达到最佳。习题(1)什么是仿真?它所遵循的原则是什么?(2)数字仿真包括哪几个要素和基本活动?(3)模拟仿真、数字仿真和混合仿真各有哪些优缺点?(4)数字仿真的过程是什么?第2章MATLAB与Simulink基础2.1MATLAB简介

Math Works公司于1984年推出了第一个MATLAB的商业版本,其核心是用C语言编写的。而后,增添了丰富多彩的图形图像处理、多媒体、符号运算和其他流行软件的接口功能,使MATLAB的功能越来越强大。1992年推出了具有划时代意义的MATLAB 4.0版本,并于1993年推出其微机版,支持在Microsoft Windows操作系统下进行编程。1994年推出的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面提供了新的方法。1997年推出的MATLAB 5.0版本支持更多的数据结构,使其成为一种更方便的编程语言。1999年推出的MATLAB 5.3版本在很多方面又进一步改进了MATLAB软件的功能。2000年10月,Math Works公司推出了MATLAB 6.0版本,在操作界面上有了很大的改观,同时还提供了程序发布窗口、历史信息窗口和变量管理窗口等,给用户带来了极大的方便。在计算内核上抛弃了一直使用的LINPACK和EISPACK,而采用了更具优势的LAPACK软件包和FFTW系统,计算变得更快,数值性能也更好;在图形界面设计上也更趋合理;与C语言和其他高级语言接口及转换的兼容性也更强。

2004年9月,Math Works公司推出了MATLAB 7.0(R14)版本,比老版本提供了更多更强的新功能和更全面更方便的联机帮助信息。目前,MATLAB还在不断升级。本书编写过程使用的MATLAB版本是MATLAB 7.0(R14),新版本的相关特性请参阅相应产品的Release Notes。

MATLAB具有良好的可扩展性,其函数大多数为ASCII文件,可以直接编辑。很多人先后在MATLAB上开发出自己的“工具箱”,因此很多研究成果被直接做成MATLAB工具箱发布。较为常见的MATLAB工具箱主要包括控制系统、系统辨识、鲁棒控制、多变量频率设计、(分析与综合、神经网络、最优化、小波分析、通信、财政金融、模糊逻辑、图形处理、电力系统、线性矩阵不等式等,并且Internet上还有成百上千个各式各样的MATLAB工具箱。

Simulink是MATLAB最为著名的一个工具箱,它是基于模型化图形组态的动态系统仿真软件。2.2基本语句结构

在Windows操作系统中,单击“开始”→“程序”→“MATLAB 7.0”命令,便可以进入MATLAB 7.0主窗口,包括命令窗口、工作空间窗口、当前目录窗口、历史命令窗口等。这些窗口可以在“View”菜单中打开或关闭。在主窗口的左下角还有一个类似Windows的“start”按钮,可以进行设置、演示、打开工具箱等操作。

命令窗口是用户和MATLAB进行交互的主要场所。当命令窗口为活动窗口时,提示符“>>”的右侧会出现一个光标,这表示MATLAB正等待执行数学运算。MATLAB可以很方便地进行一些简单的数学运算。示例如下:

注意:MATLAB通常不考虑空格,并且计算结果赋予了ans(answer的缩写)。在输入命令后以分号(;)结束,则不会显示命令执行结果;否则将显示执行结果。

多条命令可以放在一行中,它们之间用逗号或分号隔开。逗号表示MATLAB显示结果,分号表示不显示结果。如果一行中无法写下一个完整的命令,可以在行尾加入3个连续的英文句号(…),表示命令余下的部分在下一行出现。百分号(%)之后的所有文字为注释,注释为单行。

MATLAB遵守一般的计算优先原则:表达式从左向右执行,幂运算具有最高优先级,乘除法次之,加减法优先级最低,括号可以改变通用的优先级,由内层括号向外执行。

在MATLAB的命令窗口中,对于选中的语句行、程序或部分程序块等,可以用复制、剪切与粘贴等菜单命令进行操作,由鼠标右键将其移动等。用这些手段可以对命令窗中的内容进行各种不同的编辑。2.2.1 变量

变量是数值计算的基本单位,程序中使用变量可以使书写的命令简单易懂。与其他高级语言不同,MATLAB中的变量无须事先定义,一个变量以其名称在语句中第一次合法出现而定义。它可以在任何时候被调用,通过命令窗口输入变量名即可。对于一般变量,MATLAB规定变量的名字必须以字母开头(不超过31个字符),之后可以是任意字母、数字或下划线;变量区分字母的大小写,同一名字的大写与小写被视为不同的变量;变量中不含有标点符号。

表2-1列出了MATLAB中设置的一些特殊变量。表2-1 MATLAB的特殊变量

变量可以保存为数据文件,也可以从数据文件中导入,这要用到MATLAB提供的save

和load函数。例如:

即是将变量ans和answer保存到二进制数据文件datas.mat中。如果希望保存为一般文本文件,可以在save命令之后使用-ascii选项。

load命令比较简单,例如:

即是将数据文件datas.mat中的数据读入命令窗口,如果不存在datas.mat,则读datas文件。

用clear命令可以清除工作空间中现存变量。例如:

将清除ans和answer两个变量。如果clear后为空,则将清除工作空间的所有变量。

注意:如果一组数据是经过长时间的复杂计算后获得的,为避免再次重复计算,常使用save加以保存。此后,可以通过load重新获取这组数据。

任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量。在未指定变量时,MATLAB将结果赋值给特殊变量ans。MATLAB总是以双字长浮点数(双精度)来执行所有的运算结果。但是为了方便,MATLAB可以通过format命令来控制数据的显示。表2-2列出了MATLAB的数据显示格式。表2-2 MATLAB的数据显示格式

注意:在默认情况下,当数据为整数时,则显示整数;如果不是整数,则以短格式近似显示;如果数据的有效数字超过了范围,则以科学计数法显示。2.2.2 向量运算

1.向量的创建

矩阵是MATLAB最基本的运算单元,而向量则是特殊的矩阵。在MATLAB中经常会遇到对向量的操作。

向量的创建有以下几种方法。

1)直接输入法

2)冒号生成法

对于步长已知的等差数列,可以通过冒号(:)来创建。格式如下:

这表示所要创建向量A的开始值是start,步长是step(step可以为正或负,正表示递增,负表示递减),结束值是end。例如:

step可以省略,省略时默认步长是1。例如:

3)linespace命令法

对于总维数已知且元素为等差数列的向量,可以通过linespace命令来创建。格式如下:

这表示所要创建向量A的开始值是start,结束值是end,维数为n(n可以省略,默认值为100)。

例如:

4)logspace命令法

为了方便建立对数频域轴坐标,如画Bode图等,MATLAB提供了logspace函数来创建元素呈对数等间隔的向量。通用格式如下:

A=logspace(a,b,n)ab

表示所要创建向量A的开始值是10,结束值是10,维数为n(n可以省略,默认值为50)。例如:

2.向量的操作

MATLAB提供了常用的向量运算函数,见表2-3。表2-3 向量运算函数2.3基本矩阵运算2.3.1 矩阵输入

MATLAB软件的最大特色是强大的矩阵计算功能。在MATLAB中,一般使用方括号([])、逗号(,)或空格,以及分号(;)来创建矩阵。方括号中给出数组的所有元素,同一行中的元素用逗号或空格分隔,不同的行之间用分号分开。例如,建立一个3×3矩阵:

矩阵的生成不仅可以使用纯数字,也可以使用变量。例如:

对于复数矩阵,可以直接输入建立,也可以分别建立复数矩阵的实部矩阵和虚部矩阵,然后相加。在处理一些试验数据时,可以简单地将数据前后加入左右括号,得到矩阵。

MATLAB定义了一些产生特殊矩阵的函数,常用的有:

➢ zeros:生成全0矩阵(零矩阵)

➢ ones:生成全1矩阵(幺矩阵)

➢ eye:生成单位矩阵

➢ rand:生成0~1间均匀分布的随机矩阵

➢ randn:生成均值为0,方差为1的标准正态分布随机矩阵

➢ magic(n):生成n阶魔方阵2.3.2 矩阵运算

1)四则运算与幂运算

矩阵与矩阵之间可以进行加(+)、减(-)、乘(*)、除(/或\)四则运算。矩阵的除法有左除“/”和右除“\”两种。进行左除和右除的两矩阵,它们的维数必须相等。

另外,MATLAB定义了点乘和点除运算。使用“.*”、“./”和“.\”表示。运算符前面带有的小数点通知MATLAB执行元素对元素的运算,不带点号的为矩阵运算。

矩阵的乘方有两种定义形式。“^”为矩阵乘方,“.^”为元素的乘方。示例如下:

2)转置

MATLAB中进行矩阵转置最简单的方法是通过转置操作符(')进行操作。示例如下:

注意:对于复数元素的矩阵,转置操作符(')在变换数组形状的同时,也会将复数的元素转化为其共轭复数。如果需要对复数矩阵进行非共轭转置,可以通过点符号(.')来实现。

3)矩阵的求逆与行列式

矩阵的逆及其行列式在求解线性方程组时非常重要。在MATLAB中,可以使用函数inv和det分别求解矩阵的逆和行列式。示例如下:

4)矩阵分解(1)特征值分解

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:

① E=eig(A):矩阵A的特征值构成向量E。

②[Ⅴ,D]=eig(A):矩阵A的特征值和特征向量分别构成对角阵D和列向量Ⅴ。

③[Ⅴ,D]=eig(A,'nobalance'):与第②种格式类似,如果矩阵A为病态矩阵,则采用这种方式可以减少计算误差。示例如下:(2)三角分解

矩阵的三角分解又称为LU分解,把矩阵分解为上三角矩阵和下三角矩阵。通用格式如下:

其中,L为下三角矩阵;U为上三角矩阵,并且满足L*U=A。(3)正交分解

矩阵的正交分解通用格式如下:

其中,Q为正交矩阵;R为对角化的上三角矩阵,并且满足A=Q*R(4)奇异值分解

矩阵的奇异值分解通用格式如下:

其中,U、V均为正交矩阵;S矩阵为对角矩阵,它的对角线元素即为矩阵A的奇异值,并且满足A=U*S*V'。

5)矩阵超越函数

在MATLAB中,sin、cos、sqrt等函数可以作用到矩阵上,但这种运算是定义在矩阵的单个元素上的,即分别对矩阵的每一个元素进行计算。超越数学函数可以在函数后加上m而成为矩阵的超越函数,如expm、sqrtm。矩阵的超越函数要求运算矩阵为方阵。

6)关系与逻辑运算

MATLAB把所有非零数值当作真,把零当作假。如果所有的关系和逻辑表达式为真就返回“1”;如果为假,则返回“0”。表2-4和表2-5分别列出了MATLAB常用的关系运算符和逻辑运算符。表2-4 关系运算符表2-5 逻辑运算符

如果标量与数组进行关系或逻辑运算,则运算在标量与数组的每个元素之间进行;如果参与运算的没有标量,则它们的维数必须相同,运算将在两数组相同位置上的元素进行,运算结果与被运算数组同维。示例如下:2.3.3 矩阵操作

1.矩阵下标

MATLAB通过确认矩阵下标,可以对矩阵进行插入子块、提取子块和重排子块的操作。对于矩阵A,常见的有如下一些操作。

➢ A(m,n):提取第m行,第n列元素

➢ A(:,n):提取第n列元素

➢ A(m,:):提取第m行元素

➢ A(m1:m2,n1:n2):提取子块,即提取第 m1 行到第 m2 行和第 n1 列到第 n2 列的所有元素

➢ A(:):得到一个长列矢量,该矢量的元素按矩阵的列进行排列

➢ 矩阵扩展:如果在原矩阵中一个不存在的地址位置上设定一个

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载