第一篇:基于simulink的车辆行驶控制系统建模与仿真
基于Simulink的车辆行驶控制系统建模与仿真
汽车行驶控制系统是应用非常广泛的控制系统之一,其主要的目的是对汽车的速度进行合理的控制。系统的工作原理如下:通过速度操纵机构的位置发生改变以设置汽车的速度,再测量汽车当前的速度,并求取它与指定速度的差值,最后由速度差值信号驱动汽车产生相应的牵引力,并由此牵引力改变汽车的速度直到其速度稳定在指定的速度为止。本文采用Simulink建模,对行驶控制系统进行仿真,并采用Simulink自带的signal constraint模块对PID参数进行优化,仿真结果表明,该系统能在短时间内平稳的达到指定的速度,提高了汽车的操纵性。
1.汽车行驶控制系统的物理模型与数学描述
1)速度操纵机构的位置变换器
位置变换器是汽车行驶控制系统的输入部分,其目的是将速度操纵机构的位置转换为相应的速度,二者之间的数学关系如下所示:
其中x速度操纵机构的位置,v为与之相应的速度。
2)离散行驶控制器
行驶控制器是整个汽车行驶控制系统的核心部分。简单来说,其功能是根据汽车当前的速度与指定速度的差值,产生相应的牵引力。行驶控制器为一典型的PID控制器,其数学描述为:
积分环节:
微分环节:
系统输出:
其中u(n)为系统的输入,相当于汽车当前速度与指定速度的差值。y(n)为系统输出,相当于汽车牵引力,x(n)为系统的状态。Kp,Ki,Kd为PID控制器的比例、积分与微分控制参数。
3)汽车动力机构
汽车动力机构是行驶控制系统的执行机构。其功能是在牵引力的作用下改变汽车的速度,使其达到指定的速度。牵引力与速度之间的关系为:
其中v为汽车的速度,F为汽车的牵引力,m=1000kg为汽车的质量,b=20为阻力因子。
2.系统Simulink模型与参数设置
行驶控制系统仿真模型如图1所示:
图1 行驶控制系统仿真模型 Set speed子系统模型如图2所示:
图2 Set speed子系统模型
Discrete cruise controller子系统模型如图3所示:
图3 Discrete cruise controller子系统模型
Car dynamics子系统模型如图4所示:
图4 Car dynamics子系统模型
我们预设Kp=1,Ki=0.01,Kd=0.3.系统仿真与分析
当Kp=1,Ki=0.01,Kd=0时仿真结果如图5所示:
图5 预设参数的仿真速度曲线
这时我们运行signal constraint模块对PID参数进行优化,优化结果如图6所示:
图6 优化后仿真速度曲线
优化后的Kd=-5.64×10-4,Ki=0.0089,Kp=10.我们把仿真数据输出到Workspace,程序和对比图如下: >>plot(ScopeData(:,1),ScopeData(:,2),'LineWidth',1.5);>>hold on;>>plot(ScopeData1(:,1),ScopeData1(:,2),'r:','LineWidth',1.5);>>hold off;>>grid;
图6 通过对比可以发现优化后的参数可以更好的使汽车在较短的时间内平稳的达到指定的速度。
4.小结
这种使用Simulink的仿真方法,可以有效模拟汽车行驶控制系统的作用过程,比较真实地反映汽车速度控制系统的实际工作情况。通过对仿真结果的分析,表明汽车行驶控制系统在车辆速度控制方面的显著功能,也证明了这种仿真方法的合理性及实用性。并且仿真系统中的参数可以根据具体车型的改变而改变,非常简单、明了,便于对汽车行驶控制系统的设计以及系统参数的优化。
第二篇:Matlab与Simulink仿真学习心得
Matlab与Simulink仿真学习心得
班级:07610 学号:072016 姓名:吕天雄
一 Matlab学习心得体会与编程实践
<1>学习Matlab的心得体会
真正开始接触Matlab是大二上就开始了,到现在已经一年多了,在此之间,Matlab的确为我提供了很多便利。Matlab的确不愧成为是草稿纸上的语言。我们不必去为很简单的显示效果图形去找一些什么其他软件或者研究比较复杂的计算机图形学,一个plot或者别的函数往往就可以得到很满意的效果。
其实最初开始学习matlab的时候感觉这个东西和C没什么两样,但是后来具体到一些 东西,比如信号处理和数学建模上以后才感觉到使用matlab编写程序去验证结果比C要节 省很多时间,而且matlab写东西基本都是按照自己的思路平铺直叙很少去考虑什么函数的 嵌套调用或者指针等等很头疼的东西。
关于matlab的学习,我感觉其实百度和matlab自带的help基本能够解决绝大数问题,而且一些比较好的论坛比如www.xiexiebang.com都会为你产生很大的帮助,关键是在于多动手实践,多思考。但是matlab毕竟只是一个工具,原理和一些基本的编程素质还是必须有的,否则matlab最多也只能是验证一些别人的东西而已,根本帮不上什么忙的。
<2>遇到的一些问题的思考方式与解决办法
最开始用matlab的时候是在大物实验,实验要求去根据测量得到的数据作出图。但是 手动用铅笔去画确实很麻烦,所以用matlab确实可以省去很大的麻烦。但是第一次遇到问 的时候是有关极化坐标下的曲线拟合。
首先是一个物理实验的问题;在做一个关于光的偏振的实验的时候,最后的结果要在一个极化坐标下显示出来;因为数据是离散的,所以显示出来的图像是一个折来折去的一个东东; 然后很自然的想法是对这个曲线进行插值处理。
但是极化坐标下MATLAB并未提供插值处理的函数,interp1这个函数只能在笛卡尔坐标系,也就是直角坐标系下使用。
然后就想到把极坐标的数据转换的直角坐标系下,pol2cart可以实现这个想法,但是随后而来,也就是最后导致整个问题失败的关键也在这里。
pol2cart以后产生的一串数据中出现了重复的数据,那么interp1这个东西也就无能为力了,因为interp1不能处理一串数据中有重复出现的情况。最后的处理办法是把这些数据c os,sin这些东西变换一下后,使其大致规则,然后再用polar画出极坐标下的图形。
接下来这个问题就有点超过我的范围了,可能会有点叙述不清楚。问题可以概要为:人脸网格插值。
这是一个用三角形网格表示的一个人脸模型。需要通过插值使其变得光滑,当然问题的复杂之处在于,插值会改变原本的网格结构。
对于这个问题许多人都给出了解决的办法,当然是一些关于人脸识别技术和运动图像处理的范畴之内的。
主要有两种,第一种是face—ls算法。这种算法是基于RBF(径向插值函数)和loop细分原则的一种算法,当然其精确程度比较差点。但是速度挺好。原理是:基于网格上的点,产生出顶点的迭代函数,从而产生出新的定点,进行细化。然后进行插值。也就是引进新的顶点。分为两个过程内部插值和边缘插值。具体可以去看兰州大学信息工程学院的学报。
第二种也就是基本的老办法RBF。首先解释一下什么叫做径向插值 径向基函数
主要是考虑多维空间的数据插值问题,径向基函数在三维图形的变形中常常被采用,用其来变分三维人脸的时候还应结合人脸的固有特征。确定该方法来实现三维人脸变形是可行的,但要构造好的基函数,以及解这些高维方程的解仍是难点。插值方法:
假设大多数人脸的形状都可以由一个拓扑原型变化得来,那么,通过调整一个一般模型的构造参数可以建立不同的面部模型。但是,这种参数模型仅仅局限于那些构造参数已知的情况,并且对特定人脸参数的调整非常困难。在离散数据的多变量插值问题方面,径向基函数(radial basis function,RBF)插值方法是一个行之有效的工具,所以也适用于类似人脸这样高维曲面的近似或平滑插值。现有的许多方法使用了基于RBF的插值技术,将一般人脸网格变化到特定人脸的形状。这种方法的优点在于:(1)通过插值可以得到丢失的数据点,所以源网格和目标网格不需要相同数目的结点;(2)如果选择了合适的匹配点,数学上可以保证能够将源网格变形到目标网格。
当然我也不是很懂,只是理解了部分。这种方法的关键是找到一个很好的核函数来计算出新的顶点。
最后问题解决的方式是查着了一些图书馆的学报。然后而且在网上找到了部分代码。然后做出来的。这是我校大四一个同学毕设中的一个东西。
其实这个事件最好的解决办法是在3D-MAX中,不过因为没能找到MATLAB与3D-MAX是怎么接口的,所以作罢了。
第三次遇到的问题是我在数学建模课上遇到的一个关于矩阵LU分解的问题:
Matlab作出的结果和手算的结果竟然不一样。
10111
U=1 一个矩阵 A= 经过三角分解为L=10111因为1/为一个极大数 则1—1/可以看成—1/;
设=0.***000000001%10的负24次方
从而L*U=则最后一位1没有了 变成了0
其中L=
U=Matlab 程序为
epusino=0.***000000001;U=[epusino 1;0-1/epusino];L=[1 0;1/epusino 1];L*U ans =
0.***
1.***
1.***
0 而直接用lu函数对矩阵A分解的结果为
A=[epusino 1;1 1] A =
0.0000
1.0000
1.0000
1.0000
>> [L,U]=lu(A)L =
0.0000
1.0000
1.0000
0
U =
0 我们老师当时的解释是这是由于我们所用matlab是破解版的缘故,破解版的计算精度 没正版的高所以导致运算结果的错误,后来我看了一些LU这个函数的help文档 psychologically lower triangular matrix"(i.e.a product of lower triangular and permutation matrices)in L。翻译过来是L是一个心理上的下三角矩阵,其实是下三角矩阵和置换矩阵也就是最后的结论。P*A = L*U.。由此可见这并不是什么精度的问题导致的结果只是LU分解的矩阵意义和书本上的不同而已。
以下是我自己写的一些程序的代码
1:网络随机拓扑图
目的是要生成一个度数随机、权值随机的拓扑图。首先的理解是利用邻接矩阵,先随机生成一个矩阵,该矩阵为一个对称矩阵。然后画出这个矩阵就行了。
随机拓扑图10026516398191 ***0430 ***065
%产生数组A用来存放表示两点之间权值的矩阵A,也就是临接矩阵,那么两点之间权值不为零元素的个数即为该点的度数
DEF=5;%设定一个东东 方便改变随机点的个数 A=rand(DEF,DEF);%产生DEF*DEF的随机矩阵 for i=1:DEF A(i,i)=0%将对角线上的数置为0 end A=10*A;A=floor(A);%向下去整 for i=1:DEF for j=1:i A(j,i)=A(i,j)%将A矩阵变为一个上三角或者下三角矩阵 end end x=100*rand(1,DEF);y=100*rand(1,DEF);%产生10个随机的点 plot(x,y,'r+');
for i=1:DEF a=find(A(i,:)>0)%将A矩阵每行大于0的数的在该行的地址找出来放在a中
for j=1:length(a)
c=num2str(A(i,j));%将A中的权值转化为字符型
if c~='0'%不显示为0的值 因为A矩阵为零代表两点不相连 text((x(i)+x(j))/2,(y(i)+y(j))/2,c,'Fontsize',18);%将权值显示在两点连线中间 end hold on;
line([x(i)x(a(j))],[y(i)y(a(j))]);%连线 end end
title('随机拓扑图');e=num2str(DEF);legend(e);%左上角显示节点的个数 for m=1:DEF A(m,m)=m;f=num2str(A(m,m));hold on;text((x(m)+x(m))/2,(y(m)+y(m))/2,f,'Fontsize',18);%将权值显示在两点连线中间 end 接下来是一个在信息安全课上写的一个关于256色图分层的程序,一副图像有m*n个像素然后每个像素是一个8bit的二进制数据换算为十进制是0-255之间。要做的就是把每bit的信息提取出来。
I=imread('bupt副本.bmp');%读入源图像
I=double(I);%将图像转换为double类型便于MATLAB中的计算 %确定图像的长宽 M=size(I,1);%长 N=size(I,2);%宽 l=M*N;%图像长宽之积 for n=1:8;%剔除每层 for i=1:M
for j=1:N
B=numdec2bin(I(i,j),8);%先将每个像素转换为8位2进制序列
B(n)=[];%删除相应位置的元素
y(i,j)=numbin2dec(B);%将剩下的7个元素转换为10进制数放入y矩阵中
end end
y=uint8(y);%将10进制的矩阵转换为无符号整形
subplot(4,2,9-n);%显示n个图像,每层是相应的剔除该层的结果
imshow(y);%显示这个图像
title(strcat('去除第',num2str(9-n),'层后的结果'));%显示标题 end
附带的两个函数:
function y=numdec2bin(x,n);%从函数将十进制数x转化为n位二进制 y=zeros(1,n);a=x;i=n;while a>0 y(i)=mod(a,2);a=floor(a/2);i=i-1;end function y=numbin2dec(x)%将二进制数转换为十进制数 a=0;lx=length(x);for i=1:lx a=a+x(i)*2^(lx-i);end y=a;
去除第1层后的结果去除第2层后的结果去除第3层后的结果去除第4层后的结果去除第5层后的结果去除第6层后的结果去除第7层后的结果去除第8层后的结果
Matlab的RGB转换为YCbCr之后转换回来和原图不符
这个是做JPEG图像压缩的时候遇到的一个问题,当时的代码是用C写的但是结果不对,后来想到用matlab进行验证结果发现通过公式转换得到的图是错的。
原理:BMP图像压缩为JPEG的第一步是将RGB色彩空间通过这个公式映射到YCbCr空间上。
Y=0.299 R + 0.587 G + 0.114 B Cb =0.3313G + 0.5 B + 128 Cr = 0.5 R0.0813 B + 128 然后再进行量化,DCT,编码等等步骤。JPEG解压时需要将YCbCr空间的图像又转化回来到RGB上。
R = Y + 1.402(Cr0.34414(Cb-128)128)
B = Y + 1.772(Cb-128)
但是通过书上给的公式和网上大部分公式却发现根本转化不会来。下面是写的程序代码以及测试得到的结果图像。
clc,clear;Source=imread('hl.jpg');%读入原始RGB图像
figure(1);subplot(1,2,1);imshow(Source):title('original image');%显示图像 [r c d]=size(Source);%计算图像大小 %------计算红色分量并显示分解图------% R(:,:,1)=Source(:,:,1);R(:,:,2)=zeros(r,c);R(:,:,3)=zeros(r,c);R=uint8(R);whos;figure(2);subplot(1,3,1);imshow(R)title('Red Component');%-------计算绿色分量并显示分解图-------% G(:,:,2)=Source(:,:,2);G(:,:,1)=zeros(r,c);G(:,:,3)=zeros(r,c);G=uint8(G);figure(2);subplot(1,3,2);imshow(G)title('Green Component');%--------计算蓝色分量并显示分解图-------% B(:,:,3)=Source(:,:,3);B(:,:,1)=zeros(r,c);B(:,:,2)=zeros(r,c);B=uint8(B);figure(2);subplot(1,3,3)imshow(B)title('Blue Component');%------------合成-------------% Comp(:,:,1)=R(:,:,1);Comp(:,:,2)=G(:,:,2);Comp(:,:,3)=B(:,:,3);figure(1);subplot(1,2,2);imshow(Comp):title('composition image');Y=0.229*R+0.587*G+0.114*B;Cb=0.5*B-0.1687*R-0.3313*G+128;Cr=0.5*R-0.4187*G-0.0813*B+128;red=Y+1.402*(Cr-128);green=Y-0.34414*(Cb-128)-0.71414*(Cr-128);blue=Y+1.772*(Cb-128);Comp2(:,:,1)=red(:,:,1);Comp2(:,:,2)=green(:,:,2);Comp2(:,:,3)=blue(:,:,3);figure(3);imshow(Comp2);title('RGB转换为YCrCb后又转换为RGB的图像');RD=R(:,:,1)-red(:,:,1);GD=G(:,:,2)-green(:,:,2);BD=B(:,:,3)-blue(:,:,3);figure(4);subplot(1,3,1);imshow(RD);title('红色分量差异');subplot(1,3,2);imshow(GD);title('绿色分量差异');subplot(1,3,3);imshow(BD);title('蓝色分量差异');
然而可以通过figure(4)的图像清楚看到R 和G分量转换后恢复 与以前的差别很大。而且看了一下matlab自带的rgb2ycbcr和ycbcr2rgb并且用了这两个函数测试后图像是一样的。很是不解
实验得到的图为: original imagecomposition image
将源图像分为RGB三个部分。
Red ComponentGreen ComponentBlue Component
将源图像的RGB分量转换到YCbCr上后又转化为RGB得到的三个分量差异的图。
红色分量差异绿色分量差异蓝色分量差异 公式转换的y分量公式转换的cb分量公式转换的Cr分量matlab函数转换的y分量matlab函数转换的Cb分量matlab函数转换的Cr分量
从最后的结果可以看出原图转换到YCbCr空间之后又转化回来得到的图像与原图不符….RGB转换为YCrCb后又转换为RGB的图像
以上只是我自己用Matlab做过的部分问题,还有一些比如场声源定位Music算法仿真,DES加密算法。神经网络滤波器等等,鉴于代码量太大,就不再敖述。二 Simulink学习心得与编程实践
SIMILINK模块库按功能进行分类,包括以下8类子库: Continuous(连续模块)Discrete(离散模块)
Function&Tables(函数和平台模块)Math(数学模块)
Nonlinear(非线性模块)
Signals&Systems(信号和系统模块)Sinks(接收器模块)Sources(输入源模块)
对于simulink来说其实没什么好说的,需要什么就把什么拖到Model里面,连线之后设定参数。不是很麻烦的。但是重要的是对于系统的设计与仿真思想才是最重要的。而且里面的S-Function也是比较好的一个设计,用S-Function可以自定义一些组件,使自己的仿真看上去更加清晰与精简。
Simulink的工作方式:
(1)模块内的参数值首先会送到Matlab中进行计算,得到的参数值会用来当做以后需要调用的参数。
(2)模型系统中的各个层级将被平展开来,每一个子系统将被相应的模块所代替。(3)模块按被处理的顺序排列,此时代数回路结构也被检查出来,此种排列产生一个列表,以确保具有代数回路的模块驱动输入的模块被更新后才更新。
(4)检查块之间的链接,是否每一个块的输出端口与它所连接的模块输入端口有相同的信号宽度。
现在可以准备执行仿真操作,仿真时使用数值迭代求的的结果,每种数值积分模型提供的连续状态的微分能力。
Simulink中的模型都是分级的,因此可以通过自上而下或者自下而上的方式建立模型。定义了一个模型以后,就可以通过Simulink的菜单或者在Matlab的Command中输入命令进行仿真。
关于学习的心得就写到这里了,接下来是一些自己做的仿真。
1:观察一个信号与积分之后的区别,目的是了解Scope的功能和用法。
仿真结果,左边为原始信号,右边为积分后的信号。
用XYGraph看到的对比
Rossler吸引子产生仿真:
Rossler 吸引子产生是服从下面这个方程的 1
212 331
仿真图 (xx)xxaxxbx(xc)xab0.2c5.7
仿真结果
LMS自适应滤波器: 仿真图:
遇到的问题
问题的解决办法:
将Spectrum Scope中的buffer input打勾就行了。
仿真结果图形:
1:Spectrum Scope的输出图形
2:Vector Scope的输出结果
3:Scope的输出结果图形
第三篇:MATLAB与控制系统仿真实验报告
《MATLAB与控制系统仿真》
实验报告
2013-2014学年 第 1 学期
专业: 班级: 学号: 姓名:
实验三 MATLAB图形系统一、实验目的:
1.掌握绘制二维图形的常用函数。2.掌握绘制三维图形的常用函数。3.熟悉利用图形对象进行绘图操作的方法。4.掌握绘制图形的辅助操作。
二、实验原理:
1,二维数据曲线图
(1)绘制单根二维曲线 plot(x,y);(2)绘制多根二维曲线 plot(x,y)当x是向量,y是有一维与x同维的矩阵时,则绘制多根不同颜色的曲线。当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。(3)含有多个输入参数的plot函数 plot(x1,y1,x2,y2,…,xn,yn)(4)具有两个纵坐标标度的图形 plotyy(x1,y1,x2,y2)2,图形标注与坐标控制 1)title(图形名称); 2)xlabel(x轴说明)3)ylabel(y轴说明)4)text(x,y图形说明)5)legend(图例1,图例2,…)
6)axis([xmin xmax ymin ymax zmin zmax])3, 图形窗口的分割 subplot(m,n,p)4,三维曲线
plot3(x1,y1,z1,选项1,x2,y2,选项2,…,xn,yn,zn,选项n)5,三维曲面
mesh(x,y,z,c)与surf(x,y,z,c)。一般情况下,x,y,z是维数相同的矩阵。X,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。6,图像处理
1)imread和imwrite函数 这两个函数分别用于将图象文件读入matlab工作空间,以及将图象数据和色图数据一起写入一定格式的图象文件。
2)image和imagesc函数 这两个函数用于图象显示。为了保证图象的显示效果,一般还应使用colormap函数设置图象色图。
三、实验仪器和设备:
计算机一台(带有MATLAB6.5以上的软件环境)。
四、预习要求:
1.复习二维与三维图形的绘图函数。2.复习图形辅助操作。
五、实验内容及步骤:
1,设y[0.53sinx]cosx,在x=0~2π区间取101点,绘制函数曲线。21x
2,已知y1=x2,y2=cos(2x),y3=y1*y2,完成下列操作:
(1)在同一坐标系下用不同的颜色和线型绘制三条曲线;
(2)分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
3,已知
x,x02e y1In(x1x2),x02在-5<=x<=5区间绘制函数曲线。
4,绘制函数的曲面图和等高线
zcosxcosyex2y24
其中x的21个值均匀分布在[-5,5]范围,y的31个值均匀分布在[0,10],要求使用subplot(2,1,1)和subplot(2,1,2)将产生的曲面图和登高图画在同一个窗口上。
5.画出函数
zx2y2sin(xy)的曲面及等高线图。
x2y21绘制平面曲线,并分析参数a对其形状的影响。6.根据2a25a2
四、心得体会:
通过这次实验我能熟练掌握二维和三维图以及其他特殊图形的制作,弄清楚了基本的图形操作规则,大大加深了我对matlab的兴趣。
实验二 MATLAB程序设计
一、实验目的
1.掌握利用if语句实现选择结构的方法。
2.掌握利用switch语句实现多分支选择结构的方法。3.掌握利用for语句实现循环结构的方法。4.掌握利用while语句实现循环结构的方法。
二、实验设备及条件
计算机一台(带有MATLAB6.5以上的软件环境)。
三、实验内容
1.编写求解方程ax2bxc0的根的函数(这个方程不一定为一元二次方程,因a、b、c的不同取值而定),这里应根据a、b、c的不同取值分别处理,有输入参数提示,当a0,b0,c~0时应提示“为恒不等式!”。并输入几组典型值加以检验。
clear,clc a=input('请输入一个数a=');b=input('请输入一个数b=');c=input('请输入一个数c=');m=b^2-4*a*c;if a==0
if b==0
'为恒不等式'
end end
m=b^2-4*a*c;if m>0
x1=(-b+sqrt(m))/(2*a)
x2=(-b-sqrt(m))/(2*a)elseif m==0
x=(-b)/(2*a)else
'不存在正实根' end
2.输入一个百分制成绩,要求输出成绩等级A+、A、B、C、D、E。其中100分为A+,90分~99分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:(1)用switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
clear,clc for k=1:10
a(k)={89+k};b(k)={79+k};
c(k)={69+k};d(k)={59+k};end A=cell(3,6);A(1,:)={'a','b','c','d','e','f'};A(2,:)={85,76,95,100,40,65};for k=1:6
switch A{2,k}
case 100
r='A+';
case a
r='A';
case b
r='B';
case c
r='C';
case d
r='D';
otherwise
r='E';
end
A(3,k)={r};end A A =
'a'
'b'
'c'
[85]
[76]
[95]
'B'
'C'
'A'
'd'
'e'
[100]
[40]
'A+'
'E'
'f' [65] 'D'
3.利用for循环语句编写计算n!的函数程序,取n分别为-89、0、3、5、10验证其正确性(输入n为负数时输出出错信息)。
clear,clc n=input('请输入一个正数n=');if n<0
'输入错误' elseif n==0
'n!=0' elseif n==1
'n!=1' else
y=1;
for i=1:1:n
y=y*i;
i=i+1;
end
y end 请输入一个正数n=-89
ans =输入错误 请输入一个正数n=0
ans =n!=0 请输入一个正数n=1
ans =n!=1 请输入一个正数n=3
y =6 请输入一个正数n=10
y =3628800
四、实验心得体会:
通过本次实验课,我能熟练运用for循环语句,switch条件语句以及if条件语句的新用法,和在C中的区别。尽管如此,但是在实验中依然容易把for循环跟C语言中的for语句弄混,最后经过不懈努力下,终于弄明白了两者之间的差别,使我能更好的运用这些指令语句。
第四篇:实验报告 5 Simulink仿真
实验五 Simulink仿真
(一)一、实验目的
1、熟悉Simulink仿真环境
2、了解Simulink基本操作
3、了解Simulink系统建模基本方法
3、熟悉Simulink仿真系统参数设置和子系统封装的基本方法
二、实验内容
1、在matlab命令窗口中输入simulink,观察其模块库的构成;
2、了解模块库中常用模块的使用方法;
3、已知单位负反馈系统的开环传递函数为
G100s2s(s1)(s20)
建立系统的模型,输入信号为单位阶跃信号,用示波器观察输出。
4、建立一个包含Gain、Transfer Fcn、Sum、Step、Sine Wave、Zero-Pole、Integrator、Derivative等模块构成的自定义模块库Library1;
5、建立如图7-12所示的双闭环调速系统的Simulink的动态结构图,再把电流负反馈内环封装为子系统,建立动态结构图。
三、实验结果及分析:
图5-1
图5-2
图5-3
图5-4双闭环调速系统的Simulink的动态结构图
图5-5把电流负反馈内环封装为子系统的动态结构图
双击Subsystem模块,编辑反馈电流环Subsystem子系统,如图5-6所示:
图5-6
分析:Simulink是Mathworks开发的MATLAB中的工具之一,主要功能是实现动态系统建模、仿真与分析。可以在实际系统制作出来之前,预先对系统进行仿真与分析,并可对系统做适当的适时修正或按照仿真的最佳效果来调试及整定控制系统的参数,达到提高系统性能。减少涉及系统过程中的反复修改的时间、实现高效率地开发系统的目标。Simulink提供了建模、分析和仿真各种动态系统的交互环境,包括连续系统、离散系统和混杂系统,还提供了采用鼠标拖放的方法建立系统框图模型的图形交互界面。
第五篇:建模与仿真实验报告
重 重 庆 庆
大 大 学 学
学 学 生 生
实 实 验 报 告 实验课程名称
物流系统建模与仿真
开课实验室
物流工程实验室
学 学
院
自动化
年级
专业班
程 物流工程 2 班
学 学 生 生
姓 姓 名
段竞男
学
号
201 24 912
开 开 课 时 间
2014
至15
学年第 二
学 学期 期 总 总
成 成 绩 绩
教师签名
自动化 学院制 《 物流系统建模与仿真 》实验报告
开课实验室:
****年**月**日 日 学院 自动化 年级、专业、班 12级物流工程2班 姓名 段竞男 成绩
课程 名称 物流系统建模与仿真 实验项目 名
称 产品测试工艺仿真与分析实验 指导教师 张莹莹 教师评语
成绩
一、实验目得 通过建立单存放区域、单处理工作台得简单模型,了解 5 个基本建模步骤。学习使用统计分析工具.二、实验原理 某工厂车间对三类产品进行检验。这三种类型得产品按照一定得时间间隔方式到达。随后,不同类型得产品被分别送往三台不同得检测机进行检测,每台检测机只检测一种特定得产品类型.其中,类型 1 得产品到第一台检测机检测,类型2得产品到第二台检测机检测,类型 3 得产品到第三台检测机检测。产品检测完毕后,由传送带送往货架区,再由叉车送到相应得货架上存放。类型 1 得产品存放在第 2 个货架上,类型 2 得产品存放在第 3 个货架上,类型 3 得产品存放在第 1 个货架上。
三、使用仪器、材料
一台PC机,flexsim软件 四、实验步骤
1)创建模型布局
使用鼠标将需要得对象从对象库中拖放到正视图窗口中,根据需要使用鼠标改变对象位置、大小与转角。
2)连接端口
按下键盘上得“A“键,用鼠标拖放在对象间建立输出端口-输入端口连接;方向为从流出实体得对象到流入实体得对象;模型中得对象发出与接收实体需要这种连接。
3)编辑外观、设置对象行为
(1)参数窗口(Parameters Window)
双击对象(或在右键菜单选择 Parameters)
;用于对各种对象得自身特性得设置、编辑。
(2)属性窗口(Properties Window)
右键单击对象,在弹出菜单中选择 Properties;用于编辑与查瞧所有对象都拥有得一般性信息。
(3)模型树视图(Model Tree View)模型中得所有对象都在层级式树结构中列出;包含对象得底层数据结构;所有得信息都包含在此树结构中。
4)重置运行
(1)重置模型并运行
(2)控制仿真速度(不会影响仿真结果)
检测机器 1 检测机器 2 检测机器 3 传送带 传送带 传送带 货架 1 货架 2 货架 3 产品 1 产品 2 产品 3
(3)设置仿真结束时间
5)观察结果
(1)使用“Statistics”(统计)菜单中得 Reports and Statistics(报告与统计)生成所需得各项数据统计报告.(2)其她报告功能包括:对象属性窗口得统计项;记录器对象;可视化工具对象;通过触发器记录数据到全局表。
五、实验过程原始记录((数据、图表、计算等))
1、运行结果得平面视图:
2、运行结果得立体视图
3、运行结果得暂存区数据分析结果图:
第一个暂存区
第二个暂存区 由报表分析可知 5 次实验中,第一个暂存区得平均等待时间为 11、46,而第二个暂存区得平均等待时间为13、02,略大于第一个暂存区,由此可见,第二个暂存区得工作效率基本上由第一个暂存区决定。
4、运行结果三个检测台得数据分析结果图,三个检测台得 state饼图:
(1)处理器一:
由实验结果分析可得,处理器一只有53%得时间处于工作状态,有32、3%得时间就是处于闲置状态,并且该处理器得准备时间较长,占总时间得 14、7%,这些数据表明该处理器得运行速度完全能满足,甚至超过系统得要求,可以适当得选择更处理速度慢一点得处理器来降低系统成本。
(2)处理器二:
由实验结果分析可得,处理器二只有 16、9%得时间处于工作状态,有66%得时间就是处于闲置状态,并且有 17、1%得时间处于准备时间,以上数据说明处理器二闲置时间过长,工作效率低,不能很好地配合物料二得到达速度。
(3)处理器三
由实验结果分析可得,处理器三得只有16、9%得时间处于工作状态,有 66、1%得时间就是处于闲置状态,并且有 16、9%得时间处于准备时间,以上数据说明处理器三得工作效率低,不能很好地配合物料三得到达速度,可以适当得降低处理器三得处理速度。
六、实验结果及分析
1))对得到得数据做简单分析,提出改进措施。
答:通过对实验数据分析,发现现有得机器设备得设置基本能满足系统得要求,但工作效率低,大大浪费了设备得工作能力,可以适当得提高物料得到达速度,或者降低三台处理器得处理速度.2 2)
讨论:本实验根据三个处理器得统计信息,通过状态图分析各处理器得工作状态,通过暂存区材料得平均等待时间,分析这个检测流程得效率如何?就是否存在瓶颈?如果存在,怎样才能改善整个系统得绩效呢? 答:由报表分析可知5次实验中,第一个暂存区得平均等待时间为 11、46,而第二个暂存区得平
均等待时间为 13、02,略大于第一个暂存区,由此可见,第二个暂存区得工作效率基本上由第一个暂存区决定。处理器一只有53%得时间处于工作状态,有 32、3%得时间就是处于闲置状态,并且该处理器得准备时间较长,占总时间得14、7%,这些数据表明该处理器得运行速度完全能满足,甚至超过系统得要求,可以适当得选择更处理速度慢一点得处理器来降低系统成本。由实验结果分析可得,处理器二只有 16、9%得时间处于工作状态,有 66%得时间就是处于闲置状态,并且有 17、1%得时间处于准备时间,以上数据说明处理器二闲置时间过长,工作效率低,不能很好地配合物料二得到达速度。由实验结果分析可得,处理器三得只有 16、9%得时间处于工作状态,有 66、1%得时间就是处于闲置状态,并且有16、9%得时间处于准备时间,以上数据说明处理器三得工作效率低,不能很好地配合物料三得到达速度,可以适当得降低处理器三得处理速度。整体来瞧,整个检测流程效率不高,但就是并不存在瓶颈,能够达到系统得要求,但工作效率低,大大浪费了设备得工作能力,可以适当得提高物料得到达速度,或者降低三台处理器得处理速度.《物流系统建模与仿真》实验报告
开 :
开 课 实 验 室 :
年 年
月 月
日 日 学院 自动化 年级、专业、班 12级物流工程2班 姓名 段竞男 成绩
课程 名称 物流系统建模与仿真 实验项目 名
称 多产品多阶段制造系统仿真与分析实验 指导教师 张莹莹 教师评语
成绩
一、实验目得 假定在保持车间逐日连续工作得条件下,对系统进行 365 天得仿真运行(每天按8 小时计算),计算每组机器队列中得平均产品数以及平均等待时间。通过仿真运行,找出影响系统得瓶颈因素,并对模型加以改进。
二、实验原理 某制造车间由 5 组机器组成,第 1,2,3,4,5 组机器分别有3,2,4,3,1 台相同得机器。这个车间需要加工三种原料,三种原料分别要求完成4、3 与5 道工序,而每道工序必须在指定得机器组上处理,按照事先规定好得工艺顺序进行。
概念模型参考如下:
三、使用仪器、材料
一台PC 机,flexsim 软件 四、实验步骤
1)创建模型布局 使用鼠标将需要得对象从对象库中拖放到正视图窗口中,根据需要使用鼠标改变对象位置、大小与转角。
2)连接端口 按下键盘上得“A”键,用鼠标拖放在对象间建立输出端口—输入端口连接;方向为从流出实体得对象到流入实体得对象;模型中得对象发出与接收实体需要这种连接。本实验此步骤为关键环节,连接线较复杂,故连接端口时应注意保持清晰思路.机器 1 机器 1 机器 1 暂存区 机器 2 机器 2 暂存区 机器 3 机器 3 机器 3 机器 3
暂存区 机器 4 机器 4 机器 4 暂存区 机器 5
暂存区 1 2 3
3)定义对象参数(1)定义Source 在模型中,共有 3 个Source 实体,每个Source 对应一类原料,也就就是说,一个 Source 生成一类原料.我们需要设置每个 Source 实体,使得每类原料得到达间隔时间满足系统得要求。
(2)分别按照要求定义机器组1、机器组 2、机器组 3、机器组 4、机器组 5、暂存区参数。
4)模型运行
(1)设置 Experimenter
(2)重置模型并运行 5)观察结果 仿真进行过程中,可以瞧到红、黄、蓝三种不同颜色得原料从系统中流过,经过不同机器组得加工,最后离开系统。
仿真运行到175200 单位时间得时候,自动停止。
五、实验过程原始记录((数据、图表、计算等)
1、运行结果得平面视图: 2、提供运行结果得立体视图:
3、提供运行结果五个暂存区数据分析结果图
由数据图可知第一个暂存区得为 物料输入量为 888 8,平均数量为 0、63, 最大等待时间达到了 241、、94,平均等待时间为 12、5,由此可见暂存区一得货物 状态较为空闲,不就是 系统得瓶颈。
为 由数据图可知第二个暂存区得物料输入量为 1117 3,平均容量为 1 967、0 4, 最大等待时间为 6301 17、14 4为,平均等待时间为 303 3 88、42, 由此可见暂存区二得货物周转率较高, 处于比较忙碌得状态,非常 容易成为系统得瓶颈。
由数据图可知第三个暂存区得物料输入量为5 58 35,平均数量为 0、11,最大等待时间达到了 12 24、25,平均等待时间为 3、40, 由此可见暂存区三得效率较高,较为适应系统得要求。
为 由数据图可知第四个暂存区得物料输入量为 3604,平均数量为 5、62 2,最大等待时间为1 164 2、37,平均等待时间为 273、55,由此可见暂存区四货物周转率高,并且运行效率高, 能够适应系统得要求,安排合理。
由数据图可知第五 个暂存区得物料为 输入量为 7 208,平均数量为2 243、75, 最大等待时间为 1 0936、85,平均等待时间为 5956, 由此可见暂存区五 容易造成货物得堆积与等待,不 能够适应系统得要求,安排 不够 合理, 为该系统得瓶颈.六、实验结果及分析
对得到得数据做简单分析,提出改进措施:
暂存区 1 2 3 4 5平均等待时间 12、50 30388、42 3、40 273、55 5956
平均数量 0、63 1967、04 0、11 5、62 243、75 由数据图可知第一个暂存区得物料输入量为 8888,平均数量为 0、63,最大等待时间达到了241、94,平均等待时间为12、5,由此可见暂存区一得货物状态较为空闲,不就是系统得瓶颈.由数据图可知第二个暂存区得物料输入量为11173,平均容量为 1967、04,最大等待时间为 63017、14,平均等待时间为 30388、42,由此可见暂存区二得货物周转率较高,处于比较忙碌得状态,非常容易成为系统得瓶颈.由数据图可知第三个暂存区得物料输入量为 5835,平均数量为0、11,最大等待时间达到了 124、25,平均等待时间为 3、40,由此可见暂存区三得效率较高,较为适应系统得要求。由数据图可知第四个暂存区得物料输入量为 3604,平均数量为 5、62,最大等待时间为 1642、37,平均等待时间为 273、55,由此可见暂存区四货物周转率高,并且运行效率高,能够适应系
统得要求,安排合理.由数据图可知第五个暂存区得物料输入量为 7208,平均数量为 243、75,最大等待时间为 10936、85,平均等待时间为 5956,由此可见暂存区五容易造成货物得堆积与等待,不能够适应系统得要求,安排不够合理,为该系统得瓶颈.由数据分析可知暂存区二、五就是系统得瓶颈所在,应该提高暂存区二、暂存区五得处理前一道工序速度,即增加工序一与工序二得机器数量,以此来提高工序 1、2 得处理速度,或者调整物料加工得顺序,从而提高整个系统得运营效率。
《物流系统建模与仿真》实验报告
开课实验室:
****年**月**日 日 学院 自动化 年级、专业、班 12 级物流工程 2班 姓名段竞男 成绩
课程 名称 物流系统建模与仿真 实验项目 名
称 混合流水线系统仿真与分析实验 指导教师 张莹莹 教师评语
成绩
一、实验目得 主要掌握单台处理器在处理多种产品时对于处理顺序以及时间参数得设置.熟悉先进先出这种存储模式得控制方法.二、实验原理 多对象流水线生产有两种基本形式。一种就是可变流水线,其特点就是:在计划期内,按照一定得间隔期,成批轮番生产多种产品;在间隔期内,只生产一种产品,在完成规定得批量后,转生产另一种产品。另一种就是混合流水线,其特点就是:在同一时间内,流水线上混合生产多种产品。按固定得混合产品组组织生产,即将不同得产品按固定得比例与生产顺序编成产品组。一个组一个组地在流水线上进行生产。
三、使用仪器、材料
PC 机一台,flexsim 软件 四、实验步骤
1)创建模型布局
从左边得实体库中依次拖拽出所有实体(一个 Source,5个 Queue,12个 Processor,一个Conveyor,一个Sink)放在右边模型视图中,调整至适当得位置,如图所示:
2)连接端口
根据流动实体得路径来连接不同实体得端口.按住键盘上得“A”键,与前面章节得操作一样,按上图中得箭头所指向依次连接各个实体.分别(注意方向)从 Source 连到 GeneralQueue,GeneralQueue 连到GeneralMachine1,GeneralQueue连到 GeneralMachine2, GeneralQueue 连到 GeneralMachine3,GeneralMachine1 连到 DrillingQueue,GeneralMachine2 连到 DrillingQueue,GeneralMachine3 连到 DrillingQueue,DrillingQueue 连到 DrillingMachine1,DrillingQueue连到 DrillingMachine2,DrillingQueue连到DrillingMachine3,DrillingMachine1连到MillingQueue,DrillingMachine2 连到 MillingQueue,DrillingMachine3 连到MillingQueue,MillingQueue 连到 MillingMachine1,MillingQueue连到MillingMachine2,MillingMachine1 连到 GrindingQueue,MillingMachine2连到 GrindingQueue,GrindingQueue连到 GrindingMachine1,GrindingQueue 连到 GrindingMachine2,GrindingQueue 连到GrindingMachine3,GrindingMachine1 连到 T
estingQueue,GrindingMachine2连到TestingQueue,GrindingMachine3连到TestingQueue,TestingQueue 连到 TestingMachine,TestingMachine 连到 Conveyor,Conveyor 连到Sink。完成后,如图所示:
3)定义对象参数
分别按照要求定义 Source、各机器工位、暂存区参数。
4)模型运行
(1)重置模型并运行(2)加快仿真模型运行速度 如果我们只就是关心仿真结果,而对仿真得过程不感兴趣,则我们可以加快仿真速度,迅速得到结果.图 3、1仿真速度控制比例条 如图 3、1,鼠标左键一直按住比例尺,移动到合适得比例位置,以便迅速得到结果。
5)观察结果
仿真进行过程中,可以瞧到红、绿、蓝三种不同颜色得产品从系统中流过,经过不同机器组得加工,最后离开系统,如下图:
6)结果分析
当仿真运行自动结束后,我们打开 Flexsim得工具栏里得 Stats 目录下得Standard Report 选项,如图所示:
我们通过来增加、以及来减少需要输出得报告内容,使得报告包含以上所列得 5 个部分得数据:idle就是空闲时间,processing 就是工作时间,blocked就是产品在设备等待时间,stats_staytimeavg就是平均停留时间,stats_input 就是输入产品数,stats_output 就是输出产品数,设置完成后,如图所示:
点击后生成如图所示表格:
从上表中我们可以很方便得瞧到总运行时间就是 7728min,以及各个设备得输入输出产品数,处理时间等信息.录记始原程过验实、五ﻬ 五、实验过程原始记录((数据、图表、计算等)
1、运行结果得二维平面图
2、运行结果得三维立体图
4、投产按照 1、2、3 得顺序进行得仿真报告 Flexsim Summary Report Time: 7728
Object Class stats_output stats_staytimemin stats_input idle blocked processing
Source1 Source 1700 0 0 0 7720 0 Queue2 Queue 1700 0 1700 0 0 0 Processor3 Processor 500 4 500 594 0 2400 Processor4 Processor 600 4 600 297 0 2700 Processor5 Processor 600 4 600 297 0 2700 ConCon17010 1700 0 0
veyor6 veyor 0 0 Processor7 Processor 600 4 600 203 0 2800 Processor8 Processor 600 4 600 203 0 2800 Processor9 Processor 500 4 500 599 0 2400 Queue10 Queue 1700 0 1700 0 0 0 QueQue1700 1700 0 0
ue11 ue 0 0 Processor12 Processor 850 3 850 10 0 3050 Processor13 Processor 850 3 850 11 0 3050 Processor14 Processor 567 4 567 796 0 2268 ProcessorProcessor 567 4 567 797 0 2268 Processor16 Processor 566 4 566 798 0 2264 Queue17 Queue 1700 0 1700 0 0 0 Queue18 Queue 1700 0 1700 0 0 0 Processor19 Processor 1700 1 1700 18 0 7700 Sink20 Sink 0 0 1700 0 0 0 由报表分析可知,按照 1 1、2 2、3得顺序投产得总得处理时间为77 7 28 8。
投产按照1、3、2 得顺序进行得仿真报告:
Flexsim Summary Report Time: 7728
Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 ProcProc502 502 4、79586 2408 0
essor3 essor 6813 Processor4 Processor 600 600 4、5 298 2700 0 Processor5 Processor 598 598 4、501672 306 2692 0 Queue6 Queue 1700 1700 0、411765 0 0 0 Processor7 Processor 600 600 4、666667 203 2800 0 PrPr60604、20280
ocessor8 ocessor 0 0 666667 3 00 Processor9 Processor 500 500 4、8 599 2400 0 Queue10 Queue 1700 1700 28、32294 0 0 0 Processor11 Processor 850 850 3、588235 10 3050 0 ProcessorProcessor 850 850 3、588235 11 3050 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 797 2268 0 Processor16 Processor 566 566 4 798 2264 0 QueuQueu1700 1700 23290 0 0
e17 e、648 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 18 7700 0 由报表分析可知,按照 1、3、2 得顺序投产得总得处理时间为 7728.投产按照 2、1、3 得顺序进行得仿真报告:
Flexsim Summary Report Time:
7725 Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 Processor3 Processor 503 503 4、795229 588 2412 0 Processor4 Processor 600 600 4、5 299 2700 0 Processor5 Processor 597 597 4、502513 311 2688 0
Queue6 Queue 1700 1700 0、408824 0 0 0 Processor7 Processor 600 600 4、666667 205 2800 0 Processor8 Processor 600 600 4、666667 205 2800 0 Processor9 Processor 500 500 4、8 605 2400 0 Queue10 Queue 1700 1700 28、16529 0 0 0 Processor11 Processor 851 851 3、587544 11 3053 0 Processor12 Processor 849 849 3、588928 15 3047 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 798 2268 0 Processor16 Processor 566 566 4 804 2264 0 Queue17 Queue 1700 1700 2317、985 0 0 0 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 15 7700 0 由报表分析可知,按照 2 2、1、3得顺序投产得总得处理时间为 772 5.析分及果结验实、六ﻬ 六、实验结果及分析1)
实验结果: :由以上报表分析可知 6 种投产顺序中,按照 2、1、3 得顺序投产得总得处理时间最短为7725,故以这种投产顺序作为最佳投产方式。
2)讨论: :系统还存在很多可以改善得地方,请指出有哪些地方就是有待改善得,理由就是什么.答:可以适当得降低处理器得运行速度,除了第三组得处理器空闲时间较短外,其余各组处理器得空闲时间过长。尤其就是,其中暂存区 17 得平均等待时间过长,可以适当得调整运行速度,以提高整个系统得运行效率。
实验报告打印格式说明 1.标题:三号加粗黑体 2.开课实验室:5 号加粗宋体 3.表中内容:(1)标题:5号黑体(2)正文:5 号宋体
4.纸张:16 开(20cm×26.5cm)5.版芯 上距:2cm 下距:2cm 左距:2.8cm 右距:2.8cm 说明: 1、“年级专业班”可填写为“00 电子 1 班",表示 2000 级电子工程专业第1班.2、实验成绩可按五级记分制(即优、良、中、及格、不及格),或者百分制记载,若需要将实验成绩加入对应课程总成绩得,则五级记分应转换为百分制。