MATLAB/Simulinkによる
フィードバック制御系設計
第2部
平成22年度ものづくり人材育成・確保講座
大分大学工学部福祉環境工学科メカトロニクスコース 松尾孝美制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ現代制御系設計
状態方程式と非線形システムの線形化 状態フィードバック オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御 ハードウェア(計測と制御) scilab/scicos制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計
状態方程式と非線形システムの線形化
状態フィードバック オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御 ハードウェア(計測と制御) scilab/scicos状態方程式と非線形システムの線形化(1)
m
n
R
t
R
t
)
∈
,
(
)
∈
(
u
x
)
(
)
(
)
(
t
A
x
t
B
u
t
x
&
=
+
線形化(p.34-35)状態方程式
例)天井から吊り下げられている1リンクアーム (1対のリンクとジョイントで構成される))
(t
y
)
(t
u
リンク長 質量m
2
l
2 2 2 03
4
2
l
r
dr
ml
m
J
l=
=
∫
)
(
)
(
sin
)
(
)
(
2 2t
u
t
y
mlg
t
y
dt
d
D
t
y
dt
d
J
+
+
=
非線形項状態方程式と非線形システムの線形化(2)
線形化(p.34-35) 近似線形化法y
(
t
)
=
y
(
∞
)
+
Δ
y
(
t
)
)
(
)
(
)
(
cos
)
(
sin
)
(
sin
)
(
cos
)
(
cos
)
(
sin
))
(
)
(
sin(
)
(
sin
2 1M
y
t
M
t
y
y
y
t
y
y
t
y
y
t
y
y
t
y
Δ
+
=
Δ
∞
+
∞
≈
Δ
∞
+
Δ
∞
=
Δ
+
∞
=
)
(t
y
Δ
は十分小さいd
t
u
t
y
mlgM
dt
t
y
d
D
dt
t
y
d
J
Δ
2(
)
+
Δ
(
)
+
2Δ
(
)
=
(
)
−
2 1mlgM
d
=
状態方程式と非線形システムの線形化(3)
))
(
)
(
(
1
)
(
2 2U
s
D
s
mlgM
Ds
Js
s
Y
−
+
+
=
Δ
[
]
⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
−
−
=
⎥
⎦
⎤
⎢
⎣
⎡
y
y
y
t
d
t
u
y
y
D
mlgM
y
y
&
&
&&
&
0
1
)
(
1
0
)
(
1
0
1
0
2 伝達関数: 状態方程式: 線形化(p.34-35)で有効
1
)
(
<<
Δ t
y
状態方程式と非線形システムの線形化(4)
厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用 いて非線形項を打ち消して,線形化を行います.)
(
)
(
sin
)
(
t
mlg
y
t
v
t
u
=
+
)
(
)
(
)
(
2 2t
v
t
y
dt
d
D
t
y
dt
d
J
+
=
v
J
x
x
J
D
x
x
dt
d
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
−
=
⎥
⎦
⎤
⎢
⎣
⎡
1
0
0
1
0
2 1 2 1 状態方程式: 入力を打ち消すだけでは線形化できないシステムも状態変数を非線形関数により状態方程式と非線形システムの線形化(5)
線形システムの応答解析(p.35)
線形化した式を用いて,入力にいろいろな信号を入れたときの応答波形を確認します.
(1) 制御系を線形化した式をラプラス変換して伝達関数を求めます.
状態方程式と非線形システムの線形化(6)
線形システムを制御対象とし,いろいろなコントローラを装備したフィードバック制御 系を構成します. (3) 閉ループ伝達関数を計算します. (4) 閉ループ系が安定になるコントローラの条件を求めます. (5) 目標値へ追従するようなコントローラのパラメータを求めます. なるべく速く目標値に到達するようなコントローラのパラメータを求めます. (6)外乱や制御対象の誤差などに安定性や目標値追従特性が影響を受けにく いコントローラを求めます.これらの性能をロバスト性(robustness)といいます. 外乱や制御対象の誤差に安定性が影響を受けにくいとき,ロバスト安定 (robustly stable)といい,目標値追従特性が影響を受けにくいとき,ロバスト性能がよい(good robust performance)といいます. 線形システムの制御系設計(P.35-36)
制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化
状態フィードバック
オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御 ハードウェア(計測と制御) scilab/scicos状態フィードバック(1)
2次振動系の場合(p.36-38)m
2m
1 壁 y2 バネ バネ u(力) y1 バネ定数をk1,k2 粘性摩擦係数をc1,c2 2 2 1 2 1 2 2 1 2 1 2 2 2 1 1 2 1 1 1 1)
(
)
(
)
(
)
(
y
c
y
y
c
y
k
y
y
k
y
m
u
y
y
k
y
y
c
y
m
&
&
&
&&
&
&
&&
−
−
−
−
−
−
=
+
−
−
−
−
=
u
y
y
k
k
k
k
k
y
y
c
c
c
c
c
y
y
m
m
⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
+
−
−
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
+
−
−
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
0
1
0
0
1 1 1 1 1 1 1 1&
&
&&
&&
状態フィードバック(2)
2次振動系の場合(p.36-38) 状態変数[
y
y
y
y
]
T 2 1 2 1&
&
=
x
[
]
u
y
y
y
y
x
y
y
x
y
u
y
y
y
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
−
−
=
⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎦
⎤
⎢
⎣
⎡
=
=
=
+
+
− − −E
M
C
M
K
M
I
y
y
E
K
C
M
T 1 1 1 2 10
0
,
&
&&
&
&
&
&
&&
状態フィードバック(3)
2次振動系の場合(p.36-38)u
x
x
&
=
A
+
B
Fx
u
=
−
状態フィードバック 閉ループ系x
&
=
A
x
−
BF
x
=
(
A
−
BF
)
x
0
)
(
lim
=
∞
→
x
t
t
行列(A-BF)が安定行列,つまり,(A-BF)の固有値の実部がすべて負極配置
:(A,B)が可制御である場合,(A-BF)の固有値を指 定の値にするような状態フィードバックゲインFが存在します.状態フィードバック(4)
2次振動系の場合(p.36-38) %ファイル名 param_sp.m % two-degree-of-freedom system m1=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*u C=[1 0 0 0; 0 1 0 0];
状態フィードバック(5)
2次振動系の場合(p.36-38) % Pole placement(極配置プログラム) % ファイル名pole_sp.m clear param_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
状態フィードバック(6)
2次振動系の場合(p.36-38) %(応答計算プログラム) % ファイル名 res_sp.m clf clear place_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]')
状態フィードバック(7)
状態フィードバック(8)
制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化 状態フィードバック
オブザーバ
最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御 ハードウェア(計測と制御) scilab/scicosオブザーバ(1)
オブザーバ(p.38-39))
(
)
(
),
(
)
(
)
(
t
A
x
t
B
u
t
y
t
C
x
t
x
&
=
+
=
状態がすべて観測できるとは限らず,その一部,つまり出力しか観測できない 状態方程式 オブザーバ:観測できる出力から状態を推定する機構)
(
)
(
)
(
ˆ
)
(
))
(
ˆ
)
(
(
)
(
)
(
ˆ
)
(
ˆ
t
A
x
t
B
u
t
G
y
t
C
x
t
A
GC
x
t
G
y
t
B
u
t
x
&
=
+
+
−
=
−
+
+
オブザーバゲインG
)
(
)
(
ˆ
)
(
t
x
t
x
t
e
=
−
推定誤差 を安定行列になるように選ぶ)
(
A
−
GC
0
)
(
lim
=
∞
→
t
t
e
オブザーバ(2)
オブザーバ(3)
オブザーバ(4)
オブザーバ(5)
疑似状態フィードバック(p.38-40)Cx
y
Bu
Ax
x
=
+
=
&
Gy
z
GC
BF
A
LCz
Gy
BFz
Az
Cz
y
G
Bu
Az
z
Fz
u
+
−
−
=
−
+
−
=
−
+
+
=
−
=
)
(
)
(
&
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
−
−
−
=
⎥
⎦
⎤
⎢
⎣
⎡
e
x
GC
A
BF
BF
A
e
x
0
&
&
状態方程式 疑似状態フィードバック コントローラ (動的安定化補償器) 閉ループ系 2つの行列(A-GC)と(A-BF)の両方とも安定行列であるならば,閉ループ系は漸近安定lim
t→∞x(t) = 0, lim
t→∞e(t) = 0
オブザーバ(6)
オブザーバ(7)
制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化 状態フィードバック オブザーバ
最適レギュレータ
その他 カルマンフィルタ,LQG,ロバスト制御,適応制御 ハードウェア(計測と制御) scilab/scicos最適レギュレータ(1)
u
x
x
&
=
A
+
B
最適レギュレータ(P.41-43)(
)
正定対称行列
準正定対称行列, :
:
0R
Q
dt
R
Q
J
=
∫
∞x
Tx
+
u
Tu
x
u
=
−
K
0
:
0
1 1=
+
−
+
>
=
− −Q
P
B
PBR
PA
P
A
P
P
B
R
K
T T T Riccati方程式 状態方程式 評価関数 LQコントローラ最適レギュレータ(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.0000 51.8117 37.9995 8.4223 10.0000 8.4223 2.1812 E = -2.6878 -1.2467 + 1.4718i -1.2467 - 1.4718i
最適レギュレータ(3)
最適レギュレータ(P.41-43)v
x
x
v
x
u
u
x
x
&
=
A
+
B
,
=
−
K
+
⇒
&
=
(
A
−
BK
)
+
B
新規入力に対する応答計算 % system A = [ 0 1 0 0 0 1 0 -2 -3]; B = [0 0 1]; [n,r] = size(B); % weighting matrix Q = [ 100 0 0 0 1 0 0 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 = 0 v = 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 = 1 v = ones(1,length(t));
x0 = [0 0 0];
lsim(AA,BB,CC,DD,v,t,x0) pause
最適レギュレータ(4)
最適レギュレータ(5)
最適レギュレータ(P.41-43)
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,
ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
2010/8/3 MATLAB・フィードバック制御系設計 34
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,
ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
カルマンフィルタ(1)
カルマンフィルタ:制御対象の入出力から,出力と状態の推定値z (オブザーバの一種:確率的ノイズが入る)u
z
x
y
u
z
y
u
z
z
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
=
⎥
⎦
⎤
⎢
⎣
⎡
−
−
+
+
=
0
ˆ
ˆ
)
(
D
I
C
D
C
L
B
A
&
v
u
x
y
w
u
x
x
+
+
=
+
+
=
D
C
G
B
A
&
ノイズの共分散 制御対象 n T n T n TN
E
R
E
Q
E
{
ww
}
=
,
{
vv
}
=
,
{
wv
}
=
カルマンフィルタ(2)
共分散 共分散を最小にするゲインL}
)
ˆ
)(
ˆ
{(
lim
T tE
P
=
x
−
x
x
−
x
∞ →0
)
(
)
(
:
0
1 1=
+
+
+
−
+
>
=
− − T n T T n n n T T n TG
GQ
G
N
CP
R
GN
PC
PA
AP
P
R
PC
L
[
]
[
]
v
w
u
x
y
w
u
x
x
+
⎥
⎦
⎤
⎢
⎣
⎡
+
=
⎥
⎦
⎤
⎢
⎣
⎡
+
=
0
D
C
G
B
A
&
[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)
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,
ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
LQG(1)
LQG(Linear QUadratic Gaussian)コントローラ:
コントローラを最適レギュレータとカルマンフィルタで構成
y
x
u
x
y
u
x
x
x
u
L
K
LD
B
LC
A
D
C
L
B
A
K
+
−
−
−
=
−
−
+
+
=
−
=
ˆ
]
)
(
[
)
ˆ
(
ˆ
ˆ
ˆ
&
Lgqcont = lqgreg(Kest,K)LQG(2)
LQG例題)倒立振子の場合 0 cos sin ) ( sin cos ) ( 2 2 2 2 2 2 2 2 2 2 = + − + + = ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ − + + + dt x d ml mgl dt d c dt d ml J au dt d ml dt d ml dt dx F dt x d m M θ θ θ θ θ θ θ θ 数 : 軸の粘性摩擦係 の慣性モーメント : 振子の重心周り : 振子の質量 らの角度 : 振子の垂直軸か までの距離 : 軸から振子重心 らの入力電圧 : パワーアンプか 等価粘性摩擦係数 : 台車駆動系の : 台車質量 : 台車位置 ] / [ ] [ ] [ ] [ ] [ ] [ ] / [ ] [ ] [ 2 2 s kgm c kgm J kg m rad m l V u s kg F kg M m x θLQG(3)
関数名)invpend.m 入力引数)input input(1) : u (入力電圧) input(2) : x (台車位置) input(3) : theta (振子の垂直軸からの角度) input(4) : xdot (台車速度) input(5) : thetadot (振子角速度) 出力引数)output output(1) : xdot (台車速度) output(2) : thetadot (振子角速度) output(3) : V(1) (台車角速度) output(4) : V(2) (振子角加速度) 動特性方程式のMATLAB function Mファイル化LQG(4)
function [output] = invpend(input) % Parameters 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; % 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);
LQG(5)
Simulinkモデルは,あとでlinmod関数を使って線形化できるように,入 力ポートと出力ポートを指定している. 入力ポート)u, 出力ポート)x, theta MATLAB関数は,先ほど作った関数Mファイルの名前,invpendを入れて いる.MATLAB関数の出力全部と入力の2番目から5番目を積分器で結 合することにより倒立振子の微分方程式が実現できる.初期条件は, 積分器をクリックして代入できる. nlpend_io.mdlLQG(6)
近似線形化モデルの導出 不安定平衡点(
x
,
θ
)
=
(
0
,
0
)
]
[
1 rad
<<
θ
sin
θ
≈
θ
,
cos
θ
≈
1
,
θ
&
2≈
0
近似線形化
u
a
x
mgl
x
c
F
x
ml
J
ml
ml
m
M
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
+
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
−
=
⎥
⎦
⎤
⎢
⎣
⎡
⎥
⎦
⎤
⎢
⎣
⎡
+
+
0
0
0
0
0
0
2θ
θ
&
θ
&
&&
&&
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
θ
θ
&
&x
x
x
Bu
A
+
= x
x
&
x
y
⎥
⎦
⎤
⎢
⎣
⎡
=
0
0
1
0
0
0
0
1
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 a34 0 a42 a43 a44 ] B = [ 0 0 b3 b4 ] C = [ 1 0 0 0 0 1 0 0 ]; D = [ 0 0 ];
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ファイルx
K
u
=
−
y
z
y
z
z
)
(
)
(
)
(
)
(
dc
cc
u
bc
ac
+
=
+
=
&
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 1 1 1 ]; % weights of LQ regulator Q = [ 1000 0 0 0 0 1000 0 0 0 0 1 0 0 0 0 1 ]; R = 5; N = [ 0.01 0 0 0 ]; [K,S,e] = lqr(A,B,Q,R,N)% covariance matrices of noise Qn = 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]; %
LQG(10)
応答シミュレーション
線形モデルに対するLQコントローラの性能評価
ノイズ付加 ノイズなし
LQG(11)
応答シミュレーション 非線形モデルに対するLQコントローラの性能評価 lqrcon_nse5.mdl 初期条件:小 初期条件:大 不安定LQG(12)
応答シミュレーション
LQG(13)
応答シミュレーション
非線形モデルに対するLQGコントローラの性能評価
初期条件:小
LQG(14)
function [output] = nlcontroller(input)
% parameters % Parameters 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; alpha = F/(M+m); beta = a/(M+m); % feedback gain k1 = 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
LQG(15)
LQG(16)
非線形状態フィードバックコントローラ
初期条件
[
π
0
0
0
]
2010/8/3 MATLAB・フィードバック制御系設計 54
制御工学とは
MATLAB/Slmulinkの使い方
古典制御系設計
伝達関数とブロック線図
LTIオブジェクト
ステップ応答,インパルス応答,周波数応答,
ボード線図
システムの結合と安定性
Simulinkによる時間応答シミュレーション
PIDコントローラ
現代制御系設計
状態方程式と非線形システムの線形化
ロバスト制御,適応制御
(1)カルマンフィルタおよびLQGコントローラ http://matlab0.hwe.oita-u.ac.jp/~matsuo/lqgexam.pdf http://matlab0.hwe.oita-u.ac.jp/~matsuo/ivpend2.doc (2)ロバスト制御 http://matlab0.hwe.oita-u.ac.jp/~matsuo/rob_txt.pdf http://matlab0.hwe.oita-u.ac.jp/~matsuo/pidq_txt.pdf (3)適応制御 http://matlab0.hwe.oita-u.ac.jp/~matsuo/adaptsv.pdf http://matlab0.hwe.oita-u.ac.jp/~matsuo/ada_ident.pdf P.44制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化 状態フィードバック オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御)
,GUI scilab/scicosハードウェア制御(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コア搭載 http://www.aandd.co.jp/adhome/products/sbc/ad7011-eva-arm.htmlハードウェア制御(2)
ハードウェア制御(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ハードウェア制御(4)
ラピッドプロトタイピング:
製品開発において、試作品(prototype)を高速に(rapid)製造する技術. (例)機械分野では,3次元CADにより設計した機械部品のデータから直接に 製造可能な積層造形法(粉体、樹脂、板、紙などの材料を薄い膜状に積層し て機械部品を製造する技術 )についてそう呼ばれることが多い。 金型等を 製造せずに部品を直接製造できるために,従来の製造手法と比較して時間 の短縮が可能で、コンカレントエンジニアリング等の高速製品開発に必須の 技術と考えられている。 http://designer.mse.kyutech.ac.jp/techInfo/rp-j.html制御系設計の場合には,コントローラの性能を制御対象により検証する際に,
工程の後戻りや実機試験環境でのトライアンドエラーをなるべく減らす目的で,
制御対象を実機,コントローラを机上の数式とする方法をいいます.
ハードウェア制御(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コード生成を行い,
ハードウェア制御(6)
ハードウェア制御(7)
ラピッドプロトタイピング::モータの場合(Mathworks資料より)
ハードウェア制御(8)
ハードウェア制御(9)
ハードウェア制御(10)
ハードウェア制御(11)
ハードウェア制御(12)
MATLABによるリアルタイム制御入門 : xPC Targetを使ったモデル・ベース開発 大川善邦著,CQ出版 MATLABをリアルタイム制御に利用する 手法の基礎を解説しました。MATLABと、 Simulink、Real‐Time Workshop、xPC Targetの4本のソフトウェアをを使い、ブ ロック線図によってシミュレーションを繰 り返し、その結果として生成したプログラ ムをターゲットのパソコン へ送り込み、 パソコンをリアルタイム制御に利用しま す。制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化 状態フィードバック オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御),
GUI
scilab/scicosGUI(1)
MATLAB GUIの特徴
(1) MATLABの知識なくても作成したアプリケーションを利用可能.
(2) イベントドリブンのプログラミング
(3) MATLAB関数のコールバック,Simulinkとの連携が可能
(4) MATLAB Compilerの利用によるStand Alone Applicationが作成可能
GUIDEの起動
GUI(2)
>>
guide
レイアウトエディタ 他のGUIDEツールへのアクセス 他のGUIDEツール (1) オブイジェクト整列ツール (2) プロパティインスペクタ:オブジェクトのプロパティ値を編集 (3) オブジェクトブラウザ:レイアウト上にあるオブジェクトの一覧表示 (4) メニューエディタ:メニューバー,ポップアップメニューの作成GUI(3)
GUIDEにより作成されるファイル構成:
Figファイル
:オブジェクトのレイアウトやプロパティ値の記述
Mファイル
:GUIアプリケーションの実行時に必要な関数
メイン関数,コールバック関数,サブ関数
GUI構築手順:
(1) オブジェクトの配置
(2) 各オブジェクトのプロパティ値の編集
(3) コールバック関数の編集
(4) アプリケーションの実行
GUI(4)
GUIで使用できるオブジェクト:オブジェクトをグループ化
frame
選択肢から1つまたは複数項目選択
listbox
他のオブジェクトのラベル
text
範囲内の値を指定
slider
状態の切替
checkbox
数値,文字列の入力
edit
選択肢から1項目選択
popupmenu
選択肢(ラジオボタン群)から1項目を選択
radiobutton
状態の切替スイッチ
togglebutton
アクションを実行するボタン
pushbutton
GUI(5)
GUI(6)
GUI(7)
例題)axesとpushbuttonを用いて,図を表示するGUI 1 2 3 ex_guide.figで保存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);
GUI(11)
MATLAB EXPO 2010
───────── 【MATLAB EXPO 2010 開催概要】 ───────── ■日程: 2010年11月26日(金) 10:00~18:00 (9:30 受付開始)
■会場: 東京ミッドタウン ホール&カンファレンス ■主催: MathWorks Japan
制御工学とは MATLAB/Slmulinkの使い方 古典制御系設計 伝達関数とブロック線図 LTIオブジェクト ステップ応答,インパルス応答,周波数応答,ボード線図 システムの結合と安定性 Simulinkによる時間応答シミュレーション PIDコントローラ 現代制御系設計 状態方程式と非線形システムの線形化 状態フィードバック オブザーバ 最適レギュレータ その他 カルマンフィルタ,LQG,ロバスト制御,適応制御
ハードウェア(計測と制御),
GUIscilab/scicos
Scilab(1)
Scilabとは :
http://www.scilab.org/
INRIA (フランス国立コンピュータ科学・制御研究所)で作成された高機
能な行列演算パッケージ.フリーソフト
Scilab(2)
Scilabのインストール
http://www.scilab.org/より,インストーラをダウンロード
Scilabの起動
アイコンをダブルクリック
コマンドライン(電卓的使い方)
-->
の後にキーボードから命令
を打ち込み,Enterキーを押すことに
より,命令が実行できる。
Scilab(3)
t
t
2t
3t
t
2t
3Scilab/Scicosによる計算:単振子(1)
⎥
⎤
⎢
⎡
−
=
⎥
⎤
⎢
⎡
′
⎩
⎨
⎧
′
=
=
−
=
−
=
=
)
(
)
(
)
(
)
(
)
(
)
(
)
(
sin
)
(
)
(
sin
)
(
)
(
)
(
2 1 2 1 2 2 2 2 2 2 2g
t
z
t
z
t
t
z
t
t
z
t
l
g
dt
t
d
t
mgl
dt
t
d
ml
t
T
dt
t
d
I
とおくと,
θ
θ
θ
θ
θ
θ
θ
l
)
(t
θ
m
mg
)
(
sin
t
mg
θ
−
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)
(
0
)
3
[
rad
]
(
0
)
0
[
rad/sec
]
1
=
′
=
=
θ
θ
,
l
青
:角度
緑
:角速度
Scilab/Scicosによる計算:単振子(3)
∫
∫
∫
∫
∫
∫
∫
∫
∫
∫
∫
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
+
−
=
=
−
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
+
−
=
+
−
=
−
=
−
⇒
−
=
−
=
t t t t t t t t t t tt
d
dt
dt
d
t
l
g
dt
dt
t
d
t
dt
dt
d
t
l
g
dt
dt
t
d
dt
d
t
l
g
dt
t
d
t
l
g
dt
d
dt
t
d
t
l
g
dt
dt
t
d
t
l
g
dt
t
d
0 0 0 0 0 0 0 0 0 0 2 2 2 2)
(
)
0
(
)
(
sin
)
(
)
0
(
)
(
)
0
(
)
(
sin
)
(
)
0
(
)
(
sin
)
(
)
(
sin
)
0
(
)
(
)
(
sin
)
(
)
(
sin
)
(
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
θ
Scilab/Scicosによる計算:単振子(4)
ScicosはScilab科学技術計算ソフトウェアに含まれるグラ
フィカルな動的システムのシミュレータ(計算ツール)
Scilabからscicosを起動
- ->
scicos()
scicosのグラフィカルエディタ
(お絵かきエディタ)
Scilab/Scicosによる計算:単振子(5)
Scilab/Scicosによる計算:単振子(6)
Scilab/Scicosによる計算:単振子(7)
各々のメニューを選択すると,つぎのような道具箱が表示される。この道具箱 内のアイコンを選択して,グラフィカルエディタ内に,図を描くことができる。