Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

簡単なモデルの作成

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 has two tabs, New and Examples, from which you can open a new template or an example.

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

    The Pulse Generator block with a value of 1 entered in the text box prompt to specify the Amplitude parameter.

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

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

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

    ゲイン: 2

    Second-Order IntegratorSimulink/Continuous

    初期条件: 0

    OutportSimulink/Sinks

    端子番号: 1

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

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

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

    Arranged blocks from left to right.

ブロックの接続

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

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

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

    Five unconnected blocks include, from left to right, a Pulse Generator block, a Gain block, a Second Order Integrator block, and two Outport blocks. The output port of the Pulse Generator block and the input ports of the other blocks display blue chevron port hint symbols.

  2. port hint symbol にカーソルを合わせて接続キューを確認します。

    A connection cue is displayed between the Pulse Generator block and the Gain block.

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

    An arrow represents the connection between the Pulse Generator block and the Gain block.

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

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

  5. モデルを保存します。[シミュレーション] タブで [保存] をクリックします。

    All the blocks are connected.

信号ビューアーの追加

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

信号をクリックします。[シミュレーション] タブの [準備] で、[ビューアーの追加] をクリックします。[スコープ] を選択します。ビューアー アイコンが信号に表示され、スコープ ウィンドウが開きます。

A viewer icon appears on the signal between the Second-Order Integrator block and Outport block for output 1.

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

シミュレーションの実行

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

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

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

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

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

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

A scope viewer shows the output of the simulation.

モデルの改良

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

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

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

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

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

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

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

open_system('moving_car.slx');

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

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

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

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

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

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

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

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

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

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

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

    With the signal between the Second-Order Integrator block and the Outport block selected, the software suggests connecting the signal line to the minus input port of the Subtract block.

信号の注釈付け

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

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

    Highlighted signal is called pedal position

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

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

    Model with named signals. The signal between Pulse Generator block and the gain block is called pedal position. The signal between the Gain block and the Integrator, Second-Order block is called acceleration. The signal between two Subtract blocks is called actual distance. The signal between the Zero-Order Hold block and the Outport block is called measured distance.

複数の信号の比較

actual distance 信号と measured distance 信号を比較します。

  1. Scope Viewer を作成して actual distance 信号に接続します。信号を右クリックして [ビューアーの作成と接続]、[Simulink]、[Scope] を選択します。信号の名前がビューアーのタイトルに表示されます。

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

    Window after right clicking a signal. Scope 1 is selected.

  3. モデルをシミュレートします。スコープ ビューアーには 2 つの信号が、actual distance は黄色で measured distance は青色で表示されます。

    The scope viewer shows the actual distance and the measured distance values.

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

    A rectangular box in the scope viewer window shows the region selected to zoom.

    この操作を必要なだけ繰り返すことで、詳細を確認できます。

    The zoomed region in the scope viewer

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

参考

ブロック

関連するトピック