matlab/simulinkonsen-mula.org/wp-content/uploads/2017/04/matlablec2.pdf2010/8/3...
TRANSCRIPT
2010/8/3 MATLAB・フィードバック制御系設計 1
MATLAB/Simulinkによる
フィードバック制御系設計第2部
平成22年度ものづくり人材育成・確保講座
大分大学工学部福祉環境工学科メカトロニクスコース松尾孝美
2010/8/3 MATLAB・フィードバック制御系設計 2
制御工学とは
MATLAB/Slmulinkの使い方古典制御系設計
伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 3
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 4
状態方程式と非線形システムの線形化(1)
mn RtRt ∈∈ )(,)( ux)()()( tBtAt uxx +=&
線形化(p.34-35)
状態方程式
例)天井から吊り下げられている1リンクアーム(1対のリンクとジョイントで構成される)
)(ty
)(tuリンク長質量
l2m
222
0 34
2mldrr
lmJ
l
== ∫
)()(sin)()(2
2
tutymlgtydtdDty
dtdJ =++
非線形項
2010/8/3 MATLAB・フィードバック制御系設計 5
状態方程式と非線形システムの線形化(2)線形化(p.34-35)
近似線形化法 )()()( tyyty Δ+∞=
)()()(cos)(sin)(sin)(cos)(cos)(sin))()(sin()(sin
21 tyMMtyyytyytyytyyty
Δ+=Δ∞+∞≈Δ∞+Δ∞=Δ+∞=
)(tyΔ は十分小さい
dtutymlgMdt
tydDdt
tydJ −=Δ+Δ
+Δ )()()()(
22
2
1mlgMd =
2010/8/3 MATLAB・フィードバック制御系設計 6
状態方程式と非線形システムの線形化(3)
))()((1)(2
2 sDsUmlgMDsJs
sY −++
=Δ
[ ] ⎥⎦
⎤⎢⎣
⎡=
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡−−
=⎥⎦
⎤⎢⎣
⎡
yy
y
tdtuyy
DmlgMyy
&
&&&
&
01
)(10
)(1010
2
伝達関数:
状態方程式:
線形化(p.34-35)
で有効1)( <<Δ ty
2010/8/3 MATLAB・フィードバック制御系設計 7
状態方程式と非線形システムの線形化(4)
厳密線形化法
線形化(p.34-35)
制御対象の動作範囲が大きい場合には,制御入力を用いて非線形項を打ち消して,線形化を行います.
)()(sin)( tvtymlgtu +=
)()()(2
2
tvtydtdDty
dtdJ =+
vJx
x
JD
xx
dtd
⎥⎥⎦
⎤
⎢⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡
⎥⎥⎦
⎤
⎢⎢⎣
⎡−=⎥
⎦
⎤⎢⎣
⎡ 10
010
2
1
2
1状態方程式:
入力を打ち消すだけでは線形化できないシステムも状態変数を非線形関数により変数変換することにより線形化できます.このような線形化はLie微分などの微分幾何学手法を用いて行うことができます.
2010/8/3 MATLAB・フィードバック制御系設計 8
状態方程式と非線形システムの線形化(5)線形システムの応答解析(p.35)
線形化した式を用いて,入力にいろいろな信号を入れたときの応答波形を確認します.
(1) 制御系を線形化した式をラプラス変換して伝達関数を求めます.
(2) ステップ応答,インパルス応答,周波数応答を求めます.
2010/8/3 MATLAB・フィードバック制御系設計 9
状態方程式と非線形システムの線形化(6)
線形システムを制御対象とし,いろいろなコントローラを装備したフィードバック制御系を構成します.
(3) 閉ループ伝達関数を計算します.
(4) 閉ループ系が安定になるコントローラの条件を求めます.
(5) 目標値へ追従するようなコントローラのパラメータを求めます.なるべく速く目標値に到達するようなコントローラのパラメータを求めます.
(6)外乱や制御対象の誤差などに安定性や目標値追従特性が影響を受けにくいコントローラを求めます.これらの性能をロバスト性(robustness)といいます.外乱や制御対象の誤差に安定性が影響を受けにくいとき,ロバスト安定(robustly stable)といい,目標値追従特性が影響を受けにくいとき,ロバスト性能がよい(good robust performance)といいます.
線形システムの制御系設計(P.35-36)
2010/8/3 MATLAB・フィードバック制御系設計 10
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化
状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 11
状態フィードバック(1)2次振動系の場合(p.36-38)
m2 m1壁
y2
バネ バネu(力)
y1
バネ定数をk1,k2粘性摩擦係数をc1,c2
221212212122
21121111
)()()()(
ycyycykyykymuyykyycym
&&&&&
&&&&
−−−−−−=+−−−−=
uyy
kkkkk
yy
ccccc
yy
mm
⎥⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡+−−
+⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡+−−
+⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡01
00
2
1
211
11
2
1
211
11
2
1
2
1
&
&
&&
&&
2010/8/3 MATLAB・フィードバック制御系設計 12
状態フィードバック(2)2次振動系の場合(p.36-38)
状態変数 [ ]Tyyyy 2121 &&=x
[ ]
uyy
yy
x
yy
x
yuyyy
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡−−
=⎥⎦
⎤⎢⎣
⎡=
⎥⎦
⎤⎢⎣
⎡=
==++
−−− EMCMKMI
yyEKCM T
111
21
00
,
&&&
&&
&
&&&
2010/8/3 MATLAB・フィードバック制御系設計 13
状態フィードバック(3)2次振動系の場合(p.36-38)
uxx BA +=&Fxu −=状態フィードバック
閉ループ系 xxxx )( BFABFA −=−=&
0)(lim =∞→
txt
行列(A-BF)が安定行列,つまり,(A-BF)の固有値の実部がすべて負
極配置:(A,B)が可制御である場合,(A-BF)の固有値を指定の値にするような状態フィードバックゲインFが存在します.
2010/8/3 MATLAB・フィードバック制御系設計 14
状態フィードバック(4)2次振動系の場合(p.36-38)
%ファイル名 param_sp.m% two-degree-of-freedom systemm1=1; m2=0.01;k1=100; k2=100;c1=0.001; c2=0.00001;M=[m1 0; 0 m2];K=[k1 –k1; -k1 k1+k2];C=[c1 –c1; -c1 c1+c2];E=[1; 0];inM=inv(M);%A=[zeros(2,2) eye(2); -inM*K -inM*C];B=[0; 0; inM*E];% 出力 mass 1 & 2 position y = C*x + D*uC=[1 0 0 0; 0 1 0 0];D=zeros(2,1);
2010/8/3 MATLAB・フィードバック制御系設計 15
状態フィードバック(5)2次振動系の場合(p.36-38)
% Pole placement(極配置プログラム)% ファイル名pole_sp.mclearparam_sp % param.mの呼び出しi=sqrt(-1)P=[-10+100*i -10-100*i -15+15*i -15-15*i];% place.mが閉ループ制御系の極を望まれる値にするMファイルF=place(A,B,P);eig(A-B*F)F
2010/8/3 MATLAB・フィードバック制御系設計 16
状態フィードバック(6)2次振動系の場合(p.36-38)
%(応答計算プログラム)% ファイル名 res_sp.mclfclearplace_sp % place_sp.mの呼び出し[y1,x1,T1]=impulse(A,B,C,D,1);[y2,x2,T2]=impulse(A-B*F,B,C,D,1);figure(1)plot(T1,y1,'-',T2,y2(:,1),':')legend('no control','feedback gain f1',0);xlabel('Time [s]')ylabel('Displacement [m]')
2010/8/3 MATLAB・フィードバック制御系設計 17
状態フィードバック(7)2次振動系の場合(p.36-38)
2010/8/3 MATLAB・フィードバック制御系設計 18
状態フィードバック(8)2次振動系の場合(p.36-38)
2010/8/3 MATLAB・フィードバック制御系設計 19
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバック
オブザーバ適レギュレータ
その他カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 20
オブザーバ(1)オブザーバ(p.38-39)
)()(),()()( tCttBtAt xyuxx =+=&
状態がすべて観測できるとは限らず,その一部,つまり出力しか観測できない
状態方程式
オブザーバ:観測できる出力から状態を推定する機構
)()()(ˆ)())(ˆ)(()()(ˆ)(ˆ tBtGtGCAtCtGtBtAt uyxxyuxx ++−=−++=&
オブザーバゲイン G
)()(ˆ)( ttt xxe −=推定誤差
を安定行列になるように選ぶ)( GCA −
0)(lim =∞→
tt
e
2010/8/3 MATLAB・フィードバック制御系設計 21
オブザーバ(2)オブザーバ(p.38-39)
2010/8/3 MATLAB・フィードバック制御系設計 22
オブザーバ(3)オブザーバ(p.38-39)
2010/8/3 MATLAB・フィードバック制御系設計 23
オブザーバ(4)オブザーバ(p.38-39)
2010/8/3 MATLAB・フィードバック制御系設計 24
オブザーバ(5)疑似状態フィードバック(p.38-40)
CxyBuAxx
=+=&
GyzGCBFALCzGyBFzAzCzyGBuAzz
Fzu
+−−=−+−=−++=
−=
)(
)(&
⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡−−−
=⎥⎦
⎤⎢⎣
⎡ex
GCABFBFA
ex
0&
&
状態方程式
疑似状態フィードバックコントローラ(動的安定化補償器)
閉ループ系
2つの行列(A-GC)と(A-BF)の両方とも安定行列であるならば,閉ループ系は漸近安定
limt→∞
x(t) = 0, limt→∞
e(t) = 0
2010/8/3 MATLAB・フィードバック制御系設計 25
オブザーバ(6)疑似状態フィードバック(p.38-40)
2010/8/3 MATLAB・フィードバック制御系設計 26
オブザーバ(7)疑似状態フィードバック(p.38-40)
2010/8/3 MATLAB・フィードバック制御系設計 27
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 28
適レギュレータ(1)uxx BA +=&
適レギュレータ(P.41-43)
( )正定対称行列準正定対称行列, ::
0
RQ
dtRQJ TT∫∞
+= uuxx
xu K−=
0:0 1
1
=+−+>
=−
−
QPBPBRPAPAPPBRK
TT
TRiccati方程式
状態方程式
評価関数
LQコントローラ
2010/8/3 MATLAB・フィードバック制御系設計 29
適レギュレータ(2)適レギュレータ(P.41-43)
MATLABコマンド [K,P,E] = LQR(A,B,Q,R)K:フィードバックゲインP:Riccati方程式の正定解E:行列A-BKの固有値
K =10.0000 8.4223 2.1812
P =104.2225 51.8117 10.000051.8117 37.9995 8.422310.0000 8.4223 2.1812
E =-2.6878 -1.2467 + 1.4718i-1.2467 - 1.4718i
2010/8/3 MATLAB・フィードバック制御系設計 30
適レギュレータ(3)適レギュレータ(P.41-43)
vxxvxuuxx BBKAKBA +−=⇒+−=+= )(, &&
新規入力に対する応答計算
% systemA = [ 0 1 0
0 0 10 -2 -3];
B = [001];
[n,r] = size(B);% weighting matrixQ = [ 100 0 0
0 1 00 0 1];
R = 0.01;
% feedback gain[K,P,E] = lqr(A,B,Q,R)% K = lqr(A,B,Q,R)AA = A-B*K;BB = B;CC = eye(n);DD = zeros(n,r);x0 = [1 0 0]; % initial values
t = 0:0.05:5;% case: v = 0v = zeros(1,length(t));lsim(AA,BB,CC,DD,v,t,x0)pause% case: v = sin(t)v = sin(t);lsim(AA,BB,CC,DD,v,t,x0)pause% case: step response v = 1v = ones(1,length(t));x0 = [0 0 0];lsim(AA,BB,CC,DD,v,t,x0)pausestep(AA,BB,CC,DD)
2010/8/3 MATLAB・フィードバック制御系設計 31
適レギュレータ(4)適レギュレータ(P.41-43)
2010/8/3 MATLAB・フィードバック制御系設計 32
適レギュレータ(5)適レギュレータ(P.41-43)
ss_LQgain.m
2010/8/3 MATLAB・フィードバック制御系設計 33
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
2010/8/3 MATLAB・フィードバック制御系設計 34
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
2010/8/3 MATLAB・フィードバック制御系設計 35
カルマンフィルタ(1)
カルマンフィルタ:制御対象の入出力から,出力と状態の推定値z(オブザーバの一種:確率的ノイズが入る)
uzxy
uzyuzz
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡=⎥
⎦
⎤⎢⎣
⎡
−−++=
0ˆˆ
)(D
IC
DCLBA&
vuxywuxx
++=++=
DCGBA&
ノイズの共分散
制御対象
nT
nT
nT NEREQE === }{,}{,}{ wvvvww
2010/8/3 MATLAB・フィードバック制御系設計 36
カルマンフィルタ(2)共分散
共分散を 小にするゲインL
})ˆ)(ˆ{(lim T
tEP xxxx −−=
∞→
0)()(:0 1
1
=+++−+>
=−
−
Tn
TTnnn
TTn
T
GGQGNCPRGNPCPAAPP
RPCL
[ ]
[ ] vwu
xy
wu
xx
+⎥⎦
⎤⎢⎣
⎡+=
⎥⎦
⎤⎢⎣
⎡+=
0DC
GBA& [m,n] = size(C);[n1,r] = size(G);sys = ss(A,[B G],C,[D zeros(m,r)])[Kest,L,P] = kalman(sys,Qn,Rn,Nn)
2010/8/3 MATLAB・フィードバック制御系設計 37
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
2010/8/3 MATLAB・フィードバック制御系設計 38
LQG(1)LQG(Linear QUadratic Gaussian)コントローラ:
コントローラを 適レギュレータとカルマンフィルタで構成
yxuxyuxx
xu
LKLDBLCADCLBA
K
+−−−=−−++=
−=
ˆ])([)ˆ(ˆˆ
ˆ&
Lgqcont = lqgreg(Kest,K)
2010/8/3 MATLAB・フィードバック制御系設計 39
LQG(2)LQG例題)倒立振子の場合
0cossin)(
sincos)(
2
2
2
22
2
2
2
2
2
=+−++
=⎟⎠⎞
⎜⎝⎛−+++
dtxdmlmgl
dtdc
dtdmlJ
audtdml
dtdml
dtdxF
dtxdmM
θθθθ
θθθθ
への変換係数 : 電圧からトルク
数 : 軸の粘性摩擦係
の慣性モーメント : 振子の重心周り
: 振子の質量
らの角度 : 振子の垂直軸か
までの距離 : 軸から振子重心
らの入力電圧 : パワーアンプか
等価粘性摩擦係数 : 台車駆動系の
: 台車質量
: 台車位置
]/[]/[
][][][
][][
]/[][
][
2
2
VNaskgmc
kgmJkgmradmlVu
skgFkgM
mx
θ
2010/8/3 MATLAB・フィードバック制御系設計 40
LQG(3)関数名)invpend.m入力引数)input
input(1) : u (入力電圧)input(2) : x (台車位置)input(3) : theta (振子の垂直軸からの角度)input(4) : xdot (台車速度)input(5) : thetadot (振子角速度)
出力引数)outputoutput(1) : xdot (台車速度)output(2) : thetadot (振子角速度)output(3) : V(1) (台車角速度)output(4) : V(2) (振子角加速度)
動特性方程式のMATLAB function Mファイル化
2010/8/3 MATLAB・フィードバック制御系設計 41
LQG(4)function [output] = invpend(input)% ParametersM = 1.038;a = 0.961;F = 15.11;J = 4.19e-4;l = 0.120;c = 1.22e-5;m = 0.035;g = 9.8;%u = input(1);x = input(2);theta = input(3);xdot = input(4);thetadot = input(5);output(1) = input(4);output(2) = input(5);
%A11 = M+m;A12 = m*l*cos(theta);A21 = m*l*cos(theta);A22 = J+m*l*l;A = [A11 A12; A21 A22];B11 = -F*xdot+m*l*sin(theta)*thetadot*thetadot+a*u;B21 = -c*thetadot+m*g*l*sin(theta);B = [B11; B21];V = inv(A)*(B);output(3) = V(1);output(4) = V(2);
2010/8/3 MATLAB・フィードバック制御系設計 42
LQG(5)Simulinkモデルは,あとでlinmod関数を使って線形化できるように,入
力ポートと出力ポートを指定している.入力ポート)u, 出力ポート)x, theta
MATLAB関数は,先ほど作った関数Mファイルの名前,invpendを入れている.MATLAB関数の出力全部と入力の2番目から5番目を積分器で結合することにより倒立振子の微分方程式が実現できる.初期条件は,積分器をクリックして代入できる.
nlpend_io.mdl
2010/8/3 MATLAB・フィードバック制御系設計 43
LQG(6)近似線形化モデルの導出
不安定平衡点 )0,0(),( =θx][1 rad<<θ 0,1cos,sin 2 ≈≈≈ θθθθ &
近似線形化
uax
mglx
cFx
mlJmlmlmM
⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡+⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡−=⎥
⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡+
+00
000
02 θθθ &
&&&&&
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
θ
θ
&
&x
x
x
BuA += xx&
xy ⎥⎦
⎤⎢⎣
⎡=
00100001
2010/8/3 MATLAB・フィードバック制御系設計 44
LQG(7)線形状態方程式を直接計算するMファイル
M = 1.038;a = 0.961;F = 15.11;J = 4.19e-4;l = 0.120;c = 1.22e-5;m = 0.035;g = 9.8;alpha0 = (M+m)*J + M*m*l*l;a32 = -m*m*l*l*g/alpha0;a33 = -F*(J+m*l*l)/alpha0;a34 = m*l*c/alpha0;a42 = (M+m)*m*g*l/alpha0;a43 = m*l*F/alpha0;a44 = -c*(M+m)/alpha0;
b3 = (J+m*l*l)*a/alpha0;b4 = -m*l*a/alpha0;A = [ 0 0 1 0
0 0 0 10 a32 a33 a340 a42 a43 a44 ]
B = [ 00b3b4 ]
C = [ 1 0 0 00 1 0 0 ];
D = [ 00 ];
2010/8/3 MATLAB・フィードバック制御系設計 45
LQG(8)線形状態方程式をlinmodから計算するMファイル
M = 1.038;a = 0.961;F = 15.11;J = 4.19e-4;l = 0.120;c = 1.22e-5;m = 0.035;g = 9.8;% derivation of linearized model via linmod.m function[A,B,C,D]=linmod('nlpend_io')
2010/8/3 MATLAB・フィードバック制御系設計 46
LQG(9)状態FBコントローラとLQGコントローラを求めるMファイル
xKu −=yzyzz
)()()()(
dcccubcac
+=+=&
M = 1.038;a = 0.961;F = 15.11;J = 4.19e-4;l = 0.120;c = 1.22e-5;m = 0.035;g = 9.8;% linearized model[A,B,C,D]=linmod('nlpend_io')%G = [ 1
111 ];
% weights of LQ regulatorQ = [ 1000 0 0 0
0 1000 0 00 0 1 00 0 0 1 ];
R = 5;
N = [ 0.01000 ];
[K,S,e] = lqr(A,B,Q,R,N)
% covariance matrices of noiseQn = 1;Rn = [ 1 0
0 0.1];Nn = [ 0 0 ];
[m,n] = size(C);[n1,r] = size(G);sys = ss(A,[B G],C,[D zeros(m,r)])[Kest,L,P] = kalman(sys,Qn,Rn,Nn)
%LQG controller Lqgcont = lqgreg(Kest,K)[ac,bc,cc,dc]=ssdata(Lqgcont)
x0 = [1 1 0 0];xc0 = [0 0 0 0]; %
2010/8/3 MATLAB・フィードバック制御系設計 47
LQG(10)応答シミュレーション
線形モデルに対するLQコントローラの性能評価
ノイズ付加
ノイズなし
2010/8/3 MATLAB・フィードバック制御系設計 48
LQG(11)応答シミュレーション
非線形モデルに対するLQコントローラの性能評価
lqrcon_nse5.mdl 初期条件:小
初期条件:大
不安定
2010/8/3 MATLAB・フィードバック制御系設計 49
LQG(12)応答シミュレーション
線形モデルに対するLQGコントローラの性能評価
2010/8/3 MATLAB・フィードバック制御系設計 50
LQG(13)応答シミュレーション
非線形モデルに対するLQGコントローラの性能評価
初期条件:小
初期条件:大
2010/8/3 MATLAB・フィードバック制御系設計 51
LQG(14)
function [output] = nlcontroller(input)% parameters% ParametersM = 1.038;a = 0.961;F = 15.11;J = 4.19e-4;l = 0.120;c = 1.22e-5;m = 0.035;g = 9.8;alpha = F/(M+m);beta = a/(M+m);
% feedback gaink1 = 20.8255;k2 = 9.3331;k3 = -3.1623;k4 = -23.9471;%x = input(1);theta = input(2);xdot = input(3);thetadot = input(4);%xi1 = g*sin(theta)+k1*theta-g*theta+k2*thetadot;xi = xi1/(cos(theta)+0.01*sign(cos(theta)));output = -k3*x - k4*xdot + xi/beta;
非線形状態フィードバックコントローラ
nlcontroller.m
2010/8/3 MATLAB・フィードバック制御系設計 52
LQG(15)非線形状態フィードバックコントローラ
2010/8/3 MATLAB・フィードバック制御系設計 53
LQG(16)非線形状態フィードバックコントローラ
初期条件 [ ]000π
振り上げ制御
2010/8/3 MATLAB・フィードバック制御系設計 54
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
2010/8/3 MATLAB・フィードバック制御系設計 55
ロバスト制御,適応制御
(1)カルマンフィルタおよびLQGコントローラhttp://matlab0.hwe.oita-u.ac.jp/~matsuo/lqgexam.pdfhttp://matlab0.hwe.oita-u.ac.jp/~matsuo/ivpend2.doc
(2)ロバスト制御http://matlab0.hwe.oita-u.ac.jp/~matsuo/rob_txt.pdfhttp://matlab0.hwe.oita-u.ac.jp/~matsuo/pidq_txt.pdf
(3)適応制御http://matlab0.hwe.oita-u.ac.jp/~matsuo/adaptsv.pdfhttp://matlab0.hwe.oita-u.ac.jp/~matsuo/ada_ident.pdf
P.44
2010/8/3 MATLAB・フィードバック制御系設計 56
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御),GUIscilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 57
ハードウェア制御(1)
ARM11コア搭載Linuxコンピュータ:AD7011-EVA
計測や制御に必要なA/D、D/Aコンバータの他、 多彩なI/Oを搭載したLinuxコンピュータです。制御プログラムはThe Mathworks社のMATLAB/SimulinkもしくはEclipse(標準付属)を用いたC言語で構築でき、GUIや画面作成は当社製AD- VirtualConsole(標準付属)を使ってドラッグアンドド
ロップの操作で作成できます。これら一連の作業はWindowsPC上で行いビルド後 AD7011-EVAに転送します。各I/OのS-Function及びドライバーソフトは標準で付属していますのですぐに使用可能です。 またAD7011-EVAは近
年注目を集めているモデルベース開発ツールの一つであるMATLAB/Simulinkのターゲットマシーンとしてアプリ ケー
ションの実機検証、制御が行える機器としては大変リーズナブルな製品です。 プロセッサーにはARM1136コア搭載のi.MX31、OSはリアルタイム拡張(Xenomai)付きLinux、無線通信機能としてZigBee(オ プション)を用意しています。
http://www.aandd.co.jp/adhome/products/sbc/ad7011-eva-arm.html
2010/8/3 MATLAB・フィードバック制御系設計 58
ハードウェア制御(2)http://www.aandd.co.jp/adhome/products/sbc/ad7011-eva-arm.html
2010/8/3 MATLAB・フィードバック制御系設計 59
ハードウェア制御(3)
MATLAB/Simulinkにて制御プログラムを作成ホスト側PC(Windows PC)にインストールされたMATLAB/Simulinkにてモデルベースの制御プログ
ラムを作成することができます.* 必要なソフト:MATLAB 2007bシリーズ・MATLAB・Simulink・Real-Time Workshop
http://www.aandd.co.jp/adhome/products/sbc/ad7011-eva-arm.html
2010/8/3 MATLAB・フィードバック制御系設計 60
ハードウェア制御(4)
ラピッドプロトタイピング:製品開発において、試作品(prototype)を高速に(rapid)製造する技術.(例)機械分野では,3次元CADにより設計した機械部品のデータから直接に製造可能な積層造形法(粉体、樹脂、板、紙などの材料を薄い膜状に積層して機械部品を製造する技術 )についてそう呼ばれることが多い。 金型等を
製造せずに部品を直接製造できるために,従来の製造手法と比較して時間の短縮が可能で、コンカレントエンジニアリング等の高速製品開発に必須の技術と考えられている。http://designer.mse.kyutech.ac.jp/techInfo/rp-j.html
制御系設計の場合には,コントローラの性能を制御対象により検証する際に,工程の後戻りや実機試験環境でのトライアンドエラーをなるべく減らす目的で,制御対象を実機,コントローラを机上の数式とする方法をいいます.
2010/8/3 MATLAB・フィードバック制御系設計 61
ハードウェア制御(5)ラピッドプロトタイピング::モータの場合(Mathworks資料より)
pdf資料は,「MATLAB環境におけるリアルタイムシミュレーション」で検索してください.
xPCターゲット:SimulinkやStateflowモデルを実機のシステムと接続し,PC互換ハードウェア上リアルタイムのシミュレーションモデル(Real-Time Application)実行を可能にします.
xPCターゲットは,制御システムのラピッドプロトタイピングやHILS (Hardware-in-the-loop Simulation)の機能を持っています.
xPCターゲットにより,シミュレーションモデルにI/Oインタフェースブロックを追加し,Real-Time WorkshopやStateflow Coderを使用して,自動Cコード生成を行い,xPCターゲットが動作するTargetPCに実行ファイルをダウンロードすることが可能です.
2010/8/3 MATLAB・フィードバック制御系設計 62
ハードウェア制御(6)ラピッドプロトタイピング::モータの場合(Mathworks資料より)
2010/8/3 MATLAB・フィードバック制御系設計 63
ハードウェア制御(7)ラピッドプロトタイピング::モータの場合(Mathworks資料より)
SimpowerSystems
2010/8/3 MATLAB・フィードバック制御系設計 64
ハードウェア制御(8)SimpowerSystems
2010/8/3 MATLAB・フィードバック制御系設計 65
ハードウェア制御(9)SimpowerSystems
2010/8/3 MATLAB・フィードバック制御系設計 66
ハードウェア制御(10)SimpowerSystems
2010/8/3 MATLAB・フィードバック制御系設計 67
ハードウェア制御(11)デモファイル
2010/8/3 MATLAB・フィードバック制御系設計 68
ハードウェア制御(12)
MATLABによるリアルタイム制御入門 : xPC Targetを使ったモデル・ベース開発大川善邦著,CQ出版
MATLABをリアルタイム制御に利用する手法の基礎を解説しました。MATLABと、Simulink、Real‐Time Workshop、xPC Targetの4本のソフトウェアをを使い、ブ
ロック線図によってシミュレーションを繰り返し、その結果として生成したプログラムをターゲットのパソコン へ送り込み、
パソコンをリアルタイム制御に利用します。
2010/8/3 MATLAB・フィードバック制御系設計 69
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御),GUIscilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 70
GUI(1)MATLAB GUIの特徴
(1)MATLABの知識なくても作成したアプリケーションを利用可能.
(2)イベントドリブンのプログラミング
(3)MATLAB関数のコールバック,Simulinkとの連携が可能
(4)MATLAB Compilerの利用によるStand Alone Applicationが作成可能
GUIDEの起動
>> guide
2010/8/3 MATLAB・フィードバック制御系設計 71
GUI(2)>> guide
レイアウトエディタ
他のGUIDEツールへのアクセス
他のGUIDEツール
(1) オブイジェクト整列ツール(2) プロパティインスペクタ:オブジェクトのプロパティ値を編集(3) オブジェクトブラウザ:レイアウト上にあるオブジェクトの一覧表示(4) メニューエディタ:メニューバー,ポップアップメニューの作成(5) タブオーダーエディタ:GUIアプリケーション実行中にフォーカスされている
オブジェクトをTabキーにより切り替えるときの順番を設定する.
2010/8/3 MATLAB・フィードバック制御系設計 72
GUI(3)GUIDEにより作成されるファイル構成:
Figファイル:オブジェクトのレイアウトやプロパティ値の記述Mファイル:GUIアプリケーションの実行時に必要な関数
メイン関数,コールバック関数,サブ関数
GUI構築手順:(1)オブジェクトの配置(2)各オブジェクトのプロパティ値の編集(3)コールバック関数の編集(4)アプリケーションの実行
2010/8/3 MATLAB・フィードバック制御系設計 73
GUI(4)GUIで使用できるオブジェクト:
オブジェクトをグループ化frame選択肢から1つまたは複数項目選択listbox
他のオブジェクトのラベルtext範囲内の値を指定slider
状態の切替checkbox数値,文字列の入力edit
選択肢から1項目選択popupmenu
選択肢(ラジオボタン群)から1項目を選択radiobutton状態の切替スイッチtogglebuttonアクションを実行するボタンpushbutton
2010/8/3 MATLAB・フィードバック制御系設計 74
GUI(5)VBとほとんど同じ要領
2010/8/3 MATLAB・フィードバック制御系設計 75
GUI(6)プロパティインスペクタ
2010/8/3 MATLAB・フィードバック制御系設計 76
GUI(7)例題)axesとpushbuttonを用いて,図を表示するGUI
1
2
3
ex_guide.figで保存
2010/8/3 MATLAB・フィードバック制御系設計 77
GUI(8)
2010/8/3 MATLAB・フィードバック制御系設計 78
GUI(9)
function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)num = 1; den = [1 1];sys = tf(num,den);bode(sys);
2010/8/3 MATLAB・フィードバック制御系設計 79
GUI(10)
2010/8/3 MATLAB・フィードバック制御系設計 80
GUI(11)
クリック
2010/8/3 MATLAB・フィードバック制御系設計 81
MATLAB EXPO 2010───────── 【MATLAB EXPO 2010 開催概要】 ─────────■日程: 2010年11月26日(金) 10:00~18:00 (9:30 受付開始)■会場: 東京ミッドタウン ホール&カンファレンス■主催: MathWorks Japan
2010/8/3 MATLAB・フィードバック制御系設計 82
制御工学とはMATLAB/Slmulinkの使い方
古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション
PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化状態フィードバックオブザーバ
適レギュレータその他
カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御),GUI
scilab/scicos
2010/8/3 MATLAB・フィードバック制御系設計 83
Scilab(1)
Scilabとは :http://www.scilab.org/INRIA (フランス国立コンピュータ科学・制御研究所)で作成された高機
能な行列演算パッケージ.フリーソフト
2010/8/3 MATLAB・フィードバック制御系設計 84
Scilab(2)
Scilabのインストールhttp://www.scilab.org/より,インストーラをダウンロード
Scilabの起動
アイコンをダブルクリック
コマンドライン(電卓的使い方)--> の後にキーボードから命令
を打ち込み,Enterキーを押すことに
より,命令が実行できる。
2010/8/3 MATLAB・フィードバック制御系設計 85
Scilab(3)
0.5 1.5 0.9 1.1
t
t2
t3
t
t2
t3
2010/8/3 MATLAB・フィードバック制御系設計 86
Scilab(4)
2010/8/3 MATLAB・フィードバック制御系設計 87
Scilab/Scicosによる計算:単振子(1)
⎥⎥
⎦
⎤
⎢⎢
⎣
⎡
−=⎥
⎦
⎤⎢⎣
⎡′′
⎩⎨⎧
′==
−=
−=
=
)(sin
)(
)()(
)()()()(
)(sin)(
)(sin)(
)()(
1
2
2
1
2
1
2
2
2
22
2
2
tzlg
tz
tztz
ttzttz
tlg
dttd
tmgldt
tdml
tTdt
tdI
とおくと,θθ
θθ
θθ
θ
l)(tθ
m
mg
)(sin tmg θ−
2010/8/3 MATLAB・フィードバック制御系設計 88
Scilab/Scicosによる計算:単振子(2)
-->deff("[zdot]=f(t,z)","zdot(1)=z(2),zdot(2)=-9.8*sin(z(1));")-->z0=[3.0;0];t0=0;t=0:0.01:30;-->z=ode(z0,t0,t,f);-->plot(t,z) ]rad/sec[0)0(]rad[3)0(
1=′=
=θθ ,
l
青:角度緑:角速度
2010/8/3 MATLAB・フィードバック制御系設計 89
Scilab/Scicosによる計算:単振子(3)
∫
∫ ∫∫
∫ ∫ ∫
∫
∫∫∫
+=
⎟⎟⎠
⎞⎜⎜⎝
⎛+−==−
⎟⎟⎠
⎞⎜⎜⎝
⎛+−=
+−=
−=−⇒−=
−=
t
t tt
t t t
t
ttt
dtdt
tdt
dtdt
dtlgdt
dttdt
dtdt
dtlgdt
dttd
dtdt
lg
dttd
tlg
dtd
dttdt
lgdt
dttd
tlg
dttd
0
0 00
0 0 0
0
0002
2
2
2
)0()()(
)0()(sin)()0()(
)0()(sin)(
)0()(sin)(
)(sin)0()()(sin)(
)(sin)(
θθθ
θθθθθ
θθθ
θθθ
θθθθθ
θθ
2010/8/3 MATLAB・フィードバック制御系設計 90
Scilab/Scicosによる計算:単振子(4)
ScicosはScilab科学技術計算ソフトウェアに含まれるグラフィカルな動的システムのシミュレータ(計算ツール)
Scilabからscicosを起動
- -> scicos()
scicosのグラフィカルエディタ(お絵かきエディタ)
2010/8/3 MATLAB・フィードバック制御系設計 91
Scilab/Scicosによる計算:単振子(5)EditメニュのPalletsを左クリックする。
2010/8/3 MATLAB・フィードバック制御系設計 92
Scilab/Scicosによる計算:単振子(6)つぎのようなメニューが表示される。
2010/8/3 MATLAB・フィードバック制御系設計 93
Scilab/Scicosによる計算:単振子(7)各々のメニューを選択すると,つぎのような道具箱が表示される。この道具箱内のアイコンを選択して,グラフィカルエディタ内に,図を描くことができる。
Sources:各種信号の生成
2010/8/3 MATLAB・フィードバック制御系設計 94
Scilab/Scicosによる計算:単振子(8)
Sinks:各種信号の保存・表示
2010/8/3 MATLAB・フィードバック制御系設計 95
Scilab/Scicosによる計算:単振子(9)
Linear:微分,積分,定数倍,加算などのツール
2010/8/3 MATLAB・フィードバック制御系設計 96
Scilab/Scicosによる計算:単振子(10)
Non_linear:sin,cosなどの非線形関数ツール
2010/8/3 MATLAB・フィードバック制御系設計 97
Scilab/Scicosによる計算:単振子(11)単振子シミュレーション
Linear
2010/8/3 MATLAB・フィードバック制御系設計 98
Scilab/Scicosによる計算:単振子(12)
積分 積分加減算
定数倍
2010/8/3 MATLAB・フィードバック制御系設計 99
Scilab/Scicosによる計算:単振子(13)
Non_linear
2010/8/3 MATLAB・フィードバック制御系設計 100
Scilab/Scicosによる計算:単振子(14)
)(tθ ′′)(tθ
)(tθ′
2010/8/3 MATLAB・フィードバック制御系設計 101
Scilab/Scicosによる計算:単振子(15)
Sources
2010/8/3 MATLAB・フィードバック制御系設計 102
Scilab/Scicosによる計算:単振子(16)
f(t)=1
時計:t
2010/8/3 MATLAB・フィードバック制御系設計 103
Scilab/Scicosによる計算:単振子(17)
Sinks
2010/8/3 MATLAB・フィードバック制御系設計 104
Scilab/Scicosによる計算:単振子(18)
各々のアイコンの設定値を変えるには,アイコンをクリックする.
2010/8/3 MATLAB・フィードバック制御系設計 105
Scilab/Scicosによる計算:単振子(19)
2010/8/3 MATLAB・フィードバック制御系設計 106
Scilab/Scicosによる計算:単振子(20)
]rad[3)0(sec],/rad[0)0( ==′ θθ
2010/8/3 MATLAB・フィードバック制御系設計 107
Scilab/Scicosによる計算:単振子(21)
2010/8/3 MATLAB・フィードバック制御系設計 108
Scilab/Scicosによる計算:単振子(22)
計算のための設定:Simulate Setup
終時刻
2010/8/3 MATLAB・フィードバック制御系設計 109
Scilab/Scicosによる計算:単振子(23)
実行:Simulate Run
2010/8/3 MATLAB・フィードバック制御系設計 110
Scilab/Scicosによる計算:単振子(24)