极点配置法确定滑模面系数

目录

前言

1. 对于一般通式的极点配置

​​2.选取滑模面s = c*x

3.极点配置实例讲解

3.1 判断(A,B)是否可控

3.2 求变换矩阵

3.3 求解滑模面系数

3.4 个人见解


前言

其实在跟踪变结构控制那篇文章已经介绍了这个方法,只是可能公式太多有点乱,在这里整理一下,跟踪变结构控制文章链接:

基于参考模型的主动悬架滑模控制(详细滑模控制推导)_Mr. 邹的博客-CSDN博客

1. 对于一般通式的极点配置

一般通式: 

\dot{x} = Ax+Bu+w

其中维度关系为:A为n*n,B为n*m,即n个状态变量,m个输入。

其中A和B可以改写为:

其中B1为(n-m)*m,B2为m*m。

注:B2不能为0,否则in(B2) = inf;对于多输入需要用pinv函数求伪逆。

remark 1:如果(A,B)为可控对,则(A11,A12)也是可控的。

remark2:只要rank(B)=m,则存在如下形式的变换矩阵:

将上述一般形式状态空间方程化简为标准形式,即{\color{Red} \tilde{x}=Tx}

\tilde{x}=TAT^{-1}x+TBu=\tilde{A}x+\tilde{B}u

其中:

​​​​​

​​2.选取滑模面s = c*x

则由于变化矩阵的存在,所以:

s=cx=cT^{-1}\tilde{x}=\tilde{c}\tilde{x}=[\tilde{c1} \tilde{c2}][\tilde{x1} \tilde{x2}]'

{\color{Red} \tilde{c}=cT^{-1}},其中c为m*n。

当系统到达切换面上时或者说滑动模态的条件有:s = 0,s' = 0,得到

注:这里滑模面形式为s = cx,实际上可以表示为s = ce,这里假设位置指令xd = 0即可。

所以误差动态方程为:

所以可以通过极点配置反馈保证x1以适当的指数衰减率趋向于零,则 x2也以同样的指数衰减率趋向于零。

即存在极点集:

所以最终得到滑模面系数为:

​​​​​ ​​​​​由于\tilde{c_{2}}为m*m的非奇异矩阵,所以通常选取为I_{m},进而简化为:

​​​

3.极点配置实例讲解

这里以一篇论文为参考进行实例配置:

[1]周兆敏.用极点配置方法设计滑模控制器[J].信息与控制,1988(04):47-49.

3.1 判断(A,B)是否可控

A = [0 198 0;-0.64 -18.18 4.85;0 0 150];
B = [0;0;900];
Qc = ctrb(A,B);%可控性判断矩阵
np = rank(Qc);%用若rank(Qc) = n,即满秩则可控
if np == length(A)
    disp('可控')
end

3.2 求变换矩阵

由于是(A,B)是可控的,所以(A11,A12)也是可控的,所以可以使用极点配置

n = 3;m = 1;%矩阵维度
T = [eye(n-m) -B(1:(n-m))*inv(B(n));zeros(1,(n-m)) eye(m)];

T =

     1     0     0
     0     1     0
     0     0     1

3.3 求解滑模面系数

A1=T*A*inv(T);%变换后的标准型矩阵
A11=A1(1:np-1,1:np-1);
A12=A1(1:np-1,np);
p=[-29.11 -640.2];%需要配置的极点
% 计算极点配置的反馈矩阵
K=acker(A11,A12,p)
% 滑模面系数
C=[K,eye(1)]*T

C =

   19.2747  134.2536    1.0000

程序汇总:

% 状态方程
A = [0 198 0;-0.64 -18.18 4.85;0 0 150];
B = [0;0;900];
Qc = ctrb(A,B);%可控性判断矩阵
np = rank(Qc);%用若rank(Qc) = n,即满秩则可控
if np == length(A)
    disp('可控')
end

n = 3;m = 1;%矩阵维度
T = [eye(n-m) -B(1:(n-m))*inv(B(n));zeros(1,(n-m)) eye(m)];

A1=T*A*inv(T);%变换后的标准型矩阵
A11=A1(1:np-1,1:np-1);
A12=A1(1:np-1,np);
p=[-29.11 -640.2];%需要配置的极点
% 计算极点配置的反馈矩阵
K=acker(A11,A12,p)
% 滑模面系数
C=[K,eye(1)]*T

3.4 个人见解

可以看到上述的求解结果和文献不一致,文献中所用的方法是展开后进行比对,这里按照它的方法走一遍:

syms c1 c2 s
A11 = [0 198;-0.64 -18.18];
A12 = [0 4.85]';
f = A11-A12*[c1 c2];
det(s*eye(2)-f)

ans =
 
(9603*c1)/10 + (909*s)/50 + (97*c2*s)/20 + s^2 + 3168/25

代入极点到多项式:

比对上述结果求解出

c1 =

   18.4626


c2 =

  130.5691

程序汇总:

syms c1 c2 s
A11 = [0 198;-0.64 -18.18];
A12 = [0 4.85]';
f = A11-A12*[c1 c2];
det(s*eye(2)-f)
% ans =
%  
% (9603*c1)/10 + (909*s)/50 + (97*c2*s)/20 + s^2 + 3168/25
c1 = (17856.36-3168/25)/(9603/10)
c2 = 633.26/(97/20)

可以看到通过acker函数求解结果与比对法求解结果很接近,所以个人觉得文献有些问题,欢迎批评指正!

参考文献:

[1]杨金霞. 车辆半主动悬架模型跟踪变结构控制的研究[D]. 江苏:南京林业大学,2006. DOI:10.7666/d.y913537. 

[2]王亮. 汽车主动悬架模型跟踪变结构控制研究[D]. 山东:山东理工大学,2009. DOI:10.7666/d.y1507198.

[3]直驱式永磁同步风力发电机中混沌运动的滑模变结构控制[J]. 物理学报,2009,58(11):7552-7557.

[4]《变结构控制系统-姚琼荟》

[5]周兆敏.用极点配置方法设计滑模控制器[J].信息与控制,1988(04):47-49.

你可能感兴趣的:(滑模控制,悬架控制,现代控制,SMC)