メインコンテンツ

簡単なモデルの作成

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

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

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

A Simulink model with Pulse Generator, Gain, Second-Order Integrator block, and two Outport blocks.

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

新しいモデルを開く

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

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

    The Simulink start page shows two tabs, New and Examples. The New tab is selected and shows a list of templates you can open.

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

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

    優先順位の低下が生じないように、Simulink エディターは読み込まれているモデルおよびパス上のファイルをチェックし、次に使用可能な名前 (untitleduntitled1untitled2 など) を使用してモデルを作成します。

    Empty Simulink Editor

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

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

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

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

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

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

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

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

ライブラリ ブラウザーを開くには、Simulink ツールストリップの [シミュレーション] タブで [ライブラリ ブラウザー] をクリックします。

Library Browser

ブロック ライブラリから参照するには、ライブラリ ツリーでカテゴリ、機能領域の順に展開します。

使用可能なすべてのブロック ライブラリを検索するには、検索語を入力します。

たとえば、Pulse Generator ブロックを検索します。検索ボックスに「pulse」と入力してから、Enter キーを押します。名前または説明に pulse が含まれるブロックがライブラリで検索され、該当するブロックがライブラリ ブラウザーの [検索結果] タブに表示されます。

ヒント

[ライブラリ] タブをクリックすると、ライブラリ ツリーの参照に戻ることができます。

The Simulink Library Browser displays the results for the search term pulse, which include Pulse Generator and Continuous Pulse Generator blocks.

ブロックについての詳細情報を参照します。[検索結果] タブで、Pulse Generator ブロックを右クリックし、[Pulse Generator ブロックのヘルプ] を選択します。ドキュメンテーションが開き、ブロックのリファレンス ページが表示されます。

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

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

モデルの作成を開始するには、ブロックをモデル キャンバスに追加します。ライブラリ ブラウザーまたはクイック挿入メニューを使用してブロックを追加できます。

  1. まず、ライブラリ ブラウザーから Pulse Generator ブロックを追加します。

    Sources ライブラリから、Pulse Generator ブロックを Simulink エディターにドラッグします。[振幅] パラメーターが既定値の 1 である Pulse Generator ブロックがモデルに追加されます。

    The Pulse Generator block with a default value of 1 for the Amplitude parameter.

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

  2. クイック挿入メニューを使用して Outport ブロックを追加します。

    Double-click anywhere in the model canvas. In the quick insert menu that appears, enter out. A list of blocks appears. Verify that the Outport block from the Simulink library is selected. Check the library name listed under the block name and the block description in the details pane to the right of the search results.

    ヒント

    詳細ペインを非表示にするには、矢印 をクリックします。詳細ペインを表示するには、もう一度矢印をクリックします。

    Quick insert menu with the keyword "out" displayed in the search text box

    Enter キーを押して Outport ブロックをモデルに追加します。

    クイック挿入メニューの詳細については、クイック挿入メニューを使用したモデルへのブロックの追加を参照してください。

  3. ライブラリ ブラウザーまたはクイック挿入メニューを使用して、以下のブロックをモデルに追加します。

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

    ゲイン: 2

    Second-Order IntegratorSimulink/Continuous

    初期条件: 0

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

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

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

    Arranged blocks from left to right.

ブロックの接続

出力端子と入力端子との間にラインを作成することでブロックを接続します。その後、モデルを保存します。

  • Pulse Generator ブロックの出力端子を Gain ブロックの入力端子に接続します。

  • Gain ブロックの出力端子を Second-Order Integrator ブロックの入力端子に接続します。

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

たとえば、Pulse Generator ブロックを Gain ブロックに接続するには次のようにします。

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

    その出力端子と接続に適したすべての入力端子が青色のシェブロン記号 port hint symbol で示されます。

  2. 接続キューを確認するには、シェブロン記号 port hint symbol をポイントします。

  3. キューをクリックし、ラインおよび信号の流れる方向を示す矢印を使用してブロックを接続します。

次のアニメーションは、モデルでブロックを接続する方法を示しています。

An animation shows how to connect the Pulse Generator block to the Gain block.

シミュレーションの実行

シミュレーションの終了時間を指定します。その後、モデルのシミュレーションを実行します。

  1. [シミュレーション] タブで、シミュレーションの終了時間を設定します。Simulink ツールストリップで、[シミュレーション] タブの [終了時間] テキスト フィールドに値を入力します。

    Simulation stop time is displayed on the Simulation tab of the toolstrip

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

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

シミュレーション データの確認

シミュレーション データ インスペクターでシミュレーション結果を確認するには、[データ インスペクター] をクリックします。

シミュレーション データ インスペクターでデータをプロットするには、左にあるテーブルから信号を選択します。たとえば、車の位置をプロットするには、Out1:1 という名前の信号を選択します。

The Simulation Data Inspector shows the position of the car in a time plot.

モデルの改良

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

この例では、既存の運動モデル moving_car に基づいて近接センサーをモデル化します。

このシナリオでは、デジタル センサーは車と 10 m (30 ft) 離れた場所にある障害物との間の距離を測定します。モデルは、以下の条件を考慮してセンサーの測定値および車の位置を出力します。

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

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

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

moving_car モデルを開きます。

open_system("moving_car.slx");

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

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

  2. [制限 x] を選択し、[上限 x]10 と入力します。パラメーターの背景色が変化し、モデルに適用されていない変更であることを示します。[OK] をクリックして、変更を適用してダイアログ ボックスを閉じます。

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

モデルを変更して、障害物からの距離を測定するセンサーを追加します。必要に応じて、新しいブロックが収まるようにモデル ウィンドウを展開します。

  • 車両と障害物の位置の間の距離を検出するには、[Sources] ライブラリから Constant ブロックを追加し、ブロックの値を 10 に設定します。障害物の位置と車両の位置の間の距離を検出するには、[Math Operations] ライブラリから Subtract ブロックを追加します。

  • 実際のセンサーの不正確な測定値をシミュレートするには、[Sources] ライブラリの Band-Limited White Noise ブロックを使用してモデルにノイズを追加します。ブロックをダブルクリックして、[ノイズ パワー] パラメーターを 0.001 に設定します。[Math Operations] ライブラリの Add ブロックを使用して、距離測定値にノイズを追加します。

  • Simulink では、指定した間隔で信号をサンプリングするには、サンプル アンド ホールドが必要です。[離散] ライブラリから Zero-Order Hold ブロックを追加します。次に、ブロックをダブルクリックして、[サンプル時間] パラメーターを 0.1 に変更します。

  • センサー出力のログを記録するには、Zero-Order Hold ブロックを別の Outport ブロックに接続します。

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

The original model connected to a sensor to measure the distance between the car and an obstacle.

信号の注釈付け

信号名をモデルに追加します。

  1. 信号をダブルクリックし、信号名を入力します。

    A highlighted signal is labeled pedal position

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

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

    Model with named signals. The signal between Pulse Generator block and the Gain block is named pedal position. The signal between the Gain block and the Integrator, Second-Order block is named acceleration. The signal between the Subtract block and the Add block is named actual distance. The signal between the Zero-Order Hold block and the Outport block is named measured distance. The signal between the first output port of the Integrator, Second-Order block and the first Outport block is named position. The signal between the second output port of the Integrator, Second-Order block and the second Outport block is named velocity.

複数の信号の表示

actual distance 信号と measured distance 信号を比較します。measured distance 信号のログは出力として記録されます。actual distance 信号のログを記録するには、信号ログ用にマークできます。

  1. モデルで信号を選択します。

  2. [シミュレーション] タブで、[信号のログ] をクリックします。

ログ バッジ は、その信号がログ記録用にマークされていることを示します。

モデルのシミュレーションを実行します。シミュレーション データ インスペクターでシミュレーション結果を確認するには、[データ インスペクター] をクリックします。actual distance 信号と measured distance 信号を選択して、両方の信号を同じ時間プロットにプロットします。

The Simulation Data Inspector shows the actual distance and the measured distance values.

測定値が実際の値から最大 0.3 m 逸脱する可能性があることがプロットで示されています。この情報は、衝突警報などの安全機能を設計するときに役立ちます。

別個のサブプロットでの信号の表示

別個のサブプロットに信号を表示して結果を解析することもできます。たとえば、pedal position 信号と velocity 信号のサブプロットを追加して、ペダルの位置、車の速度、車と障害物の間の距離について、それらの間の関係を確認できます。

モデルで pedal position 信号を右クリックし、[選択した信号のログ] を選択して pedal position 信号を信号ログ用にマークします。その後、モデルのシミュレーションを実行します。

シミュレーション データ インスペクターで、[可視化とレイアウト] をクリックします。次に、グリッドの行数と列数を指定して 31 列のレイアウトを作成します。

The Visualizations and layouts menu. In the Grid section, the number of rows is specified as 3 and the number of columns is specified as one.

真ん中のサブプロットに velocity 信号、下のサブプロットに pedal position 信号を追加します。サブプロットに信号を追加するには、サブプロットを選択し、信号テーブルから信号を選択します。

The Simulation Data Inspector with three vertically aligned subplots. The top subplot shows the actual and measured distance of the car from the obstacle. The middle subplot shows the velocity. The bottom subplot shows the gas pedal position.

3 つのサブプロットでデータを可視化することにより、車の速度と障害物からの距離にアクセル ペダルの踏み込みがどのように影響するかを確認できます。これについてさらに調べるために、Pulse Generator ブロックのパラメーターを調整してアクセル ペダルの動作を変更できます。Pulse Generator ブロックの [ブロック パラメーター] ダイアログ ボックスを開くには、ブロックをダブルクリックします。たとえば、[周期]5[パルス幅]20 に設定して、アクセル ペダルの 1 秒間の踏み込みを 2 回モデル化します。

モデルのシミュレーションを実行します。シミュレーション データ インスペクターで、Space キーを押して信号をビューに合わせます。

The Simulation Data Inspector with three vertically aligned subplots with data from a simulation that models pressing the gas pedal for one second twice. The top subplot shows the actual and measured distance of the car from the obstacle. The middle subplot shows the velocity. The bottom subplot shows the gas pedal position.

シミュレーション データ インスペクターで、プロットや信号の外観のカスタマイズ、ズームとパン、データ カーソルの追加を行ってデータをさらに検証できます。詳細については、シミュレーション データ インスペクターを使用したプロットの作成を参照してください。

参考

ブロック

ツール

トピック