第2讲Simulink建模与仿真如果控制系统的结构很复杂,在通常情况下是很难将模型输入到计算机中的。1990年MathWorks软件公司提供了新的控制系统模型图形输入与仿真工具,并定义为SIMULAB,该工具很快在控制界得到了广泛的使用。1992年开始正式改名为SIMULINK,这一名字的含义是相当直观的。因为它较明显地表明此软件的两个显著的功能:SIMU(仿真)与LINK(连结),即可以利用鼠标在模型窗口上“画”出所需的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。这种做法的一个优点是,可以使得一个很复杂系统的输入变得相当容易且直观。2.1绪论一、系统与模型1、系统系统是指具有某些特定功能,相互联系、相互作用的元素集合。系统的两个基本特征:整体性、相关性对系统的研究从以下三个方面入手:1)实体:组成系统的元素,对象2)属性:实体的特征3)活动:系统状态变化的过程系统仿真是研究系统的一种重要手段,而系统模型是仿真所研究的直接对象。2、系统模型实体模型:根据相似性建立模型数学模型:原始系统数学模型;仿真系统数学模型动态模型:描述系统动态变化过程静态模型:平衡状态下系统特性值之间的关系二、计算机仿真1、仿真的概念以相似性原理、控制理论、信息技术及相关领域的有关知识为基础,以计算机和各种专用物理设备为工具,借助系统模型对真实系统进行实验研究的一门综合性技术。2、仿真分类实物仿真:建造实体模型数学模型:将数学语言编制成计算机程序半实体模型:数学物理仿真实时仿真:需要专用的实时仿真硬件欠实时仿真:比实际时钟慢超实时仿真:比实际时钟快3、计算机仿真根据相似性原理,利用计算机逼真模拟研究对象。模拟机、模拟数字机、数字通用机、仿真专用机。三、仿真的作用1)优化系统设计2)系统故障再现3)验证系统设计的正确性4)对系统,子系统进行性能评估5)训练系统操作员6)为管理、技术决策提供支持四、仿真软件仿真软件是一类面向仿真用途的专用软件,它可以是面向通用的仿真,也可能是面向某个领域的仿真。功能:1)为仿真提供算法支持2)模型描述,建立计算机仿真模型3)仿真实验的执行、控制4)仿真数据的记录、分析5)仿真数据管理仿真软件的三个层次:1)仿真程序库:由一组完成特定功能的程序组成的集合,专门面向某一问题或一个领域。2)仿真语言:在高级语言的基础上,为面向专门问题而开发的。3)集成仿真环境五、计算机仿真的一般过程仿真问题和仿真目的描述确定仿真方案系统描述建立系统数学模型建立仿真数学模型编写仿真程序验证模型是否符合要求进行仿真研究修改方案修改模型修改程序是否符合要求是否符合要求是否符合要求2.2simulink与matlab仿真一、simulink仿真对动态系统进行建模、仿真的软件包。功能:1、交互式、图形化建模环境2、专用模块库(blocksets)simulink的专用软件工具包dspfixed-pointpowersystemdials&gaugescommunicationsCDMAreferencenonlinearcontrolmotorola(TI)DSPdeveloper’skitToolboxesMATLABcompilerBlocksetsimulinkRTWStateflowcoder3、提供仿真库的扩充和定制功能4、应用领域通信与卫星系统航空航天生物系统船舶系统汽车系统金融系统5、simulink在matlab家族中的位置二、matlab函数仿真与simulink仿真的区别1、数据流仿真按照数据流的顺序,依次执行,即处理的数据首先通过一个运算阶后在激活下一个运算阶。例如:m=16;n=15;k=11;fc=10000;fd=1000;fs=100000;msg=randint(k*100,1);code=encode(msg,n,k,'bch');modu=dmod(code,fc,fd,fs,'qask',m);modu_noise=modu+randn(length(modu),1);demo=ddemod(modu_noise,fc,fd,fs,'qask',m);msg_r=decode(demo,n,k,'bch');rate=biterr(msg,msg_r);2、时间流仿真所有模块在同一时间步长上同时执行。信号发生差错控制编码数字调制差错控制译码信宿时间数据2.3simulink窗口环境简介标题栏菜单栏5.4基于simulink的一个简单仿真系统信源系统信宿5.5simulink的基本操作5.6simulink的基本模块库1、simulink公共模块库信源模块(Source)信宿模块(Sinks)信号路由(SignalRouting)数学运算模块库(Mathoperations)端口及子系统库(PortsandSubsystems)连续模块库(Continuous)离散模块库(Discrete)查表模块库(Look-UpTable)用户定义函数模块(User-DefinedFunctions)非线性模块库(Discontinuities)信源模块(Source)有限带宽白噪声输出频率随时间线性变换的正弦信号输出当前仿真时间常数输入以固定速率输出当前仿真时间从matlab工作空间中输入数据从.mat文件中输入数据接地信号为子系统或其它模型提供输入端口输入脉冲信号输入斜坡信号输入服从高司分布的随机信号输入周期信号信号发生器信号产生正弦信号初始器输入阶跃信号输入服从高司分布的随机信号信宿模块(Sinks)以数值形式显示输入信号悬浮信号显示器为子系统或模型提供输出端口信号显示器当输入非零时停止仿真中断输出信号将仿真数据写入.mat文件将仿真数据输出到matlab工作空间使用matlab图形显示器信号路由(SignalRouting)Goto模块标记控制器将信号与特定的偏移值比较初始化信号矩阵串联器合并输入信号为一个输出模块控制信息信号组合器信号探测器信号维数改变器选择或重组信号信号属性修改输入信号宽度对信号进行分配由输入产生总线信号总线信号选择器用户定义的数据存储区从数据存储区中读取数据向数据存储区写数据数据类型选择器信号分解器从goto模块中获得信号函数调用发生器向goto模块传递信号数学运算模块库(Mathoperations)求信号绝对值输出强制系统输入为零的代数状态按位逻辑运算逻辑真值查找输出输入复数的幅值与相位输出系统输入的的实部或需部点乘运算信号增益信号逻辑运算幅值与相位转化为复数形式特定的一些数学函数矩阵增益求输入的最小、大值乘法或除法器从输入实部与虚部构造复数关系运算器求整运算器符号运算渐变增益对输入求和或差三角与双曲函数端口及子系统库(PortsandSubsystems)可配置子系统原子子系统使能子系统使能触发For循环函数调用If条件条件执行子系统子系统输入子系统输出通用子系统Switch-case子系统Switch-case动作子系统上升沿触发触发子系统当型循环子系统连续信号数值积分输入信号连续时间积分线性连续系统的状态空间描述线性连续系统传递函数描述对输入信号进行固定时间延迟对输入信号进行可变时间延迟线性连续系统的零极点模型连续模块库(Continuous)离散模块库(Discrete)线性离散系统的传递函数描述线性离散系统的零极点模型描述线性离散系统的滤波器描述线性离散系统的状态空间描述离散时间积分器离散信号的一阶保持器单步积分延迟,输出为前一输入单位延迟离散信号的零阶保持器表数据选择器(从表中选择数据)对输入信号进行内插运算输入信号的一维线性内插输入信号的二维线性内插输入信号的n维线性内插查找输入信号所在范围查表模块库(Look-UpTable)求取输入信号的数学函数值M函数(对输入进行运算输出结果)S-函数模块S-函数生成器用户定义函数模块(User-DefinedFunctions)非线性模块库(Discontinuities)死区间歇库仑粘贴信号死区信号双输出选择器(手动)多端口输出选择器量化器信号上升、下降速率控制器信号延迟器饱和信号三路选择器(根据输入2控制输出)2、simulink专业模块库5.7仿真参数设置解算器仿真时间仿真解法误差容忍度输出设置仿真解法变步长解法定步长解法discrere:针对无连续状态系统的特殊解法ode45:基于Dormand-Prince4-5阶的Runge-Kutta公式ode23:基于Bogachi-Shampine2-3阶的Runge-Kutta公式ode113:变阶次Adams-Bashforth-Moulton解法ode15s:钢性系统的变阶次多步解法ode23s:钢性系统的固定阶次单步解法discrere:针对无连续状态系统的特殊解法ode5:ode45确定步长的函数解法ode4:使用固定步长的经典4阶的Runge-Kutta公式的函数解法ode3:ode25的确定步长的函数解法ode2:使用固定步长的经典2阶的Runge-Kutta公式的函数解法ode1:固定步长的Euler解法输出选项RefineoutputProduceadditionaloutputProducespecifiedoutputonly5.8子系统建立子系统有助于简化系统结构,提高系统设计的层次性。一、子系统的概念是系统构成的一部分,表现形式为具有几个输入输出端口的模块,内部结构在系统中不表现出来。二、子系统分类无条件子系统条件执行子系统1、使能子系统2、触发子系统3、函数调用子系统建立子系统的方法:直接选中已有模块,形成子系统添加一个Subsystem模块到模型中,然后进行编辑1、使能子系统需要添加使能端,在使能信号为所需要状态时,系统才会激活运行使能子系统及对应内部结构一个系统中不能含多个enable和triggered信号例题5-1:2、触发子系统存在一个出发端,通过触发事件是否发生来控制子系统是否执行。例题5-2:使能触发子系统及对应内部结构3、使能触发子系统4、其它子系统端口和模块库中有很多类型的子系统,其建立方式也各不相同,有兴趣的同学可以自己查阅三、子系统的封装封装子系统的特点:1)自定义系统模块及图表2)用户双击子系统图表将弹出参数设置框3)可自定义子系统的帮助文件4)拥有自己的工作区使用子系统封装技术的优点:1)向子系统模块中传递参数2)“隐藏”子系统中不需要过多展现的内容3)保护子系统中的内容,防止模块实现被随意篡改。1、封装编辑器之图表编辑对话框首先封装后,再选中子系统图表,执行edit/editmask。图表显示界面控制参数子系统模块图表绘制命令1)图表显示界面控制参数iconfram:设置图表边框为可见或不可见icontransparency:设置图表为透明或不透明iconrotation:设置图表为固定或可旋转显示drawingcoordinates:设置图表绘制命令所使用的坐标系单位2)图表绘制命令栏2、封装编辑器之参数设置对话框参数设置控制参数描述参数对应变量参数设置列表1)参数控制设置2)参数描述:对模块输入的参数作简单的说明3)参数对应变量:键入的参数值将传递给封装后的子系统工作空间中相对应的变量,因此要求此处的变量名应和子系统中所使用的变量具有相同的名称4)参数设置描述controltype:edit:需要用户键入参数值checkbox:复选框popup:参数选项(用|隔开)assignment:参数分配类型(evaluate:求值字符串literal:普通文字)3、封装编辑器之初始化设置对话框初始化命令initializationcommands(初始化命令栏)一般为matlab命令,在此可定义封装后子系统工作空间中的各种变量,这些变量可以被封装子系统模块图标绘制命令、其它初始化命令或子系统中的模块使用。当出现以下情况时,初始化命令被执行:模型文件被载入框图被更新或模块被旋转绘制封装子系统模块图标时4、封装编辑器之文档对话框封装类型帮助封装描述1)封装类型:对封装后的子系统进行简短的说明