Microsoft Word - ModernControl_Matlab.doc

Similar documents
Microsoft Word - ModernControl_Scilab.doc

Microsoft Word - ClassicalControl_Matlab.doc

航空機の運動方程式

The open source platform for numerical computation

システム工学実験 パラメータ推定手順

Microsoft PowerPoint - ce07-13b.ppt

航空機の運動方程式

DVIOUT

Microsoft PowerPoint - H22制御工学I-10回.ppt

Microsoft PowerPoint - chap8.ppt

Introduction to System Identification

PowerPoint プレゼンテーション

Microsoft PowerPoint - 15ROC_R_R2.pptx

76 3 B m n AB P m n AP : PB = m : n A P B P AB m : n m < n n AB Q Q m A B AQ : QB = m : n (m n) m > n m n Q AB m : n A B Q P AB Q AB 3. 3 A(1) B(3) C(

Microsoft PowerPoint - ce07-12c.ppt

Microsoft Word - 第6章 H∞制御.doc

Clipboard

Microsoft Word - 第9章 PID制御.doc

Microsoft PowerPoint - H22制御工学I-2回.ppt

Microsoft PowerPoint - 6.PID制御.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - ce07-09b.ppt

航空機の運動方程式

PowerPoint プレゼンテーション

Microsoft Word - 実験テキスト2005.doc

2012 September 21, 2012, Rev.2.2

テクノ東京21 2003年6月号(Vol.123)

PowerPoint プレゼンテーション

Microsoft PowerPoint - 講習会2.ppt

PowerPoint Presentation

O E ( ) A a A A(a) O ( ) (1) O O () 467

運動解析プログラム

スライド 1

PowerPoint プレゼンテーション

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

空き容量一覧表(154kV以上)

2/8 一次二次当該 42 AX 変圧器 なし 43 AY 変圧器 なし 44 BA 変圧器 なし 45 BB 変圧器 なし 46 BC 変圧器 なし

Microsoft PowerPoint - H21生物計算化学2.ppt

Microsoft PowerPoint - EXPO2012_AKASAKA_rev.2.pptx

eq2:=m[g]*diff(x[g](t),t$2)=-s*sin(th eq3:=m[g]*diff(z[g](t),t$2)=m[g]*g-s* 負荷の座標は 以下の通りです eq4:=x[g](t)=x[k](t)+r*sin(theta(t)) eq5:=z[g](t)=r*cos(the

Microsoft PowerPoint - no1_19.pptx

Microsoft Word - 第2章 ブロック線図.doc

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

Microsoft PowerPoint - H17-5時限(パターン認識).ppt

(Microsoft Word - PLL\203f\203\202\216\221\227\277-2-\203T\203\223\203v\203\213.doc)

untitled

1. 線形シフト不変システムと z 変換 ここで言う システム とは? 入力数列 T[ ] 出力数列 一意変換 ( 演算子 ) 概念的には,, x 2, x 1, x 0, x 1, x 2, を入力すると, y 2, y 1, y 0, y 1, y 2, が出力される. 線形システム : 線形シ

<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>

Microsoft PowerPoint - 資料04 重回帰分析.ppt

PowerPoint Presentation

Microsoft Word - 訋é⁄‘組渋å�¦H29æœ�末試é¨fi解ç�fl仟㆓.docx

航空機の縦系モデルに対する、非線形制御の適用例

Microsoft PowerPoint - 9.pptx

Microsoft PowerPoint - 9.pptx

第6章 実験モード解析

memo

データ解析

目次 第 章 はじめに 第 章 とについてについてのインストール 第 章 を用いたシミュレーション 次システムを使って の操作法を覚える シミュレーション結果について考える操作法の続き次システムにおける状態フィードバック制御次システムにおけるサーボ系 第 章 による制御系設計演習 第 章 次システム

周波数特性解析

untitled

Microsoft Word - NumericalComputation.docx

6 2 2 x y x y t P P = P t P = I P P P ( ) ( ) ,, ( ) ( ) cos θ sin θ cos θ sin θ, sin θ cos θ sin θ cos θ y x θ x θ P

カイ二乗フィット検定、パラメータの誤差

Microsoft PowerPoint - no1_17

認識行動システム論

2012/4/27 ロバスト制御系設計特論計算機シミュレーション特論シ 川邊武俊 1 モデリング 本講義 2012/04/13 物理モデルの導出( 別資料 ) Black box モデルの導出 ( 別資料 ) ロバスト制御理論 線形ロバスト制御 周波数整形 拡大系 内部安定性 小ゲイン定理 ロバスト

景気指標の新しい動向

( )

Microsoft Word - 知能機械実験・実習プリント_ docx

Microsoft PowerPoint - 第3回2.ppt

(Microsoft PowerPoint - \221\34613\211\361)

39 Fig. 2 倒立 2 輪ロボットシステム Fig. 4 倒立 2 輪ロボットモデル Table. 1 物理パラメータ る そしてその角度情報がターミナルボードを介して, ディジタルコントロールボードに送られ, その情報をもとに を利用して 内で演算され, 制御に必要なモータトルクの指令信号が

PowerPoint プレゼンテーション

Microsoft PowerPoint - 時系列解析(11)_講義用.pptx

2018 年 5 月 31 日版 知能機械実験 実習 Ⅳ Ⅳ-1. 制御工学実験 1. 実験概要と目的 ロボットをはじめとするメカトロニクス機器において 高度な動作を実現している背景には 制御技術がある 制御とは 物体の運動を意図した位置や速度で動かす技術である 精度の高い制御を行うためには 正しく

[ ] Table

1 12 ( )150 ( ( ) ) x M x 0 1 M 2 5x 2 + 4x + 3 x 2 1 M x M 2 1 M x (x + 1) 2 (1) x 2 + x + 1 M (2) 1 3 M (3) x 4 +

ボルツマンマシンの高速化

1/68 A. 電気所 ( 発電所, 変電所, 配電塔 ) における変圧器の空き容量一覧 平成 31 年 3 月 6 日現在 < 留意事項 > (1) 空容量は目安であり 系統接続の前には 接続検討のお申込みによる詳細検討が必要となります その結果 空容量が変更となる場合があります (2) 特に記載

Microsoft PowerPoint - 7.pptx

1/30 平成 29 年 3 月 24 日 ( 金 ) 午前 11 時 25 分第三章フェルミ量子場 : スピノール場 ( 次元あり ) 第三章フェルミ量子場 : スピノール場 フェルミ型 ボーズ量子場のエネルギーは 第二章ボーズ量子場 : スカラー場 の (2.18) より ˆ dp 1 1 =

PowerPoint プレゼンテーション

lecture

2011年度 筑波大・理系数学

Microsoft PowerPoint - ce07-04e.ppt

Microsoft PowerPoint - MATLABの使い方.ppt

数学 t t t t t 加法定理 t t t 倍角公式加法定理で α=β と置く. 三角関数

第 4 週コンボリューションその 2, 正弦波による分解 教科書 p. 16~ 目標コンボリューションの演習. 正弦波による信号の分解の考え方の理解. 正弦波の複素表現を学ぶ. 演習問題 問 1. 以下の図にならって,1 と 2 の δ 関数を図示せよ δ (t) 2

Microsoft PowerPoint - 配布資料・演習18.pptx

Microsoft PowerPoint - spe1_handout10.ppt

Microsoft PowerPoint - 10.pptx

解析力学B - 第11回: 正準変換

A(6, 13) B(1, 1) 65 y C 2 A(2, 1) B( 3, 2) C 66 x + 2y 1 = 0 2 A(1, 1) B(3, 0) P 67 3 A(3, 3) B(1, 2) C(4, 0) (1) ABC G (2) 3 A B C P 6

09.pptx

スライド 1

座標変換におけるテンソル成分の変換行列

統計的データ解析

a (a + ), a + a > (a + ), a + 4 a < a 4 a,,, y y = + a y = + a, y = a y = ( + a) ( x) + ( a) x, x y,y a y y y ( + a : a ) ( a : a > ) y = (a + ) y = a

演習2

Microsoft PowerPoint - 三次元座標測定 ppt

Transcription:

MATLAB による現代制御の学習 2014 年 4 月 7 日 目次 1. はじめに 2. 行列の演算 3. 時間応答の数値計算 4. システムの特性解析 5. 状態フィードバック制御の設計 ( 極配置 ) 6. オブザーバの設計と動的制御器 7. サーボ系の設計 8. LQ 最適制御系の設計 9. LQG 理論による動的制御器の設計 1. はじめに 現代制御理論では状態方程式で表される制御対象に対して線形代数に基づく制御系設計法が行える. 現代制御理論で用いられる計算としては, 行列計算の加減乗除, 固有値, 特異値, 線形代数方程式の解法などが挙げられる.MATLAB ではこれらの数値計算を容易に行える. ここでは, 現代制御理論での主要な設計法の例題を与え,MATLAB と control system toolbox の関数を用いたプログラム例を示す. 感度関数と相補感度関数によるフィードバック制御系の特性解析法は, 下記の参考図書の11 章と12 章に記している. なお, 本稿の説明は下記の URL に掲載している MATLAB による古典制御の学習 を理解されていることを前提としている. [1] 佐伯正美, 制御工学 ( 古典制御からロバスト制御へ ), 朝倉書店,2013 [2] http://home.hiroshima-u.ac.jp/saeki/index_ja.html 広島大学佐伯正美 1

2. 行列の演算 つぎの計算を行う. 行列 A, ベクトル B, ベクトル C を入力し, 基本的な行列演算の例を示せ. プログラム MCmatrix_calculation.m % 行列の入力 A=[1 4;3 2] B=[1 4]' C=[2 0]' % 加減乗 D1=B+C D2=B-C D3=A*B % 転置 D4=A' % 行列式 s1=det(a) % 逆行列 D5=inv(A) % 固有値と固有ベクトル [T,eigA]=eig(A) A2=T*eigA*inv(T)% 確認 % 特異値と特異ベクトル [U,S,V]=svd(A) A3=U*S*V'% 確認 3. 時間応答の数値計算 システムが P(s)=(A,B,C,D) で与えられるとき, ステップ応答, インパルス応答, 指定した初期値と入力 ut () に対する応答 yt () を求め, 図示せよ. ただし, 0 1 0 A, B, C 2 0, D0 1 1 1 2

%% system_simulation.m %% 過渡応答の計算 %% システムの係数 A=[0 1;-1-1] B=[0 1]' C=[2 0] D=0 sysp=ss (A,B,C,D) %% ステップ応答とインパルス応答初期値 =0とする. t=0:0.01:10; y1=step(sysp,t); y2=impulse(sysp,t); figure(1) plot(t,y1,'r',t,y2,'b','linewidth',2) xlabel('time[s]') ylabel('y1,y2') title('step and impulse responses') %% 初期値 x0, 入力 u(t) に対する応答 x0=[1 0]' t=0:0.01:10; u=abs(sin(t)); y3=lsim(sysp,u,t,x0); figure(2) plot(t,u,'r-.',t,y3,'b','linewidth',2) xlabel('time[s]') ylabel('u,y3') title('response with x0 and u(t)') 3

2.5 Step and impulse responses 2 1.5 y1,y2 1 0.5 0-0.5 0 1 2 3 4 5 6 7 8 9 10 time[s] 図 1 ステップ応答とインパルス応答 2 Response with x0 and u(t) 1.8 1.6 1.4 1.2 u,y3 1 0.8 0.6 0.4 0.2 0 0 1 2 3 4 5 6 7 8 9 10 time[s] 図 2 初期値 x0 と入力 u(t) に対する応答 4. システムの特性解析 システムが P(s)=(A,B,C,D) で与えられるとき, 伝達関数, 極, ゼロ点, 可制御性, 可観測性, 周波数特性 ( ベクトル軌跡, ボード線図 ) を調べよ. ただし, 0 1 0 A, B, C 1 0, D0 1 1 1 % system_analysis.m close all clear all 4

%% システムの特性解析 %% システムの状態方程式 A=[0 1;-1-1] B=[0 1]' C=[1 0.1] D=0 sysp=ss(a,b,c,d); %% 極, ゼロ点, 伝達関数 polep=pole(sysp) zerop=zero(sysp) [nump,denp]=ss2tf(a,b,c,d); tfp=tf(nump,denp) %% 可制御性 Uc=ctrb(A,B)%% 可制御性行列 Uc na=rank(uc) %%nは可制御部分空間の次元 [n,n]=size(a) if na==n disp(' 可制御 ') else disp(' 不可制御 ') end %% 可観測性 Uo=obsv (A,C)%% 可観測性行列 Uc nb=rank(uo) %%nbarは可観測部分空間の次元 [n,n]=size(a) if nb==n disp(' 可観測 ') else disp(' 不可観測 ') end %% 周波数特性 nw=200; omega=logspace(-2,1,nw); [rep,imp]=nyquist(sysp,omega); [magp,phasep]=bode(sysp,omega); 5

%% ベクトル軌跡 figure(1) plot(rep(:),imp(:),'linewidth',2) xlabel('real') ylabel('imag') title('vector locus') %% ボード線図 figure(2) subplot(2,1,1) semilogx(omega,20*log10(magp(:)),'linewidth',2); xlabel('\omega[rad/s]') ylabel('gain [db]') title('bode plot') subplot(2,1,2) semilogx(omega,phasep(:),'linewidth',2); xlabel('\omega[rad/s]') ylabel('phase[deg]') 0 Vector locus -0.2-0.4-0.6 Imag -0.8-1 -1.2-1.4-0.4-0.2 0 0.2 0.4 0.6 0.8 1 1.2 Real 図 3 ベクトル軌跡 6

10 Bode plot 0 gain [db] -10-20 -30-40 10-2 10-1 10 0 10 1 [rad/s] 0 phase[deg] -50-100 -150 10-2 10-1 10 0 10 1 [rad/s] 図 4 ボード線図 5. 状態フィードバック制御の設計 ( 極配置 ) システムが P(s)=(A,B,C,D) で与えられるとき, 極を 1, 2,, n に配置する状態フィードバックゲイン F を求めよ. ただし, 0 1 0 A, B, C 1 0, D 0 0 1 1 12 j, 12j 1 2 % pole_assign_design.m %% 状態フィードバックゲインの設計 ( 極配置 ) %% システムの状態方程式 A=[0 1; 0-1] B=[0 1]' C=[1 0] D=0 sysp=ss(a,b,c,d) %% 状態フィードバック系の極を指定 i=sqrt(-1); 7

poles=[-1+2*i,-1-2*i] %% プラントの極 polep=eig(a); %% 可制御性 U=ctrb(A,B)%% 可制御性行列 Uc na=rank(uc) %%nは可制御部分空間の次元 [n,n]=size(a); if na==n disp(' 可制御 ') else disp(' 不可制御 ') break end %% 状態フィードバックゲインの決定 F=place(A,B,poles) poleabf=eig(a-b*f) 6. オブザーバの設計と併合系の特性解析 システムが P(s)=(A,B,C,D) で与えられるとき, オブザーバの極を 1, 2,, n に配置するフルオーダーオブザーバを設計せよ. オブザーバゲインを K とする. 状態フィードバック則 u Fxとこのオブ サーバーから構成される動的制御器 H() s を求めよ. ただし, 0 1 0 A,, 1 0, 0 0 1 B C D 1 1 2, 2 3 F 5 1 % observer_design.m % オブザーバの設計 ( 極配置 ) % システムの状態方程式 A=[0 1; 0-1] B=[0 1]' C=[1 0] D=0 sysp=ss(a,b,c,d) 8

% オブザーバの極を指定 observer_poles=[-2,-3] % 可観測性のテスト ob=obsv(a,c) % 可制御性行列 n=rank(ob);% 可制御性行列のランク [na,na]=size(a); if na==n disp(' 可観測 '); else disp(' 不可観測 ',na); break; end %% オブザーバゲインの決定 ( 状態フィードバックの双対 ) Ktemp=place(A',C',observer_poles); K=Ktemp' check_poles=eig(a-k*c) %% 動的制御器 H(s)=(Ah,Bh,Ch,Dh) の状態方程式 % 状態フィードバックゲイン F =[5 1] % 制御器の伝達関数 Ah=A-B*F-K*C Bh=K Ch=F Dh=0 [numh,denh]=ss2tf(ah,bh,ch,dh); Hsys=tf(numH,denH) 7. サーボ系の設計 プラント Ps () ( A, B, C, D) に対して, ステップ関数に対して定常偏差がゼロとなる動 p p p p 的制御器 H() s を設計せよ. さらに, 構成した系の目標値応答と外乱応答をステップ関数に対して数値計算で求めよ. 制御器の伝達関数を求め, 感度関数 S と相補感度関数 T のゲイン特性を描け. ただし, プラントのモデルを次式で与える. 0 1 0 Am, Bm, Cm 1 0, Dm 0 1 0.3 1 9

制御対象がゼロ型であるので, 積分器を追加した拡大系に対して状態フィードバックゲインを極配置法で設計し, 制御対象の状態はフルオーダオブザーバで推定する. これらを用いて動的制御器を構成する. 制御対象のモデルの状態方程式出力 y の積分の状態方程式 x Ax Bu m m m m y C x m x y I I m y x 上式をまとめると拡大系の状態方程式が得られる. x Ax Bu ここに, xm Am 0 Bm x, A, B x I Cm 0 0 状態フィードバックゲイン F [ F, F ] は A BF の極配置で設計する. これにより制御 則として x I u Fx F F x x が得られた. つぎにプラントの状態を推定するオブザーバゲイン K は A m KC m の極配置で設計する. よってオブザーバの状態方程式は次式で与えられる. x Ax BuKCx ( y) m m m m m m I I 外乱と目標値に対する制御量と制御入力の応答のシミュレーションを考える. 外乱は プラント入力に加わるとすると, プラントの状態方程式が x Ax B( ud) となる. p p p p また, 目標値と出力の偏差信号を積分器に加えることで定常偏差をゼロにするので, 積分器の状態方程式が x I yr となる. これらにオブザーバの状態方程式と状態フィードバックの代数式を組み合わせれば, 次式のフィードバック系の状態方程式が得られる. x Ax Bw ここに, c c c c z C x c c 10

xp Ap BF p x BF p I Bp 0 xc x m, Ac KCp Am BmFx KCm BmFI, B c 0 0 x i Cp 0 0 0 I y d C p 0 0 z, w, Cc u r 0 Fx F I 感度や相補感度の計算のために, 次式のフィードバック系を考える. y P() s u u H()( s r y) このとき, H() s の状態方程式は次式となる. x h Ax h h By h u Chxh ここに % servo_design.m % サーボ系の設計 xm Am BmFx KCm BmFI xh, Ah x I 0 0 K Bh, Ch F I % 極配置, オブザーバと拡大系に対する状態フィードバック制御 clear all close all % プラントのモデルの状態方程式 (Ap,Bp,Cp,Dp) Am=[0 1; -1-0.3] Bm=[0 1]' Cm=[1 0] Dm=0 %%***************************************// % 積分器を含む拡大系 (A,B) [ny,nx]=size(cm) [nx,nu]=size(bm) A=[Am zeros(nx,ny) Cm zeros(ny,ny)] B=[Bm 11

zeros(ny,nu)] % 状態フィードバック系の極を指定 i=sqrt(-1); poles=[-1+2*i,-1-2*i, -3] % プラントの極 opoles=eig(a) % 状態フィードバックゲインの決定 F=place(A,B,poles) poleabf=eig(a-b*f) %% **************************************// % オブザーバの設計 ; モデル (Am,Bm,Cm,Dm) に対する設計 ( 極配置 ) % オブザーバの極を指定 observer_poles=[-2,-3] % オブザーバゲインの決定 ( 状態フィードバックの双対 ) Ktemp=place(Am',Cm',observer_poles); K=Ktemp' observer_poles=eig(am-k*cm) %% ***************************************** % シミュレーション ( 外乱, 目標値応答 ) % プラントの状態方程式 (Ap,Bp,Cp,Dp) // (Am,Bm,Cm,Dm) と異なる係数でもよい. Ap=[0 1; -1-0.3] Bp=[0 1]' Cp=[1 0] Dp=0 % シミュレーションの閉ループ系の状態方程式 (Ac,Bc,Cc,Dc) Fx=F(1:nx); FI=F(nx+1:nx+ny); Ac=[Ap -Bp*Fx -Bp*FI K*Cp Am-Bm*Fx-K*Cm -Bm*FI Cp zeros(ny,nx) zeros(ny,ny)]; % reference input Bcr=[zeros(nx,ny) zeros(nx,ny) -eye(ny)]; % disturbance input Bcd=[Bp 12

zeros(nx,nu) zeros(ny,nu)]; Cc=[Cp zeros(ny,nx) zeros(ny,ny)]; Dc=zeros(ny,ny); sys_closed_r=ss(ac,bcr,cc,dc); sys_closed_d=ss(ac,bcd,cc,dc); %% t=0:0.01:10; yr=step(sys_closed_r,t); yd=step(sys_closed_d,t); figure(1) subplot(2,1,1) plot(t,yr,'linewidth',2) title('step reference response') xlabel('time(s)');ylabel('yr(t)'); subplot(2,1,2) plot(t,yd,'linewidth',2) title('step disturbance response') xlabel('time(s)');ylabel('yd(t)'); % 制御器の伝達関数 Ah=[Am-Bm*Fx-K*Cm,-Bm*FI zeros(ny,nx), zeros(ny,ny)]; Bh=[K eye(ny,ny)]; Ch=F; Dh=zeros(nu,ny); sysh=ss(ah,bh,ch,dh); % プラントの伝達関数 sysp=ss(ap,bp,cp,dp); % 感度関数と相補感度関数 syss=1/(1+sysp*sysh); syst=1-syss; % 周波数特性 nw=200; omega=logspace(-1,2,nw); syst=1-syss; 13

[gsw,phsw]=bode(syss,omega); [gtw,phtw]=bode(syst,omega); % ゲイン図 figure(2) semilogx(omega,20*log10(gsw(:)),omega,20*log10(gtw(:)),'linewidth',2); axis([0.1 100-40 10]) xlabel('omega') ylabel('s and T') title('gain plots') 8.LQ 最適制御系の設計 プラント Ps () ( ABCD,,, ) に対して, つぎの LQ 評価関数を最小にする制御器を設計せよ. 0 T T T J x Qxu Ru2x Nu dt 一巡伝達関数のベクトル軌跡を描き, 円条件を満たすことを確認せよ. 入力重み R ri を r 0.1,1,10 に増加させるときの状態フィードバック系の極配置, および, 同様に入力から見た感度関数 S と相補感度関数 T のゲイン特性を描け. ただし, プラントのモデルと重み行列を次式で与える. 0 1 0 1 0 0 A, B, Q, N 0 0 1 0 0 0 次式のリカッチ方程式の正定対称行列の解を P とする. T 1 T PA A P PBR B P Q 0 最適解の状態フィードバックゲインは 1 T F R B P で与えられる. よって, フィードバック系は次式で表される. x Ax Bu u Fx プラントの入力で閉ループを開いた場合の一巡伝達関数は 1 L F( si A) B で与えられる.1 入力系の場合には感度関数と相補感度関数は 1 L S, T 1 S 1 L 1 L で与えられる. フィードバック系の極は A BF の固有値で与えられる. 14

% LQ_optimal_control.m % 最適制御系の設計 % LQ 状態フィードバック制御 clear all close all % プラントのモデルの状態方程式 (A,B) A=[0 1 0 0] B=[0 1]' % 行列のサイズ [nx,nu]=size(b) % 重み関数 Q=[1 0 0 0] % Rを変えて特性を調べる. Rvec=[0.1,1,10] N=zeros(nx,nu); for i=1:length(rvec) R=Rvec(i); % 状態フィードバックゲインの決定 F = lqr(a,b,q,r,n) % 極配置 LQroot=eig(A-B*F); figure(1) plot(real(lqroot),imag(lqroot),'*') % ベクトル軌跡 figure(2) sysl=ss(a,b,f,0); nyquist(sysl); % 感度関数と相補感度関数 syss=1/(1+sysl); syst=1-syss; % 周波数特性 nw=200; omega=logspace(-2,2,nw); 15

[gsw,phsw]=bode(syss,omega); [gtw,phtw]=bode(syst,omega); % ゲイン図 figure(3) semilogx(omega,20*log10(gsw(:)),omega,20*log10(gtw(:)),'linewidth',2); xlabel('omega') ylabel('s and T') title('gain plots') pause end 9.LQG 理論による動的制御器の設計 プラント Ps () ( A, B, C, D) に対して, ステップ関数に対して定常偏差がゼロとなる動 p p p p 的制御器 H() s を LQG 理論で設計せよ. さらに, 構成した系の目標値応答と外乱応答をステップ関数に対して数値計算で求めよ. 制御器の伝達関数を求め, 感度関数 S と相補感度関数 T のゲイン特性を描け. ただし, プラントのモデルを次式で与える. 0 1 0 Am, Bm, Cm 1 0, Dm 0 1 0.3 1 制御対象がゼロ型であるので, 積分器を追加した拡大系に対して状態フィードバックゲインを LQ 理論で設計し, 制御対象の状態はカルマンフィルタで推定する. これらを用いて動的制御器を構成する. ここに,LQ 理論の重みを T T J x Qxu Ru dt 0 とし, カルマンフィルタの設計のためのプラントを次式で表し, x () t A xb u() t v() t yt () Cxt () wt () 外乱と測定雑音は平均がゼロで共分散行列が次式で与えられるとする. T E v() t v( ) V( t) T E w() t w( ) W( t) % LQG_optimal_control.m % 最適制御系 +カルマンフィルタの設計 p p 16

% LQI 状態フィードバック制御 + カルマンフィルタ clear all close all % プラントのモデルの状態方程式 (Am,Bm,Cm,Dm) Am=[0 1; -1-0.3] Bm=[0 1]' Cm=[1 0] Dm=0 % *************************************** % 積分器を含む拡大系 (A,B) [ny,nx]=size(cm) [nx,nu]=size(bm) A=[Am zeros(nx,ny) Cm zeros(ny,ny)] B=[Bm zeros(ny,nu)] % **************************************** % LQ 制御による設計 q=1 Q=q*[1 0 0 0 1 0 0 0 1]; R=1; % 状態フィードバックゲインの決定 F = lqr(a,b,q,r) % 状態フィードバック系の解析 % 極配置 LQroot=eig(A-B*F); figure(1) plot(real(lqroot),imag(lqroot),'*') % ベクトル軌跡 figure(2) sysl=ss(a,b,f,0); nyquist(sysl); % 感度関数と相補感度関数 17

syss=1/(1+sysl); syst=1-syss; % 周波数特性 nw=200; omega=logspace(-2,2,nw); [gsw,phsw]=bode(syss,omega); [gtw,phtw]=bode(syst,omega); % ゲイン図 figure(3) semilogx(omega,20*log10(gsw(:)),omega,20*log10(gtw(:)),'linewidth',2); axis([0.01 100-40 10]) xlabel('omega') ylabel('s and T') title('lq control case') % ************************************** % カルマンフィルタの設計 ; モデル (Am,Bm,Cm,Dm) に対する設計 % 共分散行列 V=[1 0 0 1] W=1 % カルマンゲインの決定 ( 状態フィードバックの双対 ) Ktemp = lqr(am',cm',v,w); K=Ktemp' observer_poles=eig(am-k*cm) % ***************************************** % シミュレーション ( 外乱, 目標値応答 ) % プラントの状態方程式 (Ap,Bp,Cp,Dp)// (Am,Bm,Cm,Dm) と異なる係数でもよい. Ap=[0 1; -1-0.3] Bp=[0 1]' Cp=[1 0] Dp=0 %% シミュレーションの閉ループ系の状態方程式 (Ac,Bc,Cc,Dc) Fx=F(1:nx); 18

FI=F(nx+1:nx+ny); Ac=[Ap -Bp*Fx -Bp*FI K*Cp Am-Bm*Fx-K*Cm -Bm*FI Cp zeros(ny,nx) zeros(ny,ny)]; % reference input matrix Bcr=[zeros(nx,ny) zeros(nx,ny) -eye(ny)]; % disturbance input matrix Bcd=[Bp zeros(nx,nu) zeros(ny,nu)]; Cc=[Cp zeros(ny,nx) zeros(ny,ny)]; Dc=zeros(ny,ny); sys_closed_r=ss(ac,bcr,cc,dc); sys_closed_d=ss(ac,bcd,cc,dc); % シミュレーション ( 目標値応答 外乱応答 ) t=0:0.01:20; yr=step(sys_closed_r,t); yd=step(sys_closed_d,t); figure(4) subplot(2,1,1) plot(t,yr); title('step reference response') xlabel('time(s)');ylabel('yr(t)'); subplot(2,1,2) plot(t,yd); title('step disturbance response') xlabel('time(s)');ylabel('yd(t)'); % 制御器の伝達関数 Ah=[Am-Bm*Fx-K*Cm,-Bm*FI zeros(ny,nx), zeros(ny,ny)]; Bh=[K eye(ny,ny)]; Ch=F; Dh=zeros(nu,ny); 19

sysh=ss(ah,bh,ch,dh); % プラントの伝達関数 sysp=ss(ap,bp,cp,dp); % 感度関数と相補感度関数 syss=1/(1+sysp*sysh); syst=1-syss; % 周波数特性 nw=200; omega=logspace(-2,2,nw); [gsw,phsw]=bode(syss,omega); [gtw,phtw]=bode(syst,omega); % ゲイン図 figure(5) semilogx(omega,20*log10(gsw(:)),omega,20*log10(gtw(:)),'linewidth',2); axis([0.01 100-40 10]) xlabel('omega') ylabel('s and T') title('lqg control case') 20