Smith预估控制

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东南大学能源与环境学院

实验报告

课程名称:计算机控制及系统

实验名称:Smith预估控制

院(系):能源与环境学院专业:热能与动力工程

姓名:学号:*******

实验室:金智楼实验时间:2014 年04月07 日评定成绩:审阅教师:

一 实验目的

通过实验掌握Smith 预估控制的方法及程序编制及调试。

二 实验内容

1. Smith 预估控制系统如图所示,

对象G(S)= K ·e

-τs

/ (1+T 1S)

,K = 1, T1 = 10 s , τ = 5 s ,

Wc(z)采用数字PI 控制规律。

2.对象扰动实验

画出U(t) = u0·1(t)时,y(t)曲线。

3.Smith 预估控制

(1) 构造W τ(S),求出W τ(Z)。 (2) 整定Wc(s)(按什么整定?) (3) 按图仿真,并打印曲线。

(4) 改变W τ(S)中K ,τ(对象不变),进行仿真比较,观察它们对调节 过程的影响。

三 实验步骤 1.拟订实验方案

(1)、对象扰动实验,G(S)离散化,采用后向差分

1()()()(1)

s

Y s K e G s U s T s τ-•==

+ 令 11z s T --= 则有:

y(k)u(k)=K ∙e

−τT lnz 1+T1T

(1−Z −1)

整理得:

11()(1)()TKu k N T y k y k T T -+-=

+ 其中 N T

τ

=

#include

#include #include #include

void main()

{

ofstream ofile("d:\\21.xls");

ofile<<"T"<<'\t'<<"u[k]"<<'\t'<<"y[k]"<<'\n';

double u0,T,T1=10,a,b,t=5,k=1;

double u[100],y[100];

int N,i;

cout<<"输入采样周期T:\n";

cin>>T;

cout<<"输入扰动阶跃值u0:\n";

cin>>u0;

a=exp(-T/T1);

b=k*(1-a);

N=int(t/T);

cout<<'\n';

cout<<"T"<<'\t'<<"u[k]"<<'\t'<<"y[k]"<<'\n';

cout<<'\n';

cout<<0<<'\t'<<0<<'\t'<<0<<'\t'<<'\n';

for(i=0;i<100;i++)

{

if(i==0)

u[i]=0;

else

u[i]=u0*1;

if(i<=(N+1))

y[i]=0;

else

y[i]=b*u[i-(N+1)]+a*y[i-1];

ofile<

cout<

}

o();

}

(2)、Smith 预估控制

按照Smith 的控制,构造1(1)

()(1)(1)

Ts s t K e W s e s T s τ---=-+

对其离散化得:111

1()(1)1N

t b z W z z a z

---=-- 其中 11T

T a e -=, 11(1)b K a =- N T

τ

取整数。

按照连续系统的临界比例带法整定()c W s ,整定时不考虑()t W s ,只考虑外面的反馈回路: 设外回路的传递函数'

1()1p s k K G s e T s

τ-=

+,将s jw =

代入传递函数,在临界震荡的情况下有:

1(arctan )j T k K e e τωωπ

-+-=,即:

1arctan T ωπτω=-

1k K =

求解得 0.367318ω=, 3.8069u k =,故217.1055u T π

ω

=

=, 1.73042.2u p k k =

=,14.25451.2

u i T

T ==。

按照整定的结果仿真,Smith 预估控制的算法步骤如下:

11121220

211

()()()

()(1)(1)()()()

()()()(){()()}

()()

(1)m m m m k

p j i

e k r K y k C k a C k b u k q k C k C k N e k e k q k T

u k k e k e j T T y k KT u k N y k T T ==-=-+-=--=-=+

+-+=

+∑

#include #include #include

double ZD(double t,double T,double T1) { double w,w1,d; int i; w=0; for(i=0;i<100;i++) { d=(T/2+T1)/(1-T1*T/2*w*w);

w1=(3.14-atan(d))/t;

相关文档
最新文档