You are on page 1of 50

1.

1 matlab 环境介绍

1.1.1 工作区窗口介绍
帮助命令-显示帮助文本
在命令窗口中
doc 命令-显示 HTML 文档
在帮助浏览器中
Matlab 工具条>快速访问工具栏
Matlab 工具带> Home >资源>帮助>文档

脚本和功能函数
包含 MATLAB 代码
存储在扩展名为.m 的文本文件中
可以从命令窗口中调用
脚本

不接受输入参数或返回输出参数
使用基工作区中的变量
可以接受输入参数和返回输出参数
函数
有自己的工作区,与基础工作区分开
文件名和函数名应相同

1.1.2 二维绘图

命令
1.简单的 2 维直线图 : plot(x,y)
同一坐标显示 n 条线:plot(x,y1,x,y2,…)
x = 0:pi/10:2*pi;
y = sin(x);
figure;
hold on;
plot(x,y)
2. plot(X):X 是矩阵,表示矩阵的每一行都画一条线,将显示 n 条线
X=rand(3,3); %随机生成 3*3 矩阵
figure;
hold on;
plot(X)
3. 画带形状的图
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, 'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y','MarkerSize', 7);

X(pos, 1), X(pos, 2)表示横纵坐标


'k+'表示线性为加号型、黑色
LineWidth', 2 表示线宽为 2
'MarkerSize', 7 表示形状大小为 7
'MarkerFaceColor', 'y'表示形状填充颜色为黄色
另:MarkerEdgeColor','b'表示方框边缘颜色为蓝色
1.2 simulink 建模

1.2.1simulink 界面简介
1、仿真库:里面包含各种仿真工具包和仿真模块
2、模块搜索框:用户可以输入关键字以查找对应的模块
3、工具箱列表:分类陈列同一类别的功能模块
4、模块内容显时框:显示模块外观及名称

1.2.2 仿真模型建立
1、新建一个空白模型
2、打开既有模型
3、仿真模型编辑区
4、模型编辑区添加模块:方法:选中模块鼠标左键拖动或右键菜单选项框中添加
1.2.模块库简介

1.2.1 常用模块库
1.2.2 常用信号源
1.2.3 其它常用
1.2.4 信号连接

1.3 子系统

1.3.1 定义及分类

子系统将模块及其信号线组合为一个大的模块,划分为上层及内部两个层次,在上层
屏蔽内部结构,仅将输入/输出个数表现在外,内部是真正的逻辑结构。这种层次性划分有
如下优点:
① 减少了模型窗口中显示的模块数目,使模型外观结构更清晰,增强了模型的可读性。
② 在简化模型外观结构图的基础上,保持了各模块之间的拓扑关系,使得特定功能的模块
可以拥有一些独立的属性。
③ 可以建立自定义子系统,方便在内部集成某种功能,进行复用。
虚拟字系统
在模型中提供图形化的层次结构
不影响执行
非虚拟字系统

在模型中提供执行性和图形化层次结构
是否用粗体边框绘制
是否作为单个单元执行(原子执行)
只有当所有子系统输入都有效时,才会执行内部的块

1.3.2 子系统创建

将一个子系统块从模拟链接库中拖放到您的模型中:
双击子系统块,然后添加实现
将属于该实现的块添加到模型中:
将这些块分组到一个子系统中
条件子系统:已启用和已触发的子系统
启用-如果启用信号为正,则在每个模拟步骤中执行子系统
触发-每次发生触发事件时都会执行子系统
启用和触发-仅当启用信号为正时,子系统才会在每次发生触发事件时执行

1.4 S-functions

1.4.1 S 函数概述及分类

S 函数是 Simulink 中支持模块仿真的系统函数(System function),是用来描述一个模块特


性及功能的函数,支持 M、C 等多种语言。当 Simulink 库提供的模块不足以满足用户的需
求时,用户可以通过 S 函数自己打造一个模块,完成期待的动作。S 函教作为 Simulink 的核
心内容,既支持仿真又为代码自动生成提供数据传递的功能,还能够根据用户设定实现各
种不同机能。编写方式也是多种多样,支持多语言手写和自动生成方式,用户不仅可以使
用 Simulink 提供的自动生成工具,还可以自定义工具来生成 S 函数。
几种常用的 S 函数区别和使用场景如下

编写能用于仿真和代码生成的算法时,要用 Level2 M S 函数或 C Mex S 函数,并且需要给 S


函数编写同名的 tlc 文件;
使用 C Mex S 函数,运行速度比 M 语言编写的 S 函数要快,因为 M 语言的 S 函数需要调用
MTLAB 解释器;
M 语言编写的 S 函数,用 pcode 指令可以讲 m 文件转为 p 文件,p 文件不可读,p 文件和 m
文件同时存在的情况下,p 文件优先被调用。C Mex S 函数,将 c 文件通过 mex
xxx.c 编译后发布为 mex32/64 文件,也是不可读。发布为 p 文件或 mex 文件后,原 m 文件
和 c 文件可以删除,可以保护知识产权。

1.4.2 S 函数要素及执行顺序

Simulink 包含一组输入、一组状态和一组输出。其中,输出时采样时间、输入
和块状态的函数。
 时间量 t: 随着 Simulink 解算器运行而记录当前时间。
 输入量 u:通常为前一个模块的输出量,当作为信号源时,可以没有输入量。
 状态量 x: 根据系统性质分为连续系统中的微分量和离散系统中的差分量,通过前后不
同时刻的输入值计算得到。
 输出量 y: 可以没有输出量。

执行顺序:

1.4.3Level1 M S 函数

[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,…)
其中 f 是 S 函数的函数名,Simulink 会在仿真过程中的每个步长内多次调用 f。
1.4.4Level2 M S 函数
Level2 M S 函数使得用户能够使用 MATLAB 语言来编写支持多个输入/输出端口的自定义模
块,并且每个端口都能够支持包括矩阵在内的 Simulink 支持的所有数据类型。

1.4.5C Mex S 函数

最开头必须定义的两个宏:C Mex S 函数名及 C Mex S 函数的等级。


头文件包含部分 C Mex S 函数核心数据结构 simstruct 类型的声明及其他库文件,另外用户
根据使用需要也可以包含其他头文件。
参数对话框访问宏函数的定义。
紧接着定义 C Mex S 函数的各个子方法。
S 函数必须根据使用情况包含必要的源文件和头文件,从而将该 S 函数文件与 Simulink 或
Simulink Coder 产品进行连接

1.4.6 S 函数示例
2.1.simulink 模型仿真

2.1.1 解算器

模型仿真的核心驱动器是被称作解算器(Solver)的组件,相当于 Simulink 仿真过程的心


脏,驱动着仿真过程:它在每个采样时间点更新模型中所有的状态和信号变量,并计算下
一步计算的步长。解算器主要分为固定步长解算器(Fixed step size solver)与变步长解算器
(Variable step size Solver)两种类型,每一种类型中又可以分为支持离散解算器/连续解算
器、显示/隐式解算器、单步/多步解算器、单阶/多阶解算器等,针对不同的应用背景和模
型类型各有千秋。
解算器分类

一般情况下,模型仿真中两种解算器均可采用,但如果模型用以生成嵌入式代码并下载到
硬件中去实时执行,解算器必须采用固定步长,因为实时硬件的时钟源都是提供稳定频率
的时钟源,无法提供变步长解算器的采样时刻计算方式。
对于固定步长解算方法而言,没有误差控制,所以其计算精度完全靠步长大小来决定。
步长越小,计算精度越高,花费的时间也越长。Simulink 提供的算法从 1 阶欧拉算法到 8 阶
Dormand-Prince 算法,在积分计算的复杂度上有区别, Type 选择 Fixed-step 时,默认选择
ode3 解算方法。对于同样的步长,积分计算越复杂的解算器求解精度越高,但是解算速度

变步长解算方法特点
2.1.2 解算器参数设置

Simulation time 中包括 Start time 和 Stop time 两个参数,用于输入仿真的开始和结束


时间,时间可以小于 0(一般均取大于 0 的值),但是运行仿真必须保证 Stop time 大于等
于 Start time,否则启动仿真时会报出错误。
模型的仿真时间并非实际时间(Realtime),默认的仿真时间是 0~10s,但对于一般模
型,实际花费的时间不到 10s。实际模型的仿真时间跟模型的复杂度、步长以电脑的计算
速度均有关系。
变步长参数设置
固定步长参数设置

固定步长解算器,需要配置的参数相对较少,仅当使用隐式解算器 odel4x,才开启雅
克比算法相关参数。

2.1.3 仿真即信号数据查看
2.1.4 仿真过程调试

调试能静态地观察仿真过程中每个模块的执行顺序,或者每一个采样时间
点数据的计算和更新情况。
3.1 simulink 代码生成

Simulink 的 Simulink Coder 工具箱提供了将模型转换为可优化的嵌入式 C 代码的功能。


将模型的信号源和信号接收部分模块替换为输入/输出端口,系统文件使用 ert.tlc,负
责统筹调用代码生成的整个过程,将模块转化为 C 代码,只不过这时的 C 代码并非专门面
向某种嵌入式芯片的,是未经过任何优化的通用性嵌入式代码,可读性不强。

3.1.1 模型配置方法

为了生成嵌入式代码,至少需要配置 3 部分:模型的解算器 solver,模型的


系统目标文件(如 ert.tlc 或其他自定义的嵌入式系统目标文件),硬件实现规
定(Hardware Implenmatation)。
完成基本配置后按下 Ctrl+B 或者在命令窗口中输入 rtwbuild(gcs),则启动模型编译,
模型左下角从 ready 显示为 building,片刻后弹出代码生成报告界面。
4.1 Simulink 生成 CCS 代码

首先准备好软件开发包)
MATLAB
TI Code Composer Studio
TI controlSUITE TI C2000Ware
安装步骤省略,所有软件安装路径默认即可。将以上 4 个软件安装完成后开始安装
MATLAB 所支持的 DSP 硬件包,在 MALAB 下选择附加功能->获取硬件支持包

找到 Embedded Coder Support Package for Texas Instruments C2000 Processors

安装完成后将自动进入设置界面,先退出不着急设置。打开 CCS 进行其他编译器版本


安装,选择 Install New Software.
选择设置,回到之前未完成的设置界面
4.1.2 新建 Siumlink 工程
所有软件配置完成后我们以 DSP28335 开发板一个 LED 灯闪烁程序进行测试,新建
Simulink 文件,在库 Embedded Coder Support Package for Texas Instruments C2000
Processors 中放置 Digital Output
选择 Ctrl+B 编译,并在 View diagnostics 中查看编译下载过程是否有 错误,并选择
Openproject in Code Composer Studio 即可直接打开 CCS 查看编译后的工 程(没有开发板
就不展示了),也手动用 CCS 导入编译目录下产生的工程。

You might also like