WOLFRAM

ドメイン間のモデリング

直流モーター制御系
強軸と弱軸感度解析

この例では,System Modeler におけるサーボ機構モデルの構築を段階ごとに示す.これは,マルチ工学機能について説明し.Model Centerで作ったモデルをSimulation Centerを使ってどのように分析し,制御器を同期し,比較研究を行うかを示す.

このチュートリアルに使用されているモデル
DCMotor | StiffAxis | WeakAxis | StiffServoMechanism | WeakServoMechanism

直流モーター

制御された直流モーターの簡単な動的モデルは,可変電源,抵抗,誘導子,直流モーター(DC motor)の電磁場によって与えられる電気エネルギーと力学エネルギーの結合を表す電気モーター力要素からなる.モーターの軸は,回転質量すなわち慣性によって表される.

これらのコンポーネントはすべて,System Modeler Modelica Standard Libraryに含まれている.ドラッグアンドドロップで以下の図のようなモデルを構築することができる.

1.gif

Model CenterにおけるDC motorダイアグラムビュー

このモデルは,新しいモデルを作り,適切なコンポーネントを見付け,見付かったコンポーネントをドラッグアンドドロップでダイアグラムエリアに置き,最後に接続線ツールを使ってコンポーネントを繋げることで構築できる.

まず,DCMotorという名前の新しいモデルを作ってみる.Modelica Standard Library内でコンポーネントを見付けるためには,検索するか,あるいは,格納されている場所が分かっている場合はクラスブラウザで目指すコンポーネントが含まれているパッケージを開くとよい.ここでは,その両方の方法を試してみる.

Stepソースコンポーネントが見付けたい場合は,クラスブラウザで検索する.クラスブラウザのテキストボックスにstepと書き込み,結果が表示されるまで待つ.

2.gif

Model Centerのクラスブラウザを使ってステップソールコンポーネントを検索する

クラスブラウザで「step」にマッチするものの上位10個が見られるはずである.ここで使用したいコンポーネントは,上記でハイライトしてあるModelica.Blocks.Sources.Stepである.

このコンポーネントをDCMotorモデルに加えるために,これをクラスブラウザからドラッグし, クラスウィンドウのダイアグラムビューにドロップする.

信号電圧コンポーネントはModelica.Electrical.Analog.Sourcesパッケージにある.これの正しい位置を知っているので,クラスブラウザのツリービューを使い,必要なコンポーネントが入っているSourcesというパッケージを表しているブランチまで,ツリーのブランチを開いていくことにする.

まず,Modelicaパッケージを開く.パッケージのアイコンと名前の左にある記号をクリックするとよい.

3.gif

クラスブラウザModelicaパッケージを開く

見て分かるように,Modelicaパッケージにはいくつかのパッケージが入っている.次は,Analogパッケージの中のElectricalパッケージを開く.最後にSourcesパッケージを開く.ここに信号電圧コンポーネントがある.

4.gif

Modelica.Electrical.Analog.Sourcesパッケージを開く

クラスウィンドウのダイアグラムビューにドラッグしてSignalVoltageコンポーネントをDCMotorに加える.

これで7つのコンポーネントのうち2つを加えることができた.残りの4つの電気コンポーネント(ResistorInductorGroundRotationalEMF)はModelica.Electrical.Analog.Basicパッケージにある.すでに Modelica.Electrical.Analogパッケージを開いてあるので,Basicパッケージは容易に見付かる.これを開いて,残りのコンポーネントを見付ける.

5.gif

Modelica.Electrical.Analog.Basicパッケージを開く

DCMotorモデルに電気コンポーネントを加えると,必要なコンポーネントは慣性1つになる.慣性Modelica.Mechanics.Rotational.Componentsパッケージにある.検索してもよいし,ModelicaMechanicsRotationalComponentsの各パッケージを直接開いてもよい.

慣性コンポーネントを加えたら,後はコンポーネントを接続するだけで直流モーターのモデルは完成する.コンポーネントは接続線ツールを使って接続する.

6.gif

Model Centerのツールバーにある接続線ツール

例えば,アース端子を信号電圧コンポーネントのマイナスピンに繋ぎたい場合は,アース端子の上にマウスのカーソルを置き,左のマウスボタンを押しながら信号電圧コンポーネントのマイナスピンにカーソルを動かす.マウスボタンを離すと接続が完了する.

DCMotorダイアグラムビューがこのチュートリアルの最初の図のようになるまで接続を続ける.

コンポーネントをドロップし,接続している間に,Model Centerはそのアクションに対応するModelicaコードを生成している.Modelicaテキストビューに切り換えて,モデルのテキスト表記を見てみる.モデルのテキスト表記では,各コンポーネントが宣言され,2つのコンポーネント間の接続が方程式セクションのconnect方程式で表されている.

model DCMotor
Modelica.Blocks.Sources.Step step1;
Modelica.Electrical.Analog.Basic.Resistor resistor1;
Modelica.Electrical.Analog.Basic.Inductor inductor1;
Modelica.Electrical.Analog.Basic.RotationalEMF EMF1;
Modelica.Electrical.Analog.Basic.Ground ground1;
Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage1;
Modelica.Mechanics.Rotational.Components.Inertia inertia1;
equation
connect(resistor1.n, inductor1.p);
connect(inductor1.n, EMF1.p);
connect(step1.y, signalVoltage1.v);
connect(signalVoltage1.p, resistor1.p);
connect(EMF1.n, signalVoltage1.n);
connect(ground1.p, signalVoltage1.n);
connect(EMF1.flange, inertia1.flange_a);
end DCMotor;

宣言と方程式の順序は,コンポーネントをドロップしたり接続したりした順序による.であるから,自分で作ったモデルでは,この順序が若干異なるかもしれない.また,読みやすくするために,DCMotorの定義からは実際のModelicaテキストビュー» 記号で表されたすべてのグラフィカルな注釈上記がすべて除かれている.

これでDCMotorモデルが完成し,シミュレーションができるようになった.しかし,まずはじめに,いくつかのシミュレーション設定を指定する必要がある.ツールバーのクラスのシミュレーションボタンの横にある下向きの矢印をクリックし,エクスペリメントの設定を選ぶ.クラスのプロパティダイアログボックスがポップアップするので,終了時間を編集してシミュレーション時間を25秒に設定する.OKをクリックするかReturnを押すかすると,設定がモデルに適用され,モデルのexperiment注釈が自動的に更新される.次にツールバーのクラスのシミュレーションボタンをクリックし,Simulation Centerを開いてモデルのシミュレーションを行う.

7.gif

DCMotorモデルのシミュレーション時間を25秒に設定する

以下の図のように,変数を選んでエクスペリメントブラウザでプロットする.

8.gif

DCMotorモデルのinertia1.wsignalVoltage1.vをデフォルトのパラメータ値でプロットする

これで結果が得られる.inertia1.wsignalVoltage1.vの時間に対してのプロットである.

システムの動作を修正するためにパラメータ値も大変簡単に変えることができる.振動するステップ応答の代りに減衰ステップ応答を得るために,抵抗器の抵抗, 誘電子のインダクタンス,軸の慣性のモーメントを変えてみる.

エクスペリメントブラウザパラメータビューに切り換える.パラメータビューでパラメータの値を変える際は,現行の値をクリックする.resistor1の抵抗Rを10オームに,inductor1のインダクタンスLを0.1Hに,inertia1の慣性モーメントJを0.3kgm 2に変えてみる.

再びモデルのシミュレーションを行い.慣性の角速度のアップデートしたプロットを調べる.

9.gif

カスタマイズしたパラメータ値でDCMotorモデルのinertia1.wsignalVoltage1.vをプロットする

強軸と弱軸

このセクションは,弱軸モデルを開発し,以下に示したようにステップトルクを加えることでステップ応答を調べ,強軸モデルに弱さを加えることで軸がより正確にモデル化できることを示す.

まず,強軸モデルを開発することから始める.モデルのコンポーネント(StepTorqueInertiaIdealGear) はどれも,クラスブラウザModelica.Blocks.SourcesModelica.Mechanics.Rotational.SourcesModelica.Mechanics.Rotational.Componentsの各パッケージを開くことで見付けることができる.検索して見付けることもできる.モデルの名前は好きなように付けてよい.モデルのさまざまなステージもIntroductoryExamples.MultiDomainパッケージで得ることができる.

10.gif

IntroductoryExamples.MultiDomain.StiffAxisモデルのダイアグラムビュー

idealGear1コンポーネントを選ぶ.エディタの下にあるパラメータビューでコンポーネントのパラメータを編集することができる.

11.gif

Model Centerで理想的なギアコンポーネントの伝達率を編集する

値3のratioパラメータを与える.これは,角度および角速度が3倍になり,ギアの片側からもう片側になるに従ってトルクが1/3に弱まることを意味している.また,startTimeパラメータの値を1秒にして,ステップソースの開始時を変える.

この系のシミュレーションを6秒間行うと,一定のトルクが一定の角加速度を生んでいる(角速度のrampとこの軸についての角度の二乗曲線)ことが分かる.

12.gif

IntroductoryExamples.MultiDomain.StiffAxisデルのトルク,inertia2の角速度,inertia2の角度のプロット

追加的な弱さを含むことで,軸をより正確にモデル化することができる.これは,上記の軸モデルを,下の図にあるように2つの回転質量をねじりバネで繋いだモデルで置き換えることで可能になる.ねじりバネModelica.Mechanics.Rotational.Componentsパッケージに含まれている.

13.gif

IntroductoryExamples.MultiDomain.WeakAxisモデルのダイアグラムビュー

inertia1とには1kg·m 2の慣性モーメントが与えられているのに対し,inertia2およびinertia3には0.5kg·m 2の慣性モーメントが与えられている.spring1のバネ定数は5N·m/radに設定されている.この部分系のシミュレーションを6秒間行い結果を調べる(下記を参照こと).前のようにinertia2ではなく,inertia3が軸の最後の要素であり,従ってプロット変数として選ばれる点に注意のこと.

14.gif

IntroductoryExamples.MultiDomain.WeakAxisモデルについての,トルク,inertia3(上のプロット)の角度,inertia3(下のプロット)の角速度をプロットする

弱軸モデルと強軸モデルの比較は,両者には類似点があるが,前者に偏向が加わっていることを示している.

練習

外向きシャフトにねじりバネが付き,他に慣性要素がある簡単な直流モーターを作る.シミュレーションをして結果を調べる.いくつかのパラメータを変更して結果を比較する.入力トルクを加え, inertia2に接続し,系を調べてみるのもよいだろう.

制御系

このチュートリアルの次のステップとして,上記で開発した直流モーターモデルと軸モデルを使って,強サーボ機構と弱サーボ機構を開発する.

この制御系の構造は以下の略図に示してある.この系は入力信号,センサー,フィードバックループ,制御器からなっている.物理系は直流モーターと軸のシステムの1つからなっている.物理系には負の静的ゲインがあるので,PIゲインもまた負でなければならない.

15.gif

制御系の簡単な図

上記の図のように3つの系を全部繋ぐ.制御器パラメータのデフォルトの選択肢はk = 1およびT=1である.ただし,PI制御器変換関数は次の通りである.

まず,前に開発したDC motor強軸についての制御系の開発から始める.下の図からも分かるように,フィードバック,PI制御器,スピードセンサーの3つのコンポーネントが新たに導入されている.

17.gif

IntroductoryExamples.MultiDomain.StiffServoMechanismモデルのダイアグラムビュー

これらのコンポーネントは以下のパッケージに含まれている.

感度解析

このセクションでは,系のパラメータの違いについて制御設計の感度がどれほどかを見てみる.これは,前進感度解析をサポートするCVODESソルバを使って行う.パラメータpについての状態yi(t)の感度si(t)は以下で与えられる.

つまり,各インスタンスの感度は,パラメータpの小さな変化に対して状態yi(t)に対する解がどれほど変わるかを表している.

WeakServoMechanism中の,この3つの慣性に対する制御設計の感度をよく見てみよう.そのためには,設定ビューでCVODESソルバを選び,inertia1.Jinertia2.Jinertia3.Jについてのパラメータビューで感度解析チェックボックスをチェックする.

23.gif

CVODESソルバの設定

シミュレーションが終了すると,各状態の下の開くことができるツリーとして,プロットビューで感度解析の結果をプロットすることができる.

24.gif

inertia1.Jinertia2.Jinertia3.Jに対しての,inertia3.wの感度

以下のスクリーンショットは,inertia1.Jinertia2.Jinertia3.Jについてのinertia3.wに対する感度を示している.inertia1.Jinertia3.wの結果に対してはシミュレーションの初期に若干の影響を与えるに過ぎない.影響はシミュレーションの終りに近付くに従って小さくなる.inertia2.Jの影響は,シミュレーションの全体を通して無視し得る程度のものである.これに対し,慣性inertia3.Jは解に多大な影響を与える.このことから,この制御設計はinertia3.Jの変化に対してもっとも敏感であるということができる.

25.gif

inertia1.Jinertia2.Jinertia3.Jに対してのinertia3.wの感度

結果を検証するために,次のシミュレーションを行う.