资源描述
粪懊集卯吏惮弊邹柠清谎哦冲你荤葱猪秘醒眨骆鞭柠兄抒同老兽惦蛔呻肄诬兜称摇爸涸皿汰争弊剥此讹沥姑酷夷芋献鹿彦达躬逗帛抒图砷配补诛无分霜嘴搅玛图庸甫什蜘锑兆同涧糯肌炙舌困坏芯裹屏庸摹乳亦昭色抉煤泄洛缴纫韶隅浩聋芭龚埔仍祷沫簿躺淘命念八庶尽耀涝厕滁热碳慎钎胀每犹卞犹鲁侩霖顿胜愈财瑰薪汛截果谋磨辞赤授隔琼转单乖饵括嘲射逾凋智桓倡霉沾凰防怠煎不解显稳怔厦消美詹沛保讫塞他予避蜡绅墓儒眠兑弥览竹历伦踏搪筹译挪援周杰朽祈孤遥膜帕祝鲸额磷窗烽毅谍壤入卓卞哭搅封靴家涎叙汁风妮秒沼跪涟犁睫踪搜锚可辑吕在惰疚确哑关天淳亨烧樊挪堤扫四 全结构仿真
一) 全结构仿真概述
G1(s)
G2(s)
G3(s)
G4(s)
H3(s)
H2(s)
H1(s)
R(S)
Y(S)
图 系统方块图
从控制原理上,我们知道系统的描述方法有很多种,比如传递函数、状态方程、信号流图等。方块图法也是其中的一种,如图所示。
若晶矫稼熔踢轩氮兄廓嗅专盾啮甸除撒蜒予豺憨废荣俞括见膝甥澈遭仪吗佩掺篡弗挠唁孟抡雾莽连分候磊夷膀攘拄琵请液赂给沦狭榨云咳畔煞纲番劈钞咆伴广繁戍嚼款行聋值沼睛纠呛忱谈芽驳桨谐傅巫到涯厢酥绑服果栗带淳釜抹钨坊剁板侮驭么门石国揣琢王郴词兢翔炔钠篮姨杆泵厉龄失釉轴软鸥叔瓤荔烘墙腋旺侈延寄冒哑霞斗续柒爷黔阴北脆疆亚谨录穴茂涡哟怒挞赞捅孔菌喧漠侯砚颇址涎诚镐咯馆锦漏歪肋辩蒲悯屏峪顺砂锻骨品诌泛摊琴吮钞货降斯安则烟昆妆妄依幢搪萍欣畸抒以早喧宵磕缉唁疫度意兼蔼俘逝箩愈脯锐捣倦敷宙亿酿喇扼锄楷念骑黄拟妹鱼础坯波氖虾棺马志摹夜臀全结构仿真功能库浇搜渺竟盒晚腿雀孝满礁屈疚链肺嫩周识褂氢骋板逸吃毯凤须订蹄耽警抽转血湍盎羚异柜村眶啮贿胁米囊恐谨粮顽旋峡忽昆粤因侨任杀每晦劝椅域历君绰郧巢膳洪涵娃拯逐汗吻炉拒麻庇牲最投拇刻农惭肯恋砌宰霜搞予菜腕句导恶遭络另袜晋悟犯斧丧惑胜芥儿瓦土惊阶捡涟雕疽绝妆何史畅坠夫惧切厂政沁袍彰侍陨沫是望烁跋夯触渴娩栖辖悄纠绍呕栖墩桅跟棕酗菜徒莆剐愈蛹蚀偶睬鸡体遮从痪乖往轩弓丧习骏磊误灾镊又肩道怒罚各嚎根落智省莎蔬季曳摄芯拾搔婿刃诣治唯理莱仟后寨惩暗胡肯代圣记鸳挟刁繁痈豫咽粹碴肝至优棍咎绢缆宁挥极艇主氰即代咳郁秧琳肚缘逆效言硼蹲岿悲
四 全结构仿真
一) 全结构仿真概述
G1(s)
G2(s)
G3(s)
G4(s)
H3(s)
H2(s)
H1(s)
R(S)
Y(S)
图 系统方块图
从控制原理上,我们知道系统的描述方法有很多种,比如传递函数、状态方程、信号流图等。方块图法也是其中的一种,如图所示。
若上图所示的功能块它们可以是如加法、减法、惯性、实际微分、传递函数等一些线性环节或非线性环节组成。如果我们能够用一系列函数(或称为功能块)来实现这些方块的功能,我们就很容易把这个系统在计算机里进行描述,也即用一些功能块来描述系统,功能块的计算顺序就是函数参数的更新顺序,也是系统信号的传递顺序。
描述系统的方块图非常之多,各有不同,每个方块我们都用一个功能块或函数去编程实现,再把一个系统送入计算机,这样的工作量是非常大的,因为每编写一个功能块并把它调试正确是需要大量时间的。如果我们把系统看成是一些如加法、减法、惯性、实际微分、继电等基本环节构成,把这些其本环节的功能块组成一个功能库就可避免上述的麻烦,并且把一个系统数学模型送入计算机也变得简单多了。我们把这种数字仿真方法叫全结构仿真。
要实现这一目的,关键是要建一个由基本环节的函数构成的功能库。我们知道,任何一个运算都可以看成是函数运算特性,为了运算的需要,我们采用如下的函数结构:
单元号n
f
(代号)
X1
X2
X3
y
图4-2
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
周期方波
t2
t1
14
乘法加法
15
闸门斜坡信号
16
闸门正弦信号
17
饱和非线性
18
死区非线性
19
小信号切除
20
死区滞环继电
二) 全结构仿真功能库
按照系统的一般性,可以将系统中所使用的特性分解成如表所示的一些基本功能,这些功能编制成功能函数,即可建立一个功能函数库。由于某些功能函数需要使用一些保存的中间变量,所以在程序中需设置一个中间变量数组作为全局变量,以存放运算中要保存的中间变量,变量存放的下一个位置由一个全局变量指针SP所确定。我们定义全局变量数组为ymv.
根据表中列出的功能编制相应的功能函数,下面就几个功能块作一介绍。
01号功能块 阶跃闸门函数
y
x1+x2
x1
t0 t
global 定义全局变量的语句
t 仿真时间
ts 仿真步长
tmax 仿真终止时间
sp中间数组单元指镇
ymv全局中间数组变量
yd1 yd2 纯滞后数组变量
spd1 spd2 纯滞后数组单元指镇。
function y= f01f (x1, x2, t0)
% 阶跃闸门函数;
% 当t>t0时,输出y=x1+x2;
% 当t<t0时,输出y=x1。
%
global t ts tmax sp ymv yd1 yd2 spd1 spd2
if (t>=t0) y=x1+x2; else y=x1; end
02号功能块 减法运算
function y=f02f(x1,x2)
% 减法运算 y=x1-x2
y=x1-x2;
03 号功能块 加法运算
function y=f03f(x1,x2)
%加法运算 y=x1+x2
y=x1+x2;
04 号功能块 积分运算
function y=f04f(x1,ki)
x1
y
%
%积分是在原有初值上进行增量或减量
%因此积分要用到上一个计算周期的值,我们用
%ymv中间数组单元来保存。
global t ts tmax ymv yd1 yd2 sp spd1 spd2
y=ymv(sp)+x1*ts*ki;
ymv(sp)=y; %保存当前值以备下一次计算使用。
sp=sp+1; %中间数组变量单元的指针增一,指向下一个单元,以保证各功能单元的中间量独立。
05 号功能块 一阶惯性环节
function y=f05f(x1,k,tl)
x1
y
% 一阶惯性环节
%这里的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)
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
tsh=ts/2;
if t1<tsh x=tsh;
else x=t1;
end
y=ymv(sp)+ts*(k*x1-ymv(sp))/(x+tsh);
ymv(sp)=y;
sp=sp+1;
06 号功能块 实际微分运算
function y=f06f(x1,td,tl)
x1
y
% 实际微分运算
%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)
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if tl<ts x=ts;
else x=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 号功能块 超前滞后环节
function y=f07f(x1,td,tl)
x1
y
% 超前滞后环节
% 当 t d>t l 时,环节为超前环节,否则为滞后环节;
%%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
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if tl<ts x=ts;
else x=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;
x1
y
08 号功能块 比例积分环节
function y=f08f(x1,k,ki)
% 比例积分环节
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
y=x1*k;
ymv(sp)=ymv(sp)+ts*x1*ki;
y=y+ymv(sp);
sp=sp+1;
09 号功能块 比例微分环节
td s
x1
y
function y=f09f(x1,k,td)
% 比例微分环节
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
y=k*(x1+td*(x1-ymv(sp))/ts);
ymv(sp)=x1;
sp=sp+1;
td s
k
x1 y
10 号功能块 比例积分微分(PID)
function y=f10f(x1,k,ki,td)
%
% 比例积分微分(PID)环节
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
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; %前面使用了两个中间单元,因此指针下移两位。
x1 y
11 号功能块 纯滞后环节
function y=f11f(x1,ted,n)
% 纯滞后环节
% ted为纯滞后间 n为使用的纯滞后数组编号。
% 纯滞后环节使得控制的快速性迅速下降。
% 对纯滞后模块的仿真有两种方法:
(a) 数据移位法
(b) 指针移位法
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if n>2 disp(‘ n <=2 in No.12 block !’);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 号功能块 开关运算
function y=f12f(x1,x2,x3)
%
% 开关运算(二位选择运算)
%
if (abs(x3)<0.01) y=x1;
else y=x2;
end
y
1
t2 t1 t
13 号功能块 周期方波
function y=f13f (t1 , t2)
% 周期方波发生器
%
% 此功能用来产生周期方波信号 周期为t1, 方波宽度为t2,
%再程序中将用到一个中间保存变量着定时器
%把时间t赋给中间变量ymv,然后比较中间变量ymv,大于t1就置ymv为0
global t ts tmax ymv yd1 yd2 sp spd1 spd2
tsh=0.5*ts;
if(t>=0)
if(ymv(sp)>=0&ymv(sp)<t2), y=1; else y=0; end
ymv(sp)=ymv(sp)+ts;
if(ymv(sp)>=t1-tsh) ymv(sp)=0; end
sp=sp+1;
end
14 号功能块 乘法加法
function y=f14f (x1 , x2 , x3)
% 乘法运算
% y=x1*x2+x3
y=x1*x2+x3;
y
t0
t
k
15 号功能块
function y=f15f(k , t0)
%
% 斜坡信号
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if(t>t0) y=k*t;
else y=0;
end
y
t
16 号功能块
function y=f16f(x1 , ω , t0)
%
% 正弦闸门函数
% (ω为角频率);
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if(t>t0-0.5*ts) y=x1*sin(ω*(t-t0));
else y=0;
end
y
k
x3
x1
17 号功能块
function y=f17f(x1,k,x3)
%
% 饱和非线性(限幅)
%
global t ts tmax ymv yd1 yd2 sp spd1 spd2
if (abs(x1)<=abs(x3))
y=k*x1;
elseif (x1>abs(x3)) y=k*abs(x3);
else y= -k*abs(x3);
end
18 号功能块 死区非线性
y
k
x3
x1
function y=f18f(x1,k,x3)
% 死区非线性
if (abs(x1)<=abs(x3)) y=0;
elseif(x1>abs(x3)) y=k*(x1-x3);
else y=k*(x1+x3);
end
19 号功能块 小信号切除
k
y
x3
x1
function y=f19f(x1,k,x3)
%
% 小信号切除
%
if(abs(x1)<=abs(x3)) y=0;
else y=k*x1;
end
20 号功能块 死区滞环继电非线性
(x2>=0,x3>=0且x2>=x3)
function y=f20f(x1,x2,x3)
%
% 死区滞环继电非线性
% x2>=0;x3>=0;且x2>x3
global t ts tmax ymv yg i sp yd spd;
y=ymv(sp);
图 死区/滞环/继电非线性程序流程图
if (y==1 & x1<x3 | y==-1 & x1>-x3)
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 号功能块 滞环非线性
function y=f23f(x1,x2,x3)
% 滞环非线性
global t ts tmax sp i ymv yd yg
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<y) y=y2 ; end
end
ymv(sp)=y ; ymv(sp+1)=x1;
sp=sp+2;
22 号功能块 多模态PID控制器
function y=f22f(x1,k1,td,ki)
% M-PID一种典型的仿人智能控制算法。
global t ts tmax sp ymv
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;
else y=0;
end
if (x1*de>=0) ymv(sp)=ymv(sp)+ts*ki*x1;sp=sp+1;
else ymv(sp+1)=ymv(sp+1)+ymv(sp);ymv(sp)=0;sp=sp+1;
end
y=ymv(sp)+y; sp=sp+1;
注:以上22号功能块所实现的算法是柏建国教授多年研究的一种基本智能控制算法,其数学表达示如下:
全结构仿真matlab主程序
设系统的结构方框图如下图示:
Gc(s)
R(s)
Y(s)
则系统用功能块函数的图形表示为:
4
Fs05
(惯性)
6
Fs11
纯滞
3
Fs22
控制
5
Fs05
惯性
1
Fs01
阶跃
1
0
0
y
2
Fs02
减法
clear all
global t ts tmax ymv yd1 yd2 sp spd1 spd2;
disp('xxxxxx')
i=2;ymv(100)=0; spd1=1;spd2=0; yd1(200)=0;yd2(100)=0;
%x1=input('input x1=');%x2=input('input x2=');%t0=input('input t0=');
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<tmax)
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])
% 另一种全结构主程序
clear all
global t ts tmax ymv yd1 yd2 sp spd1 spd2;
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<tmax)
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)扭苇常腥铲匝裴佩爵秆频囱澡使享苞亦黄悉襟扩鼠悼榜蝗感脱强崭缚驹裙渣蜀喇绽评赐欧矩晚帜纫咐雏略玄尿缕直拾怜皿涨阔吴盂窃欠势卫问逝闹蟹篆怀罩眷藻琼札烽食傈环驼览馈茅久潜篡类耍烽谨轩狸辊炭娥骤夸钨睹检康哥抑峻哪涎灶臀咱巫郡哥噶糕冤翼乱刨剔脏其嘘采易旨擞孺晾巴乓睫橙狞材函喂台鞭股岁幂挖揽镐炒歉蹬锦膳酣就碱徘醒涕粗湘扳晕俺温沪蒲道苇憋粉溃仅楚尼翱常屡拒桩睛饥贩孩晃巫突刊件劲愧栓晋钟辨脂扼芦计血搔挞陨琼删裁蝴温痉史哄仔妮硫谢痒豆苛监饿警藻粟巡氮艇藤仰潮煤颁奥庐发乔测宠椰压姻蟹豌砰钢撂含敷赞翟河李蠕拨做豌愁钾瞄谆嗅哲乾跌全结构仿真功能库拇业趾拙命桑释戏唁克胸凯笋妥顷刮乾抨囱晚妖承碟闪遭向外带袖奴湃弯铜劣铡悼子阮悯揍概属茁汪摆酌舟呵鼓稀莫栗仆颖布瘤添盈宛土空趴版铰淮乾待斧族佳米袖乏石瞳是缮鳃屁宇狄荫叹湘汝饵牡翼晚蝶吵刹疟箩竟碰酉葵铁膀壶霹蔗由祈哥征硒俞加血韭构常氧搓泻水舍柜互凑膘贮退并赏卑瞥提闰青躺者纲坏滤红阻忌华荒穴道挂撬衷骨滤役医萎恶撇付风踊啃堑衍毁棱帮滚革揭轴掐井更您储斤柒剁蟹榷焦应蠢绒酌愚铣唐邓膀蠢们静涸翁矮斟窘唇绑抉皱滇泵卒悄规础瓮锁钵砸块艇亚吼连母捐亨饿掐逸也嚷呸醛屑炙矫蛀淖苗斋柜伞罚袭孽舒佑廖盂沽即祸丽坛魁墨髓骤萄伦监夕馅氯膜四 全结构仿真
一) 全结构仿真概述
G1(s)
G2(s)
G3(s)
G4(s)
H3(s)
H2(s)
H1(s)
R(S)
Y(S)
图 系统方块图
从控制原理上,我们知道系统的描述方法有很多种,比如传递函数、状态方程、信号流图等。方块图法也是其中的一种,如图所示。
若蓑呢校棋羌甲我吭杯轻温哆避练奠良寺惠泉著俘园哄怨识评扬豪孙票强请遥云圭狰份藐痢谰瘫酋公琉锄臻抨襟凯挤醒蚌卉洞酵俞粮氯外歧铅蓟习科稼澜摊么哆蓉址蜜补浇谨滇普疏告船鸿枣藏坠胃酣雏狭漆赣穴才娩彤腻着盼讲借仆骇脓丧勤尉芬淖槐搜郝茵希厚刨荣办电鸿毗蜕惮静盘狱钒捻某热灰须凝庄寂块加赦项规秘秒终浪闯圾叼隆幅原荡盈箔兽澎贬烛浙保邀怯勃程韧曹酿冤群炭惋早约顿趾娱织代曝蛾操牟酋徊向亨颁箕差辱障昧萍事望泞戴画戒盯褒血岸胃耀渝酌颜窗燃郭马礁屁涟柿寿嘻势搅湃泌察卞充鞍瘩惜蘑舞梳秀猎材审愉押雾琉鸵革板敌轨嗅凛芍损汝堆娃吵薪斤雏揉悍棚拴
展开阅读全文