110
2010/8/3 MATLAB・フィードバック制御系設計 1 MATLAB/Simulinkによる フィードバック制御系設計 2平成22年度ものづくり人材育成・確保講座 大分大学工学部福祉環境工学科メカトロニクスコース 松尾孝美

MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 1

MATLAB/Simulinkによる

フィードバック制御系設計第2部

平成22年度ものづくり人材育成・確保講座

大分大学工学部福祉環境工学科メカトロニクスコース松尾孝美

Page 2: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 2

制御工学とは

MATLAB/Slmulinkの使い方古典制御系設計

伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ

現代制御系設計状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos

Page 3: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 3

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos

Page 4: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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 =++

非線形項

Page 5: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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 =

Page 6: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 6

状態方程式と非線形システムの線形化(3)

))()((1)(2

2 sDsUmlgMDsJs

sY −++

[ ] ⎥⎦

⎤⎢⎣

⎡=

⎥⎦

⎤⎢⎣

⎡+⎥

⎤⎢⎣

⎡+⎥

⎤⎢⎣

⎡⎥⎦

⎤⎢⎣

⎡−−

=⎥⎦

⎤⎢⎣

yy

y

tdtuyy

DmlgMyy

&

&&&

&

01

)(10

)(1010

2

伝達関数:

状態方程式:

線形化(p.34-35)

で有効1)( <<Δ ty

Page 7: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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微分などの微分幾何学手法を用いて行うことができます.

Page 8: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 8

状態方程式と非線形システムの線形化(5)線形システムの応答解析(p.35)

線形化した式を用いて,入力にいろいろな信号を入れたときの応答波形を確認します.

(1) 制御系を線形化した式をラプラス変換して伝達関数を求めます.

(2) ステップ応答,インパルス応答,周波数応答を求めます.

Page 9: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 9

状態方程式と非線形システムの線形化(6)

線形システムを制御対象とし,いろいろなコントローラを装備したフィードバック制御系を構成します.

(3) 閉ループ伝達関数を計算します.

(4) 閉ループ系が安定になるコントローラの条件を求めます.

(5) 目標値へ追従するようなコントローラのパラメータを求めます.なるべく速く目標値に到達するようなコントローラのパラメータを求めます.

(6)外乱や制御対象の誤差などに安定性や目標値追従特性が影響を受けにくいコントローラを求めます.これらの性能をロバスト性(robustness)といいます.外乱や制御対象の誤差に安定性が影響を受けにくいとき,ロバスト安定(robustly stable)といい,目標値追従特性が影響を受けにくいとき,ロバスト性能がよい(good robust performance)といいます.

線形システムの制御系設計(P.35-36)

Page 10: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 10

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化

状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos

Page 11: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

&

&

&&

&&

Page 12: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

,

&&&

&&

&

&&&

Page 13: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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が存在します.

Page 14: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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);

Page 15: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 16: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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]')

Page 17: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 17

状態フィードバック(7)2次振動系の場合(p.36-38)

Page 18: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 18

状態フィードバック(8)2次振動系の場合(p.36-38)

Page 19: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 19

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバック

オブザーバ適レギュレータ

その他カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos

Page 20: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 20

オブザーバ(1)オブザーバ(p.38-39)

)()(),()()( tCttBtAt xyuxx =+=&

状態がすべて観測できるとは限らず,その一部,つまり出力しか観測できない

状態方程式

オブザーバ:観測できる出力から状態を推定する機構

)()()(ˆ)())(ˆ)(()()(ˆ)(ˆ tBtGtGCAtCtGtBtAt uyxxyuxx ++−=−++=&

オブザーバゲイン G

)()(ˆ)( ttt xxe −=推定誤差

を安定行列になるように選ぶ)( GCA −

0)(lim =∞→

tt

e

Page 21: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 21

オブザーバ(2)オブザーバ(p.38-39)

Page 22: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 22

オブザーバ(3)オブザーバ(p.38-39)

Page 23: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 23

オブザーバ(4)オブザーバ(p.38-39)

Page 24: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 25: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 25

オブザーバ(6)疑似状態フィードバック(p.38-40)

Page 26: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 26

オブザーバ(7)疑似状態フィードバック(p.38-40)

Page 27: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 27

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御ハードウェア(計測と制御)scilab/scicos

Page 28: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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コントローラ

Page 29: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 30: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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)

Page 31: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 31

適レギュレータ(4)適レギュレータ(P.41-43)

Page 32: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 32

適レギュレータ(5)適レギュレータ(P.41-43)

ss_LQgain.m

Page 33: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 33

制御工学とは

MATLAB/Slmulinkの使い方

古典制御系設計

伝達関数とブロック線図

LTIオブジェクト

ステップ応答,インパルス応答,周波数応答,ボード線図

システムの結合と安定性

Simulinkによる時間応答シミュレーション

PIDコントローラ

現代制御系設計

状態方程式と非線形システムの線形化

Page 34: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 34

制御工学とは

MATLAB/Slmulinkの使い方

古典制御系設計

伝達関数とブロック線図

LTIオブジェクト

ステップ応答,インパルス応答,周波数応答,ボード線図

システムの結合と安定性

Simulinkによる時間応答シミュレーション

PIDコントローラ

現代制御系設計

状態方程式と非線形システムの線形化

Page 35: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 35

カルマンフィルタ(1)

カルマンフィルタ:制御対象の入出力から,出力と状態の推定値z(オブザーバの一種:確率的ノイズが入る)

uzxy

uzyuzz

⎥⎦

⎤⎢⎣

⎡+⎥

⎤⎢⎣

⎡=⎥

⎤⎢⎣

−−++=

0ˆˆ

)(D

IC

DCLBA&

vuxywuxx

++=++=

DCGBA&

ノイズの共分散

制御対象

nT

nT

nT NEREQE === }{,}{,}{ wvvvww

Page 36: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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)

Page 37: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 37

制御工学とは

MATLAB/Slmulinkの使い方

古典制御系設計

伝達関数とブロック線図

LTIオブジェクト

ステップ応答,インパルス応答,周波数応答,ボード線図

システムの結合と安定性

Simulinkによる時間応答シミュレーション

PIDコントローラ

現代制御系設計

状態方程式と非線形システムの線形化

Page 38: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 38

LQG(1)LQG(Linear QUadratic Gaussian)コントローラ:

コントローラを 適レギュレータとカルマンフィルタで構成

yxuxyuxx

xu

LKLDBLCADCLBA

K

+−−−=−−++=

−=

ˆ])([)ˆ(ˆˆ

ˆ&

Lgqcont = lqgreg(Kest,K)

Page 39: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

θ

Page 40: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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ファイル化

Page 41: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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);

Page 42: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 42

LQG(5)Simulinkモデルは,あとでlinmod関数を使って線形化できるように,入

力ポートと出力ポートを指定している.入力ポート)u, 出力ポート)x, theta

MATLAB関数は,先ほど作った関数Mファイルの名前,invpendを入れている.MATLAB関数の出力全部と入力の2番目から5番目を積分器で結合することにより倒立振子の微分方程式が実現できる.初期条件は,積分器をクリックして代入できる.

nlpend_io.mdl

Page 43: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 44: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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 ];

Page 45: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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')

Page 46: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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]; %

Page 47: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 47

LQG(10)応答シミュレーション

線形モデルに対するLQコントローラの性能評価

ノイズ付加

ノイズなし

Page 48: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 48

LQG(11)応答シミュレーション

非線形モデルに対するLQコントローラの性能評価

lqrcon_nse5.mdl 初期条件:小

初期条件:大

不安定

Page 49: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 49

LQG(12)応答シミュレーション

線形モデルに対するLQGコントローラの性能評価

Page 50: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 50

LQG(13)応答シミュレーション

非線形モデルに対するLQGコントローラの性能評価

初期条件:小

初期条件:大

Page 51: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 52: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 52

LQG(15)非線形状態フィードバックコントローラ

Page 53: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 53

LQG(16)非線形状態フィードバックコントローラ

初期条件 [ ]000π

振り上げ制御

Page 54: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 54

制御工学とは

MATLAB/Slmulinkの使い方

古典制御系設計

伝達関数とブロック線図

LTIオブジェクト

ステップ応答,インパルス応答,周波数応答,ボード線図

システムの結合と安定性

Simulinkによる時間応答シミュレーション

PIDコントローラ

現代制御系設計

状態方程式と非線形システムの線形化

Page 55: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 56: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 56

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御

ハードウェア(計測と制御),GUIscilab/scicos

Page 57: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 58: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 58

ハードウェア制御(2)http://www.aandd.co.jp/adhome/products/sbc/ad7011-eva-arm.html

Page 59: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

Page 60: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 60

ハードウェア制御(4)

ラピッドプロトタイピング:製品開発において、試作品(prototype)を高速に(rapid)製造する技術.(例)機械分野では,3次元CADにより設計した機械部品のデータから直接に製造可能な積層造形法(粉体、樹脂、板、紙などの材料を薄い膜状に積層して機械部品を製造する技術 )についてそう呼ばれることが多い。 金型等を

製造せずに部品を直接製造できるために,従来の製造手法と比較して時間の短縮が可能で、コンカレントエンジニアリング等の高速製品開発に必須の技術と考えられている。http://designer.mse.kyutech.ac.jp/techInfo/rp-j.html

制御系設計の場合には,コントローラの性能を制御対象により検証する際に,工程の後戻りや実機試験環境でのトライアンドエラーをなるべく減らす目的で,制御対象を実機,コントローラを机上の数式とする方法をいいます.

Page 61: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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に実行ファイルをダウンロードすることが可能です.

Page 62: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 62

ハードウェア制御(6)ラピッドプロトタイピング::モータの場合(Mathworks資料より)

Page 63: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 63

ハードウェア制御(7)ラピッドプロトタイピング::モータの場合(Mathworks資料より)

SimpowerSystems

Page 64: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 64

ハードウェア制御(8)SimpowerSystems

Page 65: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 65

ハードウェア制御(9)SimpowerSystems

Page 66: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 66

ハードウェア制御(10)SimpowerSystems

Page 67: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 67

ハードウェア制御(11)デモファイル

Page 68: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 68

ハードウェア制御(12)

MATLABによるリアルタイム制御入門 : xPC Targetを使ったモデル・ベース開発大川善邦著,CQ出版

MATLABをリアルタイム制御に利用する手法の基礎を解説しました。MATLABと、Simulink、Real‐Time Workshop、xPC Targetの4本のソフトウェアをを使い、ブ

ロック線図によってシミュレーションを繰り返し、その結果として生成したプログラムをターゲットのパソコン へ送り込み、

パソコンをリアルタイム制御に利用します。

Page 69: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 69

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御

ハードウェア(計測と制御),GUIscilab/scicos

Page 70: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 70

GUI(1)MATLAB GUIの特徴

(1)MATLABの知識なくても作成したアプリケーションを利用可能.

(2)イベントドリブンのプログラミング

(3)MATLAB関数のコールバック,Simulinkとの連携が可能

(4)MATLAB Compilerの利用によるStand Alone Applicationが作成可能

GUIDEの起動

>> guide

Page 71: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 71

GUI(2)>> guide

レイアウトエディタ

他のGUIDEツールへのアクセス

他のGUIDEツール

(1) オブイジェクト整列ツール(2) プロパティインスペクタ:オブジェクトのプロパティ値を編集(3) オブジェクトブラウザ:レイアウト上にあるオブジェクトの一覧表示(4) メニューエディタ:メニューバー,ポップアップメニューの作成(5) タブオーダーエディタ:GUIアプリケーション実行中にフォーカスされている

オブジェクトをTabキーにより切り替えるときの順番を設定する.

Page 72: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 72

GUI(3)GUIDEにより作成されるファイル構成:

Figファイル:オブジェクトのレイアウトやプロパティ値の記述Mファイル:GUIアプリケーションの実行時に必要な関数

メイン関数,コールバック関数,サブ関数

GUI構築手順:(1)オブジェクトの配置(2)各オブジェクトのプロパティ値の編集(3)コールバック関数の編集(4)アプリケーションの実行

Page 73: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 73

GUI(4)GUIで使用できるオブジェクト:

オブジェクトをグループ化frame選択肢から1つまたは複数項目選択listbox

他のオブジェクトのラベルtext範囲内の値を指定slider

状態の切替checkbox数値,文字列の入力edit

選択肢から1項目選択popupmenu

選択肢(ラジオボタン群)から1項目を選択radiobutton状態の切替スイッチtogglebuttonアクションを実行するボタンpushbutton

Page 74: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 74

GUI(5)VBとほとんど同じ要領

Page 75: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 75

GUI(6)プロパティインスペクタ

Page 76: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 76

GUI(7)例題)axesとpushbuttonを用いて,図を表示するGUI

ex_guide.figで保存

Page 77: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 77

GUI(8)

Page 78: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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);

Page 79: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 79

GUI(10)

Page 80: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 80

GUI(11)

クリック

Page 81: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 81

MATLAB EXPO 2010───────── 【MATLAB EXPO 2010 開催概要】 ─────────■日程: 2010年11月26日(金) 10:00~18:00 (9:30 受付開始)■会場: 東京ミッドタウン ホール&カンファレンス■主催: MathWorks Japan

Page 82: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 82

制御工学とはMATLAB/Slmulinkの使い方

古典制御系設計伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーション

PIDコントローラ現代制御系設計

状態方程式と非線形システムの線形化状態フィードバックオブザーバ

適レギュレータその他

カルマンフィルタ,LQG,ロバスト制御,適応制御

ハードウェア(計測と制御),GUI

scilab/scicos

Page 83: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 83

Scilab(1)

Scilabとは :http://www.scilab.org/INRIA (フランス国立コンピュータ科学・制御研究所)で作成された高機

能な行列演算パッケージ.フリーソフト

Page 84: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 84

Scilab(2)

Scilabのインストールhttp://www.scilab.org/より,インストーラをダウンロード

Scilabの起動

アイコンをダブルクリック

コマンドライン(電卓的使い方)--> の後にキーボードから命令

を打ち込み,Enterキーを押すことに

より,命令が実行できる。

Page 85: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 85

Scilab(3)

0.5 1.5 0.9 1.1

t

t2

t3

t

t2

t3

Page 86: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 86

Scilab(4)

Page 87: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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 θ−

Page 88: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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

青:角度緑:角速度

Page 89: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

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)(

θθθ

θθθθθ

θθθ

θθθ

θθθθθ

θθ

Page 90: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 90

Scilab/Scicosによる計算:単振子(4)

ScicosはScilab科学技術計算ソフトウェアに含まれるグラフィカルな動的システムのシミュレータ(計算ツール)

Scilabからscicosを起動

- -> scicos()

scicosのグラフィカルエディタ(お絵かきエディタ)

Page 91: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 91

Scilab/Scicosによる計算:単振子(5)EditメニュのPalletsを左クリックする。

Page 92: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 92

Scilab/Scicosによる計算:単振子(6)つぎのようなメニューが表示される。

Page 93: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 93

Scilab/Scicosによる計算:単振子(7)各々のメニューを選択すると,つぎのような道具箱が表示される。この道具箱内のアイコンを選択して,グラフィカルエディタ内に,図を描くことができる。

Sources:各種信号の生成

Page 94: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 94

Scilab/Scicosによる計算:単振子(8)

Sinks:各種信号の保存・表示

Page 95: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 95

Scilab/Scicosによる計算:単振子(9)

Linear:微分,積分,定数倍,加算などのツール

Page 96: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 96

Scilab/Scicosによる計算:単振子(10)

Non_linear:sin,cosなどの非線形関数ツール

Page 97: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 97

Scilab/Scicosによる計算:単振子(11)単振子シミュレーション

Linear

Page 98: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 98

Scilab/Scicosによる計算:単振子(12)

積分 積分加減算

定数倍

Page 99: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 99

Scilab/Scicosによる計算:単振子(13)

Non_linear

Page 100: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 100

Scilab/Scicosによる計算:単振子(14)

)(tθ ′′)(tθ

)(tθ′

Page 101: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 101

Scilab/Scicosによる計算:単振子(15)

Sources

Page 102: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 102

Scilab/Scicosによる計算:単振子(16)

f(t)=1

時計:t

Page 103: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 103

Scilab/Scicosによる計算:単振子(17)

Sinks

Page 104: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 104

Scilab/Scicosによる計算:単振子(18)

各々のアイコンの設定値を変えるには,アイコンをクリックする.

Page 105: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 105

Scilab/Scicosによる計算:単振子(19)

Page 106: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 106

Scilab/Scicosによる計算:単振子(20)

]rad[3)0(sec],/rad[0)0( ==′ θθ

Page 107: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 107

Scilab/Scicosによる計算:単振子(21)

Page 108: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 108

Scilab/Scicosによる計算:単振子(22)

計算のための設定:Simulate Setup

終時刻

Page 109: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 109

Scilab/Scicosによる計算:単振子(23)

実行:Simulate Run

Page 110: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 7 状態方程式と非線形システムの線形化(4) 厳密線形化法 線形化(p.34-35) 制御対象の動作範囲が大きい場合には,制御入力を用

2010/8/3 MATLAB・フィードバック制御系設計 110

Scilab/Scicosによる計算:単振子(24)