用MatlabSimulink学控制.docx
- 文档编号:3352352
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:9
- 大小:159.29KB
用MatlabSimulink学控制.docx
《用MatlabSimulink学控制.docx》由会员分享,可在线阅读,更多相关《用MatlabSimulink学控制.docx(9页珍藏版)》请在冰豆网上搜索。
用MatlabSimulink学控制
控制器设计中的状态空间法
目录一览
系统
1.建模
2.分析
控制
3.PID
4.根轨迹
5.频率
6.状态空间
7.数字化
Simulink
8.建模
9.控制
控制器设计中的状态空间法(State-SpaceMethodsforControllerDesign)
控制器设计中的频率分析法是在频域中分析系统的一些特征,而状态空间法是在时域中分析、设计系统。
下面通过一个例子来学习状态空间法设计控制器。
1、建立数学模型
由牛顿定律和KVL建立有:
设各参数取值分别为:
M=0.05kg,R=1Ω,L=0.01H,K=0.0001,g=9.8m/s,取h=0.01m(假设此时的电流为1.4A),在其附近线性化系统:
其中,,控制变量u为输入电压,关心的输出为,可以写出状态空间方程,从而确定A,B,C,D。
A=[010;9800-2.8;00-100];
B=[0;0;100];
C=[100];
2、分析数学模型
poles=eig(A)
执行后结果有一正值31.3050,表示开环系统不稳定。
可以验证:
t=0:
0.01:
2;
u=zeros(size(t));
x0=[0.0100];
sys=ss(A,B,C,0);
[y,t,x]=lsim(sys,u,t,x0);
plot(t,y)
title('OPen-LoopResponsetoNon-ZeroINitialCondition')
xlabel('Time(sec)')
ylabel('BallPosition(m)')
3、使用极点位置设计控制器(ControlDesignUsingPolePlacement)
如果我们能够知道各时刻各状态变量的值,即用传感器实时测量磁质质量块的位置、速度,电路中的电流,称为full-state。
设计控制器作用于原系统如下所示:
如上图,简化起见,暂时不考虑,则,闭环反馈系统的状态空间方程变为:
这样系统的极点位置就变为的特征值,因此我们可以通过改变矩阵K的值来得到目标极点,进而实现目标响应,而这就是状态空间法控制系统的关键。
Matlab提供了 place(A,B,P) 及 acker(A,B,P) (多个极点处于同一位置时使用)函数来确定目标极点所对应的K值,其中P为目标极点向量。
p1=-20+20i;
p2=-20-20i;
p3=-100;//为三阶系统确定两个主极点,近似为我们熟悉的二阶系统,便于分析
K=place(A,B,[p1p2p3]);
sys_c1=ss(A-B*K,B,C,0);
lsim(sys_c1,u,t,x0);//绘制系统的零输入响应
xlabel('Time(sec)')
ylabel('BallPosition(m)')//轴标
由响应曲线可见,结果相当理想。
当然设置不同的极点会对应不同的动态响应,当动态响应不满足要求时,就要对应调节极点位置,比如动态响应过慢时,尝试向左移动主极点的位置,以得到更快的动态响应。
现在来考虑初始状态为0,输入信号为阶跃信号时的情况,为了使得系统的线性化有效,阶跃值应当选取的尽可能小,重写输入:
u=0.001*ones(size(t));
lsim(sys_c1,u,t);
axis([02-4E-60]);
执行上面的程序发现虽然系统稳定,但输出值并没有跟随阶跃信号。
可以通过前置控制量Nbar来解决这个问题:
Matlab中使用函数 rscale.m来确定Nbar的合适值,Nbar= rscale(sys,K) (sys为原开环系统状态空间方程),现在:
Nbar=rscale(sys,K);
lsim(sys_c1,Nbar*u,t);
axis([0201.2*10^-3])
此时系统输出稳定在0.001。
当然,并非所有的系统都可以用这种方法来实现控制,系统具有可控性的充要条件是系统的可控性矩阵(controllabiltymatrix,CO)满秩。
Matlab提供了ctrb(A,B) 及 ctr(sys) 来得到可控性矩阵(参数皆为原开环系统的)。
而矩阵的秩可由rank函数得到。
如判断例子系统的可控性:
rank(ctrb(A,B))
结果为3,CO满秩,即系统可控。
4、设计观察器(ObserverDesign)
在实际情况中我们常常不能获得所有状态量的当前值,这是就需要设计观察器来估计它们,如下所示:
上边观察器只适用于y=Cx即D=0的系统,观察器基本是控制系统的复制,它们有相同的输入,微分方程也基本相同。
这里先只考虑非0初始值,输入为0时的响应。
首先分析观察器,观察器的极点为的特征值,由于我们需要观察器有比对象系统快得多的响应,我们将观察器传递函数的极点取的大五倍,使其有比系统快得多的响应。
通常观察器的初始状态为0,使得误差初始值与系统相等,即为x0,观察系统响应(为了同时得到估计误差,此时将新的状态向量定义为,由此根据系统框图得到新的系统矩阵,输入矩阵,输出矩阵):
op1=-100;
op2=-101;
op3=-102;//观察器的极点
L=place(A',C',[op1op2op3])';//由A,C,以及观察器极点确定L
At=[A-B*K,B*K;zeros(size(A)),A-L*C];
Bt=[B*Nbar;zeros(size(B))];
Ct=[C,zeros(size(C))];//新的状态空间参数
sys=ss(At,Bt,Ct,0);
lsim(sys,zeros(size(t)),t,[x0x0]);//绘制系统的零输入响应
title('LinearSimulationResults(withobserver)')
xlabel('Time(sec)')
ylabel('BallPosition(m)')//标题、轴标
与可控性对应,系统是否具有可观性的充要条件是观测性矩阵(observabilitymatrix,OB)满秩。
Matlab提供了obsv(A,C) 及 obsv(sys) 来得到可观性矩阵(参数皆为原开环系统的),如判断例子系统的可观性:
rank((obsv(A,C)))
结果为3,OB满秩,即系统可控。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MatlabSimulink 控制