计算机控制状态空间反馈课程设计

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

控制系统状态空间设计

设计对象

系统的对象模型为:

)8)(4(1)(++=s s s s G

设计目的

A :试确定一个状态负反馈阵K ,使相对于单位阵阶跃参考 输入的输出过渡过程,满足如下的期望指标:超调量<=20%, 峰值时间<=0.4s 。

B :如果系统的状态变量在实际上无法测量,试确定一个状态观 测器(全维状态观测器),使得通过基于状态观测器的状态反馈, 满足上述期望的性能指标。

设计要求

1. 要求学生掌握当Gc (s )设计好后如何将其变换为离散算法Gc (Z ) 以及如何将Gc (Z )转换在计算机上可完成计算的迭代方程。

2. 要求学生能掌握工业中常用的基本PID 算法。

3. 掌握一阶向前,向后差分及双线性变换离散化的具体做法及应用 场合。

4. 熟悉PID 两种基本算法的计算公式:位置算法和增量算法。

5. 熟练使用MATLAB 软件,掌握其仿真的方法、步骤及参数设置。

6. 了解计算机控制系统的组成及相应设备的选用等问题。设计方法及步骤

1.利用Simulink 进行仿真,判断是否满足期望的性能指标。系统仿真方框图如下:

系统仿真结果如下:

有图可知,系统不满足期望的性能指标,需要进行配置。2.由期望的性能指标求出闭环系统的期望极点。

首先有典型二阶系统性能指标与系统参数之间的关系,确定统参数,然后再确定系统的主导极点和非主导极点。

由系统的性能指标:超调量<=20%,峰值时间<=0.4s。可以求

出ζ =0.456 Wn=8.84。

因此选取ζ =0.60 Wn=13.00为系统参数

由系统的特征方程可以求出系统的特征根为:

S 1=-7.8+10.4j ,S 2=-7.8-10.4j

令系统的非主导极点为:

S 3=-130

则需要配置的极点是是:

P=[-7.8+10.4j,-7.8-10.4j,-130];

3.求出系统空间表达式。利用MATLAB 有关模型转换函数可求得

A =⎪⎪⎪⎭

⎫ ⎝⎛---010001

13212 B =⎪⎪⎪⎭

⎫ ⎝⎛001

C =()100

D =0

4.判断系统的能控能关性,确定系统是否能够通过状态反馈实现极 点的任意配置。

能控性判别矩阵Q=⎪⎪⎪⎭

⎫ ⎝⎛--100121

0112121 系统的可控矩阵阶数为3,为满秩,则系统是能控的。

5.求出用于极点配置的状态矩阵K :利用函数K=acker (A,B,P ),

其中参数A 、B 为系统的状态方程参数矩阵,P 为期望的极点向量, K 为状态反馈矩阵。

K =(134 2165 21969)

6.求出输入增益Nbar :

Nbar =21970

7.求出反馈后系统的闭环状态空间表达式:

At =⎪⎪⎪⎭

⎫ ⎝⎛---010001

219702197146 Bt =⎪⎪⎪⎭

⎫ ⎝⎛0021970

Ct =(0 0 1)

Dt =0

系统的阶跃响应如下:

满足所给定的性能指标。

8.配置状态观测器:

由于期望极点为:

P=[-7.8+10.4j,-7.8-10.4j,-130];

又由于希望观测器的响应要快于原系统的响应,配置状态观测器 的极点应尽量离原极点距离远一些,故可设为为:

P=[-23.4+31.2j,-23.4-31.2j,-260];

9.a:求系统的能关矩阵:

Qo =⎪⎪⎪⎭

⎫ ⎝⎛001010100

可知系统能观测,可以进行配置。

b:求状态观测器增益矩阵:

L =⎪⎪⎪⎭

⎫ ⎝⎛29010120264590

10.求基于状态观测器的状态反馈闭环系统的状态空间表达式:

At= ⎪⎪⎪⎪⎪⎪⎪⎪⎭

⎫ ⎝⎛--------2900000010120000002645903010000000000000000219702160130219702200150

Bt =⎪⎪⎪⎪⎪⎪⎪⎪⎭

⎫ ⎝⎛0000021970 Ct =(0 0 1 0 0 0)

Dt=0

系统运行如下:

由图可知,系统的阶跃响应比原系统有较快的响应,且满足所设定的条件。

设计所用程序如下:

反馈程序

num=1;

den=[1 12 32 1];

tf(num,den)

[A,B,C,D]=tf2ss(num,den)

n=length(A);

Q=ctrb(A,B)

m=rank(Q);

if m==n

disp('system state variable can be totally controlled(系统可控)')

P=[-7.8+10.4j,-7.8-10.4j,-130];

K=acker(A,B,P)

else

end

s=size(A,1);

Z=[zeros([1,s]) 1];

N=inv([A,B;C,D])*Z';

Nx=N(1:s);

Nu=N(1+s);

Nbar=Nu+K*Nx

At=A-B*K

Bt=B*Nbar

Ct=C

Dt=D

step(At,Bt,Ct,Dt);

hold on;

grid;

相关文档
最新文档