【控制系统数字仿真与CAD】实验三:离散相似法数字仿真
一、实验目的
1. 了解离散相似法的基本原理
2. 掌握离散相似法仿真的基本过程
3. 应用离散相似法仿真非线性系统
4. MATLAB实现离散相似法的非线性系统仿真
5. 掌握SIMULINK仿真方法,应用于非线性系统的仿真,并对实验结果进行分析比较
二、实验原理
在ASR的输出增加限幅装置(饱和非线性,饱和界为c=8 )。 Ce=0.031,其它参数不变。输入为单位阶跃,用离散相似法求系统各环节的输出。
要求:采用零阶保持器和一阶保持器离散化系统,分别完成本实验。
1、各环节的参数:
由5个典型环节组成:
A=[0 0 1 1 0];
B=[tn ti Ts Tl Tm*Ce];
C=[Kn Ki Ks 1/R R];
D=[Kn*tn Ki*ti 0 0 0];
还有一饱和非线性环节:c=8;
2、各环节的离散化系数矩阵
3、各环节的输入作用
(1)、u(n)可通过联接矩阵直接求得:
u(n)=[u1(n), u2(n),…,un(n)]为各环节的输入量, n为环节数。 Y(n)=[Y1(n), Y2(n),…,Yn(n)]为各环节的输出量, r为外中参考输入量。
(2)、U(n)由近似表达式求得:
(3)、u(n+1)用折线法近似求得:
4、状态和输出计算
(1)、一阶保持器
X=FI'.*X+FIM'.*Uk+FIJ'.*Udot;
Y=FIC'.*X+FID'.*Uf;
(2)、零阶保持器
X=FI'.*X+FIM'.*Uk;
Y=FIC'.*X+FID'.*Uf;
5、饱和非线性环节
看作环节1(ASR)的一部分。建立satur.m文件:
function [uo]=satur(ui,c)
if (abs(ui)<=c)
uo=ui;
elseif ( ui > c )
uo = c;
else
uo=-c;
end
end
三、实验过程
1、新建脚本文件,命名为satur.m
function [uo]=satur(ui,c)
if (abs(ui)<=c)
uo=ui;
elseif ( ui > c )
uo = c;
else
uo=-c;
end
end
2、新建脚本文件,命名为test3.m
完整代码:
clc;
clear;
% ****** 各环节参数 ****** %
Kn=26.7;
tn=0.03;
Ki=0.269;
ti=0.067;
Ks=;
Ts=0.00167;
R=6.58;
T1=0.018;
Tm=0.25;
Ce=0.031;
Alpha=0.00337;
Beta=0.4;
A=[ ];
B=[tn ti Ts T1 Tm*Ce];
C=[Kn Ki Ks /R R];
D=[Kn*tn Ki*ti ];
c=;
r=;
W=[ -Alpha;
-Beta ;
;
-Ce;
];
W0=[ ]';
h=0.001;
t_end=0.5;
t=:h:t_end;
n=length(t);
% ****** 各环节离散化系数 ****** %
block_num=;
for k=:block_num
if(A(k)==)
FI(k)=;
FIM(k)=h*C(k)/B(k);
FIJ(k)=h*h*C(k)/B(k)/;
FIC(k)=;
FID(k)=;
if(D(k)~=)
FID(k)=D(k)/B(k);
end
else
FI(k)=exp(-h*A(k)/B(k));
FIM(k)=(-FI(k))*C(k)/A(k);
FIJ(k)=h*C(k)/A(k)-FIM(k)*B(k)/A(k);
FIC(k)=;
FID(k)=;
if(D(k)~=)
FIC(k)=C(k)/D(k)-A(k)/B(k);
FID(k)=D(k)/B(k);
end
end
end Y0=[ ]';
Y=Y0;
X=zeros(block_num,);
result1=Y;
Uk=zeros(block_num,);
Ub=Uk; for m=:(n-)
Ub=Uk;
Uk=W*Y+W0*r;
Uf=*Uk-Ub;
Udot=(Uk-Ub)/h; %****** 零阶保持器 ******%
X=FI'.*X+FIM'.*Uk;
Y=FIC'.*X+FID'.*Uf; Y()=satur(Y(),c);
result1=[result1,Y];
end Y0=[ ]';
Y=Y0;
X=zeros(block_num,);
result2=Y;
Uk=zeros(block_num,);
Ub=Uk;
for m=:(n-)
Ub=Uk;
Uk=W*Y+W0*r;
Uf=*Uk-Ub;
Udot=(Uk-Ub)/h; %****** 一阶保持器 ******%
X=FI'.*X+FIM'.*Uk + FIJ'.*Udot;
Y=FIC'.*X + FID'.*Uf; Y()=satur(Y(),c);
result2=[result2,Y];
end
plot(t,result1(5,:),'-.',t,result2(5,:),'--',t,ScopeData.signals.values,'k');
legend('零阶保持器','一阶保持器','Simulink');
3、在Simulink中绘制仿真图
注意:Simulink中的变量名和工作区变量关联方法请点击:https://www.cnblogs.com/KaifengGuan/p/11942615.html
四、实验结果
【控制系统数字仿真与CAD】实验三:离散相似法数字仿真的更多相关文章
- 实验三 Java猜数字游戏开发
课程:Java实验 班级:201352 姓名:程涵 学号:20135210 成绩: 指导教师:娄佳鹏 实验日期:15.06.03 实验密级: ...
- 2017-2018-1 20155308&20155321&20155330《信息安全技术》实验三——数字证书应用1
2017-2018-1 20155308&20155321&20155330<信息安全技术>实验三--数字证书应用1 实验目的 了解PKI体系 了解用户进行证书申请和CA颁 ...
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- 20162330 实验三 《敏捷开发与XP实践》 实验报告
2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验三 <敏捷开发与XP实践> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623班 ...
- 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...
- 2018-2019-2 20175230 实验三《Java面向对象程序设计》实验报告
目录 实验三 实验三 敏捷开发与XP实践 实验内容 实验要求 实验步骤 (一) 编码标准 (二)敏捷开发与XP (三)敏捷开发与XP 实验体会 实验三 实验三 敏捷开发与XP实践 实验内容 1.XP基 ...
- 20155327 实验三 敏捷开发与XP实践
20155327 实验三 敏捷开发与XP实践 实验内容 任务一 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装al ...
- 20155232 《Java程序设计》实验三实验报告
20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...
- 201871030110-何飞 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030110-何飞 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 ...
随机推荐
- AJAX异步检查,检查用户名是否存在
AJAX异步检查,检查用户名是否存在 写法一: var xmlHttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, ...
- 存储路径与文件目录操作ZT
转自:https://www.cnblogs.com/zrr-notes/p/5953445.html (一)基本存储位置 我们的app在手机中存放的路径是:/var/mobile/Applicati ...
- 按钮组件.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ansible模块之yum、pip、service、corn、user、group
ansible相关模块 yum rpm 和yum 的区别 rpm:全称redhat package manager (红帽包管理器) 不能解决包之间的依赖关系 yum:可以解决依赖关系 yum 源配置 ...
- 死磕 java线程系列之线程池深入解析——未来任务执行流程
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 注:线程池源码部分如无特殊说明均指ThreadPoolExecutor类. 简介 前面我们一起学习了线程池中普 ...
- Python安装pyinstaller方法,以及将项目生成可执行程序的步骤
pyinstaller安装方法 前提:确保计算机安装了Python语言环境,并且正确配置了环境变量. 方法一:联网在线自动安装 选择一 Windows OS下进入cmd(命令行窗口) 输入:pip i ...
- 转:redis-cli 命令总结
redis-cli常用命令,原文地址:https://maoxian.de/2015/08/1342.html Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些comm ...
- nginx篇最初级用法之访问认证
1打开conf下的配置文件 在server 之下 location 之上加入 auth_basic "Input Password:"; 弹出的提示信息 auth_basic ...
- 『题解』Codeforces9D How many trees?
更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description In one very old text file there was wr ...
- c/c++求最大公约数和最小公倍数
最大公约数GCD(Greatest Common Divisor) 最常见的求两个数的最大公约数的算法是辗转相除法,也叫欧几里得算法 该算法的c++语言实现如下: #include<iostre ...