• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
51
0
0

読み込み中.... (全文を見る)

全文

(1)

制御系シミュレーションの手引き

(2)

はじめに

について

について

のインストール

を用いたシミュレーション

次システムを使って

の操作法を覚える

シミュレーション結果について考える

操作法の続き

次システムにおける状態フィードバック制御

次システムにおけるサーボ系

による制御系設計演習

次システムのシミュレーション

次システムにおける状態フィードバック制御

オブザーバ

(3)

この文書はフリーの数値計算ソフトウェアである (サイラボ) を使って線形システム の現代制御理論の基本的な内容を学習するための補助教材として作成した。参考文献 のように, を用いてシミュレーションを行いつつ制御理論を学習する,という形式の書物もこれまで に発行されているが, を全面的に使用した書物はあまり見当たらないようである。本文書は を用いて学部レベルの現代制御理論の学習上に現れるモデルをシミュレーションする手順を, 現代制御理論のことはある程度知っているのだけれどもこのソフトウェアに対する知識が無い,と いう人に伝えるのが主要な目的であり,理論の解説も 全体についての解説も意図していな い。現代制御理論そのものについては参考文献 などの教科書を参照されたい。 制御工学の学習をしているときに,教科書に載っているものよりほんの少しでも複雑なシステム について手計算で解を求めようとすると,結構面倒くさい思いをすることは,しばしば経験する ことである。そしてそれが今日の制御工学の学習にとって本当に必要な苦労かどうかは,いささか 疑問である。高性能のパソコンを個人的に所有することが当たり前となった現在, を使うこ とによってお金をかけずとも誰でもそのような計算を自分のパソコンに実行させることができる。 は ベースのものが多いので,近い将来にスマートフォンやタブレットでも が簡単に使えるようになるであろう。 制御対象にある工夫を施したとき,いかなる結果が得られるか即座にシミュレーションで確認で きれば非常に便利である。たとえばサーボ系について,限られた時間内に手計算を使って説明しよ うとすると,定常値のみを用いた議論をするのが関の山であるが,シミュレーションを行えばどの ような過渡応答となるのかが一目で理解できる。一方で,よく指摘されることながら,基礎知識の ない者がこのようなツールを使うと,見た目だけは何事かを成し遂げたようであっても「明らかな 間違いを気づけない/理解できない」という問題が生じる可能性があることには常に注意すべきで ある。 筆者自身「超」のつく ビギナーであり,この文書は自らの学習メモでしかないが,せっか く作ったので公開することにした。いささかくどいほど順を追って操作法を述べたこのような文書 は,ヘビーユーザーになってしまうと,アホらしくて作る気にならないのではないだろうか。図は スクリーンショットをぺたぺた貼り付けただけで単なるメモ書きの範疇を超えない。そうした前提 の上でさえ,冗長な部分や思い込みによる誤り,そして不足している記述も多々あることと思われ る。気づいた点については,適宜アップデートできれば,と考えている。 この文書はフリーの文書プロセッサ を用いて作成した。 といい といい,この ようなレベルのソフトウェアを作り上げ,無償で提供される方々のボランティア精神に驚嘆すると ともに感謝の念を禁じえない。

(4)

について

プロ用の制御系解析・設計ツールとして が有名であるが,非常に高価である。電気・電子 回路シミュレータとして著名な 同様, のコアの計算プログラムである は もともと大学研究者らによって開発されたフリーのソフトウェアである。 は, フランス国立情報学自動制御研究所 で 開発・メンテナンスされている ライクなフリーのソフトウェアである。このようなプロ グラムを クローンとも呼び,他に などが知られている。

について

ベースのグラフィカルなシミュレーションツールとして がある。これは と は異なったプログラムであり,以前は別個にインストールする必要があった。しかしながら,現在 最新の では(もう少し前のバージョンでも) 内に というラフィカルなシ ミュレーションツールが用意されている。

のインストール

のインストールは, 図 へアクセスすることにより簡単にでき る。この手のソフトウェアの細かインストール手順は頻繁に変わることが多いので,ここでは詳し く述べない。ダウンロードしたインストーラを起動すると,後は特に考える必要もなく,素直にク リックしていけばインストールできるはずである。 図 のホームページ ( 年 月)

(5)

を用いたシミュレーション

次システムを使って

の操作法を覚える

を用いることで,グラフィカルにシステムのシミュレーションを行うことができる。 を起動後,図 に示すようにメニューバーの「アプリケーション」から を起動する。 図 の起動 デフォルトの状態で を起動すると図 のようにウインドウが2個開く。左側に示したも のが で使用できる部品のリストであるパレットブラウザである。このパレットブラウザから 右側の のウインドウでドラッグ&ドロップにより部品を配置する。 図 起動直後の画面 非常に簡単な例として,次のような 次システムのシミュレーションを行ってみよう。

(6)

(例題 )次の 次システムの単位ステップ応答をシミュレーションせよ。 ただし, とする。 まずシミュレーション全体のクロックを置く。図 に示すようにパレットブラウザの「信号源」 →「 」をマウス左クリックにより選択・ドラッグし, のウインドウ上にドロップし て配置する。 図 「 」を置く 同じ調子で「汎用ブロック」→「 」及び「 」,「数値計算」→「 」,「出力/表示」→「 」,「数値計算」→「 」を ウインドウズ上に図 のように配置する。複数必要な「 」は, ウインドウ上のものをコピー&ペース トすればよい。また,下にある「 」はデフォルトのものをマウス左クリックで指定し, 「 」のコマンドで反転させることができる。 図 ブロックの配置

(7)

各ブロックについている黒い三角印が信号の入出力端子である。図 に示すように接続したい 端子の片方をマウス左クリックし,ボタンを押したまま他方の端子までドラッグすれば,信号線が 接続される。 図 配線の仕方 信号を分岐させたい場合には,図 に示すように既に引いてある配線上の分岐させたいところ でマウス左クリックすれば,信号を引き出すことができる。また配線の向きを変えたい場合には, その場所でマウスのボタンを離せばよい。 図 配線の分岐 この要領で図 のように配線する。

(8)

図 配線が完了した状態 次に,「 」のパラメータを設定する。図 に示すように,設定したいブロックをマ ウス右クリックすると現れるメニューから,「ブロックパラメータ」を選択する。 図 ブロックパラメータの呼び出し その時呼び出される次のダイアログで値を に設定する。「 」についても同様の手順 で値を設定する。 図 「 」ブロックパラメータの設定 また,図 に示すように「 」の「初期化時間」を にする。積分器である「 」の初期値も同様に設定可能であるが,ここでは使用しない。

(9)

図 「 」ブロックパラメータの設定 例題 をシミュレーションするモデルは図 のようになる。 図 例題 のモデル 図 に示すように, のメニューバーから「シミュレーション」→「パラメーター設定」 を選び,「積分終了時間」を に設定する。 図 パラメーター設定

(10)

図 に示すように, のメニューバーから「シミュレーション」→「開始」を選ぶことに より,シミュレーションが始まる。 図 シミュレーションの開始 しばらく待つと,図 に示すように,実行結果がグラフィック・ウインドウに表示される。 図 例題 のシミュレーション結果 縦軸にしろ横軸にしろ,なんとも中途半端感がぬぐえない図である。グラフィック・ウインドウ の「編集」→「軸プロパティ」を選ぶと,軸を変更することができる。時間軸である横軸が長すぎ るので,図 のように 軸の「 」の右端を に設定する。「 」のブロッ クパラメータ内の「 」の項目からあらかじめ設定しておくことも可能である。

(11)

図 グラフ軸設定ダイアログ 軸(縦軸)についても同様に設定できる。なお,「 」のブロックパラメータ内の「 」 及び「 」の項目からあらかじめ設定しておくことも可能である。図 に整形後 のシミュ レーション結果を示す。 図 例題 のシミュレーション結果 整形後 この問題は簡単に解析解が求められ, となる。グラフに示された解 は に漸近しており,時定数は であることが読み取られ,結果が妥当であることが確認できる。 以上のように, の操作は直感的に可能である。詳しくは,参考文献 などの書物やイン

(12)

ターネット上の情報を参照されたい。この本では を使って解説されているが,ここで扱う 例に限って言えば, は と同様に取り扱える。両者の関係について, は の 後継であるとか,コードとしては無関係であるとか,インターネット上で色々な情報が飛び交って いるのを見たことがあるが,詳しくは知らない。

シミュレーション結果について考える

ところで,このシステムの過渡的な挙動を決定しているのは式 の である。つまり,システ ムのの単位ステップ応答は, や が何であれ, (なにがしかの定数) ( の符号) の形となっている。もし であったとしたらどうなるだろうか?たとえば として同じ ようにシミュレーションをしてみると図 が得られる。 図 とした時の例題 のシミュレーション結果 この場合は出力 は時間とともに に向かって限りなく大きくなっている。このように出力 がどこか遠く( とか とか)へ向かって行ってしまい収拾がつかなくなるシステムを不安 定であるという。今回は であったので, は図 に示すようにある値で定常状態を迎 えることになる。このようなシステムを安定であるという。以上のように の符号はシステムの 安定/不安定を決定するという,非常に重要な意味を持つ。 システムの安定/不安定についてさらに考えるためには,システムに初期値 だけ与えて,入 力を とした状態を考える方が都合がよい。その際の の解は,

(13)

となる。 の場合は, で となる。これは何か でない初期値を与えられたとき,十 分時間が経てば原点付近に復帰するシステムであるということである。よく使われるイメージは, すり鉢上の凹の面のどこかに置いたボールが,斜面に沿って底に落ち着いていく,というものであ る。あるいは,起き上がりこぼしややじろべえのようなものを思い浮かべてもよい。逆に, の場合は, で となる。これは逆に凸の面のどこかにおいたボールが,斜面に沿っ て遠くへ行ってしまう,というイメージである。では, のときはどうであろうか?遠くへ 行ってしまうという訳ではないので不安定とは言い難いが,しかし,値が のままである。つ まり,どこかに安定するポイントがあるというわけではない。このようなシステムは「安定限界」 や「リアプノフの意味で安定」であるというような言葉も割り当てられているが,実際的な意味で は安定とはみなされない。 それではシステムが安定であったとして, の絶対値はどのような意味を持つのであろうか?こ れは定常値に近づく速さを決定している。つまり, の絶対値が大きければ大きいほど,より短い 時間で定常値に近づいていく。そこで, の絶対値の逆数のことを時定数と呼び,しばしば で表 す。また,重要な意味を持つ のことを「システムの固有値」と呼ぶ。システムの固有値はまた, 古典制御理論でいうところの「極」と同じ意味を持つ。 それで初等的な現代制御理論で教わることは結局なにか?ということを考えると,ごく単純には, 「システムの固有値を望みのとおりに変えるわざ」であるといえる。後でみるように, 次システ ムでは非常に簡単にこのことは達成される。 ここで終われば話は簡単なのだが,世の中 次システムばかりではない。というか 次以上のシ ステムがほとんどである。 次以上のシステムでは はスカラー,つまり単なる数値 ではなく 行列 次の時 次の時 で表される。 次のシステムの場合は固有値は 個しかないのであるが, の中身には 個も数 字が並ぶ。あきらかに過剰である。 次のシステムの場合は固有値は 個しかないのであるが, の中身には 個も数字が並ぶので,もっと過剰である。(自由度がある,とも表現できるかもしれ ない。)このことは,同じ固有値(=時間的な挙動)を持つシステムに,いくらでも多様な が割 り当てられるということである。あるいは,ぱっと見た感じでは全く異なる を持つシステムで あっても,時間的な挙動の本質は同じ,ということがあるということである。そして 次の時

(14)

次の時 といった形に固有値 をあぶり出すわざが線形代数でいう対角化という計算技法であり, これを含めて都合のよいような形に行列を変換するための計算技術が相似変換である。 次以上の システムを扱うためにはこれらの線形代数学の知識が必要である理由がおわかりだろうか?

操作法の続き

引き続き,このシステムを用いて状態フィードバック制御についてシミュレーションを行う。積 分器がたくさん並ぶとごちゃごちゃして見にくくなる。そこで,このシステムを一つのブロックに まとめて,すっきり見やすい形にしておきたい。図 のようにマウス左クリック&ドラッグで システムを選択した後,右クリックすると図 のように現れるメニューから「スーパーブロッ ク」に変換することができる。 図 ブロックの選択

(15)

図 スーパーブロックへの変換 図 に示すように,スーパーブロックに変換される。 図 スーパーブロック スーパーブロックをマウス左ダブルクリックすると,中のモデルを見ることができる。元の全 体像に戻るためには,ウインドウの背景部分をマウス右クリックすると図 のように現れるメ ニューから「親ダイアグラムを表示」を選べばよい。

(16)

図 親ダイアグラムの表示 モデルにコメントを付ける手順を以下に記す。まず,背景の適当な部分をマウス左ダブルクリッ クすると図 に示すように「 」という文字列が入ったコメントのボックスができる。文字列 をダブルクリックして選択することで,内容を変更することができる。 コメントの作成 コメントを付けた例題 のモデル 図 コメントの作成手順 グラフに出力とともに目標値も表示させた方が,何が起こっているのか見やすいであろう。この ためような目的にマルチプレクサを使用することできる。図 に示すように,目標値と出力を

(17)

「汎用ブロック」→「 」で選択できるマルチプレクサで結合し,配線しなおす。 図 マルチプレクサの追加

次システムにおける状態フィードバック制御

以上の準備をもとに, 次システムにおける状態フィードバック制御のシミュレーションを行っ ていこう。本当は 次システムでは「状態」フィードバックなどと仰々しく言う必要はないのであ るが,分かり切っているようなことを現代制御理論の用語を使って捉えなおすことにより,現代制 御理論の教科書に漂う「とりつきにくさ」を回避するのに役立つのではないかと考える。 (例題 )例題 の制御対象システムに対し,全体の固有値が となるような状態フィードバッ クゲイン を定め,シミュレーション結果を示せ。なお,状態変数 の初期値を とすること。 制御対象は 次システムであり,可制御性を持っている。これはつまり,唯一の状態変数である に対して入力 が直接接続されており, によって の状態を自在に変更することが 可能ということである。たとえば, から加算点につながる間にあるゲイン(現在は )がもし であれば,当たり前のことながら に は全く関与することができない。このような状態 を可制御ではないとか,不可制御であるという。具体的な例でいえば,普通,自転車のブレーキ・ レバーは何らかの方法,たとえば(というかほとんど)ワイヤーでブレーキ本体と接続されてい る。それだからブレーキ・レバーを握ることでブレーキを動かすことができるのである。これが可 制御ということである。整備不良の自転車ではこのワイヤーが切れることがままある。こうなると いくらブレーキ・レバーを動かしてもブレーキを働かせることはできない。これが不可制御である ということである。 可制御なシステムに対しては,状態フィードバック制御を施すことにより,つまり制御対象への 入力 を とすることによってシステムの固有値(時定数の逆数)を自在に変更することが可能である。式 を式 に代入すると

(18)

となる。この固有値を とするためには,この方程式が とならなくてはならない。このことから, と求められる。 これをシミュレートするのであるが,さきほどスーパーブロックとした制御対象システムには状 態変数 が出力されていないので,この出力端子を取り付けよう。スーパーブロックをマウス左 ダブルクリックで開き,「 」の出力端子をコピー&ペーストした後,それをマウス左ダブルクリッ クして端子番号を「 」にしておく。その後,状態変数である よりこの端子に配線を引く。ま た,状態変数 は積分器「 」の出力である。ブロックパラメータからその初期値 「 」を としておこう。変更後の「制御対象」スーパーブロックを図 に示す。 図 「制御対象」スーパーブロックの変更 親ブロックに戻ると,今まで引いていた配線が途切れているのでこれを修正し,図 のよう に状態フィードバックを施したシステムのモデルを作成する。この段階では,出力 を目標値 ではなく,原点である に収束させるシステムとなっていることに注意されたい。 図 状態フィードバック制御(原点復帰) 実行させた結果は図 に示すとおりとなる。なお,親ブロックに戻ってから実行しなければ ならないので注意されたい。また,ファイルの保存も親ブロックに戻って行わないと,全体が保存

(19)

されない。 からずっと である線が目標値で,初期値 から固有値の逆数である時定数 で原 点に収束しているものが出力 である。図 で見られた時定数 よりも応答が速くなっ ていることが分かる。このように状態フィードバック制御により応答性を改善することができる。 図 状態フィードバック制御(原点復帰)の実行結果 しかしながら,このままでは「おき上がりこぼし」あるいは「やじろべえ」のように原点復帰し かできないので,あまりというか殆どうれしくない。考えてみれば目標値とシステムが接続されて いないので当たり前の話であるが。そうではなく,出力 をある目標値に収束させるようなシス テムを実現したい。それにはもうひと工夫必要である。天下り的に答えをいってしまうが,それに は目標値に何らかのゲインを乗じたものを に加えるとよい。そこで,そのゲインを求めよう。 (例題 )例題 のシステムに対し,制御対象への入力信号 とすることで 出力 を目標値 に収束させることができる。このような入力ゲイン を求めよ。 これを例題 の式に代入すると 状態フィードバック制御を施したこのシステムは漸近安定であるので,時間 を無限大とした定 常状態では状態変数の微分値は となる。これより, となることがわかる。出力 の定常値は である。いま, としたいのであるから, と求められる。このような入力ゲイン

(20)

を設定したのが,次の図 である。配線を変更している途中でエラーが出る場合があるが,そ の際にはそのブロックから引き出している配線を全て削除してやり直すとうまくいく場合がある。 図 状態フィードバック制御(入力ゲインつき) 実行させた結果は図 に示すとおりとなる。めでたく が目標値である に収束している ことが確認できる。目標値をいろいろ変えてみても,やはり出力の定常値が目標値に一致すること を確認できるであろう。 図 状態フィードバック制御(入力ゲインつき)の実行結果 さて,これでメデタシメデタシ,一見落着,かと思うかもしれないが,実はこのシステムには大 きな弱点がある。つまり,このシステムは に外乱として一定値が加わったり,システム方程式 の定数が経時変化した場合に,出力の定常値が直接影響を受けてしまうのである。たとえば,シス テム方程式が経時変化により のように変化したとしてみ ると,図 の様に目標値と出力の定常値が異なる,という結果が得られる。

(21)

図 システム行列が変化した場合の実行結果 次に,図 のように外乱として に で起動する単位ステップ関数を加えた場合を考 えよう。パレットブラウザから「信号源」→「 」を選び,制御対象のスーパー ブロックに加える。 図 「制御対象」スーパーブロックへの外乱の追加 「 」のブロックパラメータを図 のように設定する。

(22)

図 「 」ブロックパラメータの設定 この変更を加えた後,親ブロックに戻り,シミュレーションを実行すると図 のような結果 が得られる。 が一度目標値である に達して定常状態となった後, で加わった外乱によ り定常値が増加することが確認できる。 図 外乱が重畳した場合の実行結果 このように,図 に示したシステムは,目標値に出力を合わせる,という目的は何とか満た すものであるが,いかにも色々な影響を受けやすく,到底頑健であるとはいえない。これを改良し たシステムが,サーボ系である。残念ながらサーボ系は次数を上げることによって頑健性を確保す る方法であるので, 次システムに最も簡易な 型のサーボ系を構成しただけでも, 次システム になってしまう。

次システムにおけるサーボ系

節の最後に述べたような欠点を除いたシステムがサーボ系である。すなわち,サーボ系は外 乱の重畳やシステムの微小な変化があった場合でも,定常誤差なく目標値に出力が追従する頑健性

(23)

の高いシステムである。 (例題 )例題 のシステムに対し,システム全体の固有値が (重根)であるような 型の サーボ系を構成せよ。 内 部 モ デ ル 原 理 を 使った 型 の サ ー ボ 系 を 構 成 す る と ,図 の よ う に な る 。た だ し ,コ ン テ キ ス ト 設定 を せ ず に こ の 図の ま ま 入 力 し よう と す る と ,エ ラー が 出 て あ る い は を 計 数 器 「 」に設定できないので注意する。エラーを避けるために,まず のメニューバー から「シミュレーション」→「コンテキスト設定」を開き,図 のように仮に , と入力 してから,図 のモデルを描く。 図 例題 に対する 型サーボ系のモデル 図 コンテキスト設定 上に示したモデルから,制御対象への入力信号 は となる。ここで は内部モデルにより追加された状態変数で ある。制御対象

(24)

のシステム方程式 に対し,この も含んだシステム方程式を拡大系と呼び,以下の通りとなる。 制御対象への入力 もこのような行列の形を用いて書くと となる。 ここで とおくと,このサーボ系の設計は,システム行列 と入力行列 を持つシステムを,状態フィー ドバックゲインベクトル を用いて所望の固有値に設定する,という問題に帰着する。この問題 は手計算で解くことも難しくはないが,ここでは を用いて解を求めることにしよう。拡大 系はもはや 次システムではないので,ぱっと見た感じで可制御かどうかはわからない。第 章 で述べたように,これを判定するために可制御性行列というものを作り,その行列式の値を評価す る必要がある。これが であればアウトで,固有値を自在に設定することはできない。そして「固 有値を設定」するということを「極配置」するという用語で表すのが一般的である。拡大系を定義 し,その可制御性行列 の行列式の値を求めて可制御性を調べ,固有値を の重根 とするように を設定する,という のリストを図 に示す。 図 のようにメニューバーの「アプリケーション」から専用のエディタソフトである を起動する。

(25)

図 の起動 図 のリストを入力し,適当な名前(たとえば「 次 型サーボ系 」)で保存する。図 のように コンソールのメニューバーから「ファイル」→「実行」を選び,このファイルを選 択して実行する。第 章にもう少し詳しい説明がしてある。 図 ファイルの実行 図 例題 を解く リスト 実行結果を図 に示す。

(26)

図 図 の実行結果 この結果から, , とすればよいことがわかった。この値をコンテキスト設定に入 力し,シミュレーションを実行すると図 に示すように目標値である に収束する応答が得ら れる。 図 例題 のシミュレーション結果 ここで,たとえばシステムの方程式を例題 の最後に示したのと同様に経年変化により と変化し,さらに で起動する単位ステップ関数状の外乱 が加わった場合を考える。蛇足かと思われるがこのときの「制御対象」のスーパーブロックの中身

(27)

を図 に一応示しておく。外乱の設定は 節の末尾に示したものと同一とする。 図 「制御対象」スーパーブロックの定数変更と外乱の追加 この場合のシミュレーション結果は次の図 のようである。まず において,過渡応答 は図 とは若干異なっているものの,出力の定常値が目標値に一致しており,定常偏差なく制 御できていることがわかる。さらに で外乱が加わった直後は出力が増加しているものの,そ の後目標値に定常誤差なく追従していく様子がわかる。 図 型サーボ系におけるシステムの定数変化と外乱の影響 型のサーボ系は目標値が一定値である場合にはこのようにシステムの微小な変化や外乱の影響 を蒙った場合でも定常誤差なく追従するが,ランプ関数のような入力に対しては定常誤差が残って しまう。これをシミュレートするために図 に示すように目標値をパレットブラウザの「信号 源」→「 」から選択して差し替える。もちろん,制御対象の各係数の値は元に戻しておく。 「 」のブロックパラメータを図 のように設定する。目標値を で表すこととする

(28)

と, となる。

図 目標値関数の差し替え

図 「 」ブロックパラメータの設定

シミュレーション結果は図 のようになる。定常誤差が残っていることが確認できる。

(29)

をラプラス変換すると である。すなわちランプ関数は固有値 (重根)を持つ形の 関数であるので,これに定常誤差なく追従するためには 型のサーボ系とする必要がある。次の例 題でこの問題に取り組む前に,図 に示すように,先ほど作ったモデルのうち,内部モデルの 部分をスーパーブロックとしておこう。 図 内部モデルのスーパーブロック化 (例題 )例題 のシステムに対し,システム全体の固有値が (三重根)であるような 型 のサーボ系を構成せよ。 型のサーボ系とするためには,内部モデルのスーパーブロックを図 に示すようにすれば よい。あらかじめ親ブロックの「コンテキスト設定」で と にダミーの数値を入れて定義す るのを忘れないようにする。これを怠るとエラーが出る。 図 型の「内部モデル」スーパーブロック この図から,

(30)

であるので,拡大系の各行列は, となることを確認されたい。参考文献 にも同種の問題が取り上げられているが, と の割り振りが逆になっている。気になる方は読み替えていただきたい。 を計算する プログラムのリストは図 に示すとおりである。 図 例題 を解く リスト 実行結果を図 に示す。

(31)

図 図 の実行結果 このように, , , と設定すればよいことがわかる。これらの値をコンテキス ト設定により設定し,シミュレートした結果を図 に示す。期待通り,ランプ関数である目標 値に対して定常誤差なく追従していることがわかる。 図 型サーボ系へランプ関数の目標値を与えた結果 それでは追従性を上げるために,むやみに積分器を追加すればよい,というものなのだろうか?

(32)

これを考えるために,たとえば 型のサーボ系の単位ステップ応答をシミュレートしてみると,図 のようになる。 型サーボの場合に比べてオーバーシュートが大きくなるなど,過渡応答特性 は劣ったものとなっていることがわかる。もし定値制御しか行わないのであれば 型のサーボ系を 構成する必要はなく,場合によっては悪影響を及ぼす恐れがあることがわかる。

(33)

による制御系設計演習

次のような モータを模した 次システムの問題を, を使って解いてみよう。このよう なシステムは制御工学の教科書の例題などで頻繁に現れる。 (例題 )システム において, のとき, システムの可制御性行列及び可観測性行列を求めて可制御性と可観測性を調べよ。 固有値が (重根)となるような状態フィードバックゲインベクトル を定めよ。 上記の を使って状態フィードバック制御を施した時,目標値に一致させるための入力ゲイ ン を求めよ。 オブザーバゲインベクトル を求めよ。 この例題は手計算でも簡単に答えを求めることができるので, に頼る前にまずは自分で解 いてみられたい。 解け たら, を 使って 図 のリス トを入力 し,適当 な名前(た とえば「 次 モ ー タ 」)で保存する。

(34)

図 例題 を解く リスト このリストについて若干の説明を箇条書きで以下に記すが,詳しくは,参考文献 などの書物 やインターネット上の情報を参照されたい。ただし,この本では少し古いバージョンを使っている ので,細かな点で最新バージョンとは異なるところがある。 では, 言語のような変数の型宣言は必要ない。 行列は と で囲まれた形で表記される。一行の中の要素はスペースまたはカンマで区切り, 行と行の間はセミコロンで区切る。     な の で と なる。 行末 を 単に 改 行 にす る と結 果 が コン ソ ール に 表 示さ れ るが ,セ ミコ ロ ン にす る と表 示 さ れ ない。 行列 の行列式の値を求めるコマンド 行列 の逆行列を求めるコマンド … に の固有値が …となるような の値が設定される。(極配置)

(35)

オブザーバゲインベクトル の計算について少し詳しく述べておく。まず極配置法による状態フィー ドバックゲインベクトル の計算がどんなものだったのかを思い出しておこう。それ は,与えられたシステムの行列を とするとき,指定された固有値 と に対して を満たすように を定めることであった。 そしてこの計算を で行うためには,たった1行 と記述すればよいのである。 一方,オブザーバゲインベクトル の計算は, とするとき,指定された固有値 と に対して となるような を求めることである。これは上で見た の計算と非常によく似ている。式 の ものと行列の形を合わせるために と の転置をとって乗じてみると となるが,これを と比較するとちょうど転置の関係にあることが分かる。以上のことから,

(36)

を満たすようにオブザーバゲインベクトルの転置 を定めればよいことがわかる。 この計算を で行うためには, ’ ’ と記述すればよい。 その後, を転置して を得ればよいことになる。ここでは の行列の場合について少し 詳しく記述したが,ちょっと考えれば分かるように は一般に成り立つ関係であるの で,高次のシステムの場合でも同じコマンドで計算できる。図 のように コンソールのメ ニューバーから「ファイル」→「実行」を選び,このファイルを選択して実行する。 図 ファイルの実行 出力は図 のようになる。自分で求めた結果と比較されたい。

(37)

図 例題 の実行結果 ここで終わってはあまりご利益を感じないかもしれない。しかしながら,実際の モータのシ ステム方程式に表れる定数は,ここで出てきたような「 」とか「 」などではない。また,この モデルでは 次のシステムとするために電機子のリアクタンスを無視している。いずれも,授業あ るいは学習の進行を妨げるほど計算を面倒にしないための方便である。また,入力行列 が複数の 以外の要素を持つような問題に遭遇した場合, を手計算で求めようとすると「何かの嫌がらせ かしら?」と思うほど非常に面倒な思いをする。これらの問題は を使用することで解消さ れる。何しろ,少々面倒な行列でも,高次のシステムでも とコマンドを打ち込むだけで計算してくれるのだから。 チンパンジーの知能は高く,米国在住であった ちゃんは現地の手話も理解したそうであ

(38)

る。日本では箕面のお猿さんが人間から強奪したお金で自動販売機を操作してジュースを買う,と いうお笑いネタがあるほど賢い動物であるという。マニュアル通りにパソコンを操作するだけな ら,チンパンジーやお猿さんを訓練してもやってくれるかもしれない。ただし,自分が何をやって いるのか?ということを理解して行う者と,そうでない者とでは大きな違いがある。後者,すなわ ちチンパンジーやお猿さんの仲間になりたくなければ,例題 のようなごく基本的な問題が何を 意味しているのかを理解し,手計算で解くことができる程度の知識を持つことは必要であろう。

(39)

次システムのシミュレーション

次システムにおける状態フィードバック制御

例題 で扱った モータを模した 次システムのシミュレーションを行ってみよう。制御対 象をいちいち積分器を明示して表すと大変面倒である。 では行列を用いてシステム方程式で 表されたシステムを表現するために「 」というブロックが用意されている。これを用いてモ デルは 図 のように 描くことがで きる。「 」は,パレットブラウザ内 の「 連続時間シス テ ム」→「 」で指定できる。また「 」に入力している制御対象への入力 を引き出し てグラフ表示に使用しようとするとエラーが出てしまったため,複製してある。(筆者は ビ ギナー故,このような方法しか思いつかなかった。)この例のように「 」が複数ある場合 は,ブロックパラメータ内の「 」によって名称を指定しておくと便利で ある。また,「 」に や という文字を入力する前に, のメニューバーから「シ ミュレーション」→「コンテキスト設定」を選択し,図 のようなコンテキストを設定する。こ れを先にしておかないと,エラーが出る。 図 次 モータのシミュレーションモデル 第 章では1次システムの例では別途 コンソールで求めた定数をコンテキスト設定に入 力したが,ここではコンテキスト設定中に プログラムを直接入力し,シミュレーションを 行う。

(40)

図 図 を入力する前に行うコンテキスト設定 制御対象のシステムを表す「 」ブロックを右クリックすると現れるメニューから,ブロッ クパラメータを図 のように設定する。繰り返すが,この作業の先だって「コンテキスト設定」 をしておくこと。 図 制御対象「 」ブロックパラメータの設定 ここで は と同じ形の単位行列を, は と同じ形のゼロ行列を表す。「 」 の出力である はスカラーではなく, と同じ次数のベクトルであり,ここでは は単位行列, はゼロ行列であるので, は式 でいうところの であることに注意すること。後ほど に出 力ベクトル を乗じて式 でいうところのスカラ出力 を取り出している。 メニューバーにある「シミュレーション」→「開始」を選択し,シミュレーションを実行すると, 図 のよう な結果が得られ る。これらのグラフで は,見やすいように 軸を変更している 。出 力 が目標値である に収束していることが分かる。また,このときの制御対象への入力信号 を図 に示す。

(41)

図 次 モータのシミュレーション結果(目標値と出力 ) 図 次 モータのシミュレーション結果(制御対象への入力信号 ) システムの固有値の絶対値をより大きくすることで,より速く目標値に収束させることができる だろう。実際,固有値を としてみた例を図 に示す。たしかに,より速く目標値に制御さ れている。しかしながら,制御対象への入力信号 の最大値は図 に示すように図 に比べ て極めて大きく,場合によっては非現実的なものとなるであろう。このように,固有値を自由に設 定できるということは制御系の設計において非常に大きな意味を持つが,それではどのような固有 値を設定すべきなのか?という問題はこの段階では依然残っていることに注意が必要である。

(42)

図 固有値を変更した 次 モータのシミュレーション結果(目標値と出力 ) 図 固有値を変更した 次 モータのシミュレーション結果(制御対象への入力信号 )

オブザーバ

状態フィードバック制御では,状態ベクトルの構成要素である状態変数を全て使うことになるの で,それらを観測するためのセンサーが状態変数の数だけ必要である。たとえば モータの場合 だと,位置を測定するポテンショメータと速度を計測するタコメータが必要になる。当然このよう なセンサーにはお金がかかるので,センサーの数を減らしてコストを下げたいとか,そもそもそん な状態変数を計測するセンサーなんて世の中にないんですけど,といった要求や苦情がでてくる。 オブザーバ(状態観測器)は,そのような要求に「計算技術で答えましょう,あなたは出力 を

(43)

測定するセンサだけご用意ください」,と答えてくれる道案内役である。高性能の電子回路素子が 安価に手に入るようになった現在,これを使わない手は無い,といえよう。 オブザーバの発想の原点は,制御対象であるシステム(この中に含まれる状態変数は物理量であ り,電圧や電流だけではなく,圧力や温度や水位や熱量や回転数や位置などの場合もある。それを センサで取り込んで電圧などの使いやすい物理量に変換し,コンピュータが使いたければアナログ /デジタル変換をかけてメモリ上の数値にする。)と同じ挙動を示すモデル・システム(ふつうは コンピュータ内のプログラムだがオペアンプなどを使った電子回路でもよい。前者ではメモリ上の 数値で,また後者では電圧で状態変数が再現される。)を用意し,状態変数を計算によって推定す る,というものである。しかしここで一つ困った問題が起こる。つまり,センサをけちった報いと して,ふつうは,制御対象であるシステムの状態変数の初期値が正確には分からない,ということ である。これにより,状態変数そのものとモデル・システムによる推定値には誤差が生じる。 システム に対して状態変数を推定するためのモデル・システムを としよう。式 から式 を差し引いたものが推定誤差 の従う方程式である。 この解は となる。これは,推定誤差の縮まり方を決める固有値と,制御対象のシステムの固有値が等しいこ とを示している。制御対象のシステムのが安定であれば当初の推定誤差はシステムの固有値に従っ て縮まることを示しているが,その速さを決めることはできない。そもそも制御対象のシステムが 安定でなければ,縮まりすらしない,ということである。 ためしに,コンテキスト設定でシステム行列を と書き換えて制御対象を不安定に してみる。それから,図 のように配線をする。 のブロックパラメータは図 と初期値 以外は同じとする。初期値について,制御対象は ,モデル・システムは とし ておく。

(44)

図 モデル・システムを含めた不安定な 次システムのシミュレーションモデル シミュレーションした結果を図に示す。 で や といった値から始まる状態変数自体 は,状態フィードバック制御により安定化しているが, で であったモデル・システムの出 力のグラフは枠外にはみ出してしまい,到底「推定値」の名に値するものではないことがわかる。 図 図 のシミュレーション結果(状態変数とその推定値?) そこで,この推定誤差を指定した固有値で縮める工夫をしたものが,オブザーバと呼ばれるもの である。状態変数全ての推定値を出力するようなものを特に,同一次元オブザーバという。アイデ アはこうである。式 をなんとかして の形にできないか?ということである。 が入るのは誤差修正の手段として を活用す るためである。(状態フィードバック制御のところで聞いたような話である。)ここで はオブザー バゲインベクトルであり,2次系システムの場合,

(45)

で表され,設計者が決めることができる。もしこのようにできれば,設計者が決めた固有値を式 に持たせることができる,というわけである。 式 の従う方程式は, であるが,これを変形していくと となる。これに式 と式 を代入すると, と,オブザーバを表す方程式が得られる。これはもちろん実現可能である。 を使った の決 め方については第 章に記述した。 同一次元オブザーバのシミュレーションを行ってみよう。まず図 に示すように,コンテキス ト設定にオブザーバゲインベクトルの計算を追加する。オブザーバの固有値は (重根)とする。 図 オブザーバを含めたコンテキスト設定 次に図 のようにモデルにオブザーバを追加する。このモデルはオブザーバの挙動を見るた めだけのものなので「見てるだけオブザーバ」と名付けておこう。状態フィードバック制御には状

(46)

態ベクトル を用いており,オブザーバは状態ベクトルを推定しているだけで制御に寄与させ ていないことに注意しよう。 図 「見てるだけオブザーバ」を含めた 次 モータのシミュレーションモデル オブザーバとして示してある「 」ブロックのブロックパラメータを図 のようにする。 ここで,式 の一部が と表現されていることに注意しよう。 図 「 」ブロックパラメータの設定 制御対象の初期値とオブザーバの初期値が同じであると,グラフが重なってしまう。そもそもオ

(47)

ブザーバは制御対象の初期値が何か分からない状態でも設定した固有値に従って推定誤差を縮め てくれるというのが「売り」である。そこで,オブザーバの挙動を見るために,制御対象の初期値 を と,オブザーバの初期値 とは異なるものにしてシミュレー ションしてみる。状態変数とその推定値のグラフは図 のようになる。初期値が のものがオ ブザーバによる推定値であり,そうでないものが状態変数である。 図 状態変数とその推定値 このように,状態変数とその推定値の誤差が には殆ど無くなっていることが分かる。先 ほど行ったシミュレーションから,このシステムでは出力 が目標値に一致するのは 程 度であるので,この推定値を用いて状態フィードバック制御を施しても大きな問題は生じないと考 えられる。そこで,図 の矢印で示すように配線を変更し,オブザーバによる推定値を用いて 状態フィードバック制御を施してみる。 図 オブザーバを含めた 次 モータのシミュレーションモデル

(48)

シミュレーションの実行結果を図 に示す。状態変数そのものを用いた場合と遜色ない制御 が行われていることが分かる。 図 オブザーバを用いた状態フィードバック制御の結果(出力 ) 制御対象への入力信号 は図 の通りとなる。状態変数そのものを用いた場合よりも速く 制御されており,制御対象への入力信号の値も小さくなっているが,これはここで選んだ初期値に よってたまたまもたらされた結果と言える。 図 オブザーバを用いた状態フィードバック制御の結果(制御対象への入力信号 ) このときの状態変数とオブザーバによる状態変数の推定値は図 のとおりである。初期値が のものがオブザーバによる推定値であり,そうでないものが状態変数である。

(49)

図 遅いオブザーバを用いた状態フィードバック制御の結果(状態変数とその推定値) 一般に,オブザーバの固有値は状態フィードバックゲインを定める時に指定する固有値(状態 フィードバック制御により実現される固有値)よりも,その絶対値が大きい場合に所望の動作が得 られる。教科書 にもそう書いてあるが本当だろうか?試しにオブザーバの固有値を の重 根としてみた結果を以下に示す。これは固有値の絶対値が小さく時定数が大きいので「遅いオブ ザーバ」と名付けられるだろう。図 に示すように状態変数の推定が正確にできているとは言 えず,また図 に示すように出力 は でもまだ目標値に達していない。この時点では, 道案内役である状態変数の推定値がまだ道に迷っている状態なので,これは当然の結果である。 図 遅いオブザーバを用いた状態フィードバック制御の結果(状態変数とその推定値)

(50)
(51)

橋本,石井,小林,大山「 で学ぶシステム制御の基礎」オーム社,

中野,美田「制御基礎理論―古典から現代まで」昭晃堂,

江口,大屋「はじめて学ぶ現代制御の基礎」東京電機大学出版局, 橋本,石井「 で学ぶシミュレーションの基礎」オーム社,

図 配線が完了した状態 次に, 「 」のパラメータを設定する。図 に示すように,設定したいブロックをマ ウス右クリックすると現れるメニューから, 「ブロックパラメータ」を選択する。 図 ブロックパラメータの呼び出し その時呼び出される次のダイアログで値を に設定する。 「 」についても同様の手順 で値を設定する。 図 「 」ブロックパラメータの設定 また,図 に示すように「 」の「初期化時間」を にする。積分器である「 」の初期値も同様に設定可能であるが,ここでは使用しない。
図 グラフ軸設定ダイアログ 軸 (縦軸) についても同様に設定できる。 なお,「 」 のブロックパラメータ内の 「 」 及び「 」の項目からあらかじめ設定しておくことも可能である。図 に整形後 のシミュ レーション結果を示す。 図 例題 のシミュレーション結果 整形後 この問題は簡単に解析解が求められ, となる。グラフに示された解 は に漸近しており,時定数は であることが読み取られ,結果が妥当であることが確認できる。 以上のように, の操作は直感的に可能である。詳しくは,参考文献 などの書物やイン
図 スーパーブロックへの変換 図 に示すように,スーパーブロックに変換される。 図 スーパーブロック スーパーブロックをマウス左ダブルクリックすると,中のモデルを見ることができる。元の全 体像に戻るためには,ウインドウの背景部分をマウス右クリックすると図 のように現れるメ ニューから「親ダイアグラムを表示」を選べばよい。
図 親ダイアグラムの表示 モデルにコメントを付ける手順を以下に記す。まず,背景の適当な部分をマウス左ダブルクリッ クすると図 に示すように「 」という文字列が入ったコメントのボックスができる。文字列 をダブルクリックして選択することで,内容を変更することができる。 コメントの作成 コメントを付けた例題 のモデル 図 コメントの作成手順 グラフに出力とともに目標値も表示させた方が,何が起こっているのか見やすいであろう。この ためような目的にマルチプレクサを使用することできる。図 に示すように,目標値と出力を
+7

参照

関連したドキュメント

睡眠を十分とらないと身体にこたえる 社会的な人とのつき合いは大切にしている

問についてだが︑この間いに直接に答える前に確認しなけれ

関係委員会のお力で次第に盛り上がりを見せ ているが,その時だけのお祭りで終わらせて

第四章では、APNP による OATP2B1 発現抑制における、高分子の関与を示す事を目 的とした。APNP による OATP2B1 発現抑制は OATP2B1 遺伝子の 3’UTR

 この論文の構成は次のようになっている。第2章では銅酸化物超伝導体に対する今までの研

式目おいて「清十即ついぜん」は伝統的な流れの中にあり、その ㈲

ここで,図 8 において震度 5 強・5 弱について見 ると,ともに被害が生じていないことがわかる.4 章のライフライン被害の項を見ると震度 5

 (4)以上の如き現状に鑑み,これらの関係 を明らかにする目的を以て,私は雌雄において