面向结构图的连续系统数字仿真
- 格式:doc
- 大小:1.27 MB
- 文档页数:18
实验四面向系统结构图的仿真验证(2学时)
一.实验目的:
从控制系统常见的结构形式拓扑描述入手,掌握面向连续控制系统结构图的计算机仿真方法及其程序实现。
二.实验原理及预习内容:
1.原理:任何复杂连接结构的线性控制系统都是由一些简单的线性环节组合而成,按照它们之间相互连接的拓扑关系列出连接矩阵,可以得到能清晰地描述复杂连接系统的仿真模型。
2.预习内容:利用连接矩阵进行复杂控制系统建模的方法和原理。
三.实验步骤:
1.对具有复杂连接闭环结构形式的系统,可用一阶环节作为典型环节,再运用拓扑描述中联接矩阵的表达方法得出此类系统结构的仿真模型;
2.再通过数值积分法求取各环节的动态响应。
注意:所确定的典型环节中,参数0
B ,以保证系统仿真求解的基本条件。
i
四.实验内容:
习题3-2.设典型闭环结构控制系统如下图所示,当阶跃输入幅值R=20时,用面向系统结构图的数字仿真法sp3-1.m求取系统的输出响应。
五.实验要求:
1.列出复杂连接闭环系统的仿真程序框图;
2.列出MATLAB程序实现的主要程序,包括输入数据、形成闭环各系统阵、数值积分求解、以及输出结果;
3.注意:为理解程序含义,应给出每个语句的执行结果,并在word文档中写出。
实验一面向微分方程的数值积分法仿真一、实验目的1•掌握数值积分法的基本概念、原理及应用;2•用龙格-库塔法解算微分方程,增加编写仿真程序的能力;3•分析数值积分算法的计算步长与计算精度、速度、稳定性的关系; 4.对数值算法中的“病态问题”进行研究。
二、实验内容1、已知系统微分方程及初值条件y =t y, y(0) =1取步长h .0.1 ,试分别用欧拉方程法和RK4法求t =2h时的y值,y(t) =2& -t -1比较(将三个解绘于同一坐标中,且用数值进行比较因。
(①编程完成;②选用MATLAB ode函数完成。
)程序代码如下:t0=0;tf=2;h=0.1;y1=1;y2=1;y3=1;t1=0;t2=0;t3=0n=rou nd(tf-t0)/h;for i=1: ny1(i+1)=y1(i)+h*(2*h+y1(i)); t1=[t1,t1(i)+h];endfor i=1: nk1=y2(i)+t2(i);k2=y2(i)+h*k1/2+t2(i)+h/2;k3=y2(i)+h*k2/2+t2(i)+h/2; k4=y2(i)+h*k3+t2(i)+h;y2(i+1)=y2(i)+h*(k1+2*k2+2*k3+k4)/6;t2=[t2,t2(i)+h];endfor i=1: ny3(i+1)=2*exp(t3(i))-t3(i)-1;t3=[t3,t3(i)+h];endplot(t1,y1, 'r' ,t2,y2, 'g' ,t3,y3, 'k')实验结果如下;并将求得的值与解析解),说明造成差异的原1210「 ' -8 ■ / . -6 - / -4「-2 - -0 1 1 1 10 0.5 1 1.5 2 2.5分析:红线为用欧拉法得到的结果,绿线为用四阶龙格一库塔法得到的结果,蓝线为根据解析方程得到的结果。
其差异原因主要有两个:1、二者的方法不同,欧拉法是根据一阶微分方程计算得到的,龙格一库塔法是根据四阶微分方程得到的;2、由于步长取为0.1,所以得到的图像与解析解之间存在差异,若将步长取小,则得到的解将更靠近解析解。
“双闭环控制直流电动机调速系统”数字仿真实验24、SIMULINK建模我们借助SIMULINK,根据上节理论计算得到的参数,可得双闭环调速系统的动态结构图如下所示:图7 双闭环调速系统的动态结构图(1)系统动态结构的simulink建模①启动计算机,进入MATLAB系统检查计算机电源是否已经连接,插座开关是否打开,确定计算机已接通,按下计算机电压按钮,打开显示器开关,启动计算机。
打开Windows开始菜单,选择程序,选择MATAB6.5.1,选择并点击MATAB6.5.1,启动MATAB程序,如图8,点击后得到下图9:图8选择MATAB程序图9 MATAB6.5.1界面点击smulink 中的continuous,选择transfor Fc n(传递函数)就可以编辑系统的传递函数模型了,如图10。
图10 smulink界面②系统设置选择smulink界面左上角的白色图标既建立了一个新的simulink模型,系统地仿真与验证将在这个新模型中完成,可以看到在simulink目录下还有很多的子目录,里面有许多我们这个仿真实验中要用的模块,这里不再一一介绍,自介绍最重要的传递函数模块的设置,其他所需模块参数的摄制过程与之类似。
将transfor Fc n(传递函数)模块用鼠标左键拖入新模型后双击transfor Fc n(传递函数)模块得到图11,开始编辑此模块的属性。
图11参数表与模型建立参数对话栏第一和第二项就是我们需要设置的传递函数的分子与分母,如我们需要设置电流环的控制器的传递函数:0.01810.0181()0.2920.0180.062ACR s s W s s s++=⋅=,这在对话栏的第一栏写如:[0.018 1],第二栏为:[0.062 0]。
点击OK ,参数设置完成。
如图12。
图12传递函数参数设置设置完所有模块的参数后将模块连接起来既得到图7所示的系统仿真模型。
在这里需要注意的是,当我们按照理论设计的仿真模型得到的实验波形与理想的波形有很大的出入。
建模与仿真及其医学应用》实验讲义天津医科大学生物医学工程系2004 年实验一 系统建模的MATLAB 实现一、 实验目的:1 学习MATLA 基本知识。
2. 掌握数学模型的MATLA 实现:时域模型、状态空间模型和零极点 模型。
3. 学习用MATLA 实现系统外部模型到内部模型的转换。
4. 学习用MATLA 实现系统模型的连接:串联、并联、反馈连接。
5. 了解模型降阶的MATLA 实现。
二、 实验内容1. 系统的实现、外部模型到内部模型的转换2 (1)给定连续系统的传递函数G(s) (s 8)(s 22S 5),利用 (2 s 3)(3s 4s 13) MATLA 建立传递函数模型,微分方程,并转换为状态空间模型(2)已知某系统的状态方程的系数矩阵为:利用MATLA 建立状态空间模型,并将其转换为传递函数模型和零极 点模型MATLA 转换为传递函数模型和状态空间模型。
2. 系统的离散、连接、降阶2(1)给定连续系统的传递函数G(s) (s 8)(s 22s 5),将该连 (2s 3)(3s 2 4s 13) 续系统的传递函数用零阶重构器和一阶重构器转换为离散型传递函 数,抽样时间T=1秒。
⑶已知系统的零极点传递函数为G(s)(s 2豐31)(s 4),利用(2)该系统与系统H(s) 丁」分别①串联②并联③负反馈连s26s 5接,求出组成的新系统的传递函数模型。
(3)将串联组成的新系统进行降阶处理,求出降阶后系统的模型,并用plot图形比较降阶前后系统的阶跃响应。
要求:将以上过程用MATLABS程(M文件)实现,运行输出结果。
三、实验说明一关于系统建模的主要MATLA函数1 •建立传递函数模型:tf函数:格式:sys=tf(num,den)num=[b m,b m-i, ...... ,b]分子多项式系数den=[ai,a n-1, ......... ,a o]分母多项式系数2 •建立状态空间模型:ss函数:格式:sys=ss(a,b,c,d) %a,b,c,d为状态方程系数矩阵sys=ss(a,b,c,d,T)沪生离散时间状态空间模型3•建立零极点模型的函数:zpk格式:sys=zpk(z,p,k)4 •模型转换函数:tf2ss tf2zp ss2tf ss2zp zp2tf zp2ss%2为to的意思格式:[a,b,c,d]=tf2ss(num,den)[z,p,k]=tf2zp( nu m,de n)[n um,de n]=ss2tf(a,b,c,d,iu) %iu 指定是哪个输入[z,p,k]=ss2zp(a,b,c,d,iu)][num,den]=zp2tf(z,p,k)[a,b,c,d]=zp2ss(z,p,k)5.模型的连接串联:sys=series(sys1,sys2)并联:sys=parallel(sys1,sys2)反馈连接:sys=feedback(sys1,sys2,sign)%负反馈时sign可忽略;正反馈时为1 。
课程设计面向结构图的连续系统数题目字仿真学院计算机科学与信息工程学院专业自动化班级2010级2班学生姓名小指导教师吴诗贤2013 年12 月20 日面向结构图的连续系统数字仿真姓名:陶园班级:10自动化3班学号:2010133330摘要根据自动控制系统中面向结构图的数字仿真的基本思想,探讨了仿真过程中典型环节的规范性、系统的连接矩阵、仿真求解、程序框图问题,并应用到实际的范例当中,并分析了结果总结了相关特点和相关结论。
自动控制系统常常是由许多环节组成的,要应用数字仿真方法对系统进行分析和研究,首先需要求出总的传递函数,再转化为状态空间表达式的形式,然后对其求解。
当改变系统某一环节的参数时,尤其是要改变小闭环中某一环节的参数时,以上整个过程又需要重新计算,这对研究对象参数变化对整个控制系统的影响是十分不便的,为了克服这些缺点,同时大多数从事自动化工作的科技人员更习惯于用结构图的形式来分析和研究控制系统,为此产生了面向结构图的仿真方法。
该方法只需将各个环节的参数及各环节间的连接方式输入计算机,仿真程序就能自动求出闭环系统的状态空间表达式。
本课程设计主要介绍典型环节参数和连接关系构成闭环系统的状态方程的方法,而动态响应的计算,仍采用四阶龙格-库塔法。
这种方法具有便于研究各个环节参数对系统的影响,并可以得到每个环节的动态响应,以及对多输入输出系统的进行仿真的有点。
关键字:结构图;典型环节;连接矩阵;数字仿真;1、设计任务已知某一系统结构如下图所示,编写matlab程序求a分别为2,4,6,8,10,12时输出量y的动态响应。
图12、需求分析及概要设计2.1 需求分析根据上述设计任务我们可以基本明确在我们课程设计当中应该明确以下几个方面:✓熟悉在数字计算机仿真技术中常用的四阶龙格-库塔算法。
✓明确在面向结构图的连续系统数字仿真,典型环节及其系数矩阵确定。
✓明确各连接矩阵的确定。
✓能够熟练运用MATLAB仿真软件。
课程设计面向结构图的连续系统数题目字仿真学院计算机科学与信息工程学院专业自动化班级2010级2班学生姓名小指导教师吴诗贤2013 年12 月20 日面向结构图的连续系统数字仿真姓名:陶园班级:10自动化3班学号:2010133330摘要根据自动控制系统中面向结构图的数字仿真的基本思想,探讨了仿真过程中典型环节的规范性、系统的连接矩阵、仿真求解、程序框图问题,并应用到实际的范例当中,并分析了结果总结了相关特点和相关结论。
自动控制系统常常是由许多环节组成的,要应用数字仿真方法对系统进行分析和研究,首先需要求出总的传递函数,再转化为状态空间表达式的形式,然后对其求解。
当改变系统某一环节的参数时,尤其是要改变小闭环中某一环节的参数时,以上整个过程又需要重新计算,这对研究对象参数变化对整个控制系统的影响是十分不便的,为了克服这些缺点,同时大多数从事自动化工作的科技人员更习惯于用结构图的形式来分析和研究控制系统,为此产生了面向结构图的仿真方法。
该方法只需将各个环节的参数及各环节间的连接方式输入计算机,仿真程序就能自动求出闭环系统的状态空间表达式。
本课程设计主要介绍典型环节参数和连接关系构成闭环系统的状态方程的方法,而动态响应的计算,仍采用四阶龙格-库塔法。
这种方法具有便于研究各个环节参数对系统的影响,并可以得到每个环节的动态响应,以及对多输入输出系统的进行仿真的有点。
关键字:结构图;典型环节;连接矩阵;数字仿真;1、设计任务已知某一系统结构如下图所示,编写matlab程序求a分别为2,4,6,8,10,12时输出量y的动态响应。
图12、需求分析及概要设计2.1 需求分析根据上述设计任务我们可以基本明确在我们课程设计当中应该明确以下几个方面:✓熟悉在数字计算机仿真技术中常用的四阶龙格-库塔算法。
✓明确在面向结构图的连续系统数字仿真,典型环节及其系数矩阵确定。
✓明确各连接矩阵的确定。
✓能够熟练运用MATLAB仿真软件。
2.2 设计思路自动控制系统常常是由许多环节组成的,要应用数字仿真方法对系统进行分析和研究,首先需要求出总的传递函数,再转化为状态空间表达式的形式,然后对其求解。
当改变系统某一环节的参数时,尤其是要改变小闭环中某一环节的参数时,以上整个过程又需要重新计算,这对研究对象参数变化对整个控制系统的影响是十分不便的,为了克服这些缺点,同时大多数从事自动化工作的科技人员更习惯于用结构图的形式来分析和研究控制系统,为此产生了面向结构图的仿真方法。
该方法只需将各个环节的参数及各环节间的连接方式输入计算机,仿真程序就能自动求出闭环系统的状态空间表达式。
以下是我们课程设计的主要设计思图22.3 连接矩阵确定:一个控制系统用典型环节来描述时,必须用连接矩阵把各个典型环节连接起来。
所谓连接矩阵,就是用矩阵的形式表示各个典型环节之间的关系。
以下是我们课程设计当中连接矩阵确定的分析过程:图3由上图我们可以得出各环节输入与各环节输出间的关系,以及系统输出与各环节输出间的关系分别为132132u x ru x u x ⎧=-+⎪=⎨⎪=⎩和3y x =。
由此可得各个环节的输入,以及系统输出的关系表达式为:112233001110000100u x u x r u x ⎡⎤⎡⎤⎡⎤⎡⎤-⎢⎥⎢⎥⎢⎥⎢⎥=+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎣⎦,123001x y x x ⎡⎤⎢⎥⎡⎤=⎢⎥⎣⎦⎢⎥⎣⎦根据以上两式和各典型环节的系数值,可得如下链接矩阵和系数矩阵:001100010W ⎡⎤-⎢⎥=⎢⎥⎢⎥⎣⎦, 0100W ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦, 001c W ⎡⎤=⎣⎦1111222233330.110.510110111a b c d P a b c d a a b c d ⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦。
3、算法实现3.1 面向结构图的连续系统数字仿真流程框图在本次课程设计当中,我们通过分析题目随后开始我们的程序编写,我们发现在编写程序上,变化数据的输入上我们能够采用两种不同的方法,一种是把变化的数据通过人为的单个输入到程序中,然后逐一的得出我们对应的仿真结果。
另外一种是通过循环控制的方式,把我们需要改变的数据加入到程序当中,并且把不同的变量对应的仿真结果反映到同一张图片当中。
于是,这里我们这里就具有两个不同的程序流程图。
3.1.1 单个输入程序流程图:图43.1.2 利用循环控制实现a=2,4,6,8,10,12的仿真分析的流程图:图53.2 程序代码在本次课程设计当中,我们通过分析题目随后开始我们的程序编写,我们发现在编写程序上,变化数据的输入上我们能够采用两种不同的方法,一种是把变化的数据通过人为的单个输入到程序中,然后逐一的得出我们对应的仿真结果。
另外一种是通过循环控制的方式,把我们需要改变的数据加入到程序当中,并且把不同的变量对应的仿真结果反映到同一张图片当中。
于是,这里我们这里就具有两个不同的程序代码。
3.2.1 单个输入代码段r=10; %系统输入型号a=input('输入Ⅲ环节变量a='); %'输入Ⅲ环节变量aP=[0.1 1 0.5 1;0 1 1 0;1 1 a 1]; %各个典型环节系数矩阵W=[0 0 -1;1 0 0;0 1 0];W0=[1;0;0];Wc=[0 0 1]; %连接矩阵Tf=input('仿真时间Tf=');h=input('计算步长h=');A1=diag(P(:,1)); %diag 建立对角矩阵B1=diag(P(:,2));C1=diag(P(:,3));D1=diag(P(:,4));H=B1-D1*W; Q=C1*W-A1; % 求取H,Q矩阵A=inv(H)*Q; %inv逆矩阵根据公式求去AB矩阵B=inv(H)*C1*W0;x=[zeros(length(A),1)]; %产生length(A)行 1列的0矩阵y=[zeros(length(Wc(:,1)),1)];t=0;for i=1:Tf/h %龙格-库塔法求取状态方程的根K1=A*x+B*r;K2=A*(x+h*K1/2)+B*r;K3=A*(x+h*K2/2)+B*r;K4=A*(x+h*K3)+B*r;x=x+h*(K1+2*K2+2*K3+K4)/6;y=[y,Wc*x];t=[t,t(i)+h];endplot(t,y) %绘制仿真曲线以下是图片处理gtext('a=2')gtext('Tf=10')gtext('h=0.2')title('a=2时系统的仿真曲线')xlabel('时间(t)')ylabel('系统输出(y)')3.2.2 利用循环控制实现a=2,4,6,8,10,12的仿真分析代码:r=10; %系统输入型号W=[0 0 -1;1 0 0;0 1 0];W0=[1;0;0];Wc=[0 0 1]; %连接矩阵Tf=input('仿真时间Tf=');h=input('计算步长h=');for a=2:2:12P=[0.1 1 0.5 1;0 1 1 0;1 1 a 1]; %各个典型环节系数矩阵 A1=diag(P(:,1)); %diag 建立对角矩阵B1=diag(P(:,2));C1=diag(P(:,3));D1=diag(P(:,4));H=B1-D1*W; Q=C1*W-A1; % 求取H,Q矩阵A=inv(H)*Q; %inv逆矩阵根据公式求去AB矩阵B=inv(H)*C1*W0;x=[zeros(length(A),1)]; %产生length(A)行 1列的0矩阵 y=[zeros(length(Wc(:,1)),1)];t=0;for i=1:Tf/h %龙格-库塔法求取状态方程的根K1=A*x+B*r;K2=A*(x+h*K1/2)+B*r;K3=A*(x+h*K2/2)+B*r;K4=A*(x+h*K3)+B*r;x=x+h*(K1+2*K2+2*K3+K4)/6;y=[y,Wc*x];t=[t,t(i)+h];endplot(t,y) %绘制仿真曲线hold onendhold offgtext('a=2') %图片标注gtext('a=4')gtext('a=6')gtext('a=8')gtext('a=10')gtext('a=12')gtext('Tf=15')gtext('h=0.4')title('系统仿真曲线')xlabel('时间(t)')ylabel('系统输出(y)')4、调试分析过程及结果4.1 仿真和调试在仿真过程中我们采用的是Matlab软件,Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
在现在的自动控制系统的仿真上,由于该软件的方便使用,受到人们青睐。
因此我们课程设计也选用了该软件作为我们的调试和仿真的工具。
在是用Matlab软件对我们设计的系统进行调试的过程中,我们参照了很多关于程序调试的方法,其常见的调试方法有:(1)设置或清除断点:使用快捷键F12。
(2) 执行:使用快捷键F5。
(3) 单步执行:使用快捷键F10。
(4) step in:当遇见函数时,进入函数内部,使用快捷键F11。
(5) step out:执行流程跳出函数,使用快捷键Shift+F11。
(6) 执行到光标所在位置:非常遗憾这项功能没有快捷键,只能使用菜单来完成这样的功能。
(7) 观察变量或表达式的值:将鼠标放在要观察的变量上停留片刻,就会显示出变量的值,当矩阵太大时,只显示矩阵的维数。
(8) 退出调试模式:没有设置快捷键,使用菜单或者快捷按钮来完成。
由于我们是初次使用这个软件,对于程序的调试我们也没有使用更为繁琐的步奏,而是采用了常见的调试方法,直接调试。
在调试过程我们遇到了很多问题,包括语法的错误。
这主要是我们在编写程序的时候没有注意到matlab程序的变量设置问题。
最后通过查阅相关资料我们顺利的完成了程序编写,并且实现了我们想要功能。
其调试窗口(见下图):图64.2 仿真结果在本课程设计当中,为了更好的验证系统,我们选用了两组数据进行验证,分别是仿真时间Tf=10,步长h=0.2和仿真时间Tf=15,步长h=0.4。