第四讲 Matlab/Simulink入门——连续系统仿真实例
第四讲 Matlab/Simulink入门——连续系统仿真实例
- 1、连续系统基本概念
- 1.1 连续系统
- 1.2 线性连续系统
- 1.3 Laplace变换
- 2、蹦极模型(例1)仿真
- 2.1 蹦极模型
- 2.2 建模
- 2.3 模型参数设置
- 2.4 系统仿真
- 3、比例微分控制器(例2)仿真
- 3.1 比例微分控制器模型
- 3.2 建模
- 3.3 模型仿真
1、连续系统基本概念
1.1 连续系统
连续系统: 是指系统输出时间上连续变化,而不是仅在离散时刻采样取值。对于满足以下条件的系统,我们称之为连续系统:
(1)系统输出连续变化,变化的时间间隔为无穷小量。
(2)存在系统输入或输出的微分项。
(3) 系统具有连续状态。
设连续系统的输入变化量为u(t)u(t)u(t),其中ttt为连续取值的时间变量,系统的输出为y(t)y(t)y(t),连续系统的一般数学描述为:
y(t)=f(u(t),t)y(t)=f(u(t),t)y(t)=f(u(t),t)
微分方程形式为:
∂x∂t=f(x(t),u(t),t)\frac{\partial x}{\partial t}=f(x(t),u(t),t) ∂t∂x=f(x(t),u(t),t)
y(t)=g(x(t),u(t),t)y(t)=g(x(t),u(t),t)y(t)=g(x(t),u(t),t)
1.2 线性连续系统
线性连续系统: 对满足以下两个条件的连续系统,我们称为线性连续系统。
(1)、齐次性: 对于连续系统y(t)=T{u(t)},t=0,1,2...y(t)=T\lbrace u(t) \rbrace, t=0,1,2...y(t)=T{u(t)},t=0,1,2...,如果对任意的输入u(t)u(t)u(t)与给定的常数α\alphaα,下面的式子总成立:
T{αu(t)}=αT{u(t)}T\lbrace \alpha u(t) \rbrace = \alpha T\lbrace u(t) \rbrace T{αu(t)}=αT{u(t)}
则称系统满足齐次性。
(2)、叠加性: 对于系统对于输出u1(t)u_1(t)u1(t)和u2(t)u_2(t)u2(t),输出分别为y1(t)y_1(t)y1(t) 和y2(t)y_2(t)y2(t),总有下面的式子成立:
T{u1(t)+u2(t)}=T{u1(t)}+T{u2(t)}T\lbrace u_1(t)+u_2(t) \rbrace = T\lbrace u_1(t) \rbrace + T\lbrace u_2(t) \rbrace T{u1(t)+u2(t)}=T{u1(t)}+T{u2(t)}
则称系统满足叠加性。
1.3 Laplace变换
Laplace变换Laplace变换Laplace变换: 对于连续信号u(t)u(t)u(t),其LaplaceLaplaceLaplace变换定义为U(s)=∫−∞∞u(t)e−stdtU(s)=\displaystyle \int ^\infty_{-\infty} u(t)e^{-st} {\rm d}tU(s)=∫−∞∞u(t)e−stdt。一般而言,系统的输入时间t≥0t \geq 0t≥0,这时U(s)=∫0∞u(t)e−stdtU(s)=\displaystyle \int ^\infty_0 u(t)e^{-st} {\rm d}tU(s)=∫0∞u(t)e−stdt。一般简记为U(s)=L(u(t))U(s)=L(u(t))U(s)=L(u(t))。
Laplace变换Laplace变换Laplace变换具有如下两个重要性质:
(1)、线性关系: LaplaceLaplaceLaplace变换同时满足齐次性和叠加性,即:
U{αu1(t)+βu2(t)}=αU{u1(t)}+βU{u2(t)}U\lbrace \alpha u_1(t)+\beta u_2(t) \rbrace = \alpha U\lbrace u_1(t) \rbrace + \beta U\lbrace u_2(t) \rbrace U{αu1(t)+βu2(t)}=αU{u1(t)}+βU{u2(t)}
(2)、设连续信号u(t)u(t)u(t)的LaplaceLaplaceLaplace变换为U(s)U(s)U(s),则∂u∂t\displaystyle \frac{\partial u}{\partial t}∂t∂u的LaplaceLaplaceLaplace变换为sU(t)sU(t)sU(t)。
线性连续系统的另一个模型为状态空间模型:
{∂u∂t=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)\begin{cases} \displaystyle \frac {\partial u} {\partial t} = Ax(t)+Bu(t)\\ y(t)=Cx(t)+Du(t)\\ \end{cases} ⎩⎨⎧∂t∂u=Ax(t)+Bu(t)y(t)=Cx(t)+Du(t)
2、蹦极模型(例1)仿真
2.1 蹦极模型
【例1】蹦极跳是一种挑战身体极限的运动,蹦极者系着一根弹力绳从高处的桥梁(或山崖等)向下跳。在下落的过程中,蹦极者几乎处于失重状态。按照牛顿运动定律,自由下落的物体的位置由下面的式子确定:
m∂2x∂t2=mg−a1∂x∂t−a2∣∂x∂t∣∂x∂tm \frac{\partial^2x}{\partial t^2} = mg-a_1 \frac{\partial x}{\partial t}-a_2 \left| \frac{\partial x}{\partial t} \right|\frac{\partial x}{\partial t} m∂t2∂2x=mg−a1∂t∂x−a2∣∣∣∣∂t∂x∣∣∣∣∂t∂x
其中m为物体质量,g为重力加速度,x为物体的位置,a1a_1a1 、a2a_2a2表示空气阻力的系数。
现选择蹦极者起跳位置为起点(即x=0处),低于起点位置为正,高于起点为负。如果物体系在一个弹性系数为kkk的弹力绳索上,绳索的原始长度为x0x_0x0,则其对下落物体位置的作用力为:
b(x)={−k(x−x0),x>x00,x≤x0b(x)=\begin{cases} -k(x-x_0), x>x_0 \\ 0 , x \leq x_0 \\ \end{cases} b(x)={−k(x−x0),x>x00,x≤x0
设蹦极者起跳位置距离地面 80m80m80m,绳索原始长度x0=30mx0=30mx0=30m,蹦极者起始速度为 0,即。其余参数分别为k=18.45,a1=1.3,a2=1.1,m=70kg,=9.8m/s2k=18.45, a_1=1.3, a_2=1.1, m=70 kg ,=9.8 m/s^2k=18.45,a1=1.3,a2=1.1,m=70kg,=9.8m/s2。试建立蹦极跳系统的Simulink仿真模型,并对系统进行仿真,分析此蹦极跳系统是否安全。
2.2 建模
建立蹦极跳系统的Simulink仿真模型。根据系统的数学描述选择合适的Simulink系统模块,建立此蹦极跳系统的Simulink模型,如上图所示。
Constant模块:用于表示蹦极者重力mgmgmg。
Constant1模块:用于表示绳索原始长度x0x_0x0。
Constant2模块:用于表示当x≤x0x ≤ x_0x≤x0时函数b(x)b(x)b(x)的取值,即000。
Constant3模块:用于表示蹦极者起始位置相对地面的距离。
Gain模块:用于表示弹性系数的负数,即−k-k−k。
Gain1模块:用于表示参数a1a_1a1。
Gain2模块:用于表示参数a2a_2a2。
Gain3模块:用于表示蹦极者质量的倒数,即1m\frac{1}{m}m1。
Abs 模块:来自Math Operations子库,用于对信号取绝对值。
Integrator模块和Integrator1模块:来自Continuous子库,用于对信号进行积分。Integrator模块的输入信号为,输出为;Integrator1模块的输入信号为,输出为xxx。
Switch 模块:来自Signal Routing 子库,用于构建分段函数b(x)b(x)b(x)。
2.3 模型参数设置
mg模块:常值设为70*9.8。
0模块:常值设为0。
x0模块:常值设为30。
distance模块:常值设为80。
-k模块:增益设为-18.45。
a1模块:增益设为1.3。
a2模块:增益设为1.1。
1/m模块:增益设为1/70。
Switch模块:Threshold设为默认值,判断准则设为u2>Threshold,如图4-19所示。
Integrator模块和Integrator1模块:由于设初始位置和初始速度均为0,故这两个模块的初始值设为默认值(零)即可。
2.4 系统仿真
仿真时间设置为50s,然后运行,结果如图所示。
从图中可以看到,蹦极者相对地面的距离存在小于零的情况,也就是说此蹦极跳系统对于70kg的蹦极者来说不安全的,蹦极者会触碰到地面。
3、比例微分控制器(例2)仿真
3.1 比例微分控制器模型
【例2】比例微分控制器系统,其数学描述为:
u(t)=Kpe(t)+Kd∂e∂tu(t)=K_p e(t) + K_d \frac{\partial e}{\partial t} u(t)=Kpe(t)+Kd∂t∂e
现有一个执行机构,其传递函数为:
1(s−1.1)(s+1.1)\frac{1}{(s-1.1)(s+1.1)}(s−1.1)(s+1.1)1
显然,它是发散的,不稳定的,其开环阶跃响应曲线如图所示。
3.2 建模
Derivative模块:来自Continuous子库,微分器,其输入为e(t)e(t)e(t),输出为。
Gain模块:控制器比例项系数,即Kp=15K_p=15Kp=15。
Gain1模块:控制器微分项系数,即Kd=2K_d=2Kd=2。
Zero-Pole 模块:设置Zeros 零点为[],Poles 极点为[1.1 -1.1],Gain 增益为1,其余默认,如图所示。
3.3 模型仿真
仿真时间设置为20s。
最大仿真步长设置为0.01。
绝对误差设置为1e-6。
仿真结果如图所示,在阶跃信号的作用下,系统不断地对位置误差进行控制修正,最终系统达到了稳定状态,可以通过调整KpK_pKp、KdK_dKd以获得更好的性能。
第四讲 Matlab/Simulink入门——连续系统仿真实例相关推荐
- 第三讲 Matlab/Simulink入门——离散系统仿真实例
第三讲 Matlab/Simulink入门--离散系统仿真实例 1.离散系统基本概念 1.1 离散系统 1.2线性离散系统 1.3 Z变换 2.人口变化(例1)仿真 2.1 人口变化模型 2.2 建模 ...
- 第五讲 Matlab/Simulink入门——混合系统仿真实例
第五讲 Matlab/Simulink入门--混合系统仿真实例 1.混合系统仿真 2.通信系统 2.1调制与解调 2.2 通信信道 2.3 建模 2.4 仿真结果 3.行驶控制系统 3.1 物理模型与 ...
- 第一讲 Matlab/Simulink入门——简单系统模型的Simulink仿真
第一讲 Matlab/Simulink入门--简单系统模型的Simulink仿真 1.模型的数学表达式 2.建立系统模型 2.1.选择模块 2.2.参数设置 3.系统仿真 1.模型的数学表达式 y = ...
- P13 最优控制系统-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 13. 最优控制系统 13.1 Matlab ...
- P6 根轨迹分析法-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 6. 根轨迹分析法 6.1 函数 6.2 根 ...
- P5 Matlab/Simulink 在时域分析中的应用-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 5. Matlab/Simulink 在时域 ...
- 目录-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真> 章节 题目 P2 Matlab计算基础 P3 Simulink仿真 P4 控制系统数学模型 P5 Matlab/ ...
- P12 离散控制系统-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 12. 离散控制系统 表12.11 离散系统 ...
- P11 非线性系统-《Matlab/Simulink与控制系统仿真》程序指令总结
上一篇 回到目录 下一篇 <Matlab/Simulink与控制系统仿真>程序指令总结 Matlab_Simulink_BookExample 11. 非线性系统 11.1 Matlab ...
最新文章
- sql删除重复的数据保留一条_leetcode题库-sql练习精讲系列--九、删除重复
- dedecms插件开发教程
- Navicat导入TXT到数据库
- 嵌入式电路设计(soc底板电路设计)
- Facebook 与 Twitter 再曝漏洞!用户数据再次被共享?
- 纯js代码生成可搜索选择下拉列表
- [导入]C#做的一个加密/解密的类
- delphi之鼠标模拟
- netstat 查看网络状态
- jq json格式化工具
- 遥控器油门摇杆电位器封装尺寸图
- 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?
- 教老妈学认字的战斗史
- 学习操作系统,都有哪些硬核网站?
- vector erase() and clear() in C++ -- vector的函数erase()和clear()
- 使Celery 4在Windows上运行的2种方法
- Mac下的SVN客户端
- vue 中 mixins 的使用
- 关于移动互联网时代营销的成长启示
- 【AI视野·今日CV 计算机视觉论文速览 第157期】Mon, 16 Sep 2019
热门文章
- 参加工作必备的几款软件
- OpenWrt-LuCI 路由器设置端口映射(RDP SSH)
- 【工作经验】实践!能拍近景的全景立体相机
- LeetCode-Python-1229. 安排会议日程(区间+数组)
- MySQL建设用地信息系统_关于 “一站式规划管理服务平台” 工改系统数据互联互通公开询价函...
- 商业模式分析——以“我养你App”为例
- Java 静态代理模式_代购
- VS2019 中英文切换
- macOS 开发 - 10.15 Screen Recording 屏幕录制 授权及跳转
- python实现txt文件批量格式互转