基于模型设计liejie

上传人:第*** 文档编号:56586332 上传时间:2018-10-14 格式:PDF 页数:63 大小:3.76MB
返回 下载 相关 举报
基于模型设计liejie_第1页
第1页 / 共63页
基于模型设计liejie_第2页
第2页 / 共63页
基于模型设计liejie_第3页
第3页 / 共63页
基于模型设计liejie_第4页
第4页 / 共63页
基于模型设计liejie_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《基于模型设计liejie》由会员分享,可在线阅读,更多相关《基于模型设计liejie(63页珍藏版)》请在金锄头文库上搜索。

1、第二章第二章 Simulink 建模与调试建模与调试 Simulink 是动态和嵌入式等系统的建模与仿真工具,也是基于模型设计的基础。对于机 电、航空航天、信号处理、自动控制、通讯、音视频处理等众多领域,Simulink 提供了交互 式的可视化开发环境和可定制的模块库,对系统进行建模、仿真与调试等。并可实现与 Stateflow 有限状态机的无缝连接,扩展对复杂系统的建模能力。 通过 Simulin 模块库自带的 1000 多个预定义模块,基本上可快速地创建基于 MCU 器件 应用的系统模型。运用层次化建模、数据管理,子系统定制等手段,即使是复杂的嵌入式 MCU 应用系统,也能轻松完成简明精确

2、的模型描述。 大量使用 Embedded MATLAB 来创建用户自己的算法模块, 可大大加快建模速度。 读者 在后面的内容中,会经常看到用 Embedded MATLAB 创建的算法模块,加快 MCU 器件开发 的实例。模型是基于模型设计的起点,同时也最核心的东西。本章将以基于 PID 控制的直流 电机的物理建模与调试为例来介绍 Simulink, 更详细的内容请读者参考 MathWorks 公司相关 内容的用户手册。 Simulink 的主要特点如下: 众多可扩展的模块库 利用图形编辑器来组合和管理模块图 以系统功能来划分模型,实现对复杂系统的管理 利用模型浏览器(Model Explor

3、er)寻找、创建、配置模型组件的参数与属性 利用 API 实现与其他仿真程序的连接或集成用户代码 用图形化的调试器和剖析器来检查仿真结果,评估模型的性能指标 在 MATLAB 命令窗口中,可对仿真结果进行分析与可视化,自定义模型环境、信号参 数和测试数据 利用模型分析和诊断工具来确保模型的一致性,定位模型中的错误 本章主要内容有: Simulink 基本操作 搭建直流电机模型 Simulink 模型调试 2.1 Simulink 基本操作基本操作 2.1.1 模块库和编辑窗口模块库和编辑窗口 打开模型库浏览器打开模型库浏览器 在 matlab 的命令窗口中输入“simulink”指令或单击 m

4、atlab 工具栏上的“simulink”图标就可以打开模型库浏览器。如图 2.1.1 所示: 图 2.1.1 模型库浏览器 打开模型编辑窗口打开模型编辑窗口 要建立一个新的模型,首先要打开一个模型编辑窗口。可以通过点击模块库浏览器上 的 NEW Model 按钮,或 FileNEWModel 来打开窗口,如图 2.1.2 所示。 图 2.1.2 打开模型编辑窗口 2.1.2 Simulink 模块库模块库 Simulink 模块库是建立模型的基础,其中囊括了大量的基本功能模块,只有当用户熟练 的掌握了模块库,才能快速、高效的建立模型。从图 2.1.1 所示的模型库浏览器可知,在 Simuli

5、nk 模块库中包含有以下子模块库,如表 2.1.1 所示: 表 2.1.1 模块库列表 常用模块(commonly used block) 连续模块(continuous) 非连续模块(discontinuous) 离散模块(discrete) 逻辑和位操作模块(logic and bit operations) 查找表模块(lookup tables) 数学运算模块(math operations) 模型验证模块(model verification) 模型实用模块(model-wide utilities) 端口与子系统模块(ports %电阻值 Resistor L=0.5; %电感值

6、Inductor Km=0.1; %转矩常量 Torque Constant Kemf=0.1; %反电动势常量 Back EMF Voltage Constant Kf=0.2; %阻滞系数常量 Viscous Friction Constant J=0.02; %惯性载荷 Inertial Load 完成后,在 MATLAB 工作空间中可以看到这些变量,如图 2.2.14 所示。 图 2.2.14 仿真参数设置 这样就完成了模型中以表达式形式定义的参数的赋值。为了方便以后再次运行模型, 可以把这些数据保存下来,在运行模型之前装载这些变量即可。 全选这些变量, 点击 “” 按钮, 输入保存名

7、 DC_motor(用户可自定义), 扩展名为.mat, 即把数据保存到了当前目录下,以后可以通过双击直接装载变量。如图 2.2.15 所示: 图 2.2.15 保存参数 当然,用户也可以将上述命令窗口中的指令保存为 M 文件的形式,并在运行模型 前先执行 M 文件来装载变量。如图 2.2.16 所示: 图 2.2.16 在在 Simulink 中用中用 Annotation 方式方式定义变量定义变量 通过在 Simulink 中定义 Annotation, 可以直接在模型编辑窗口中完成对参数的赋值, 而不必再从 MATLAB 中读取.mat 文件和 M 文件,省去了不少麻烦。 在模型的任意空

8、白处双击鼠标左键会出现一个可编辑的文本框,写入相关文字,如 “Parameters Configuration” 。如图 2.2.17 所示: 图 2.2.17 添加 Annotation 右键单击文本框会出现弹出菜单,其中较为有用的有如下几项: Front 调节字体字号 Text Aligment 文本对齐方式 Hide/Show Drop Shadow 隐藏/显示阴影 Annotation Properties Annotation 属性设置 Foreground Color 前景色 Background Color 背景色 选择 Foreground/Background Color 调

9、节文本框的颜色,选择 Show Drop Shadow 显 示文本框阴影,美化 Annotation。 选择 Annotation Properties打开其设置页面,如图 2.2.18 所示。 图 2.2.18 设置 Annotation 在 ClikFcn 中输入上文中使用的指令,并点击 OK 确认。这就完成了此 Annotation 的 基本设置。在以后重用本模型时,只要点击该文本框就可以执行对模型参数的赋值。如 图 2.2.19 所示: 图 2.2.19 添加 Annotation 命令 Model Explorer Model Explorer 能够快速浏览、批量修改模型中各种元素,

10、而不用再在图形或表格中一 个个寻找这些元素。如 Simulink 模块,StateFlow 状态图,MATLAB 工作空间变量等。 在电机模型编辑窗口右侧点击“”按钮打开 Model Explorer 界面,如图 2.2.20 所 示。 图 2.2.20 模型浏览器 在界面中间的 Content Pane 里列出了模型中的所有模块和变量。 选中任意模块可以 进行修改参数,数据类型等工作,该模型的所有模块设置都可以在此页面中快速完成。 更详细的用法可参考帮助文档。 设置 configuration Parameters 中的参数 在 simulationconfiguration Paramet

11、ers 中可进行更多的设置, 这里只介绍几种常用 的设置。 1. 仿真时间设置。 设置起止时间是在“Start Time”和“Stop Time”的文本框中输入相应的数值,其 默认值分别为 0 和 10,单位是秒,如图 2.2.21 所示。 图 2.2.21 仿真时间设置 2.求解器步长设置 求解器分为变步长和定步长求解器两种,一般情况下可采用默认的“auto”设置。 其默认值为:最大步长=(停止时间-起始时间)/50 如果是高级用户, 则可做进一步设置。 步长是求解器运算时的时间精度, 步长越短, 精度越高,运算量也更大。 通过下面的例子可以直观的看到步长对仿真结果的影响。 建立如图 2.2

12、.22 所示模型 图 2.2.22 求解器步长实验模型 在 Configuration Parameters 中选择使用定步长求解器(Fixed-step) ,如图 2.2.23 所 示, 图 2.2.23 求解器设置 则当步长(Fixed-step size)分别选择 1 秒和 0.1 秒时的仿真结果如下(图 2.2.24) : 图 2.2.24 仿真结果 可见,当用户对仿真结果的精度要求比较高的时候,应该尽量选择小步长求解。 运行模型 点击工具栏上的“”按钮运行仿真,双击“Scope”模块即可查看仿真结果(按 下“”可以自动调节坐标轴到合适的范围) ,如图 2.2.25: 图 2.2.25

13、 电机模型仿真结果 在示波器 Torque 中可见转矩跟随阶跃信号的趋势变化。 在示波器 Angle 中可见,转子转动过的角度随时间变化基本呈线性增长,符合其与w(t)的关系 = w()t 0d。 在示波器 Speed 中,紫色信号表示阶跃信号;黄色信号为系统响应,在接近 2 秒的 时候达到稳定状态,幅度为 0.25 左右。 为了更进一步分析此系统,可以在 MATLAB 中划出其波特图: DC_motor=tf(Km,J*L (Kf*L+J*R) (Kf*R+Kemf*Km); %生成电机传输函数 bode(DC_motor) %生成波特图 在 MATLAB 中生成如图 2.2.26 所示波特

14、图: 图 2.2.26 波特图 2.2.3 子系统子系统与库与库 建立子系统可以吧一系列的模块表示为一个子系统模块, 大大简化模型的复杂度, 其具 有以下突出优点:减少编辑窗口中模块的数量;可以把功能相关联的模块组合在一起;使模 型具有明确的功能层次。 更重要的是在子系统内部,各个模块被认为是一个整体,这样一来,其运算速度和信号 传递速度都会大幅度提高,是对模型的一种优化。 1. 建立子系统建立子系统 如果模型中已经完全包含了你想要创建的子系统的所有模块, 可以通过把它们组合起来 的方式建立子系统。 打开电机模型,选定想要包含到子系统中的所有模块,如图 2.2.27 所示。 图 2.2.27

15、选定模块 单击 EditCreat Subsystem。 选定的模块组即变成了一个子系统模块, 如图 2.2.28 所示。 图 2.2.28 创建子系统 如果通过双击打开子系统,可以看到子系统中的模块组合逻辑,如图 2.2.29 所示。 图 2.2.29 子系统内部结构 子系统外部接口也会发生相应的改变,可按图 2.2.30 所示方式连接模型: 图 2.2.30 修改连接 用户也可以先创建一个子系统模块,然后在子系统模块中完成其具体的组合逻辑。 从模块浏览器中选择 Portsport_label(input, 1, Control Signal); color(red);port_label(output, 1, Torque); color(red);port_label(output, 2, Angle); color(red);port_label(output, 3, Step); color(red);port_label(output, 4, Speed); 子系统的端口名称的颜色和名称都会随之改变,如图 2.2.33 所示。 图 2.2.33 封装后的模型 添加命令image(imread(dian

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑规划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号