matlab/simulink...2010/8/3 matlab・フィードバック制御系設計 4 制御工学とは(1)...

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

Upload: others

Post on 27-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkによる

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

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

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

Page 2: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

アウトライン制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

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

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

適レギュレータその他

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

Page 3: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

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

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

適レギュレータその他

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

Page 4: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とは(1)

• コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

する必要がある.センサーを用いて測る.目!

– 推し量る:センサーからの情報を基に制御対象をどのように動かせばよいか推理する.コンピュータを用いて計算する.頭!

– 操る:推理したデータを用いて制御対象を動かす.アクチューエータを用いて操る.手足!

• 制御工学は何をめざしているのか?– 主に,頭の部分をどうやって,計算機のソフトウェアとして

構成するかを考えるもの.ソフトウェアとして構成できれば,ICチップ化も可能.機械で人間の代行するにはどうしたらよいのだろうか,ということを考える学問.

Page 5: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とは(2)

• コントロールの3大要素 : – 対象(相手)

– 要請(自分の意志)

– 制御(あやつる方法)

• 身近なコントロールの実例

– 車• 走行制御分野

• 車体制御分野

• 情報制御分野

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 6: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 走行制御分野(1)– エンジン制御:ECU(エンジン コントロール ユニット)

• 各センサーからの情報を元に、エンジンの燃料噴射量や噴射時間を決定する.アイドル回転数を制御したり、A/F(空燃比)の調整.点火時期の制御 も行う.

• オートクルーズコントロール:高速道路など一定のスロットル開度で長時間走行するような場合に,アクセルを踏まなくとも設定した速度を保持して走行する装置.近年はコンピュータ等の進展により,ミリ波レーダーを使って前走車との車間距離を検知,車間がつまると自動的に速度を落として一定の車間を保つなど,よりいっそう進んだオートクルーズ技術も実

用化されている.

制御工学とは(3)

引用 http://www.necel.com/ja/solutions/applications/auto/http://kw.allabout.co.jp/glossary/g_auto/w006201.htm

Page 7: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• ECUのためのセンサ類– バキューム センサー:エンジンに吸入されている空気の

量(または負圧)を測定– 吸気温 センサー :吸入空気の温度を測定– スロットル ポジション センサー(アクセレーション セン

サー) :エンジンのスロットル(アクセル)バルブの開度,又はアクセル ペダルの踏み加減 を測定

– クランク角 センサー :エンジンのピストンがどの位置にいるか測定

– 水温 センサー :エンジンの冷却水の水温を測定– ノック センサー :エンジンの負荷増大によるノッキングを

検知– O2 センサー :排気ガス中の酸素濃度を測定

制御工学とは(4)

http://homepage2.nifty.com/vatabo/yougosyu.html

Page 8: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 走行制御分野(2)– 横滑り防止制御 ESC (Electronic Stability Control)

• ABSとTCSを用いて,ブレーキやエンジンを制御することで、安全にカー

ブを曲がっていけるように運転を支援する

• ABS(Anti-lock Brake System) :急ブレーキのためにタイヤ

がスリップ(ロック)したときに、瞬間的にブレーキの油圧を抜いてブレー

キを緩め、タイヤが滑らないようにするシステム

• TCS(トラクション制御システム) :タイヤのスリップを検知した

ときに,エンジンの出力やブレーキを制御し,タイヤの空転を抑えるシステム・・・traction (車輪の摩擦)

制御工学とは(5)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 9: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 走行制御分野(3)– 電動パワー・ステアリング EPS(Electoric Power

Steering)• ドライバーのハンドル操作を回転角度や回転速度から検知し,重いハン

ドルの操作をモータで補助する.モータの回転補助には,操作感が不自然にならないよう,きめ細かい検知と微妙な回転支援を実現するモータ制御用マイコンが必要.

制御工学とは(6)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 10: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 車体制御分野(1)– メータ機器:電子化

– BCM(ボディー・コントロール・モジュール)– 各種スイッチ入力処理とLAN通信,キーレス機器の認証処理などを

集中的に処理

– 車輌内スイッチ制御– 操作用スイッチの数がハンドル周り(ステアリング・コラム・トップ)で

増加する傾向にあるため,車輌内配線(ワイヤー ハーネス)の削減策としてシングル・ワイヤー通信を可能としたLIN(Local Interconnect Network) が導入される.

– パワー・ウィンドウ

– インテリジェント・キー

制御工学とは(7)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 11: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 車体制御分野(2)– AFS(Adaptive Front-lighting System):ハンドルを切った角度に連動し

てヘッドライトの向きが変わり,常に進行方向を明るく照らせるようにするシステム

– タイヤ空気圧センサ:各タイヤの圧力や温度などの情報を収集し、無線で飛ばしてダッシュボード上に表示するシステム

– レイン・センサ:フロントガラスに付着した雨粒を検知し、ワイパーを動作させるシステム

– セントラル・ボディ:クルマの各部に取り付けられたセンサなどと連携して、クルマの稼働状態を集中監視するシステム

– プリクラッシュ・シートベルト:衝突事故を事前に察知し,シートベルトを衝突前に巻き上げることで,ドライバーや同乗者の体への衝撃を和らげるシステム

– 乗員検知:座席の状況を感知し,ドライバーや同乗者の状態(体格,姿勢,位置,チャイルド・シートの有無,シートベルト装着の有無など)に応じて膨張力を自動調整するスマート・エアバッグ・システムに詳細な乗員情報を送るためのシステム

– SRSエアバッグ(Supplemental Restraint System Airbag):シートベルトと連携して、ドライバーなどにかかる衝突の衝撃を緩和するエアバッグ・システム

制御工学とは(8)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 12: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 車体制御分野(3)

– アクティブサスペンション:電子制御によって車体を支えるサス

ペンションの特性を変化させて、従来車輪に加わる外力の変化の車体への伝達を、スプリングとダンパーの特性で抑制していたのを、主にダンパーの油圧を積極的に制御して、サスペンション特性を改善しようとするもの

制御工学とは(9)

引用 http://ja.wikipedia.org/wiki

Page 13: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 情報制御分野(1)

– カー・ナビゲーション・システム• 基本機能(GPS部、表示部、システム・コントロール部)• AV機能

• 通信機能 :ETC(自動料金収受システム:Electronic Toll Collection System)や道路情報の受信(VICS)をはじめ、安全で快適な運転のために車外と情報交換を行う仕組み

– 高度道路交通システム ITS(Intelligent Transport Systems)

制御工学とは(10)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 14: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 情報制御分野(2)

– ミリ波レーダ:車間距離や相対速度を検知するための,世界共通周波数帯(30GHz~300GHz:日本では60GHz/76GHzが割り振られている)を使ったレーダ

– バック・ガイド・モニタ

– フロント&サイド・モニタ

– ナイト・ビジョン:赤外線カメラを使って,ヘッドライトの死角にいる歩行者をも検知し,運転者に知らせる夜間運転支援システム

制御工学とは(11)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 15: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 情報制御分野(1)

– カー・ナビゲーション・システム• 基本機能(GPS部、表示部、システム・コントロール部)• AV機能

• 通信機能

– ミリ波レーダ

– バック・ガイド・モニタ

– フロント&サイド・モニタ

– ナイト・ビジョン

制御工学とは(12)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 16: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 情報制御分野(1)

– カー・ナビゲーション・システム• 基本機能(GPS部、表示部、システム・コントロール部)• AV機能

• 通信機能

– ミリ波レーダ

– バック・ガイド・モニタ

– フロント&サイド・モニタ

– ナイト・ビジョン

制御工学とは(13)

引用 http://www.necel.com/ja/solutions/applications/auto/

Page 17: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御系の基本構成 (1)• コントロールの3大要素

– 対象(相手),要請(自分の意志),制御(あやつる方法)

• 対象の捉え方(1)

– 対象は何か? →たとえば, 車,列車,船舶,ロケット,航空機,ロボッ

ト,工作機械,化学プラント,原子炉,動物や植物,経済,社会など

– 対象を支配する法則は何か?→物理系の場合は運動方程式が多い.

制御理論を使う場合には,まず,この部分をいかに把握するかで,制御性能が大きく変わってくる.数式により対象のモデルをつくるか,数式によらないモデルをつくるか,むずかしい選択であるが,決まった物理法則に従うものは数式に基づいた方がよいが,経済,社会などの場合には,数式をたてることがむずかしいので,数式によらないモデルにせざるをえない.

Page 18: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御系の基本構成 (2)• 対象の捉え方(2)

– 対象においてこちらから操作できるものは何か? →操作できる装置をアクチュエータとよび,操作できる量を入力(操作量)という.

– 対象の中からえられる観測データは何か? →観測装置をセンサーとよび,観測できる量を出力(観測量)という.

– 対象において制御しなければならないものは何か?→この制御しなければならない量を制御量という.通常の制御系では出力と制御量は同じであることが多い.

– 対象に悪影響を与える外的要因は何か?→このようなものを外乱という.また,特に,観測量は電気信号により伝送されることが多いが,この信号に混入するノイズを雑音という.

Page 19: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御系の基本構成 (3)• 対象の表し方

– 伝達関数,状態方程式:入力と出力の関係を数式で表す.

– ルール:対象の挙動を,If ….., then …..のことばで記述.

• 要請は? :仕様として与えられているものはなにか.

– 速応性:速く希望の状態にしたい.

– 定常特性:一定の状態に保ちたい.

– コスト 小

– 外乱除去特性:外乱が入っても,制御性能を維持したい.など

Page 20: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御系の基本構成 (4)• 制御のやり方は?

– 開ループ制御(フィードフォワード制御,シーケンス制御) → 制御手順をあらかじめ時間的にプログラムし,結果を確認することなく制御を進行させる方法であり,これはと呼ばれている.

特徴:始動入力が加えられると,第1ステップの仕事が実行され,その終了確認をしたあと,第2ステップの仕事を実行する.以下,これを繰り返して行い,

終ステップの仕事の終了後 終出力を出す.

例:電子計算機,自動販売機,エレベータなど.

– 閉ループ制御(フィードバック制御) → 結果を確認しながら希望の結果よりはずれていれば,それを修正するように制御を行う方法で,と呼ばれているものである.

特徴:出力を見ながら,もし希望の値よりも小さいならば増やす方向に入力を加え,大きいならば減らす方向に入力を加える.対象の特性変動や雑音外乱の混入があってもある程度の制御性能を得ることができる.

例:オートパイロット,モータ制御など

Page 21: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御器 制御対象目標値 出力

制御器 制御対象目標値 出力+

開ループ制御

閉ループ制御

(フィードバック制御)

制御系の基本構成 (5)

Page 22: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御系の基本構成 (6)• フィードバック制御系の基本構成は?

– センサ(検出部) → 制御対象から制御量の値を検出(観測)する.センサで検出した値に誤差があると,制御した結果はその分だけ狂ってしまう.センサとコントローラが離れている場合には,センサの出力は伝送に都合のよい信号に変換されて伝送される.

– コントローラ(制御器) → 制御変数と設定値との偏差を求め,偏差をゼロにするための判断を行い,その判断結果を信号として出力する.狭い意味での制御工学とは,このコントローラをつくることである.

– アクチュエータ(操作部) → コントローラからの信号をパワーに変換し,そのパワーにより制御対象に働きかけ,制御対象の状態を操作する.

– 外乱 → 制御対象あるいは制御系全体に悪影響をおよぼす外界の作用.

– 指令 → 制御量の指示値.

– 伝送信号 → 近は,電気信号が多い.油圧や空気圧の場合もある.電気信号の場合には,アナログ信号を用いるものとディジタル信号を用いるものがある.

Page 23: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御器

制御系の基本構成 (7)

http://www.wdic.org/p/SCI/fbctrl.png

Page 24: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• フィードバック制御系の要請は? – 制御量を一定値に保つ(定値制御,レギュレータ) – 制御量を変化する目標値に対して追従させる (追従制御

系,サーボ系) – 外乱の影響や制御対象の変動に対して,性能劣化の少

ない制御系を構成する(ロバスト制御系)

制御系の基本構成 (8)

Page 25: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• フィードバック制御の演算方式 (1)– アナログ制御とディジタル制御

制御演算の際の信号がアナログかディジタルか

– ON-OFF制御→制御量が目標の値を越えると入力をOFFにし,下がるとONにする制御方法.制御量はハンチングを起こす(ガタガタする)ので,精密な制御はむずかしい.

– PID制御

→P : Proportional (比例)I : Integral (積分)D : Derivative (微分)

制御量と目標値との差をとり,それを比例倍したり,積分したり,微分したりした量を入力として加えて,制御量を目標値に近づける方法.

– 状態フィードバック制御( 適レギュレータ,極配置)→制御対象の内部の状態(メカトロ系の場合には位置と速度の両方)がすべて観測できるならば,その状態を比例倍して入力として加える制御法で,これによりたいていの制御が可能である.

制御系の基本構成 (9)

Page 26: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• フィードバック制御の演算方式 (2)– 状態推定および疑似状態フィードバック→制御対象の内部の状態(メカトロ

系の場合には位置と速度の両方)がすべて観測できない場合を考える.メカトロ系の場合には位置か速度かどちらかしか観測できない場合に当たる).このときには,観測できる出力から,すべての内部状態を推定して,その推定値を用いて制御するメカトロ系では,速度から位置を推定したり,位置から速度を推定する).

– LQG制御系→疑似状態フィードバックの一種であるが,内部状態の推定にカルマンフィルタを用い,制御量の善し悪しを評価する関数を導入し(通常は,制御量の2乗値と入力の2乗値を時間で積分したもの),これを 小にするように入力を決定する方法.

– H2制御系→LQG制御の一般形評価関数を信号のノルムという概念を使って一般化したもの.

制御系の基本構成 (10)

Page 27: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• フィードバック制御の演算方式 (3)– H∞制御系,μ解析/設計→制御対象が正確にわからない場合,その誤差の

大値をボード線図で見積り,これをもとに制御系を設計し,その誤差範囲にある制御対象はすべて制御できるようにしたもの.

※ボード線図:制御対象にいろいろな周波数の入力を加えたときに出てくる出力が入力に対して,どのくらい増幅されたかをあらわす図.カセットテープの裏によく載っている図.

– L1制御系→時間応答のピーク値の改善※ノルム:時間関数の振幅の 大値

– モデル予測制御系→制御対象のモデルを基に,未来の制御対象の挙動を予測しながら,それと未来の目標値を比較して,その誤差をもとに現在の入力を調整していく方法.

制御系の基本構成 (11)

Page 28: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• フィードバック制御の演算方式 (4)– スライディングモード制御系→安定なスライディングモード面を作り,これに

収束させるように入力を切り替えて行く方法.スライディングモード面に収束させれば,スライディングモード面が安定であるため,そこからは原点に収束する.

– 適応制御系→制御対象の物理パラメータがわからない場合に,制御対象の入力と出力の関係から,パラメータを推定しながら制御も同時に行う方法.学習という概念の古典的なバージョン.

– ニューラルネット制御系→人間の脳を模擬したニューロンの結合により制御対象やコントローラを構成する.ただし,ニューロンの結合の度合いを,教師信号をいれることによって学習させたのちに,制御を行うことが出来る.

– ファジィ制御系→信号を定性的に評価し(メカトロ系だと,すごく速いとか中くらいはやいとか,度合いはメンバーシップ関数で定義する),制御則は,if---then---形式で記述する.制御対象の数式モデルが不要で,定性的な規則のみが分かっていればよい.

制御系の基本構成 (12)

Page 29: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 古典制御理論の成立(1940年代)

– すべての装置を包含する共通の理論体系 → システム理論

– 入力信号,出力信号 → 周波数をもつ波

– 箱とみなした装置に入力信号を入れたとき,どれくらい,信号がひずんで出力として現れるか?

– 伝達関数,ボード線図

– PID制御

制御の歴史 (1)

Page 30: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 現代制御理論の成立(1950年代)

– カルマン:状態方程式に基づく制御理論の構築

• 状態とは何か?

– システムの内部のすべての動きを表す量.

• 状態をすべて測定することが出来れば,たいていのことができる.

• 通常,測定することが出来るのは,状態の一部(出力)!

– ベルマン,ポントリャーギン: 適制御の解法

• 適性の概念

– 現代制御理論の弱点:制御対象の正確な挙動を数式で表現しなければならない.

• 物理パラメータがわからないことがある.正確に数式で記述できないことがある.

制御の歴史 (2)

Page 31: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

• 適応制御理論の登場(1970年代以降)– わからない物理パラメータを,制御対象の入出力情報を用いて学習する.た

だし,制御対象の挙動は,その物理法則に基づいて数式化する必要がある.

• ロバスト制御理論の登場(1980年代以降)– Robust– 制御対象=完全にわかっている部分+存在範囲しかわからない部分– ロバストコントローラ– わからない部分があってもうまく制御できる.ただし,完全に分かっている部

分の比率が大きく,かつ,分からない部分が 悪でどれくらいかが見積れなければならない.

– H∞制御,μ解析設計

– MATLABの登場:理論を知らなくても制御系

設計および性能評価が可能– MATLABクローン:scilab

制御の歴史 (3)

Page 32: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とは

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

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

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

適レギュレータその他

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

Page 33: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(1)Mathworks日本法人のHP http://www.mathworks.co.jp/

Page 34: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(2)

MATLABはMatrix Laboratoryを略したもので,米国The Mathworks Inc.の行列計算の会話型プログラム言語です.オリジナルは行列計算で定評のあるLINPACK およびEISPACKです.構成は,基本MATLAB(行列計算,多項式計算,データ解析,周波数分解,基本数値計算関数,微分方程式計算,因子分解,論理演算,グラフィック表示,フィルター設計などより構成され,コアモジュールとよばれる)およびそれらを組み合わせてプログラム化したM-ファイルとよばれるファイルから成っているToolbox,ブロック線図による時間応答シミュレータSimulink,さらにStateflow等,各種ツールを組み合わせることにより,様々な分野の研究や開発業務を 新の環境で行なうことができます.

Page 35: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(3)• 数学および 適化:Optimization Toolbox, Symbolic Math

Toolbox,Partial Differential Equation Toolbox,Global Optimization Toolbox

• 統計およびデータ解析:Statistics Toolbox,Neural Network Toolbox,Curve Fitting Toolbox,Spline Toolbox,Model-Based Calibration Toolbox

• 制御システム設計および解析:Control System Toolbox, System Identification Toolbox, Fuzzy Logic Toolbox, Robust Control Toolbox, odel Predictive Control Toolbox, Aerospace Toolbox

• 信号処理および通信:Signal Processing Toolbox, Signal Processing Blockset,Communications Toolbox,Filter Design Toolbox,Filter Design HDL Coder,Wavelet Toolbox,Fixed-Point Toolbox,RF Toolbox

Page 36: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(4)• 画像・動画処理:Image Processing Toolbox,Video and Image

Processing Blockset,Image Acquisition Toolbox,Mapping Toolbox

• 実験・計測:Data Acquisition Toolbox,Instrument Control Toolbox,Image Acquisition Toolbox,SystemTest,OPC Toolbox,Vehicle Network Toolbox

• 情報生命科学:Bioinformatics Toolbox,SimBiology

• 金融工学:Financial Toolbox,Financial Derivatives Toolbox,Datafeed Toolbox,Fixed-Income Toolbox,Econometrics Toolbox

• アプリケーション開発:MATLAB Compiler,Spreadsheet Link EX(for Microsoft Excel)

Page 37: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(5)MATLABのファイル構成

Page 38: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(6)

Command window

Current directoryWorkspace

MATLAB Commandprompt

Command history

Box showing directory

MATLAB起動画面

Page 39: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(7)

• MATLAB– 基本的なデータ要素が行列である行列計算独自のプロ

グラム言語

– 型も自動判定するため,次元や型の宣言をする必要がまったくない.

– 変数名や関数名は英数字とアンダースコアを使い, 初から19文字までが区別.また,大文字と小文字も区別

• コマンドプロンプト >>– インタプリタの一種

– 機能もBASIC をもっと使いやすくして,数値計算やグラフィックのライブラリがついたもの

Page 40: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(8)行列要素の定義法(p.4)

>>のあとに,>>A = [ 1 2 3

4 5 67 8 9 ]

あるいは,>>A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]

と入力すると,MATLABエコーが表示される.A =

1 2 34 5 67 8 9

スカラー値やベクトル値の場合>>Scal = 1.5>>Vec1 = [ 2.0 -1.8 ] (横ベクトル)>>Vec2 = [ 2.0 ; -1.8 ] (縦ベクトル)

確認用出力を画面上に表示したくないとき,入力の後にセミコロンをつける.

>>A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ;

計算途中で値を参照したいとき,>>A

起動時の変数i,j のデフォルト値は-1の平方根,複素数の定義

>>z = 2 + 3*iもし,i を別の値として定義しなおした場合には,新しく虚数の定義

>>im = sqrt(-1)(sqrtは平方根計算の基本関数)

Page 41: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(9)基本行列演算 (p.4-5)

行列B の定義>>B = [ -1 -2 -3 ; -4 -5 -6 ; -7 -8 -9 ];

行列の転置( C = BT )>>C = B '

行列の和( D = A+B )>>D = A+B

行列の差( E = A-B )>>E = A+B

行列の積( F = A*B )>>F = A*B

行列の商( G = A-1*B )>>G = A¥B

行列の商( H = A*B-1 )>>H = A/B

行列要素の総和>>sum(A)

行列要素の総積>>prod(A)

行列式>>d = det(A)

単位行列>>A = eye(5) (5次元単位行列)

要素がすべてゼロの行列>>B = zeros(3,5) (3行5列ゼロ行列)

固有値,固有ベクトル( Dの対角成分が固有値)(Vの各縦ベクトルが一般化固有ベクトル)

>>[V,D] = eig(A)特異値分解>>[U,S,V] = svd(A)

指数関数行列>>BE = expm(A)

Page 42: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(10)ベクトル,行列要素の操作(p.5)

コロン記号による横ベクトルの作成x=[ -1 0 1 2 ]の場合

>>x = -1:2y=[ 0.0 0.2 0.4 0.6 0.8 1.0 ]の場合

>>y = 0.0:0.2:1.0コロン記号による縦ベクトルの作成x=[ 0.0 0.2 0.4 0.6 0.8 1.0 ]Tの場合>>x = (0.0:0.2:1.0)'

ベクトルデータによる行列作成>>x = (0.0:0.2:1.0)'>>y = sin(x)

(縦ベクトルの作成)>>A = [x,y]

(縦ベクトルxとyによる行列作成)

行列の任意要素の取り出し>>C = A(1:2,5:8)

(行列Aの1,2行,5,6,7,8列からなる2行4列の行列作成)

>>D = A(1:2,:)(行列Aの1,2行全体からなる行列作成)

>>A(:,[1,3,5]) = B(:,1:3)(Bの 初の3列をAの1,3,5列と置き換え)

行列のベクトル化>>A = [ 1.1 2.1 ; 3.1 ,4.1 ]>>b = A(:)

( b=[ 1.1 2.1 3.1 4.1 ]T になる)

ブロック行列の生成>>A = 5*eye(3);>>B = zeros(3,2);>>C = [ 2 1 0 ; 3 2 1 ];>>D = -2*eye(2);>>E = [ A B ; C D ];

Page 43: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(11)配列演算:要素同士の和,差,積,商(p.6)

和,差は,通常の行列計算と同じだが,積と商は全く異なるので注意!

>>x = [ 2 3 4 ]; y = [ 1 2 4 ];>>z = x .* y

z = 2 6 16

>>w = x./yw =

2.0000 1.5000 1.0000t=1,2,3,4,5,6,7,8,9において,z(t) = exp(t)sin(t)を求める場合>>t = 0:9;>>z = exp(t) .* sin(t)上の例で,もし>>z = exp(t) * sin(t)とすると,exp(t),sin(t)共に10次元横ベクトルであるので,これは計算できないことになり,また,>>z = exp(t) ’* sin(t)とすると,ベクトル同士の内積になってしまう.

Page 44: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(12)

< , > , <= , >= , == , ~=

同じ次元の行列の比較は対応する要素同士で行われ,その結果は,真ならば1,偽ならば0の行列を出力.

>>A = [ 2 1 ; 3 2 ];>>B = [ 2 0 ; 0 2 ];>>C = (A~=B)

とすると,行列CはC = [ 0 1 ; 1 0 ]となる.

比較演算子(p.6) 行列演算組込関数(p.6-7)

●ones関数:要素が全て1の行列を定義>> ones(2,3)ans =

1 1 11 1 1

●zeros関数:要素が全て0の行列を定義>> zeros(2,3)ans =

0 0 00 0 0

Page 45: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(13)

●eye関数:単位行列その他を定義>> eye(3)ans =

1 0 00 1 00 0 1

>> eye(3,2)ans =

1 00 10 0

行列演算組込関数(p.6-7)

●size関数,length関数:

行列のサイズ,ベクトルのサイズを返す>> x=[1 3 0

1 1 2]x =

1 3 01 1 2

>> size(x)ans =

2 3>> y=[1 2 3]y =

1 2 3>> length(y)ans =

3

Page 46: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(14)●find関数:0でない行列やベクトルの位置を取り出す>> x=[1 0 2.1 0 -1 0]x =

1.0000 0 2.1000 0 -1.0000 0>> find(x)ans =

1 3 5

行列要素の 大値を見つけ,その行と列を表示する場合>> a=[-1.5 2 3 0 1.2

-10 -2 1 5 0.2]a =

-1.5000 2.0000 3.0000 0 1.2000-10.0000 -2.0000 1.0000 5.0000 0.2000

>> [rownum,colnum,maxval]=find(max(max(a))==a)rownum =

2colnum =

4maxval =

1

行列演算組込関数(p.6-7)

Page 47: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(15)

●diff関数:差分データを生成1階差分の場合>> x=[1 3 5 7 9 7 5 3 1]x =

1 3 5 7 9 7 5 3 1>> diff(x)ans =

2 2 2 2 -2 -2 -2 -22階差分の場合>> diff(x,2)ans =

0 0 0 -4 0 0 0

行列演算組込関数(p.7-8)

Page 48: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(16)

多項式:次数の高いものの係数から並べた横ベクトルとして表現

(例) 2s3 + 5s + 1 [ 2 0 5 1 ]

多項式処理に関する関数poly(行列の特性多項式),roots(多項式の根)conv(乗算) ,deconv(除算)residue(部分分数展開) ,polyfit(多項式近似)

行列AとBの特性多項式同士の積を求める場合(A,Bは定義済)>>P1 = poly(A);>>P2 = poly(B);>>P3 = conv(P1,P2)

多項式 s5+3s3-2s2+s-5 の根を求める場合>>roots([1 0 3 -2 1 -5])

多項式演算(p.8)

Page 49: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(17)FFT(高速フーリエ変換)計算の例題を通して,MATLABプログラミングを学ぶ.(p.7-10)

●正弦波プラス正規雑音信号のパワースペクトルを求める例題:簡単のため実データではなく,次の人工的な信号をFFTにより処理するものとします.

333321

322

1

10600,,

102,

101,0),1,0()(,180,100,50

)(2)2sin()2sin()2sin()(

L=====

+++= −

ii

iiit

it

i

tNtvfff

tvtftfetfety πππ

実際にMATLABでプログラミングする際には,コマンドラインに順次命令を書いていくのは,非効率的であるので,MATLABエディタによりMATLABのソースプログラム(M-ファイルという)を記述し,それを実行します.

Page 50: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(18)(1)メニューのファイル--新規作成--M-fileを選択します.

Page 51: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(19)(2)プログラムコードの編集用のウィンドウであるMATLAB Editorが起動されます.

MATLAB Editor

Page 52: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(20)(3)コードを入力し,メニューのファイル--保存を選択します.

Page 53: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(21)(3-4)コードを入力し,メニューのファイル--保存を選択し,保存する.

保存するファイル名を聞いてくるので,保存したいフォルダにファイル名を指定します.ここでは,ファイル名ex_fft.mで保存しています.MATLABプログラムコードをファイルで保存するときのファイル名の拡張子は .mを用います.

Page 54: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(22)(5)メニューのデバッグ—実行でMファイルを実行します.

Page 55: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(23)(6)実行により,つぎのような図が表示されます.

Page 56: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(24)グラフィック機能(p.10)

グラフ表示用のコマンド線形X-,Y-プロット(plot)両対数プロット(loglog)片対数プロット(x-軸が対数)(semilogx)片対数プロット(y-軸が対数)(semilogy)極座標プロット(polar)3次元プロット(plot3)3次元メッシュ(mesh)バープロット(bar)階段状プロット(stairs)

ラベリング,タイトル付けやグリッドのコマンドタイトル(title)x-軸ラベル(xlabel)y-軸ラベル(ylabel)任意位置への文字列セット(text,gtext)グリッドライン(grid)

その他コマンド軸のマニュアルスケーリング(axis),グラフスクリーンの表示(shg)グラフスクリーンのクリア(clg),グラフスクリーンをサブスクリーンに分割( 大4画面)(subplot)

Page 57: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(25)(グラフィック例題:●sinカーブを描く場合)(p.11)

ex_sinplot1.m

Page 58: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(26)(グラフィック例題:●sinカーブを2本描く場合)(p.11)

テキスト訂正:plot(t,y1,t,y2),xlabel('time'),ylabel(‘$¥sin t$ and $¥sin 5t$')

Page 59: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(27)制御文 for,while,if (p.11-12)

forループ一般形 行列の列が個々に変数V に

割り当てられ,文を実行する

例1)他の言語と同じ使い方>>n = 5;>>for i = 1:2:n , x(i) = 0 , endあるいは>>for i = 1:2:n

x(i) = 0 end

例2)MATLAB特有の使い方>>b = [ ];>>for ii = [ 1:3 ; 4:6 ]

b = [ b , ii ]end

for v = 式(行列)文

end

b =14

b =1 24 5

b =1 2 34 5 6

x =0

x =0 0 0

x =0 0 0 0 0

Page 60: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(28)制御文 for,while,if (p.11-12)

whileループ一般形 条件が真の間文を繰り返す

例)n!<100000なる 大のnを表示する.>>n = 1;>>while prod(1:n) < 1.e5

n = n + 1 ;end

>>n-1

while 条件文

end

Page 61: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(29)

if文一般形 if 条件1

文1elseif 条件2

文2else

文3End

制御文 for,while,if (p.11-12)

Page 62: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(30)Mファイル:Script M-file(p.12)

M-ファイルはソースプログラムに相当するもので,拡張子としてm がつけられています.M-ファイルにはScript M-fileとFunction M-file がありますが,両方ともASCII text file であり,MATLABエディタで作成することができます.

Page 63: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(31)Mファイル:Script M-file(p.12)

Script M-file :コマンド群をそのまま列記してファイルとして保存したもの

(例題)MATLABエディタで次のようなM-ファイルを作成して,sinplot.mで保存.

実行する2つの方法方法1)MATLABエディタのメニューのデバッグ--実行方法2)コマンドウィンドウからMファイル名を入力して実行

>>sinplot (M-fileの呼出)

M-ファイルからはいくつのM-ファイルでも呼び出すことができます.ただし,注意することは,Script M-file はワークエリアの中のデータ全体に働くことです.

t = 0.0:0.1:3*piy = sin(t)plot(t,y)pauseclf

Page 64: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(32)Mファイル:Function M-file(p.12-13)

Function M-file:このため引数による入出力データの引き渡しのみを行うFunction M-file は 初の行にその宣言文を書く.

function 出力変数名 = ファイル名(入力変数名)再帰呼出も可能.

(例題)Function M-fileを作って,ファイル名をsaiki.mとして保存します.

MATLABコマンドウィンドウで>>saiki(5)

とやると5の階乗計算が可能.Function M-fileはほかのM-fileからも自由に何度でも呼び出し可能.

function f = saiki(n)if n==0

f = 1; elsef = n*saiki(n-1);

end

Page 65: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(33)PATH(p.13)

M-fileの便利なところは,ライブラリ化などをせずに,MATLABPATHにより指定された,ドライブ装置:フォルダ内にテキストファイルとしてM-fileを保存しておくと,自由に何度でも他のM-fileから呼び出せることです.MATLABPATHはMATLABのメニューのパスの設定を選択するとパスの設定内容やその変

更を行うことができます.

Page 66: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(34)

0)1( 2 =+′−−′′ yyyy μ

Mファイル例題:連立微分方程式(p.13-14)

van der Pole振動方程式

連立微分方程式(力学系)へ変換

12212

21

)1( yyyy

yy

−−=′

=′

μ

ex_diff.m

ex_vdp.m

Page 67: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(35)Mファイル例題:状態方程式((p.14)

tu

uxBuAxx

10sin510

51010

=

⎥⎦

⎤⎢⎣

⎡+⎥

⎤⎢⎣

⎡−−

=+=&

Page 68: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

MATLAB/Simulinkの使い方(36)Simulink(p.15-16)

ブロック線図を用いたシミュレーションツール

Page 69: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

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

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

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

適レギュレータその他

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

Page 70: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

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

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

適レギュレータその他

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

Page 71: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(1)伝達関数(p.17-18)

DCモータ

)()()()(

)(/))()(()(

/))()(()()(

/))()(()(1/

)()(

)()(

)()()(

)()()()(

2 tKvtKRKdt

tdRJ

tKRtKtvKdt

tdJ

RtKtvKtKit

RtvtvtiRL

KKKKtiKt

KtKtv

tKtdt

tdJ

tvtvtRidt

tdiL

appf

fapp

app

emfapp

tb

tt

bbemf

f

emfapp

=++

−−=

−==

−=<<

==

=

=

−=

−=+

ωω

ωωω

ωτ

τ

ω

ωτω

運動方程式の近似:

トルクの近似:

式で近似より,回路方程式を次近似:

直流モータでは,

:トルク定数,発生トルク:

:逆起電力定数,逆起電力:

回転体運動方程式:

回路方程式:

)()()(

)()(

tvKtdt

tdT

tdt

td

mm =+

=

ωω

ωθ

Page 72: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(2)伝達関数(p.17-18)

入力をv(t),出力をω(t)とした場合

)(1

)0(1

)(

)()0()()1()()()}0()({

sVsT

KsTT

s

sVKTssTsVKsssT

m

m

m

m

mmm

mm

++

+=Ω

+=Ω+=Ω+−Ω

ω

ωω

)()()(1

)( 1 sVsGsVsT

Ks

m

m =+

1)(1 +=

sTK

sGm

m

入力をv(t),出力をθ(t)とした場合

{ } )()1(

))0()0(()0()1(

1)(

)())0()0(()0()()1()()0()())0()0()(( 2

sVsTs

KTsT

sTss

sVKTsTssTssVKsssssT

m

mmm

m

mmmm

mm

++++

+=Θ

+++=Θ+=−Θ+−−Θ

θωθ

θωθθωθ

)()()()1(

)( 2 sVsGsVsTs

Ks

m

m =+

)1()(2 +=

sTsK

sGm

m

Page 73: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(3)ブロック線図(p.18-19)

G(s)Y(s) U(s)

+

+

Y(s)

X(s)

Z(s)

X(s)

Z(s)

Y(s)

)()()( sZsYsX ==

)()()( sYsXsZ +=

)()()( sUsGsY =

Page 74: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(4)結合形式(p.19)

直列結合

並列結合

フィードバック結合

結合方式 結合前 結合後

1G

2G

12GG

1G

2G

1G 2G

21 GG ±

21

1

1 GGG

±

u y

1y

2y±+

m

+

u y

u y

u y

u y

u yz

Page 75: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(5)ステップ応答,インパルス応答 (p.20)

)()()( susGsy = [ ])()()( 1 susGty −=L⇒

インパルス応答 ステップ応答(インディシアル応答)

[ ]1)()( 1 ⋅= − sGty L

)(tg=[ ])(1 sG−=L ssu 1)( =

ssG 1)(1)( −=Lty ⎢

⎡⎥⎦

インパルス応答は,伝達関数を逆ラプ

ラス変換したもの

インパルス応答は,伝達関数を逆ラプラス変

換したもの

[ ] )()( sGtg =L

伝達関数は,インパルス応答

をラプラス変換したもの

)(1 sGs

=ττ dgt

∫0 )(L ⎢⎣

⎡⎥⎦

1

0)( −=∫ L

tdg ττ )(1 sG

s⎢⎣

⎡⎥⎦

http://www.fl.ctrl.titech.ac.jp/course/archive/text/Feedback/chap3/chap3.ppt

Page 76: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(6)ステップ応答,インパルス応答 (p.20)

0t

)(tδ

0t

ステップ応答

インパルス応答

微分

積分

単位インパルス信号

単位ステップ信号

0

)(tg

t

0t

)(sGu y

微分

積分

http://www.fl.ctrl.titech.ac.jp/course/archive/text/Feedback/chap3/chap3.ppt

Page 77: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(7)周波数関数(p.20)

tUtu m ωsin)( =

))(sin()()( ωωω jGtUjGty m ∠+=

伝達関数の極の実部が全て負の場合には,正弦波入力

を加えたときの,時間が充分経過した時の出力(定常出力):

)(sGu y

Page 78: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

伝達関数とブロック線図(8)tjejGty ωω )()( =

)(|)(| φωω += tjejG tωcos

tωsin

)cos(|)(| φωω +tjG

)sin(|)(| φωω +tjG

入力 出力

振幅の変化 |)(| ωjG

位相の差 )( ωjG∠ゲイン

位相(位相差)

)cos(|)(|)( φωω += tjGty

)sin(|)(| φωω ++ tjGj

tjj eejG ωφω ⋅= |)(|

周波数関数(p.20)

http://fujita.fl.ctrl.titech.ac.jp/~old/home/html/course/CT1/04CT1/handouts/CT1_7th/CT1_7th.ppt

Page 79: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

伝達関数とブロック線図

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

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

適レギュレータその他

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

Page 80: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(1)LTIオブジェクト(p.20) 線形時不変 (LTI) モデル:Control System Toolbox

131)( 2 ++

+=

ssssP

))(()()(

21

1

pspszsKsP−−

−=

DuCxyBuAxx

+=+=&

伝達関数 (TF):

零点-極-ゲイン モデル (ZPK):

状態空間モデル (SS) :

Page 81: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(2)伝達関数モデルの作成例(p.21)

num = [1 0];den = [1 2 1];sys = tf(num,den)MATLAB出力:Transfer function:

s-------------s^2 + 2 s + 1

sys2 = zpk([0],[-1 -1],[1])MATLAB出力:零点/極/ゲイン:

s-------(s+1)^2

A= [-1 0; 0 -1];B= [1 ; 0];C= eye(2); D = zeros(2, 1);sys3=ss(A, B, C, D)MATLAB出力:a =

x1 x2x1 -1 0x2 0 -1

b = u1

x1 1x2 0

c = x1 x2

y1 1 0y2 0 1

d = u1

y1 0y2 0

Page 82: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(3)伝達関数モデルの作成例(p.21)

離散時間モデルのリサンプリングd2d離散時間から連続時間への変換d2c連続時間から離散時間への変換c2d

FRD モデルの作成FRD モデルへの変換

frd

一 極-ゲイン モデルの作成二 零点-極-ゲインへの変換

zpk伝達関数データの抽出tfdata

伝達関数の作成伝達関数への変換

tf状態空間データの抽出ssdata

状態空間モデルの作成状態空間への変換

ss意味各種コマンド

Page 83: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(4)サンプルプログラムex_lti.m (p.21)

サンプルプログラム ex_lti.mnum = [1 0];den = [1 2 1];sys1 = tf(num,den)pause%sys2 = zpk([0],[-1 -1],[1])pause%A= [-1 0; 0 -1];B= [1 ; 0];C= eye(2); D = zeros(2, 1);sys3=ss(A, B, C, D)pause

Transfer function:s

-------------s^2 + 2 s + 1

零点/極/ゲイン:s

-------(s+1)^2

a = x1 x2

x1 -1 0x2 0 -1

b = u1

x1 1x2 0

c = x1 x2

y1 1 0y2 0 1

d = u1

y1 0y2 0

連続時間モデル

Page 84: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(5)伝達関数モデルの作成例(p.21)

freq = logspace(1,2); % Create 50 points of data.resp = .05*(freq).*exp(i*2*freq); sys4 = frd(resp,freq)%abcd1 = ss(sys1) %tf2ss

Frequency(rad/s) Response ---------------- --------

10.0000 0.2040 + 0.4565i10.4811 -0.2703 + 0.4490i・・・ ・・・

95.4095 -3.2613 + 3.4816i100.0000 2.4359 - 4.3665i

連続時間の周波数応答。

a = x1 x2

x1 -2 -1x2 1 0

b = u1

x1 1x2 0

c = x1 x2

y1 1 0d =

u1y1 0

連続時間モデル

Page 85: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(6)伝達関数モデルの作成例(p.21)

numden2 = tf(sys2) %zpk2tf[num,den]= tfdata(sys3)num1 = num{1} %Cell arraynum2 = num{2}den1 = den{1}

Transfer function:s

-------------s^2 + 2 s + 1

num = [1x2 double][ 0]

den = [1x2 double][ 1]

num1 =0 1

num2 =0

den1 =1 1

Page 86: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(7)伝達関数モデルの作成例(p.21)

%ディジタル系への変換dtf1 = c2d(sys1,0.01)dzpk2 = c2d(sys2,0.01)dss3 = c2d(sys3,0.01)

Transfer function:0.0099 z - 0.0099

---------------------z^2 - 1.98 z + 0.9802サンプリング時間: 0.01

零点/極/ゲイン:0.0099005 (z-1)---------------

(z-0.99)^2サンプリング時間: 0.01

a = x1 x2

x1 0.99 0x2 0 0.99

b = u1

x1 0.00995x2 0

c = x1 x2

y1 1 0y2 0 1

d = u1

y1 0y2 0

サンプリング時間: 0.01離散時間モデル

Page 87: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTIオブジェクト(8)便利な伝達関数の表し方(p.22-23)

>>num = [1 0];>>den = [1 2 1];>>sys = tf(num,den)Transfer function:

s---------------------s^2 + 2 s + 1

>>s=tf('s'); >>G=s/(s^2+2*s+1)>> poles_G = eig(G)poles_G =

-1-1

>> zeros_G = zero(G)zeros_G =

0 >> pzmap(G)>> rlocus(G)

ベクトル多項式表現 式表現

Page 88: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

伝達関数とブロック線図LTIオブジェクト

ステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性Simulinkによる時間応答シミュレーションPIDコントローラ

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

適レギュレータその他

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

Page 89: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

ステップ/インパルス応答・・・(1)ステップ応答,インパルス応答,初期値応答,任意入力応答計算(p.23-25)

step(sys)impulse(sys)

21)(,

11)( 2221 ++

=++

=ss

sGss

sG

Page 90: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

初期値応答・・・(1)ステップ応答,インパルス応答,初期値応答,任意入力応答計算(p.23-25)

initial(sys) :ssに限る [ ]

[ ]xyxx

xyxx

01,21

10

01,11

10

=⎥⎦

⎤⎢⎣

⎡−−

=

=⎥⎦

⎤⎢⎣

⎡−−

=

&

&

Page 91: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

任意入力応答・・・(1)ステップ応答,インパルス応答,初期値応答,任意入力応答計算(p.23-25)

lsim :任意の入力に対して連続,または離散線形システムの (時間) 応答を計算gensig:生成する信号は,'sin','square','pulse'

Page 92: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

ボード線図(1)ボード線図(P..27-28)

>> bode(sys)

次式の伝達関数で表される2次振動系のステップ応答波形とボード線図を求めなさい.

さらに,SIMULINKにより,つぎのような入力に対する応答波形を求めなさい.

1,215.0),(2

)( 22

2

==++

= ωςωςω

ω sUss

sY

ttu sin)( =

Page 93: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

LTI-view(1)ステップ応答,インパルス応答,初期値応答,任意入力応答計算(補足)

>> ltiview

Page 94: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図

システムの結合と安定性Simulinkによる時間応答シミュレーションPIDコントローラ

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

適レギュレータその他

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

Page 95: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Transfer function from input 1 to output...s + 1

#1: -----s

#2: 0Transfer function from input 2 to output...#1: 0

1#2: ---------

0.5 s + 1Transfer function:

2 s + 2-------------s^2 + 4 s + 2

poles_sysc =-3.4142-0.5858

システムの結合と安定性(1)伝達関数モデルの作成例(p.25-26) connect

モータの速度制御系の伝達関数 1)(1 +=

sTK

sGm

m

PIコントローラの伝達関数

sKKsC ip

1)( +=

G1(s)++

+-DCモータ

コントローラ

C(s)

Page 96: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

伝達関数とブロック線図LTIオブジェクトステップ応答,インパルス応答,周波数応答,ボード線図システムの結合と安定性

Simulinkによる時間応答シミュレーションPIDコントローラ

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

適レギュレータその他

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

Page 97: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(1)Simulinkの作成例(p.28-32)

手順a)伝達関数モデルの変形

)()()(2)()()()(),()(

)()()(2)(

)(2

)(

22

2

222

22

2

sUsYsZsWsYsssZsWssYsZ

sUsYssYsYs

sUss

sY

ωωςω

ωωςωωςω

ω

+−−=

===

=++

++=

とおくと,

ブロック線図を描いて,シミュレーションする.

ブロック線図を書く

Page 98: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(2)

mass_spring.mdl

手順b)編集画面にブロック線図を描き,mass_spring.mdlで保存する.

Simulinkの作成例(p.28-32)

Page 99: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(3)

mass_spring_parameter.m1215.0

==

ως

Simulinkの作成例(p.28-32)

手順c)パラメータ定義のMファイルを作成し,mass_spring_parameter.mで保存する.

Page 100: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(4)Simulinkの作成例(p.28-32)

手順d)モデルプロパティのcallbackに,mass_spring_parameter.mを割り当てる.

パラメータを定義したmファイル名を,拡張子を省いて入れる.

Page 101: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(5)Simulinkの作成例(p.28-32)

手順e)実行して,Scopeを表示する.

Page 102: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(6)Simulinkの作成例(p.28-32)

手順f)波形がぎざぎざしているのでおかしい.コンフィギュレーションパラメータの相対誤差を小さくする.それでも,おかしいときは, 大ステップサイズを小さくする.

Page 103: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(7)Simulinkの作成例(p.28-32)

手順g)再計算して,Scopeを表示する.

Page 104: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(8)Simulinkの作成例(p.28-32)

手順h)データをワークスペース(コマンドウィンドウやScript Mファイルからアクセス可能)に保存する.

ここをクリック

ワークスペースに保存する変数名を指定する.

時間付構造体を指定するのが便利

保存する変数名を,out_data とする.

Page 105: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(9)Simulinkの作成例(p.28-32)

手順i)再計算して,ワークスペースのデータを確認する.

データが保存されているのが分かる

whoコマンドの実行

Page 106: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(10)Simulinkの作成例(p.28-32)

手順i) ワークスペースの構造体データにアクセスする方法

>> out_dataout_data =

time: [1002x1 double]signals: [1x1 struct]

blockName: 'mass_spring/Scope'>> out_data.time>> out_data.signalsans =

values: [1002x1 double]dimensions: 1

label: ''title: ''

plotStyle: 0>> out_data.signals.values

out_data.time:ベクトルデータ

out_data.signals.values:ベクトルデータ

Page 107: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(11)Simulinkの作成例(p.28-32)

手順k) Mファイルで,図を表示する.

Page 108: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

Simulink(12)Simulinkの作成例(p.28-32)

手順l) 図を保存する. fig形式,jpg形式, eps形式,その他

ファイル名の指定:拡張子fig

ファイル名の指定:拡張子eps

Page 109: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

制御工学とはMATLAB/Slmulinkの使い方古典制御系設計

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

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

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

適レギュレータその他

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

Page 110: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

PIDコントローラ(1)

G(s)++

+-DCモータ

コントローラ

C(s)

フィードバック制御:不安定なシステムを入力を調整することにより安定にしたり,希望の目標値に制御量を追従させる機能をもつ.

p.32-33

プラス変換邪魔をする信号)のラ外乱(外界から加わる 

ス変換力の希望値)のラプラ目標値(制御対象の出 

ラプラス変換コントローラの出力の 

差)のラプラス変換偏差(目標値と出力の 

量)ラプラス変換制御対象の出力(制御 

量)のラプラス変換制御対象の入力(操作 

信号

)の伝達関数コントローラ(制御器 

制御対象の伝達関数 

システム

:)(:)(:)(:)(:)(:)(

:)(:)(

sDsRsVsEsYsU

sCsG

閉ループ伝達関数

)()(1)()()(sCsG

sCsGsGc +=

安定化C(s):安定化コントローラ

(安定化補償器)

Page 111: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

PIDコントローラ(2)フィードバック制御の目的

(1)制御対象の安定化:装置の暴走を防ぐことを意味します.安定化を行うと,初期

値応答は時間と共に減衰するので,定常状態のみを考えるのであれば,無視できることになります.

(2)目標値追従:制御量を目標値に時間と共に追従させます.ただし,偏差を逆ラ

プラス変換して時間関数で書いたものをとしています.

(3)外乱抑制:外乱の制御量を小さくします.

(4)ロバスト安定性:制御対象の伝達関数に誤差や変動があってもフィードバック

系が暴走しないことを保証します.

(5)ロバスト性能:制御対象の伝達関数に誤差や変動があっても目標値追従特性があまり悪化しないことです.

p.32-33

Page 112: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

PIDコントローラ(3)例題(p.33)

1.0,1,1.0,1,)(,1

)( ====+=+

= ipmmi

pm

m KKTKs

KKsC

sTK

sG

param_pid.m

Page 113: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

PIDコントローラ(4)linmod,trim(p.33)

[x0,u0,y0,dx0]=trim(‘model’); %平衡点の計算[A,B,C,D]=linmod(‘model’,x0,u0); %線形状態方程式の導出sys=ss(A,B,C,D); %LTIオブジェクトへの変換

example_linmod.mdl example_linmodmain.m

Page 114: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

PIDコントローラ(5)補足:linmod

example_linmod2.mdl A =-1 -1 2 -3 0 11 0 0 0 0 00 1 -1 0 5 00 0 1 -2 0 00 0 2 -3 -2 00 0 2 -3 0 -1

B =1 00 00 10 01 01 0

C =0 1 0 0 0 00 0 2 -3 0 0

D =0 00 0

Page 115: MATLAB/Simulink...2010/8/3 MATLAB・フィードバック制御系設計 4 制御工学とは(1) • コントロール(制御)とは何か?– 測る:制御対象がどのような状態になっているのか,観測

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

第1部おわり