ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

簡単なモデルの作成

Simulink® を使用して、システムをモデル化し、そのシステムの動的な振る舞いをシミュレーションすることができます。このチュートリアルで簡単なモデルの作成に用いる基礎的な手法は、複雑なモデルで使用されるものと同じです。この例では、簡略化された車の動きをシミュレーションします。通常、車はアクセル ペダルを踏んでいる間は動いています。ペダルを放すと、車はアイドリング状態になり、停止します。

Simulink ブロックは、入力と出力間の数学的関係を定義するモデル要素です。この簡単なモデルを作成するには、次の 4 つの Simulink ブロックが必要です。

ブロック名ブロックの目的モデルの目的
Pulse Generatorモデルの入力信号を生成する アクセル ペダルを表す
Gain入力信号を係数で乗算するアクセルを踏むことによる車の加速への影響を計算する
Integrator, Second-Order入力信号を 2 階積分加速度から位置を取得する
Outport信号をモデルからの出力として指定する位置をモデルからの出力として指定する

このモデルのシミュレーションでは、短いパルスを 2 回積分してランプを取得します。スコープ ウィンドウに結果が表示されます。入力パルスは、アクセルの踏み込みを表します。ペダルが踏まれているときは 1、踏まれていないときは 0 です。出力ランプは、増大する始点からの距離を表します。

新しいモデルを開く

Simulink エディターを使用して、モデルを作成します。

  1. MATLAB® を起動します。MATLAB ツールストリップから、[Simulink] ボタン をクリックします。

  2. [空のモデル] テンプレートをクリックします。

    Simulink エディターが開きます。

  3. [ファイル] メニューの [名前を付けて保存] を選択します。[ファイル名] テキスト ボックスで、モデルの名前を入力します (simple_model など)。[保存] をクリックします。モデルがファイル拡張子 .slx を付けられて保存されます。

Simulink ライブラリ ブラウザーを開く

Simulink は、ライブラリ ブラウザーで機能別に整理された一連のブロック ライブラリを提供します。以下のライブラリはほとんどのワークフローに共通です。

  • Continuous — 連続状態をもつシステム用のブロック

  • Discrete — 離散状態をもつシステム用のブロック

  • Math Operations — 代数方程式および論理方程式を実装するブロック

  • Sinks — ブロックに接続する信号を格納および表示するブロック

  • Sources — モデルを駆動する信号値を生成するブロック

  1. Simulink エディターのツール バーで、[ライブラリ ブラウザー] ボタン をクリックします。

  2. ライブラリ ブラウザーが常にデスクトップ上の他のウィンドウの上に表示されるように設定します。ライブラリ ブラウザーのツール バーで、[常に前面に表示] ボタン を選択します。

ブロック ライブラリから参照するには、カテゴリを選択してから、左ペインの機能領域を選択します。使用可能なすべてのブロック ライブラリを検索するには、検索語を入力します。

たとえば、Pulse Generator ブロックを検索します。ブラウザーのツール バー上の検索ボックスに pulse と入力して Enter キーを押します。Simulink は名前または説明に pulse が含まれるブロックのライブラリを検索し、それらのブロックを表示します。

ブロックについての詳細情報を参照します。ブロックを右クリックし、[Pulse Generator ブロックのヘルプ] を選択します。すると、そのブロックのリファレンス ページと共にヘルプ ブラウザーが表示されます。

通常、ブロックには複数のパラメーターがあります。ブロックをダブルクリックすることですべてのパラメーターにアクセスできます。

モデルへのブロックの追加

モデルの作成を開始するには、ライブラリを参照してブロックを追加します。

  1. Sources ライブラリから、Pulse Generator ブロックを Simulink エディターにドラッグします。Pulse Generator ブロックのコピーが [Amplitude] パラメーターの値のテキスト ボックスと共にモデルに表示されます。「1」と入力します。

    パラメーター値はシミュレーション全体を通じて保持されます。

  2. 同じ方法を使用して、以下のブロックをモデルに追加します。

    ブロックライブラリパラメーター
    GainSimulink/Math Operations

    ゲイン: 2

    Integrator, Second OrderSimulink/Continuous

    初期条件: 0

    OutportSimulink/Sinks

    端子番号: 1

    2 つ目の Outport ブロックを追加するため、既存のブロックをコピーし、キーボード ショートカットを使用して別のポイントにペーストします。

    これで、モデルに必要なブロックが揃いました。

  3. 各ブロックをクリックしてドラッグすることで、次のようにブロックを配置します。ブロックのサイズを変更するには、角をクリックしてドラッグします。

ブロックの接続

出力端子と入力端子との間にラインを作成することでブロックを接続します。

  1. Pulse Generator ブロックの右側の出力端子をクリックします。

    その出力端子と接続に適したすべての入力端子が強調表示されます。

  2. Gain ブロックの入力端子をクリックします。

    Simulink により、ブロックがラインで接続され、信号の流れる方向が矢印で示されます。

  3. Gain block の出力端子を Integrator, Second Order ブロックの入力端子に接続します。

  4. Integrator, Second Order ブロックの 2 つの出力を 2 つの Outport ブロックに接続します。

  5. モデルを保存します。[ファイル]、[保存] を選択して、名前を指定します。

信号ビューアーの追加

シミュレーション結果を表示するには、最初の出力を Signal Viewer に接続します。

信号を右クリックしてコンテキスト メニューにアクセスします。[ビューアーの作成と接続]、[Simulink]、[Scope] を選択します。ビューアー アイコンが信号に表示され、スコープ ウィンドウが開きます。

アイコンをダブルクリックすることで、いつでもスコープを開くことができます。

シミュレーションの実行

コンフィギュレーション パラメーターを定義したら、モデルのシミュレーションを実行する準備が整っています。

  1. モデル ウィンドウで、ツール バーの値を変更することでシミュレーションの終了時間を設定します。

    既定の終了時間である 10.0 はこのモデルに適しています。この時間値には単位がありません。Simulink の時間単位は、方程式の構成方法によって異なります。この例では、簡略化された車の動きを 10 秒間シミュレートしますが、他のモデルでは時間の単位がミリ秒や年になる可能性もあります。

  2. シミュレーションを実行するには、[実行] ボタン をクリックします。

シミュレーションが実行され、ビューアーに出力が生成されます。

モデルの改良

この例では既存のモデル moving_car.slx を使用して、この運動モデルに基づいて近接センサーをモデル化します。このシナリオでは、デジタル センサーは車と 10 m (30 ft) 離れた場所にある障害物との間の距離を測定します。モデルは、以下の条件を考慮してセンサーの測定値および車の位置を出力します。

  • 車は障害物に到達すると急停止します。

  • 物理的な世界では、センサーによる距離測定が不正確であるため、偶発的な数値誤差が生じます。

  • デジタル センサーは一定の時間間隔で作動します。

ブロック パラメーターの変更

開始するには、moving_car モデルを開きます。MATLAB コマンド ウィンドウで次を入力します。

open_system(fullfile(matlabroot,...
'help', 'toolbox', 'simulink', 'examples', 'moving_car'))

最初に、車の位置が 10 に到達したときに急停止するようにモデル化する必要があります。Integrator, Second Order ブロックにはこの目的のためのパラメーターがあります。

  1. Integrator, Second Order ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスが表示されます。

  2. [制限 x] を選択し、[上限 x]10 と入力します。

    パラメーターの背景色が変化し、モデルに適用されていない変更であることを示します。

  3. [OK] をクリックして、変更を適用してダイアログ ボックスを閉じます。

新しいブロックの追加と接続

障害物からの距離を測定するセンサーを追加します。

  1. モデルを変更します。必要に応じて、新しいブロックが収まるようにモデル ウィンドウを拡張します。

    • 実際の距離を検出します。障害物の位置と車両の位置の間の距離を検出するには、Subtract ブロックを追加します。また、Constant ブロックを追加して、障害物の位置に対して定数値 10 を設定します。

    • 実際のセンサーでは一般的な、不正確な測定値をモデル化します。Sources libraryBand-Limited White Noise ブロックを使用してノイズを生成します。[ノイズ強度] パラメーターを 0.001 に設定します。Math Operations ライブラリの Add ブロックを使用して、測定値にノイズを追加します。

    • 0.1 秒ごとに作動するデジタル センサーをモデル化します。Simulink では、指定した間隔で信号をサンプリングするには、ゼロ次ホールドでサンプル アンド ホールドを実装する必要があります。Discrete ライブラリから Zero-Order Hold ブロックを追加します。ブロックをモデルに追加したら、[Sample Time] パラメーターを 0.1 に変更します。

    • 別の Outport を追加して、センサー出力に接続します。[端子番号] パラメーターは既定値のままにします。

  2. 新しいブロックを接続します。Integrator, Second-Order ブロックの出力が既に別の端子に接続されていることに注意してください。信号内で分岐を作成するには、信号を左クリックして接続に使用する可能性のある端子を強調表示し、適切な端子をクリックします。

信号の注釈付け

モデルに信号名を追加して、モデルを理解しやすくします。

  1. 信号をダブルクリックします。編集可能なテキスト ボックスが表示されます。

  2. 信号名を入力します。

  3. テキスト ボックス以外の場所をクリックして終了します。

  4. これらの手順を繰り返して、次のように名前を追加します。

複数の信号の比較

"実際の距離" 信号と "測定距離" 信号を比較します。

  1. スコープを作成し、"実際の距離" に接続します。信号の名前がビューアーのタイトルに表示されることに注意してください。

  2. "測定距離" 信号を同じビューアーに追加します。信号を右クリックし、[ビューアーに接続]、[Scope1] を選択します。前の手順で作成したビューアーに接続していることを確認します。

  3. モデルを実行します。ビューアーには 2 つの信号が表示されます。つまり、"実際の距離" 信号は黄色で、"測定距離" 信号は青色で表示されます。

  4. グラフを拡大して、ノイズとサンプリングの影響を確認します。[ズーム] ボタン をクリックします。確認する領域周辺のウィンドウを左クリックしてドラッグします。

    繰り返し拡大することで、詳細を確認することができます。

測定値は実際の値から 0.3 m も逸脱する可能性があることが、このプロットからわかります。この情報は、安全機能 (たとえば衝突警報) を設計するときに役立ちます。

参考

ブロック

関連するトピック