第六章SIMULINK仿真环境 SIMULINK简介SIMULINK是MATLAB软件的扩展 它是实现动态系统建模和仿真的一个软件包 它与MATLAB语言的主要区别在于 其与用户的交互接口是基于Windows的模型化图形输入 其结果是使得用户可以把更多的精力投入到系统模型的构建 而非语言的编程上 所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块 用户只需要知道这些模块的输入输出及模块的功能 而不必考察模块内部是如何实现的 通过对这些基本模块的调用 再将它们连接起来就可以构成所需要的系统模型 以 mdl文件进行存取 进而进行仿真与分析 6 1SIMULINK启动与界面说明 在MATLAB命令窗口中输入simulink结果是在桌面上出现一个称为SimulinkLibraryBrowser的窗口 在这个窗口中列出了按功能分类的各种模块的名称 也可以通过MATLAB主窗口的快捷按钮来打开SimulinkLibraryBrowser窗口 SIMULINK的启动 在MATLAB命令窗口中输入simulink3结果是在桌面上出现一个用图标形式显示的Library simulink3的Simulink模块库窗口 两种模块库窗口界面只是不同的显示形式 用户可以根据各人喜好进行选用 一般说来第二种窗口直观 形象 易于初学者 但使用时会打开太多的子窗口 SIMULINK的模块库介绍 SIMILINK模块库按功能进行分为以下几类子库 1输入源模块库 Sources 2接收模块库 Sinks 3连续系统模块库 Continuous 4离散系统模块库 Discretes 5数学运算模块库 MathOperations 6信号路由模块库 SignalRouting 7信号属性模块库 SignalAttributes 8非线性模块库 Discontinuous 9查询表模块库 Look UpTables 10用户定义函数模块库 User DefinedFunctions 11模型验证模块库 ModelVerification 12端口和子系统模块库 Ports Subsystems 13模型实用模块库 Model WideUtilities 连续系统模块库 Continuous Integrator 输入信号积分Derivative 输入信号微分State Space 线性状态空间系统模型Transfer Fcn 线性传递函数模型Zero Pole 以零极点表示的传递函数模型TransportDelay 输入信号延时一个固定时间再输出VariableTransportDelay 输入信号延时一个可变时间再输出 离散系统模块库 Discretes Discrete timeIntegrator 离散时间积分器DiscreteFilter IIR 无限脉冲响应InfiniteImpulseResponse 与FIR FiniteImpulseResponse 滤波器DiscreteState Space 离散状态空间系统模型DiscreteTransfer Fcn 离散传递函数模型DiscreteZero Pole 以零极点表示的离散传递函数模型First OrderHold 一阶采样和保持器Zero OrderHold 零阶采样和保持器UnitDelay 一个采样周期的延时 数学运算模块库 MathOperations Sum 加减运算Product 乘运算DotProduct 点乘运算Gain 比例运算MathFunction 包括指数函数 对数函数 求平方 开根号等常用数学函数TrigonometricFunction 三角函数 包括正弦 余弦 正切等MinMax 最值运算Abs 取绝对值 LogicalOperator 逻辑运算Sign 符号函数RelationalOperator 关系运算ComplextoMagnitude Angle 由复数输入转为幅值和相角输出Magnitude AngletoComplex 由幅值和相角输入合成复数输出ComplextoReal Imag 由复数输入转为实部和虚部输出Real ImagtoComplex 由实部和虚部输入合成复数输出 非线性模块库 Discontinuous Saturation 饱和输出 让输出超过某一值时能够饱和 Relay 滞环比较器 限制输出值在某一范围内变化 DeadZone提供一个死区Quantizer对输入信号进行量化处理RateLimiter限制信号的变化速率 端口和子系统模块库 Ports Subsystems In1 提供一个输入端 Out1 提供一个输出端 subsystem 产生一个子系统模块If 加入条件选择switchCase 加入开关选择 信号路由模块库 SignalRouting Mux 将多个单一输入转化为一个复合输出 Demux 将一个复合输入转化为多个单一输出 Swith 在两个输入之间进行开关选择Merge汇合模块From 导入 Goto 传出 接收模块库 Sinks Scope 示波器 XYGraph 显示二维图形 ToWorkspace 将输出写入MATLAB的工作空间 ToFile mat 将输出写入数据文件 输入源模块库 Sources Constant 常数信号 Clock 时钟信号 FromWorkspace 来自MATLAB的工作空间 FromFile mat 来自数据文件 PulseGenerator 脉冲发生器 RepeatingSequence 重复信号 SignalGenerator 信号发生器 可以产生正弦 方波 锯齿波及随意波 SineWave 正弦波信号 Step 阶跃波信号 用户定义函数模块库 User DefinedFunctions Fcn 用自定义的函数 表达式 进行运算MATLABFcn 利用matlab的现有函数进行运算S Function 调用自编的S函数的程序进行运算 SIMULINK简单模型的建立 简单模型的建立 1 建立模型窗口 2 将功能模块由模块库窗口复制到模型窗口 3 对模块进行连接 从而构成需要的系统模型模型的特点在SIMULINK里提供了许多如Scope的接收器模块 这使得用SIMULNK进行仿真具有像做实验一般的图形化显示效果 SIMULINK的模型具有层次性 通过底层子系统可以构建上层母系统 SIMULINK提供了对子系统进行封装的功能 用户可以自定义子系统的图标和设置参数对话框 SIMULINK功能模块的处理 模块库中的模块可以直接用鼠标进行拖曳 选中模块 按住鼠标左键不放 而放到模型窗口中进行处理 在模型窗口中 选中模块 则其4个角会出现黑色标记 此时可以对模块进行以下的基本操作 移动 选中模块 按住鼠标左键将其拖曳到所需的位置即可 若要脱离线而移动 可按住shift键 再进行拖曳 功能模块的基本操作 包括模块的移动 复制 删除 转向 改变大小 模块命名 颜色设定 参数设定 属性设定 模块输入输出信号等 复制 选中模块 然后按住鼠标右键进行拖曳即可复制同样的一个功能模块 删除 选中模块 按Delete键即可 若要删除多个模块 可以同时按住Shift键 再用鼠标选中多个模块 按Delete键即可 也可以用鼠标选取某区域 再按Delete键就可以把该区域中的所有模块和线等全部删除 转向 为了能够顺序连接功能模块的输入和输出端 功能模块有时需要转向 在菜单Format中选择FlipBlock旋转180度 选择RotateBlock顺时针旋转90度 或者直接按Ctrl F键执行FlipBlock 按Ctrl R键执行RotateBlock 改变大小 选中模块 对模块出现的4个黑色标记进行拖曳即可 模块命名 先用鼠标在需要更改的名称上单击一下 然后直接更改即可 名称在功能模块上的位置也可以变换180度 可以用Format菜单中的FlipName来实现 也可以直接通过鼠标进行拖曳 HideName可以隐藏模块名称 颜色设定 Format菜单中的ForegroundColor可以改变模块的前景颜色 BackgroundColor可以改变模块的背景颜色 而模型窗口的颜色可以通过ScreenColor来改变 参数设定 用鼠标双击模块 就可以进入模块的参数设定窗口 从而对模块进行参数设定 参数设定窗口包含了该模块的基本功能帮助 为获得更详尽的帮助 可以点击其上的help按钮 通过对模块的参数设定 就可以获得需要的功能模块 属性设定 选中模块 打开Edit菜单的BlockProperties可以对模块进行属性设定 包括General属性 BlockAnnotation属性 Callbacks属性 General属性可设置一般属性如功能块描述 Description 优先级 Priority 标签 Tag 具体功能介绍可点击其上的help按钮查看 模块的输入输出信号 模块处理的信号包括标量信号和向量信号 标量信号是一种单一信号 而向量信号为一种复合信号 是多个信号的集合 它对应着系统中几条连线的合成 缺省情况下 大多数模块的输出都为标量信号 对于输入信号 模块都具有一种 智能 的识别功能 能根据输入信号自动进行匹配 SIMULINK线的处理 改变粗细 线所以有粗细是因为线引出的信号可以是标量信号或向量信号 当选中Format菜单下的WidenonscaleLines时 线的粗细会根据线所引出的信号是标量还是向量而改变 如果信号为标量则为细线 若为向量则为粗线 选中Signaldimensions则可以显示出向量引出线的宽度 即向量信号由多少个单一信号合成 SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的 用鼠标可以在功能模块的输入与输出端之间直接连线 所画的线可以改变粗细 设定标签 也可以把线折弯 分支 设定标签 只要上双击鼠标 即可输入该线的说明标签 也可以通过选中线 然后打开Edit菜单下的SignalProperties进行设定 线的折弯 按住Shift键 再用鼠标在要折弯的线处单击一下 就会出现圆圈 表示折点 利用折点就可以改变线的形状 线的分支 按住鼠标右键 在需要分支的地方拉出即可以 或者按住Ctrl键 并在要建立分支的地方用鼠标拉出即可 典型PID控制系统 R s Y t SIMULINK自定义功能模块 一种方法是采用Ports Subsystems模块库中的Subsystem功能模块 利用其编辑区设计组合新的功能模块 将Ports Subsystems模块库中的Subsystem功能模块复制到打开的模型窗口中 双击Subsystem功能模块 进入自定义功能模块窗口 从而可以利用已有的基本功能模块设计出新的功能模块 另一种方法是将现有的多个功能模块组合起来 形成新的功能模块 对于很大的SIMULINK模型 通过自定义功能模块可以简化图形 减少功能模块的个数 有利于模型的分层构建 在模型窗口中建立所定义功能模块的子模块 用鼠标将这些需要组合的功能模块框住 然后选择Edit菜单下的CreateSubsystem即可 自定义功能模块的封装 MaskSubsystemIcon 设定功能模块的外观 Parameters 设定功能模块的相关参数Initialization 设定初始化命令 Documentation 设计该功能模块的文字说明 此页最重要的部分是DrawingCommands 常用的有 disp text 可以在功能模块上显示设定的文字内容 disp text1 ntext2 分行显示文字text1和text2plot x1x2 xn y1y2 yn 指令会在功能模块上画出由 x1y1 经 x2y2 经 x3y3 直到 xn yn 为止的直线 dpoly num den 按s次数的降幂排序 在功能模块上显示连续的传递函数 dpoly num den z 按z次数的降幂排序 在功能模块上显示离散的传递函数 Icon标签页 用户还可以设置一。