描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302467403丛书名: 科学与工程计算技术丛书
本书分为三大部分共16章。*部分主要介绍了MATLAB基础知识、Simulink仿真入门、Simulink模型建立与仿真以及Simulink常用命令库等; 第二部分主要介绍SFunction的应用、控制系统仿真和PID控制仿真等; 第三部分则涉及Simulink高级应用,包括模糊逻辑控制、电力系统仿真、通信系统仿真、神经网络控制仿真、滑模控制、车辆系统仿真、群智能算法仿真和图像处理仿真等。
本书以工程应用为目标,深入浅出,实例引导,讲解翔实,适合作为理工科高等院校本科生和研究生的教学用书,也可作为广大科研工程技术人员的参考用书。
目录
第1章MATLAB基础知识
1.1MATLAB简介
1.2MATLAB的通用命令
1.2.1MATLAB菜单说明
1.2.2MATLAB路径设置
1.2.3MATLAB系统常量说明
1.2.4MATLAB程序注解符说明
1.3MATLAB的计算基础
1.3.1MATLAB的预定义变量
1.3.2常用运算和基本数学函数
1.3.3数值的输出格式
1.4MATLAB程序设计基础
1.4.1MATLAB基本程序设计
1.4.2MATLAB程序控制语句的运用
1.5MATLAB的绘图功能
1.5.1离散数据图形绘制
1.5.2函数图形绘制
1.5.3网格图绘制
1.5.4曲面图的绘制
1.5.5特殊图形绘制
1.6微积分问题的MATLAB求解
1.6.1符号微积分
1.6.2微分方程的数值解
1.6.3龙贝格积分法微积分运算
1.6.4有限差分方法求边值问题
1.6.5样条函数求积分
1.6.6常微分方程符号解
1.7非线性方程与线性规划问题求解
1.7.1非线性方程组求解
1.7.2无约束最优化问题求解
1.7.3线性规划问题
1.7.4二次型规划问题
1.8本章小结
第2章Simulink仿真入门
2.1Simulink基本操作
2.1.1运行Simulink
2.1.2Simulink模块库
2.1.3Simulink模块的操作
2.2运行仿真及参数设置简介
2.2.1模型的创建
2.2.2模块的连接与简单处理
2.2.3仿真参数设置简介
2.3子系统及其封装
2.3.1创建子系统
2.3.2使能子系统
2.3.3触发子系统
2.3.4使能触发子系统
2.3.5封装子系统
2.4用MATLAB命令创建和运行Simulink模型
2.4.1创建Simulink模型与文件
2.4.2添加模块和信号线
2.4.3设置模型和模块属性
2.4.4仿真
2.5本章小结
第3章Simulink模型的建立与仿真
3.1Simulink模块库简介
3.2信号源模块组
3.2.1Clock模块
3.2.2Digital Clock模块
3.2.3Constant模块
3.2.4BandLimited White Noise模块
3.2.5Chirp Signal模块
3.2.6Sine Wave模块
3.2.7Pulse Generator模块
3.2.8Random Number模块
3.2.9Step模块
3.2.10Uniform Random Number模块
3.3连续模块组
3.3.1Derivative模块
3.3.2Integrator模块
3.3.3Transfer Fcn模块
3.3.4Transport Delay模块
3.3.5ZeroPole模块
3.3.6StateSpace模块
3.4离散模块组
3.4.1Discrete Transfer Fcn模块
3.4.2Discrete Filter模块
3.4.3Unit Delay模块
3.4.4Memory模块
3.4.5Discrete ZeroPole模块
3.4.6Discrete StateSpace模块
3.4.7ZeroOrder Hold模块
3.5查表模块组
3.5.11D Lookup Table模块
3.5.22D Lookup Table模块
3.6用户自定义函数模块组
3.6.1Fcn模块
3.6.2MATLAB Fcn模块
3.6.3SFunction模块
3.7数学运算模块组
3.7.1Abs模块
3.7.2Add模块
3.7.3Divide模块
3.7.4Dot Product模块
3.7.5Gain模块
3.7.6Complex to MagnitudeAngle模块
3.7.7MagnitudeAngle to Complex模块
3.8非线性模块组
3.8.1Backlash模块
3.8.2Coulomb & Viscous Friction模块
3.8.3Dead Zone模块
3.8.4Quantizer模块
3.8.5Rate Limiter模块
3.8.6Saturation模块
3.9信号与系统模块组
3.9.1Bus Selector模块
3.9.2Bus Creator模块
3.9.3Mux模块
3.9.4Demux模块
3.9.5Data Store Memory模块
3.9.6Data Store Read模块
3.9.7Data Store Write模块
3.9.8Enable模块
3.9.9Ground模块
3.10本章小结
第4章Simulink常用命令库分析
4.1Simulink中常用的模块库
4.2Simulink命令代码
4.2.1Simulink系统路径
4.2.2获取Simulink模型参数值
4.3Simulink系统创建命令
4.3.1simulink命令
4.3.2simulink3命令
4.3.3find_system命令
4.3.4new_system命令
4.3.5open_system命令
4.3.6save_system命令
4.3.7bdclose命令
4.4Simulink模型模块操作命令
4.4.1add_block命令
4.4.2delete_block命令
4.4.3add_line命令
4.4.4delete_line命令
4.4.5replace_block命令
4.5获取Simulink文件路径
4.5.1gcb命令
4.5.2gcbh命令
4.5.3gcs命令
4.5.4bdroot命令
4.6获取Simulink模型参数命令
4.6.1get_param命令
4.6.2set_param命令
4.7Simulink代码建模
4.8本章小结
第5章基于Simulink的S函数建模
5.1Simulink S函数仿真应用
5.1.1Simulink S函数仿真过程
5.1.2S函数的回调方法
5.2Mfile S函数应用
5.3Mfile S函数模板
5.3.1S函数工作方式
5.3.2S函数仿真过程
5.3.3S函数的编写
5.3.4M文件S函数的模块化
5.4Mfile S函数实现
5.5本章小结
第6章控制系统Simulink仿真
6.1控制系统频域分析
6.1.1频率特性的定义
6.1.2频率特性和传递函数的关系
6.1.3频率特性的图形表示方法
6.2幅相频率特性
6.2.1比例环节
6.2.2微分环节
6.2.3积分环节
6.2.4惯性环节
6.2.5一阶复合微分环节
6.2.6二阶振荡环节
6.2.7二阶复合微分环节
6.2.8延迟环节
6.2.9开环系统的幅相特性曲线
6.3对数频率特性
6.3.1比例环节
6.3.2微分环节
6.3.3积分环节
6.3.4惯性环节
6.3.5一阶复合微分环节
6.3.6二阶振荡环节
6.3.7二阶复合微分环节
6.3.8延迟环节
6.4开环系统的Bode图
6.5最小相角系统和非最小相角系统
6.6奈奎斯特频域稳定判据
6.7频域对数稳定判据
6.8稳定裕度
6.8.1稳定裕度的定义
6.8.2稳定裕度的计算
6.9本章小结
第7章基于PID的Simulink控制系统仿真
7.1PID控制原理
7.2基于PID的控制仿真
7.3基于S函数的PID控制系统仿真
7.4基于PID的倒立摆小车控制仿真
7.5本章小结
第8章模糊逻辑控制仿真
8.1模糊逻辑概述
8.1.1高斯型隶属函数
8.1.2三角形隶属函数
8.2模糊逻辑控制箱图形界面
8.2.1基本FIS编辑器
8.2.2隶属函数编辑器
8.2.3绘制FIS
8.2.4设置模糊系统属性
8.2.5规则编辑器和语法编辑器
8.2.6规则观察器和模糊推理框图
8.3模糊聚类分析
8.3.1FIS曲面
8.3.2FIS结构
8.3.3模糊均值聚类
8.3.4模糊聚类工具箱
8.4模糊与PID控制器仿真设计
8.4.1模糊逻辑工具箱
8.4.2PID控制
8.4.3模糊控制器设计
8.4.4模糊与PID控制仿真
8.5本章小结
第9章Simulink在电力系统中的应用
9.1同步发电机原理分析
9.2简化同步电机模块使用
9.3同步电机模块使用
9.4负荷模型
9.4.1静态负荷模块
9.4.2三相动态负荷模块
9.5异步电动机模块
9.6直流电机模块
9.7本章小结
第10章电力系统稳定性分析
10.1Powergui模块
10.1.1仿真类型
10.1.2分析工具
10.2二极管模块
10.3晶闸管模块
10.4电力系统稳态仿真
10.4.1连续系统仿真
10.4.2离散系统仿真
10.5电力系统电磁暂态仿真
10.5.1断路器模块
10.5.2三相断路器模块
10.5.3三相故障模块
10.5.4暂态仿真分析
10.6本章小结
第11章通信系统仿真设计
11.1通信系统仿真概述
11.2信源与信道模型
11.2.1随机数产生器
11.2.2泊松分布产生器
11.2.3伯努利二进制信号产生器
11.2.4加性噪声产生器
11.3滤波器分析
11.4调制与解调
11.4.1基带模型与调制通带分析
11.4.2解调与模拟调制模型分析
11.4.3数字调制解调器模型分析
11.5本章小结
第12章神经网络控制
12.1神经网络简介
12.2人工神经元模型
12.3神经网络的学习规则
12.4MATLAB神经网络工具箱
12.5基于BP神经网络的PID自适应控制
12.6基于Simulink的神经网络模块仿真
12.6.1模块的设置
12.6.2模块的生成
12.7基于Simulink的神经网络控制系统
12.8反馈线性化控制
12.9本章小结
第13章滑模控制
13.1基于名义模型的滑模控制
13.1.1名义控制系统结构
13.1.2基于名义模型的控制
13.1.3基于名义模型的滑模控制器的设计
13.1.4基于名义模型的滑模控制仿真
13.2全局滑模控制
13.2.1全局滑模控制系统
13.2.2全局滑模控制器的设计
13.2.3基于全局滑模控制的仿真
13.3基于线性化反馈的滑模控制
13.3.1二阶非线性确定系统的倒立摆仿真
13.3.2二阶非线性不确定系统的倒立摆仿真
13.3.3输入输出的反馈线性化控制
13.3.4输入输出的反馈线性化滑模控制
13.4基于模型参考的滑模控制
13.5本章小结
第14章车辆系统仿真
14.1汽车制动系统仿真
14.2汽车悬架系统仿真
14.2.1汽车悬架系统运动方程建立
14.2.2汽车悬架系统仿真
14.2.3白噪声路面模拟输入仿真
14.3汽车四轮转向控制系统仿真
14.3.1低速四轮转向系统仿真
14.3.2高速四轮转向系统仿真
14.4本章小结
第15章群智能算法控制系统仿真
15.1PID控制
15.2粒子群算法控制仿真
15.2.1基本粒子群算法
15.2.2粒子群算法流程
15.2.3被控对象PID整定
15.2.4阶跃响应性能检测
15.3遗传算法控制仿真
15.3.1选择算子
15.3.2交叉算子
15.3.3变异算子
15.3.4适应度值评估
15.3.5遗传算法流程
15.3.6被控对象PID整定
15.3.7阶跃响应性能检测
15.4人群搜索算法控制仿真
15.4.1搜索步长的确定
15.4.2搜索方向的确定
15.4.3搜寻者个体位置的更新
15.4.4人群搜索算法流程
15.4.5被控对象PID整定
15.4.6阶跃响应性能检测
15.5本章小结
第16章图像处理仿真
16.1图像处理模块库
16.1.1分析和增强模块
16.1.2转换模块库
16.1.3滤波模块库
16.1.4几何变换模块库
16.1.5形态学操作模块库
16.1.6接收器模块库
16.1.7输入源模块库
16.1.8统计模块库
16.1.9文本和图形模块库
16.1.10变换模块库
16.1.11工具模块库
16.2基于Simulink的图像增强
16.2.1图像灰度变换增强
16.2.2图像的平滑增强
16.2.3图像锐化增强
16.3基于Simulink的图像转换处理
16.3.1图像类型转换
16.3.2颜色模型转换
16.4基于Simulink的图像几何变换
16.4.1图像的旋转
16.4.2图像的缩放
16.5基于Simulink的图像数学形态学操作
16.5.1图像膨胀和腐蚀
16.5.2图像的开运算与闭运算
16.6基于Simulink的图像增强综合实例
16.6.1图像进行旋转和增强
16.6.2图像缩小旋转及边缘检测处理
16.7本章小结
附录Simulink常用命令库
参考文献
前言
MATLAB/Simulink可用于动态系统和嵌入式系统的多领域仿真,是基于模型的设计工具。Simulink是MATLAB中的一种可视化仿真工具,它基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。对于各种时变系统,包括通信、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制的模块库来对其进行设计、仿真、执行和测试。Simulink可以用连续采样时间、离散采样时间或混合的采样时间进行建模,它也支持多速率系统,即系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方框图的图形用户接口(GUI),创建过程只需单击和拖动鼠标操作就能完成,它提供了一种快捷、直接明了的方式,使得用户可以立即看到系统的仿真结果。1. 本书特点(1) 由浅入深、循序渐进: 本书以MATLAB爱好者为对象,首先从MATLAB使用基础讲起,再辅以MATLAB/Simulink在工程中的应用案例帮助读者尽快掌握MATLAB/Simulink进行工程应用分析的技能。(2) 步骤详尽、内容新颖: 本书结合作者多年MATLAB/Simulink使用经验与实际工程应用案例,将MATLAB/Simulink软件的使用方法与技巧详细地讲解给读者。本书在讲解过程中步骤详尽、内容新颖,并辅以相应的图片,使读者在阅读时一目了然,从而快速掌握书中的内容。(3) 实例典型、轻松易学: 通过实际工程应用案例的具体操作,读者可以更好地掌握MATLAB/Simulink的使用方法。本书通过综合应用案例,透彻详尽地讲解了MATLAB/Simulink在各方面的应用。2. 本书内容本书基于MATLAB 2016a版本,讲解了MATLAB/Simulink的基础知识和核心内容。本书主要围绕MATLAB/Simulink在工程问题中的应用进行仿真运算,内容分为三部分共16章。第一部分主要介绍了MATLAB及Simulink的基本操作知识; 第二部分介绍了Simulink的控制系统仿真应用; 第三部分则讲解Simulink的高级应用。第一部分为MATLAB及Simulink的基本应用,包括第1章到第4章,内容涵盖矩阵的应用、MATLAB计算基础、程序设计基础、绘图功能、微积分应用、非线性方程求解、Simulink基本操作、Simulink运行仿真参数设置、Simulink子系统封装展开以及Simulink模块库分析等。第二部分为Simulink控制系统的仿真部分,包括第5章到第7章,主要介绍采用SFunction进行控制系统设计,采用S函数进行Simulink模块设计,控制系统计算机仿真的算法分析、控制系统数字仿真的实现和控制系统计算机仿真等。第三部分为Simulink高级系统仿真应用,包括第8章到第16章,主要分析了模糊逻辑控制器的设计、电力系统仿真设计、通信系统仿真设计、Simulink神经网络应用、滑模控制、车辆系统仿真和群智能算法控制系统仿真等。本书附录部分介绍Simulink常用命令库,基本涵盖所有常用的Simulink命令函数。3. 读者对象本书适合于MATLAB/Simulink初学者,也适合想要研究算法和提高工程应用能力的读者,本书面向的读者群体包括: ★ 广大科研工作人员★ 初学MATLAB/Simulink的技术人员★ 大中专院校的教师和在校生★ 相关培训机构的教师和学员★ 参加工作实习的“菜鸟”★ MATLAB/Simulink爱好者★ 初中级MATLAB/Simulink从业人员4. 读者服务为了方便解决本书的疑难问题,读者朋友在学习过程中遇到任何与本书有关的技术问题,都可以发邮件到邮箱caxart@126.com,或者访问博客http://blog.sina.com.cn/caxart,编者会尽快给予解答。另外本书所涉及的资料(程序代码)已经上传到上面提到的博客及清华大学出版社本书页面中,读者可以下载。5. 本书作者本书主要由李献、骆志伟和于晋臣编著。此外,付文利、王广、张岩、温正、林晓阳、任艳芳、唐家鹏、孙国强和高飞等也参与了本书部分内容的编写工作。虽然作者在本书的编写过程中力求叙述准确、完善,但由于水平有限,书中欠妥之处在所难免,希望读者能够及时指出,以促进本书质量的提高。最后希望本书能够为读者的学习和工作提供帮助!
编者
Simulink是MATLAB的仿真工具箱,它是面向框图的仿真软件。Simulink能用绘制方框图代替程序,结构和流程清晰; 利用Simulink可智能化地建立和运行仿真,仿真精细、贴近实际。Simulink适应面广。可应用于线性、非线性系统,连续、离散及混合系统,以及单任务、多任务离散事件系统。采用Simulink模块库能够方便地进行模型的编辑和仿真构建。学习目标: (1) 学习Simulink基本库原件; (2) 学习Simulink各模块的使用; (3) 学习Simulink各模块的参数配置; (4) 学习使用Simulink各模块搭建仿真框图。3.1Simulink模块库简介在MATLAB命令行窗口输入simulink,打开Simulink工具箱,进行Simulink工具箱模块库的学习。Simulink模块库很庞大,以下将主要介绍常规的Simulink应用模块,包括信号源模块组、连续模块组、离散模块组、查表模块组、用户自定义函数模块组、数学运算模块组、非线性模块组、输出池模块组、信号与系统模块组、子系统模块组、常用模块组、其他工具箱与模块集等。3.2信号源模块组Simulink模块库中提供了丰富的信号源模块组,下面逐一介绍。3.2.1Clock模块时钟模块以及时钟模块的属性如图31所示。
图31时钟模块
时钟模块如图31所示,在Simulink仿真中,时钟模块主要用于计时,效果很直观。在时钟模块的属性窗口中: (1) Display time: 如果该复选框被选中,则该时钟模块在仿真过程中,界面将显示时间,如果不显示,则可将其输入到工作区中。(2) Decimation: 默认为10,Decimation的数值可以为任意整数,在仿真过程中,随着时钟不断地更新,其数值不断增加,例如对于10s的仿真,系统Decimation默认为10,则表示系统将以1s、2s、3s、…、10s依次递增。搭建时钟模块如图32所示。运行仿真文件,输出结果如图33所示。
图32时钟使用
图33时钟模块示波器时钟变化图
3.2.2Digital Clock模块数字时钟模块以及数字时钟模块的属性如图34所示。
图34数字时钟模块
图35Digital Clock模块使用
在Simulink仿真中,数字时钟模块主要用于离散系统的计时,该模块能够输出保持前一次的值不变。对于其属性窗口: Sample time表示采样时间,默认值为1s。搭建Digital Clock模块如图35所示。运行仿真文件,输出结果如图36所示。
图36Digital Clock模块示波器时钟变化图
3.2.3Constant模块Constant模块,表示常数输入,其模块属性如图37所示。
图37Constant模块
在Simulink仿真中,常数模块主要用在输入的量为定值的情况。对于其属性窗口: (1) Constant value: 表示常数值,由用户指定。(2) Sample time: 表示采样时间,默认值为inf,也可以设置为与系统的采样时间相一致。搭建Constant模块如图38所示。
图38Constant模块使用
运行仿真文件,输出结果如图39所示。
图39Constant模块示波器时钟变化图
3.2.4BandLimited White Noise模块BandLimited White Noise模块产生服从正态分布的随机数,用于混合系统或者连续系统,用户可以采样该模块产生比系统最小时间常数更小的相关时间的随机序列来模拟白噪声的效果,通常噪声的相关时间t可计算如下:
t=2π100fmax
其中,fmax(rad/s)表示系统的带宽。采用时间t作为换算因子,保证了一个连续系统对我们需要近似模拟的白噪声应具有的系统方差(系统噪声),BandLimited White Noise模块属性如图310所示。
图310BandLimited White Noise模块
对于其属性窗口: (1) Noise power: 表示白噪声PSD的幅度,默认值为0.1。(2) Sample time: 表示采样时间,默认值为0.1。(3) Seed: 表示随机数信号发生器的初始种子,默认值为[23341]。搭建BandLimited White Noise模块如图311所示。
图311BandLimited White Noise模块使用
运行仿真文件,输出结果如图312所示。
图312BandLimited White Noise模块示波器时钟变化图
3.2.5Chirp Signal模块Chirp Signal模块产生频率随时间线性增加的正弦信号,即调频信号,该模块可用于非线性系统的谱分析,且以矢量或标量输出。Chirp Signal模块的模块属性如图313所示。
图313Chirp Signal模块
对于其属性窗口: (1) Initial frequency(Hz): 表示信号的初始化频率,指定为标量或矢量,默认值为0.1。(2) Target time(secs): 表示频率变化的最大时间,默认值为100。(3) Frequency at target time(Hz): 表示对应目标时间的信号频率,输入为矢量或标量,默认值为1。搭建Chirp Signal模块如图314所示。
图314Chirp Signal模块使用
运行仿真文件,输出结果如图315所示。
图315Chirp Signal模块示波器时钟变化图
3.2.6Sine Wave模块Sine Wave正弦波模块,产生如下形式的正弦波:
f(t)=Amp·sin(Freq·t Phase) Bias
其中,Amp为正弦波振幅,Freq为正弦波的频率,Phase为初始相位,Bias为正弦波上下移动的常量。Sine Wave正弦波的模块属性如图316所示。
图316Sine Wave正弦波模块
对于其属性窗口: (1) Amplitude: 表示正弦信号的振幅,指定为标量或矢量,默认值为1。(2) Bias: 表示正弦信号离0均值线的偏移量,默认值为0。(3) Frequency(rad/sec): 表示对应目标信号频率,输入为矢量或标量,默认值为1。(4) Phase(rad): 表示信号的初始相位,默认值为0。(5) Sample time: 表示系统采样时间。(6) Inter vector parameters as 1D: 该复选框可以选中,也可以不选,选中表示信号按照一行的数据矢量进行输出; 不勾选,则信号以列向量存储。搭建Sine Wave模块如图317所示。
图317Sine Wave模块使用
运行仿真文件,输出结果如图318所示。
图318Sine Wave模块示波器时钟变化图
3.2.7Pulse Generator模块Pulse Generator模块产生等间隔的脉冲波形,脉冲宽度就是脉冲持续高电平期间的数字采样周期数,脉冲周期等于脉冲持续高电平、低电平的数字采样周期之和,相位延迟则是起始脉冲所对应的数字采样周期数。Pulse Generator的模块属性如图319所示。
图319Pulse Generator模块
对于其属性窗口: (1) Amplitude: 表示脉冲信号的振幅,指定为标量或矢量,默认值为1。(2) Period(secs): 表示脉冲数字采样周期,默认值为10。(3) Pulse width(%of period): 表示脉冲宽度,输入为矢量或标量,默认值为5。(4) Phase delay(secs): 表示信号的相位延迟,默认值为0。(5) Inter vector parameters as 1D: 该复选框可以选中,也可以不选,选中表示信号按照一行的数据矢量进行输出; 不勾选,则信号以列向量存储。搭建Pulse Generator模块如图320所示。
图320Pulse Generator模块使用
运行仿真文件,输出结果如图321所示。
图321Pulse Generator模块示波器时钟变化图
3.2.8Random Number模块Random Number模块产生服从正态分布的随机信号,在每次仿真开始时,种子都设置为指定的值,默认的情况下,产生方差为1、均值为0的随机信号。如果想获得均匀分布的随机信号,则可以使用Uniform Random Number模块; 如果仿真器对于比较平滑的信号能够积分,那么对于随机波动的信号进行积分运算,则需要采用BandLimited White Noise信号。Random Number的模块属性如图322所示。对于其属性窗口: (1) Mean: 表示随机信号的均值,指定为标量或矢量,默认值为0。(2) Variance: 表示随机信号的方差,默认值为1。(3) Seed: 表示随机种子,输入为矢量或标量,默认值为0。(4) Sample time: 表示信号的采样时间,默认值为0.1。搭建Random Number模块如图323所示。运行仿真文件,输出结果如图324所示。
图322Random Number模块
图323Random Number模块使用
图324Random Number模块示波器时钟变化图
3.2.9Step模块Step模块产生阶跃信号,Step常用于控制系统仿真中,用于测试系统的稳定性和敛散性。Step模块在指定时间产生一个可定义上、下电平的阶跃信号,Step产生一个矢量或标量进行输出。Step的模块属性如图325所示。
图325Step模块
对于其属性窗口: (1) Step time: 表示初始阶跃的时间,指定为标量或矢量,系统默认值为1。(2) Initial value: 表示仿真的初始时间,系统默认值为0。(3) Final time: 表示仿真的结束时间,输入为矢量或标量,系统默认值为1。(4) Sample time: 表示信号的采样时间,系统默认值为0。搭建Step模块如图326所示。运行仿真文件,输出结果如图327所示。
图326Step模块使用
图327Step模块示波器时钟变化图
3.2.10Uniform Random Number模块Uniform Random Number模块产生在整个指定时间周期内均匀分布的随机信号,信号的起始种子可由用户指定。将Seed种子指定为矢量,可以产生矢量随机数序列。Uniform Random Number的模块属性如图328所示。
图328Uniform Random Number模块
对于其属性窗口: (1) Minimum: 表示时间间隔的最小值,指定为标量或矢量,系统默认值为-1。(2) Maximum: 表示时间间隔的最大值,指定为标量或矢量,系统默认值为1。(3) Seed: 表示随机序列发生器的初始种子,输入为矢量或标量,系统默认值为0。(4) Sample time: 表示信号的采样时间,系统默认值为0.1。搭建Uniform Random Number模块如图329所示。运行仿真文件,输出结果如图330所示。
图329Uniform Random Number
模块使用
图330Uniform Random Number模块示波器
时钟变化图
3.3连续模块组连续模块仿真主要用于系统的积分分析。对于一个系统而言,传递函数的构建显得尤为重要。3.3.1Derivative模块Derivative模块表示微分环节,为时间的一阶导数ΔuΔt,其中,Δu为输入的变化量,Δt为前两次仿真时间点之差。Derivative模块的仿真精度取决于时间步长Δt,步长越小,结果越平滑,相应的结果越精确。如果输入为离散信号,当输入变化时,输入的连续导数是冲击信号,否则为0。为得到离散型系统的离散导数,可采用
y(k)=1Δt[u(k)-u(k-1)]
相应的Z变换为
Y(z)u(z)=1-z-1Δt=z-1Δt·z
Derivative的模块属性如图331所示。
图331Derivative模块
对于其属性窗口: Coefficient c in the transfer function approximation s/(c*s 1) used for linearization表示步长的设置,指定为标量或矢量,默认值为inf(无穷大)。搭建Derivative模块如图332所示。运行仿真文件,输出结果如图333所示。
图332Derivative模块使用
图333Derivative模块示波器时钟变化图
3.3.2Integrator模块Integrator模块表示积分环节,为时间的一阶导数∫udt,其中,u为输入的变化量,dt为前两次仿真时间点之差。Integrator的模块属性如图334所示。
图334Integrator模块
对于其属性窗口: (1) External reset: 设置信号的触发事件(rising、falling、either、level、level hold和none),默认设置为none,即保持系统原态。(2) Initial condition source: 表示参数输入的状态,分为外部输入external和内部输入internal,通常默认设置为internal。(3) Initial condition: 表示状态的初始条件,用于设置Initial condition source的参数。(4) Limit output: 若选中,则可以设置积分的上界(Upper saturation limit)和下界(Lower saturation limit)。(5) Upper saturation limit: 表示积分上界,默认值为inf。(6) Lower saturation limit: 表示积分下界,默认值为inf。(7) Show saturation port: 若选中,则表示模块增加一个饱和输出端口。(8) Show state port: 若选中,则表示模块增加一个输出端口。(9) Absolute tolerance: 表示模块状态的绝对容限,默认值为auto。(10) Ignore limit and reset when linearizing: 若勾选此选项,则表示当系统为线性化系统时,前面的积分上下限制和触发事件无效,默认为不勾选。(11) Enable zerocrossing detection: 使系统通过零点检验,默认勾选。搭建Integrator模块如图335所示。运行仿真文件,输出结果如图336所示。
图335Integrator模块使用
图336Integrator模块示波器时钟变化图
3.3.3Transfer Fcn模块Transfer Fcn模块用于表征传递函数,具体的传递函数的表达式如下:
H(s)=y(s)u(s)=ansn an-1sn-1 … a1s a0bmsm bm-1sm-1 … b1s b0
其中,y(s)为系统输出,u(s)为系统输入,传递函数的计算则通过用户得到的系统模型而来,对于一个收敛性系统而言,分母中s的最高次幂大于分子中s的最高次幂。Transfer Fcn的模块属性如图337所示。
图337Transfer Fcn模块
对于其属性窗口: (1) Numerator coefficients: 表示传递函数分子系数,系统默认值为[1]。(2) Denominator coefficients: 表示传递函数分母系数,系统默认值为[1 1]。(3) Absolute tolerance: 表示模块状态的绝对容限,默认值为auto。(4) State Name(e.g., ‘position’): 表示状态空间的名字,用户可以不加以定义。搭建Transfer Fcn模块如图338所示。运行仿真文件,输出结果如图339所示。
图338Transfer Fcn模块使用
图339Transfer Fcn模块示波器时钟变化图
3.3.4Transport Delay模块Transport Delay模块用于延时系统的输入,延时的时间可以由用户指定。在仿真过程中,模块将输入点和仿真时间存储在一个缓冲器内,该缓冲器的容量由Initial buffer size参数指定。若输入点数超出缓冲器的容量,模块将配置额外的存储区。Transport Delay模块不能对离散信号进行插值计算,模块返回区间t-tdelay(当前时间减去时间延迟)对应的离散值。Transport Delay的模块属性如图340所示。
图340Transport Delay模块
对于其属性窗口: (1) Time delay: 表示系统延时量,系统默认值为1。(2) Initial output: 表示系统在开始仿真和Time delay之间产生的输出,系统默认值为0。(3) Initial buffer size: 表示储存点数的初始存储区配置,系统默认值为auto。(4) Use fixed buffer size: 储存点数的初始存储区配置为固定值,用户可以不加以定义。搭建Transport Delay模块如图341所示。运行仿真文件,输出结果如图342所示。
图341Transport Delay模块使用
图342Transport Delay模块示波器时钟变化图
3.3.5ZeroPole模块ZeroPole模块用于表征一个以Laplace算子s为变量的零点、极点和增益的系统,其传递函数可表示为:
H(s)=y(s)u(s)=ansn an-1sn-1 … a1s a0bmsm bm-1sm-1 … b1s b0
它的变形为以s为变量的零点、极点和增益的系统,如下:
H(s)=KZ(s)P(s)=K(s-Z(1))(s-Z(2))…(s-Z(n))(s-P(1))(s-P(2))…(s-P(m))
其中,Z代表零点; P为极点矢量; K为增益。ZeroPole模块的输入和输出宽度等于零点矩阵的行数。ZeroPole的模块属性如图343所示。
图343ZeroPole模块
对于其属性窗口: (1) Zeros: 表示系统传递函数零点向量,系统默认值为[1]。(2) Poles: 表示系统传递函数极点向量,系统默认值为[0 -1]。(3) Gain: 表示系统传递函数增益向量,系统默认值为[1]。(4) Absolute tolerance: 表示模块状态的绝对容限,系统默认值为auto。(5) State Name(e.g., ‘position’): 表示状态空间的名字,用户可以不加以定义。搭建ZeroPole模块如图344所示。运行仿真文件,输出结果如图345所示。
图344ZeroPole模块使用
图345ZeroPole模块示波器时钟变化图
3.3.6StateSpace模块StateSpace模块用于表征一个控制系统的状态空间,具体的状态空间的表达式如下:
x·=Ax Bu
y=Cx Du
其中,x为状态矢量; u为输入矢量; y为输出矢量。StateSpace的模块属性如图346所示。
图346StateSpace模块
对于其属性窗口:
(1) A: 表示系统状态空间矩阵系数,必须是一个n×n矩阵,n为状态数,系统默认值为1。(2) B: 表示系统状态空间矩阵系数,必须是一个n×m矩阵,m为状态数,系统默认值为1。(3) C: 表示系统状态空间矩阵系数,必须是一个r×n矩阵,r为状态数,系统默认值为1。(4) D: 表示系统状态空间矩阵系数,必须是一个r×m矩阵,系统默认值为1。(5) Initial conditions: 表示初始状态矢量,系统默认值为0。(6) Absolute tolerance: 表示模块状态的绝对容限,系统默认值为auto。(7) State Name(e.g., ‘position’): 表示状态空间的名字,用户可以不加以定义。搭建StateSpace模块如图347所示。运行仿真文件,输出结果如图348所示。
图347StateSpace模块使用
图348StateSpace模块示波器时钟变化图
3.4离散模块组现实系统中有很多系统都是离散系统,系统根据采样时间点进行数据采集分析,Simulink中离散系统的表征主要是根据Z变换进行系统仿真建模。3.4.1Discrete Transfer Fcn模块对于Discrete Transfer Fcn模块,由通常的拉普拉斯变换后,得到相应的传递函数,再经过Z变换,得到离散系统传递函数,具体如下:
H(z)=num(z)den(z)=anzn an-1zn-1 … a0z0bmzm bm-1zm-1 … b0z0
其中,num(z)为离散系统传递函数的分子系数,den(z)为离散系统传递函数的分母系数。Discrete Transfer Fcn的模块属性如图349所示。
图349Discrete Transfer Fcn模块
对于其属性窗口: (1) Numerator: 表示系统分子系数矢量,系统默认值为[1]。(2) Denominator: 表示系统分母系数矢量,系统默认值为[1 2]。(3) Sample time(-1 for inherited): 表示系统采样时间,系统默认值为[-1]。(4) Initial states: 表示系统初始状态矩阵,系统默认值为0。搭建Discrete Transfer Fcn模块,设置采样时间为0.1s,如图350所示。运行仿真文件,输出结果如图351所示。
图350Discrete Transfer Fcn模块使用
图351Discrete Transfer Fcn模块示波器时钟变化图
3.4.2Discrete Filter模块Discrete Filter模块可实现无限冲激响应(IIR)和有限冲激响应(FIR)滤波器,用户可用Numerator和Denominator参数指定以z-1的升幂为矢量的分子和分母多项式的系数。分母的阶数大于或等于分子的系数。Discrete Filter模块提供了自动控制中用z描述离散系统的方法。在信号处理中,Discrete Filter模块提供了z-1(延迟算子)多项式以描述数字滤波器。Discrete Filter的模块属性如图352所示。
图352Discrete Filter模块
对于其属性窗口: (1) Numerator: 表示系统分子系数矢量,系统默认值为[1]。(2) Denominator: 表示系统分母系数矢量,系统默认值为[12]。(3) Sample time: 表示系统采样时间,系统默认值为-1。(4) Initial states: 表示系统初始状态矩阵,系统默认值为0。搭建Discrete Filter模块,设置采样时间为0.1s,如图353所示。运行仿真文件,输出结果如图354所示。
图353Discrete Filter模块使用
图354Discrete Filter模块示波器时钟变化图
3.4.3Unit Delay模块Unit Delay模块将输入矢量延迟,并保持在同一个采样周期里。若模块的输入为矢量,则系统所有输出量均被延迟一个采样周期,本模块相当于一个z-1的时间离散算子。Unit Delay的模块属性如图355所示。
图355Unit Delay模块
对于其属性窗口: (1) Initial condition: 在模块未被定义时,模块的第一个仿真周期按照正常非延迟状态输出,系统默认值为0。(2) Input processing: 表示基于采样的元素通道。(3) Sample time(-1 for inherited): 表示系统采样时间,系统默认值为-1。搭建Unit Delay模块,设置采样时间为0.1s,如图356所示。运行仿真文件,输出结果如图357所示。
图356Unit Delay模块使用
图357Unit Delay模块示波器时钟变化图
3.4.4Memory模块Memory模块将前一个集成步的输入作为输出,相当于对前一个集成步内的输入进行采样保持。Memory的模块属性如图358所示。
图358Memory模块
对于其属性窗口: (1) Initial condition: 表示系统初始集成步的输出,系统默认值为0。(2) Inherit sample time: 系统默认不被选中,若选中该复选框,表示使系统采样时间从驱动模块继承。搭建Memory模块,设置采样时间为0.1s,如图359所示。运行仿真文件,输出结果如图360所示。
图359Memory模块使用
图360Memory模块示波器时钟变化图
3.4.5Discrete ZeroPole模块对于Discrete ZeroPole模块,由通常的拉普拉斯变换后,得到相应的传递函数,再经过Z变换,得到离散系统传递函数,具体如下:
H(z)=num(z)den(z)=anzn an-1zn-1 … a0z0bmzm bm-1zm-1 … b0z0
转化为离散零极点传递函数为
H(z)=KZ(z)P(z)=K(z-Z1)(z-Z 2)…(z-Zn)(z-P1)(z-P2)…(z-Pm)
其中,Z表示零点矢量; P表示极点矢量; K表示系统增益。系统要求m≥n,若极点和零点是复数,它们必须是复共轭对。Discrete ZeroPole的模块属性如图361所示。
图361Discrete ZeroPole模块
对于其属性窗口: (1) Zeros: 表示系统零点矩阵,系统默认值为[1]。(2) Poles: 表示系统极点矩阵,系统默认值为[00.5]。(3) Gain: 表示系统增益,系统默认值为1。(4) Sample time(-1 for inherited): 表示系统采样时间,系统默认值为1。搭建Discrete ZeroPole模块,设置采样时间为0.1s,如图362所示。运行仿真文件,输出结果如图363所示。
图362Discrete ZeroPole模块使用
图363Discrete ZeroPole模块示波器时钟变化图
3.4.6Discrete StateSpace模块Discrete StateSpace模块可实现如下的离散系统:
x(n 1)=Ax(n) Bu(n)
y(n)=Cx(n) Du(n)
其中,u为输入; x为状态; y为输出。Discrete StateSpace的模块属性如图364所示。
图364Discrete StateSpace模块
对于其属性窗口: (1) A: 表示系统状态空间矩阵系数,必须是一个n×n矩阵,n为状态数,系统默认值为1。(2) B: 表示系统状态空间矩阵系数,必须是一个n×m矩阵,m为状态数,系统默认值为1。(3) C: 表示系统状态空间矩阵系数,必须是一个r×n矩阵,r为状态数,系统默认值为1。(4) D: 表示系统状态空间矩阵系数,必须是一个r×m矩阵,系统默认值为1。(5) Initial conditions: 表示初始状态矢量,系统默认值为0。(6) Sample time(-1 for inherited): 表示系统采样时间,系统默认值为1。搭建Discrete StateSpace模块,设置采样时间为0.1s,如图365所示。运行仿真文件,输出结果如图366所示。
图365Discrete StateSpace使用
图366Discrete StateSpace模块示波器时钟变化图
3.4.7ZeroOrder Hold模块ZeroOrder Hold模块实现一个以指定采样率的采样与保持函数操作,模块接收一个输入,并产生一个输出,输入和输出可以是标量或矢量。ZeroOrder Hold的模块属性如图367所示。
图367ZeroOrder Hold模块
对于其属性窗口: Sample time(-1 for inherited)表示系统采样时间,系统默认值为1。搭建ZeroOrder Hold模块,设置采样时间为0.1s,如图368所示。运行仿真文件,输出结果如图369所示。
图368ZeroOrder Hold使用
图369ZeroOrder Hold模块示波器时钟变化图
3.5查表模块组MATLAB Simulink查表模块分为一维查找表模块(1D Lookup Table)和二维查找表模块(2D Lookup Table),主要实现信号的插值功能。(1) 一维查找表模块: 可实现对单路输入信号的查表和线性插值。(2) 二维查找表模块: 根据给定的二维平面网格上的高度值,把输入的两个变量经过查找表、插值,计算出模块的输出值,并返回该值。3.5.11D Lookup Table模块一维查找表模块的模块属性如图370所示。
图3701D Lookup Table模块
对于其属性窗口: (1) Number of table dimensions: 一维查找表模块默认为1,表示是一维的查表数据。(2) Table data: 系统默认为tanh([-5:5]),双曲正切函数,取值范围为-5到5之间。搭建1D Lookup Table模块,设置采样时间为0.1s,如图371所示。运行仿真文件,输出结果如图372所示。
图3711D Lookup Table使用
图3721D Lookup Table模块示波器时钟变化图
3.5.22D Lookup Table模块2D Lookup Table模块的属性如图373所示。
图3732D Lookup Table模块
对于其属性窗口: (1) Number of table dimensions: 一维查找表模块默认为1,表示一维的查表数据。(2) Table data: 系统默认为tanh([-5:5]),双曲正切函数,取值范围为-5到5之间。搭建2D Lookup Table模块,设置采样时间为0.1s,如图374所示。运行仿真文件,输出结果如图375所示。
图3742D Lookup Table使用
图3752D Lookup Table模块示波器时钟变化图
3.6用户自定义函数模块组MATLAB Simulink提供了用户自定义函数模块,该模块可方便用户设计自己的仿真模型,实现模型的易移植性等特点。3.6.1Fcn模块Fcn模块用于实现系统的数学表达式快捷计算,u(i)表示矢量的第i个元素。MATLAB数学函数包括abs、acos、asin、cos、log和tanh等。模块的输入可以是一个标量或矢量,输出总为标量。Fcn的模块属性如图376所示。
图376Fcn模块
对于其属性窗口: Expression表示系统默认方程式为sin(u(1)*exp(2.3*(-u(2)))),用于函数定义。搭建Fcn模块,设置采样时间为0.1s,如图377所示。运行仿真文件,输出结果如图378所示。
图377Fcn使用
图378Fcn模块示波器时钟变化图
3.6.2MATLAB Fcn模块MATLAB Fcn模块便于用户快速定义自己的函数,且能够完全适应Fcn模块。MATLAB Fcn模块具有较强的程序移植功能,用户可以开发相应的算法,这也是一种嵌入式编程。MATLAB Fcn的模块属性如图379所示。
图379Fcn模块
如图379所示MATLAB Fcn模块,双击该模块,将弹出其程序编写窗口,用户可以在此窗口下输入如下代码:
function y = fcn(u)
%生成代码
y = sin(u)*cos(u).^.2 exp(sin(u));
搭建MATLAB Fcn模块,设置采样时间为0.1s,如图380所示。运行仿真文件,输出结果如图381所示。
图380MATLAB Fcn使用
图381MATLAB Fcn模块示波器时钟变化图
3.6.3SFunction模块用户可以编写M文件供SFunction模块调用,需要遵循SFunction函数的格式,该模块允许附加参数直接赋给SFunction。SFunction有两个端口,一个输入端口,一个输出端口,输入端口的维数可以由用户函数指定,主要以行向量的形式进行输入和输出。SFunction的模块属性如图382所示。
图382SFunction模块
对于其属性窗口: (1) SFunction name: 表示SFunction的函数文件名称,单击Edit按钮即可打开该函数文件。(2) SFunction parameters: 表示SFunction模块的参数,一般默认为空。(3) SFunction modules: 表示SFunction模块,默认为”,一般无须编辑,采用系统默认设置。采用PID控制器对正弦函数进行控制,SFunction程序如下:
function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error([’Unhandled flag = ‘,num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 0;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 1;
sizes.NumInputs= 3;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;%至少需要一个采样点
sys = simsizes(sizes);
x0= [];
str = [];
ts= [0 0];
function sys=mdlOutputs(t,x,u)
kp=10;
ki=2;
kd=1;
ut=kp*u(1) ki*u(2) kd*u(3);
sys(1)=ut;
控制对象SFunction程序如下:
function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 1,
sys=mdlDerivatives(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error([’Unhandled flag = ‘,num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 2;
sizes.NumDiscStates= 0;
sizes.NumOutputs = 1;
sizes.NumInputs= 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;%至少需要一个采样点
sys = simsizes(sizes);
x0= [0;0];
str = [];
ts= [0 0];
function sys=mdlDerivatives(t,x,u) %时变模型
ut=u(1);
J=20 10*sin(6*pi*t);
K=400 300*sin(2*pi*t);
sys(1)=x(2);
sys(2)=-J*x(2) K*ut;
function sys=mdlOutputs(t,x,u)
sys(1)=x(1);
搭建SFunction模块,设置采样时间为0.1s,如图383所示。
图383SFunction使用
运行仿真文件,输出结果如图384所示。
图384SFunction模块示波器时钟变化图
3.7数学运算模块组数学运算模块主要针对基本运算符号进行模块化设计,用户可以很方便地进行输入信号的加、减、乘、除等基本运算,从而加速模型设计。3.7.1Abs模块Abs模块用于绝对值操作,即对输入的矢量或者标量进行取绝对值运算。Abs的模块属性如图385所示。
图385Abs模块
对于其属性窗口: Enable zerocrossing detection表示开启模块的过零检测。搭建Abs模块,如图386所示。运行仿真文件,输出结果如图387所示。
图386Abs使用
图387Abs模块示波器时钟变化图
3.7.2Add模块Add模块用于加减运算,即对输入的矢量或标量进行加减操作。Add的模块属性如图388所示。
图388Add模块
对于其属性窗口: List of signs表示符号设置,可以设置为“ -”,表示第一个输入为正,第二个输入为负; 也可以为“- ”,表示第一个输入为负,第二个输入为正; 设置为“ ”,表示第一个输入为正,第二个输入为正; 设置为“–”,表示第一个输入为负,第二个输入为负; 系统默认为“ ”。搭建Add模块,如图389所示。运行仿真文件,输出结果如图390所示。
图389Add使用
图390Add模块示波器时钟变化图
3.7.3Divide模块Divide模块用于乘除运算,即对输入的矢量或标量进行乘除操作。Divide的模块属性如图391所示。
图391Divide模块
对于其属性窗口: (1) Number of inputs: 表示符号设置,可以设置为“*/”,表示第一个输入为分子,第二个输入为分母; 也可以设置为“/*”,表示第一个输入为分母,第二个输入为分子; 设置为“**”,表示第一个输入为分子,第二个输入为分子,两者直接相乘; 设置为“//”,表示第一个输入为分母,第二个输入为分母,两者直接相乘; 系统默认为“*/”。(2) Multiplication: 包括两个选项Elementwise(.*)和Matrix(*)。其中,Elementwise(.*)表示元素点乘,Matrix(*)表示矩阵相乘。搭建Divide模块,如图392所示。运行仿真文件,输出结果如图393所示。
图392Divide使用
图393Divide模块示波器时钟变化图
3.7.4Dot Product模块Dot Product模块用于点乘运算,即对输入的矢量或标量进行点乘操作,是Simulink提供的快捷模块。Dot Product的模块属性如图394所示。
图394Dot Product模块
对于其属性窗口: (1) Output minimum: 指定模块输出的最小值,默认是[]。(2) Output maximum: 指定模块输出的最大值,默认是[]。搭建Dot Product模块,如图395所示。运行仿真文件,输出结果如图396所示。
图395Dot Product使用
图396Dot Product模块示波器时钟变化图
3.7.5Gain模块Gain模块,即增益模块,用于对输入的矢量或标量乘以放大增益倍数,是Simulink提供的快捷模块。增益模块的输入可以为矩阵也可以为向量。Gain的模块属性如图397所示。
图397Gain模块
对于其属性窗口: (1) Gain: 表示输入的增益数值,可以为矩阵,也可以为数值,对输入的矢量或者标量进行点乘运算,实现放大或者缩小输入量的功能。(2) Multiplication: 包括两个选项Elementwise(.*)和Matrix(*)。其中,Elementwise(.*)表示元素点乘,Matrix(*)表示矩阵相乘。搭建Gain模块,如图398所示。运行仿真文件,输出结果如图399所示。
图398Gain使用
图399Gain模块示波器时钟变化图
3.7.6Complex to MagnitudeAngle模块Complex to MagnitudeAngle模块接受双精度复信号,Complex to MagnitudeAngle模块输出输入信号的幅值和相角,输入信号可以为矢量或者为标量。Complex to MagnitudeAngle的模块属性如图3100所示。
图3100Complex to MagnitudeAngle模块
对于其属性窗口: Output输出分为Magnitude、Angle和Magnitude and angle,分别用于输出输入信号的振幅、相角、振幅和相角。搭建Complex to MagnitudeAngle模块,如图3101所示。运行仿真文件,输出结果如图3102所示。
图3101Complex to MagnitudeAngle使用
图3102Complex to MagnitudeAngle模块示波器时钟变化图
3.7.7MagnitudeAngle to Complex模块MagnitudeAngle to Complex模块的输出信号为双精度复信号。MagnitudeAngle to Complex模块能将一个幅度和一个相角信号变换为复信号输出,输入信号可以为矢量或标量。如果输入信号是一个标量,则它映射到所有复输出信号的对应成分(幅度或相角)上。MagnitudeAngle to Complex的模块属性如图3103所示。
图3103MagnitudeAngle to Complex模块
对于其属性窗口: Input输入分为Magnitude、Angle和Magnitude and angle,分别为输入信号的振幅、相角、振幅和相角。搭建MagnitudeAngle to Complex模块,如图3104所示。运行仿真文件,输出结果如图3105所示。
图3104MagnitudeAngle to Complex使用
图3105MagnitudeAngle to Complex模块示波器时钟变化图
3.8非线性模块组非线性系统在实际中应用较多,由于理想的线性系统对于仿真控制存在很大的缺陷,因此,Simulink提供了可供用户使用的非线性模块组。3.8.1Backlash模块Backlash模块的主要功能是实现输入和输出变化同步。当输入量改变方向时,输入的初始变化对输出没有影响。存在回差的系统有如下三种可能: (1) 分离模式——输入信号不控制输出,输出保持为常数; (2) 正向工作模式——输入以正斜率上升,而输出等于输入减去死区宽度的一半; (3) 负向工作模式——输入以负斜率上升,而输出等于输入加上死区宽度的一半。Backlash的模块属性如图3106所示。如果初始输入落在死区以外,Initial output参数值将决定模块是正向工作还是负向工作,并且决定在仿真开始时的输出是输入加上死区宽度的一半还是减去死区宽度的一半。
图3106Backlash模块
对于其属性窗口: (1) Deadband width: 表示死区宽度,系统默认为1。(2) Initial output: 表示初始输出值,默认值为0。(3) Initial processing: 设置为Elements as channels (sample based),表示以数值元素进行输入输出。搭建Backlash模块,如图3107所示。运行仿真文件,输出结果如图3108所示。
图3107Backlash使用
图3108Backlash模块示波器时钟变化图
3.8.2Coulomb & Viscous Friction模块Coulomb & Viscous Friction模块用于建立库仑力和粘滞力模型。该模块建立的是在零点不连续而其余点线性的增益模型。偏置对应库仑力; 增益对应粘滞力。该模块由如下的函数表达式表示:
y=sign(u)·(Gain·|u|·offset)
其中,y是输出,u是输入,Gain和offset为模块参数。Coulomb & Viscous Friction的模块属性如图3109所示。
图3109Coulomb & Viscous Friction模块
对于其属性窗口: (1) Coulomb friction value(Offset): 表示偏置,适应所有的输入,系统默认值为[1320]。(2) Coefficient of viscous friction(Gain): 表示在非零输入点的信号增益,系统默认值为1。搭建Coulomb & Viscous Friction模块,如图3110所示。运行仿真文件,输出结果如图3111所示。
图3110Coulomb & Viscous Friction使用
图3111Coulomb & Viscous Friction模型示波器时钟变化图
3.8.3Dead Zone模块Dead Zone模块产生指定范围(称为截止区)内的零输出。用Start of dead zone和End of dead zone参数指定截止区的上下限值。该模块的输入和输出的关系如下: (1) 如果输入落在截止区域内,则输出为0; (2) 如果输入大于等于上限值,则输出为上限值; (3) 如果输入小于等于下限值,则输出为下限值。Dead Zone的模块属性如图3112所示。
图3112Dead Zone模块
对于其属性窗口: (1) Start of dead zone: 表示下限值,系统默认为-0.5。(2) End of dead zone: 表示上限值,系统默认为0.5。搭建Dead Zone模块,如图3113所示。运行仿真文件,输出结果如图3114所示。
图3113Dead Zone使用
图3114Dead Zone模块示波器时钟变化图
3.8.4Quantizer模块Quantizer模块是量化输入的模块,用于将平滑的输入信号变为阶梯状输出。模块接收并输出双精度信号,输出计算采用四舍五入法,产生与零点对称的输出,具体如下:
y=q·round(u/q)
其中,u为一个整数; q为Quantization interval参数,系统默认值为0.5。Quantizer的模块属性如图3115所示。
图3115Quantizer模块
对于其属性窗口: Quantization interval表示量化输出的时间间隔。Quantizer模块的输出允许值为n×q,其中,n为一个整数,q为Quantization interval参数,系统默认值为0.5。搭建Quantizer模块,如图3116所示。运行仿真文件,输出结果如图3117所示。
图3116Quantizer使用
图3117Quantizer模块示波器时钟变化图
3.8.5Rate Limiter模块Rate Limiter模块限定通过该模块的信号的一阶导数,以使输出端的变化不超过指定界限,导数根据以下方程计算得到:
rate=u(i)-y(i-1)t(i)-t(i-1)
其中,u(i)和t(i)为当前模块的输入和时间,y(i-1)和t(i-1)为前一时间的输出和时间,输出通过将rate与Rising slew rate和Falling slew rate参数比较得出: (1) 如果rate大于Rising slew rate参数(R),输出计算为
y(i)=Δt·R y(i-1)
(2) 如果rate小于Falling slew rate参数(F),输出计算为
y(i)=Δt·F y(i-1)
(3) 如果rate大于Falling slew rate参数(F),且小于Rising slew rate参数(R),输出计算为
y(i)=u(i)
Rate Limiter的模块属性如图3118所示。
图3118Rate Limiter模块
对于其属性窗口: (1) Rising slew rate: 表示一个递增输入信号的导数极限,默认为1。(2) Falling slew rate: 表示一个递减输入信号的导数极限,默认为-1。(3) Initial condition: 表示系统初始化状态值,默认为0。搭建Rate Limiter模块,如图3119所示。运行仿真文件,输出结果如图3120所示。
图3119Rate Limiter使用
图3120Rate Limiter模块示波器时钟变化图
3.8.6Saturation模块Saturation模块用于对输入信号的上限、下限进行约束,如输入值大于等于上限; 则取上限值,如输入值小于等于下限,则取下限值。Saturation的模块属性如图3121所示。
图3121Saturation模块
对于其属性窗口: (1) Upper limit: 用于限定输入信号的上限,如输入值大于等于该值,则取该值,系统默认值为0.5。(2) Lower limit: 用于限定输入信号的下限,如输入值小于等于该值,则取该值,系统默认值为-0.5。搭建Saturation模块,如图3122所示。运行仿真文件,输出结果如图3123所示。
图3122Saturation使用
图3123Saturation模块示波器时钟变化图
3.9信号与系统模块组信号与系统模块主要对信号进行仿真运算,在信号系统中应用广泛,例如总线设置、数据存储、数据写和数据读操作等。Simulink库涵盖范围广,因此适用于多学科的交叉运算。3.9.1Bus Selector模块Bus Selector模块接受来自mux模块或者其他Bus Selector模块的信号,Bus Selector模块只有一个输入端口,输出端口的数量取决于Muxed output复选框的状态。Bus Selector的模块属性如图3124所示。
图3124Bus Selector模块
对于其属性窗口: (1) Signals in the bus: 此列表框显示在输入母线上的信号。(2) Secreted signals: 此列表框显示输出信号,可以通过Up、Down和Remove按钮进行信号的上下移动和删除,如果在Secreted signals列表选中的输出信号不是Bus Selector模块的输入,则信号前将以“???”显示。搭建Bus Selector模块,如图3125所示。运行仿真文件,输出结果如图3126所示。
图3125Bus Selector使用
图3126Bus Selector模块示波器时钟变化图
3.9.2Bus Creator模块Bus Creator模块的输入信号可以是矢量或标量信号,Bus Creator创建Bus输出信号,可供其他Bus模块调用。Bus Creator的模块属性如图3127所示。
图3127Bus Creator模块
对于其属性窗口: (1) Number of inputs: 表示输入信号的个数。(2) Secreted signals: 此列表框显示输入信号,可以通过Up、Down、Add和Remove按钮进行信号的上下移动、增加信号和删除信号,如果在Secreted signals列表选中的输出信号不是Bus Selector模块的输入,则信号前将以“???”显示。搭建Bus Creator模块,如图3128所示。运行仿真文件,输出结果如图3129所示。
图3128Bus Creator使用
图3129Bus Creator示波器时钟变化图
3.9.3Mux模块Mux模块将多个输入行合成为一个矢量行输出。每一个输入行可携带一个标量或矢量信号,模块输出为一个矢量。Mux的模块属性如图3130所示。
图3130Mux模块
对于其属性窗口: (1) Number of inputs: 表示输入信号的个数或者宽度。行输出的宽度等于行输入宽度之和。(2) Display option: 主要有三个选项none、names和bar。none表示Mux显示在模块图标的外观,names表示在每一个端口显示信号名,bar表示以实心前景色显示模块图标。搭建Mux模块,如图3131所示。运行仿真文件,输出结果如图3132所示。
图3131Mux使用
图3132Mux模块示波器时钟变化图
3.9.4Demux模块Demux模块将一个输入信号分成为多个行输出,每一行可包含一个标量或矢量信号,Simulink通过Number of outputs参数决定输出信号的行数或宽度。Demux的模块属性如图3133所示。
图3133Demux模块
对于其属性窗口: (1) Number of outputs: 表示输出信号的个数或者宽度。行输出的总宽度之和等于行输入宽度。(2) Display option: 主要有三个选项: none、names和bar。none表示Mux显示在模块图标的外观,names表示在每一个端口显示信号名,bar表示以实心前景色显示模块图标。搭建Demux模块,如图3134所示。运行仿真文件,输出结果如图3135所示。
图3134Demux使用
图3135Demux示波器时钟变化图
3.9.5Data Store Memory模块Data Store Memory模块用于定义共享数据存储区,该存储区是与Data Store Read模块和Data Store Write模块共享的存储空间。(1) 若Data Store Memory模块是在最高一级的系统中,则处于模型中任何位置的Data Store Read模块和Data Store Write模块都可以访问该数据存储区。(2) 若Data Store Memory模块处于子系统中,并且Data Store Read和Data Store Write模块也位于该子系统或位于子系统的模型分层结构的下级子系统中,则也能访问该数据存储区。Data Store Memory的模块属性如图3136所示。
图3136Data Store Memory模块
对于其属性窗口: (1) Data Store name: 表示正在定义的数据存储区的名字,系统默认值为字母A。(2) Initial value: 系统设定初始值为0,系统默认值为0。(3) Signal type: 通常仿真中需要指定,分为实数real、自动auto和复数complex。(4) Data type: 通常仿真中需要指定,分为double、auto、uint8、single、uint16、uint32、boolean、fixdt(1,16)和fixdt(1,16,0)等。搭建Data Store Memory模块,如图3137所示。运行仿真文件,输出结果如图3138所示。
图3137Data Store Memory使用
图3138Data Store Memory模块示波器时钟变化图
3.9.6Data Store Read模块Data Store Read模块从已经定义的一个共享数据存储区Data Store Memory模块中读取数值,Data Store Read模块和Data Store Write模块与Data Store Memory模块共享数据存储空间。Data Store Read的模块属性如图3139所示。
图3139Data Store Read模块
对于其属性窗口: Data store name表示正在定义的数据存储区的名字,默认值为字母A。搭建Data Store Read模块,如图3140所示。运行仿真文件,输出结果如图3141所示。
图3140Data Store Read使用
图3141Data Store Read模块示波器时钟变化图
3.9.7Data Store Write模块Data Store Write模块定义一个共享数据存储区Data Store Memory模块,将输入的数据源写入数值,并将该数值用Data Store Read读出和显示。Data Store Write模块和Data Store Read模块与Data Store Memory模块共享数据存储空间。Data Store Write的模块属性如图3142所示。
图3142Data Store Write模块
对于其属性窗口: Data Store name表示正在定义的数据存储区的名字,默认值为字母A。搭建Data Store Write模块,如图3143所示。
图3143Data Store Write使用
运行仿真文件,输出结果如图3144所示。
图3144Data Store Write模块示波器时钟变化图
3.9.8Enable模块加上Enable模块的子系统就成为“使能(激活)子系统”,只有当进入Enable端口的输入大于0时,这种子系统才运行。仿真运行时,Simulink按照初始条件将包含在使能子系统内的模块初始化,当一个使能子系统被激活而再启动时,States when enabling参数决定该子系统内模块的状态。Enable的模块属性如图3145所示。
图3145Enable模块
对于其属性窗口: (1) States when enabling: 指定当子系统再次被激活时,处理状态的方式。设置为Reset,表示按照初始条件设置状态,若不知道初始条件,则设置为0; 设为held表示保持原有状态。(2) Show output port: 若选中该选项,Simulink给Enable模块划分一个输出端口并输出使能信号。搭建Enable模块,如图3146所示。相应的子系统如图3147所示。
图3146Enable使用
图3147Enable子系统
运行仿真文件,输出结果如图3148所示。
图3148Enable模块示波器时钟变化图
3.9.9Ground模块Ground模块可用于链接那些输入端口未与其他模块相连的模块,若用户运行一个带有这样的模块的模型,则Simulink就会发布警告。若使用该Ground模块,将这些模块“接地”,可避免警示出现,Ground模块输出0值信号。Ground模块的输入类型和其他模块的数据类型相同。Ground的模块属性如图3149所示。
图3149Ground模块
搭建Ground模块,如图3150所示。运行仿真文件,输出结果如图3151所示。
图3150Ground使用
图3151Ground模块示波器时钟变化图
3.10本章小结本章主要介绍了Simulink各模块组的组件,包括信号源模块组、连续模块组、离散模块组、查表模块组、用户自定义函数模块组、数学运算模块组以及信号与系统模块组,并对每一个模块组的内部部件进行了Simulink模型构建和仿真,使得读者能够快速掌握该模块的使用。
评论
还没有评论。