スイッチング関数(2)
[1] 状態方程式とスイッチング関数は次の標準形をとるように座標変換されていると仮定します。
このとき、等価制御
による閉ループ系は次式で表されました。
ここで、、は、(1)と(2)で与えられるとすると
となって、が安定行列なので、は個の零固有値を持ちます。一方、の非零固有値に対応する固有ベクトルをとすると、
すなわち
が成り立ちます。したがって、まず等価制御による閉ループ系のが望ましい固有値・固有ベクトルをもつように設計して、(7)からを決定することが考えられます。
● 1入力系の場合は固有ベクトル設定の自由度はありませんが、多入力系の場合は固有ベクトルの向きを設定する必要があり、これは元の状態方程式(状態変数の並び)に対して与えます。そこで(7)が元の状態方程式ではどう変わるかを調べておきます。
元の状態方程式
に対する標準形(1)は、適当な直交行列座標による座標変換
を行って(に注意)
のように得られたものでした。また(2)は次式に
に、(7)は次式に相当します。
いま、元の状態空間での固有ベクトルは、座標変換後には
に変わることに注意します。(12)から
を得ます。これから元の状態方程式に対するスイッチング関数と固有ベクトルについても、(12)と同様の関係が成り立つと言えます。すなわち固有ベクトルは元の状態空間で与えておいて、(14)からを決定してよいことがわかります。
演習C41…Flipped Classroom
スイッチング関数決定プログラムswfvplを用いて、図1の台車駆動型倒立振子を安定化する次のSMC則を求めよ。
図1 台車駆動型倒立振子
MATLAB |
%cCIP_smc2.m
%-----
clear all, close all
global mc m ell g th0
mc=1; m=0.1; ell=0.2; g=9.8;
ths=0; %input('ths = <0,180> ')/180*pi;
th0=3/180*pi; %input('th(0) = <0,180> ')/180*pi;
%-----
A=[zeros(2,2) eye(2);zeros(2,4)];
A(3,1)=0;
A(3,2)=-3*m*g/(m+4*mc);
A(4,1)=0;
A(4,2)=3*(m+mc)*g/((m+4*mc)*ell);
B=zeros(4,1);
B(3)=4/(m+4*mc);
B(4)=-3/((m+4*mc)*ell);
C=diag([100 180/pi])*eye(2,4);
%-----
lambda=[-0.8 0.5 -3];
nocomp=1;
specpos=rand(4,3)
specent=rand(4,3)
S=swfvpl(A,B,lambda,nocomp,specpos,specent)
%-----
Phi=-0.1;
P2=0.5*inv(-Phi);
Check=P2*Phi+Phi*P2
P2S=P2*S;
Leq=inv(S*B)*S*A;
LPhi=-inv(S*B)*Phi*S;
L=Leq+LPhi;
rho=0.6;
Ln=inv(S*B)*rho;
%-----
x0=[0;th0;0;0];
sim('CIP_smc_2015a.mdl')
%-----
%eof
|
Note C41 スイッチング関数決定プログラム2
Edwards and Spurgeon によって、(26)から、スイッチング関数の行列を求めるプログラムswfvplが開発されています。
MATLAB |
%test_swfvpl.m
%-----
clear all, close all
A=[0 1 0;
0 0 1;
0 0 0];
B=[0;
0;
1];
%-----
lambda=[-2 -3];
nocomp=0;
%固有ベクトルの要素の指定の有無 (1:指定、0:任意)
specpos=rand(3,3)
%固有ベクトルの要素の値 (0:零指定、1:非零指定、-1:非零任意)
specent=rand(3,3)
S=swfvpl(A,B,lambda,nocomp,specpos,specent)
Leq=inv(S*B)*S*A;
[V,pl]=eig(A-B*Leq)
%-----
lambda=[-1 1];
nocomp=1;
%固有ベクトルの要素の指定の有無 (1:指定、0:任意)
specpos=rand(3,3)
%固有ベクトルの要素の値 (0:零指定、1:非零指定、-1:非零任意)
specent=rand(3,3)
S=swfvpl(A,B,lambda,nocomp,specpos,specent)
Leq=inv(S*B)*S*A;
[V,pl]=eig(A-B*Leq)
%-----
%eof
|