全结构仿真功能库.docx
- 文档编号:9859745
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:20
- 大小:180.49KB
全结构仿真功能库.docx
《全结构仿真功能库.docx》由会员分享,可在线阅读,更多相关《全结构仿真功能库.docx(20页珍藏版)》请在冰点文库上搜索。
全结构仿真功能库
四全结构仿真
一)全结构仿真概述
从控制原理上,我们知道系统的描述方法有很多种,比如传递函数、状态方程、信号流图等。
方块图法也是其中的一种,如图所示。
若上图所示的功能块它们可以是如加法、减法、惯性、实际微分、传递函数等一些线性环节或非线性环节组成。
如果我们能够用一系列函数(或称为功能块)来实现这些方块的功能,我们就很容易把这个系统在计算机里进行描述,也即用一些功能块来描述系统,功能块的计算顺序就是函数参数的更新顺序,也是系统信号的传递顺序。
描述系统的方块图非常之多,各有不同,每个方块我们都用一个功能块或函数去编程实现,再把一个系统送入计算机,这样的工作量是非常大的,因为每编写一个功能块并把它调试正确是需要大量时间的。
如果我们把系统看成是一些如加法、减法、惯性、实际微分、继电等基本环节构成,把这些其本环节的功能块组成一个功能库就可避免上述的麻烦,并且把一个系统数学模型送入计算机也变得简单多了。
我们把这种数字仿真方法叫全结构仿真。
要实现这一目的,关键是要建一个由基本环节的函数构成的功能库。
我们知道,任何一个运算都可以看成是函数运算特性,为了运算的需要,我们采用如下的函数结构:
y=f(x1,x2,x3)
图4-3全结构仿真基本思想框图
这样,对于一个系统,我们就可以看成是由若干个单元构成,将f编制成各种各样的运算特性,就可以组成功能库。
使用时,将这个库中的功能调出,放在此单元中进行运算即可。
设计时将每种功能函数定义一个功能代号,以代号直接就可以找到相就的处理程序块。
这种结构中,x1~x3是三个输入信号,它可以是某个环节的输出信号,也可以是常数。
信号的类别可以是数字,也可以是0和1的开关状态量;单元的输出y可以是数字,也可以是0和1的状态,具体形式由所调用的功能块决定。
单元号码是在仿真系统中,按运算的顺序编号。
程序就可以根据这个单元编号顺序调用相就的功能函数。
每一个步长内,将构成系统的所有单元都处理一次,这样循环下去,从而可以得到输出的数字解或响应曲线。
根据这样的一种思路,程序的结构如下图4-3示。
从图中可以看到,程序的主体是功能库。
表4-1功能库表
功能代号
功能名称
功能
01
阶跃闸门函数
Y=x1*1(t-x3)+x2
02
减法
Y=x1-x2
03
加法
Y=x1+x2
04
积分
Y=1/s*x1*x2
05
惯性
Y=x1*x2/(x3*s+1)
06
实际微分
Y=x1*x2*/(x3*s+1)
07
超前-滞后
08
PI
09
PD
10
PID
11
纯滞后
12
选择
13
周期方波
14
乘法加法
15
闸门斜坡信号
16
闸门正弦信号
17
饱和非线性
18
死区非线性
19
小信号切除
20
死区滞环继电
二)全结构仿真功能库
按照系统的一般性,可以将系统中所使用的特性分解成如表所示的一些基本功能,这些功能编制成功能函数,即可建立一个功能函数库。
由于某些功能函数需要使用一些保存的中间变量,所以在程序中需设置一个中间变量数组作为全局变量,以存放运算中要保存的中间变量,变量存放的下一个位置由一个全局变量指针SP所确定。
我们定义全局变量数组为ymv.
根据表中列出的功能编制相应的功能函数,下面就几个功能块作一介绍。
01号功能块阶跃闸门函数
global定义全局变量的语句
t仿真时间
ts仿真步长
tmax仿真终止时间
sp中间数组单元指镇
ymv全局中间数组变量
yd1yd2纯滞后数组变量
spd1spd2纯滞后数组单元指镇。
functiony=f01f(x1,x2,t0)
%阶跃闸门函数;
%当t>t0时,输出y=x1+x2;
%当t % globalttstmaxspymvyd1yd2spd1spd2 if(t>=t0)y=x1+x2;elsey=x1;end 02号功能块减法运算 functiony=f02f(x1,x2) %减法运算y=x1-x2 y=x1-x2; 03号功能块加法运算 functiony=f03f(x1,x2) %加法运算y=x1+x2 y=x1+x2; 04号功能块积分运算 functiony=f04f(x1,ki) % %积分是在原有初值上进行增量或减量 %因此积分要用到上一个计算周期的值,我们用 %ymv中间数组单元来保存。 globalttstmaxymvyd1yd2spspd1spd2 y=ymv(sp)+x1*ts*ki; ymv(sp)=y;%保存当前值以备下一次计算使用。 sp=sp+1;%中间数组变量单元的指针增一,指向下一个单元,以保证各功能单元的中间量独立。 05号功能块一阶惯性环节 functiony=f05f(x1,k,tl) %一阶惯性环节 %这里的ymv(sp)等于上一次的y %e %x1----k----------1/t1/s-------y %-|___________| %yf=(y1+y0)/2 %e=k*x1-yf代入化简可得y1=y0+ts*/tl*(k*x1-.5*y1-y0*.5) %y1=y0+ts*e/tl则y1=y0+ts*(k*x1-y0)/(tl+.5*ts) % globalttstmaxymvyd1yd2spspd1spd2 tsh=ts/2; ift1 elsex=t1; end y=ymv(sp)+ts*(k*x1-ymv(sp))/(x+tsh); ymv(sp)=y; sp=sp+1; 06号功能块实际微分运算 functiony=f06f(x1,td,tl) %实际微分运算 %y=td*x1/(tls+1) %用长除法可化成 %y=td/tl(1-1/(tls+1))*x1 %应用中间保存变量存方惯性特性的输出可得 %ymv=1/(tls+1)*x1*td/tl %y=x1*td/tl-ymv %ymv1=ymv0+(td*x1/tl-ymv0)*ts/(tl+.5*ts) globalttstmaxymvyd1yd2spspd1spd2 iftl elsex=tl; end y=td*x1/x; ymv(sp)=ymv(sp)+(y-ymv(sp)*ts/(x+0.5*ts)); y=y-ymv(sp); sp=sp+1; 07号功能块超前滞后环节 functiony=f07f(x1,td,tl) %超前滞后环节 %当td>tl时,环节为超前环节,否则为滞后环节; %%y=x1*(tds+1)/(tls+1) %上式可化成y=td*x1/tl+(1-td/tl)x1/(tls+1) %所以ymv=(1-td/tl)*x1/(tls+1) %y=td/tl*x1 globalttstmaxymvyd1yd2spspd1spd2 iftl elsex=tl; end y=td*x1/x; ymv(sp)=ymv(sp)+(x1-y-ymv(sp))*ts/(x+0.5*ts); y=y+ymv(sp); sp=sp+1; 08号功能块比例积分环节 functiony=f08f(x1,k,ki) %比例积分环节 % globalttstmaxymvyd1yd2spspd1spd2 y=x1*k; ymv(sp)=ymv(sp)+ts*x1*ki; y=y+ymv(sp); sp=sp+1; 09号功能块比例微分环节 functiony=f09f(x1,k,td) %比例微分环节 % globalttstmaxymvyd1yd2spspd1spd2 y=k*(x1+td*(x1-ymv(sp))/ts); ymv(sp)=x1; sp=sp+1; 10号功能块比例积分微分(PID) functiony=f10f(x1,k,ki,td) % %比例积分微分(PID)环节 % globalttstmaxymvyd1yd2spspd1spd2 ymv(sp)=ymv(sp)+x1*ts*ki; y=k*x1+ymv(sp)+td*(x1-ymv(sp+1))/ts; ymv(sp+1)=x1; sp=sp+2;%前面使用了两个中间单元,因此指针下移两位。 11号功能块纯滞后环节 functiony=f11f(x1,ted,n) %纯滞后环节 %ted为纯滞后间n为使用的纯滞后数组编号。 %纯滞后环节使得控制的快速性迅速下降。 %对纯滞后模块的仿真有两种方法: (a)数据移位法 (b)指针移位法 globalttstmaxymvyd1yd2spspd1spd2 ifn>2disp(‘n<=2inNo.12block! ’);pause; if(n==1)y=yd1(spd1);yd1(spd1)=x1;spd1=spd1+1; if(spd1>(ted/ts))spd1=1;end elseif(n==2)y=yd2(spd2);yd2(spd2)=x1;spd2=spd2+1; if(spd2>(ted/ts)),spd2=1;end end 12号功能块开关运算 functiony=f12f(x1,x2,x3) % %开关运算(二位选择运算) % if(abs(x3)<0.01)y=x1; elsey=x2; end 13号功能块周期方波 functiony=f13f(t1,t2) %周期方波发生器 % %此功能用来产生周期方波信号周期为t1,方波宽度为t2, %再程序中将用到一个中间保存变量着定时器 %把时间t赋给中间变量ymv,然后比较中间变量ymv,大于t1就置ymv为0 globalttstmaxymvyd1yd2spspd1spd2 tsh=0.5*ts; if(t>=0) if(ymv(sp)>=0&ymv(sp) ymv(sp)=ymv(sp)+ts; if(ymv(sp)>=t1-tsh)ymv(sp)=0;end sp=sp+1; end 14号功能块乘法加法 functiony=f14f(x1,x2,x3) %乘法运算 %y=x1*x2+x3 y=x1*x2+x3; 15号功能块 functiony=f15f(k,t0) % %斜坡信号 % globalttstmaxymvyd1yd2spspd1spd2 if(t>t0)y=k*t; elsey=0; end y t 16号功能块 functiony=f16f(x1,ω,t0) % %正弦闸门函数 % (ω为角频率); % globalttstmaxymvyd1yd2spspd1spd2 if(t>t0-0.5*ts)y=x1*sin(ω*(t-t0)); elsey=0; end 17号功能块 functiony=f17f(x1,k,x3) % %饱和非线性(限幅) % globalttstmaxymvyd1yd2spspd1spd2 if(abs(x1)<=abs(x3)) y=k*x1; elseif(x1>abs(x3))y=k*abs(x3); elsey=-k*abs(x3); end 18号功能块死区非线性 functiony=f18f(x1,k,x3) %死区非线性 if(abs(x1)<=abs(x3))y=0; elseif(x1>abs(x3))y=k*(x1-x3); elsey=k*(x1+x3); end 19号功能块小信号切除 functiony=f19f(x1,k,x3) % %小信号切除 % if(abs(x1)<=abs(x3))y=0; elsey=k*x1; end 20号功能块死区滞环继电非线性 (x2>=0,x3>=0且x2>=x3) functiony=f20f(x1,x2,x3) % %死区滞环继电非线性 %x2>=0;x3>=0;且x2>x3 globalttstmaxymvygispydspd; y=ymv(sp); 图死区/滞环/继电非线性程序流程图 if(y==1&x1 y=0; end if(y==0) if(x1>=x2)y=1;end if(x1<=-x2)y=-1;end end ymv(sp)=y;sp=sp+1; 21号功能块滞环非线性 functiony=f23f(x1,x2,x3) %滞环非线性 globalttstmaxspiymvydyg y=ymv(sp); y1=x3*(x1-x2); (x2>=0,x3>0) y2=x3*(x1+x2); if(x1>=ymv(sp+1)) if(y1>=y)y=y1;end else if(y2 end ymv(sp)=y;ymv(sp+1)=x1; sp=sp+2; 22号功能块多模态PID控制器 functiony=f22f(x1,k1,td,ki) %M-PID一种典型的仿人智能控制算法。 globalttstmaxspymv de=x1-ymv(sp);ymv(sp)=x1;sp=sp+1; dde=de-ymv(sp);ymv(sp)=de;sp=sp+1; if(x1*de>=0)y=k1*x1; elseif(dde*de>0)y=td*de/ts; elsey=0; end if(x1*de>=0)ymv(sp)=ymv(sp)+ts*ki*x1;sp=sp+1; elseymv(sp+1)=ymv(sp+1)+ymv(sp);ymv(sp)=0;sp=sp+1; end y=ymv(sp)+y;sp=sp+1; 注: 以上22号功能块所实现的算法是柏建国教授多年研究的一种基本智能控制算法,其数学表达示如下: 全结构仿真matlab主程序 设系统的结构方框图如下图示: 则系统用功能块函数的图形表示为: clearall globalttstmaxymvyd1yd2spspd1spd2; disp('xxxxxx') i=2;ymv(100)=0;spd1=1;spd2=0;yd1(200)=0;yd2(100)=0; %x1=input('inputx1=');%x2=input('inputx2=');%t0=input('inputt0='); kk=11.266;kd=1.553;ki=6.6667;t=0;ts=0.001;tmax=1; tem=floor(tmax/ts+1);y(tem,4)=0;tt(tem)=0; while(t sp=1; y(i,1)=f01f(1,0,0); yy1=y(i,1)-y(i-1,4);%i-1是为使用上一次计算出的值 yy2=f22f(yy1,kk,kd,ki); y(i,2)=f05f(yy2,1,.5); y(i,3)=f05f(y(i,2),1,.4); y(i,4)=f11f(y(i,3),0.15,1); tt(i)=t;t=t+ts;i=i+1; end plot(tt,y(: 4)) %axis([0,1,0,1.5]) %另一种全结构主程序 clearall globalttstmaxymvyd1yd2spspd1spd2; si=1;ymv(100)=0;spd1=1;spd2=0;yd1(200)=0;yd2(100)=0; kk=11.266;kd=1.553;ki=6.6667;x1=1;x2=0;x3=0;y4=0;t=0;ts=0.001;tmax=1; while(t sp=1;y1=1-y4;y2=f22f(yy1,kk,kd,ki);y3=f05f(y2,1,.5);y4=f05f(y3,1,.4); y5=f11f(y4,0.15,1);y(si,1)=y5;y(si,2)=1 tt(i)=t;t=t+ts;si=si+1; end plot(tt,y)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 仿真 功能