簡単なモデルの作成
Simulink® を使用して、システムをモデル化し、そのシステムの動的な振る舞いをシミュレーションすることができます。このチュートリアルで簡単なモデルの作成に用いる基礎的な手法は、複雑なモデルで使用されるものと同じです。この例では、簡略化された車の動きをシミュレーションします。通常、車はアクセル ペダルを踏んでいる間は動いています。ペダルを放すと、車はアイドリング状態になり、停止します。
Simulink ブロックは、入力と出力間の数学的関係を定義するモデル要素です。この簡単なモデルを作成するには、次の 4 つの Simulink ブロックが必要です。
| ブロック名 | ブロックの目的 | モデルの目的 |
|---|---|---|
| Pulse Generator | モデルの入力信号を生成する | アクセル ペダルを表す |
| Gain | 入力信号を定数値で乗算する | アクセルを踏むことによる車の加速への影響を計算する |
| Second-Order Integrator | 入力信号を 2 回積分 | 加速度から位置を取得する |
| Outport | 信号をモデルからの出力として指定する | 位置をモデルからの出力として指定する |

このモデルのシミュレーションでは、短いパルスを 2 回積分してランプを取得します。入力パルスは、アクセル ペダルの踏み込みを表します。ペダルが踏まれているときは 1、踏まれていないときは 0 です。出力ランプは、増大する始点からの距離を表します。
新しいモデルを開く
Simulink エディターを使用して、モデルを作成します。
MATLAB® を起動します。MATLAB ツールストリップから、[Simulink] ボタン
をクリックします。
[空のモデル] テンプレートをクリックします。
Simulink エディターが開きます。
優先順位の低下が生じないように、Simulink エディターは読み込まれているモデルおよびパス上のファイルをチェックし、次に使用可能な名前 (
untitled、untitled1、untitled2など) を使用してモデルを作成します。
[シミュレーション] タブから、[保存]、[名前を付けて保存] を選択します。[ファイル名] テキスト ボックスで、モデルの名前を入力します (
simple_modelなど)。[保存] をクリックします。モデルがファイル拡張子.slxを付けられて保存されます。
Simulink ライブラリ ブラウザーを開く
Simulink は、ライブラリ ブラウザーで機能別に整理された一連のブロック ライブラリを提供します。以下のライブラリはほとんどのワークフローに共通です。
Continuous — 連続状態をもつシステム用のブロック
Discrete — 離散状態をもつシステム用のブロック
Math Operations — 代数方程式および論理方程式を実装するブロック
Sinks — ブロックに接続する信号を格納および表示するブロック
Sources — モデルを駆動する信号値を生成するブロック
ライブラリ ブラウザーを開くには、Simulink ツールストリップの [シミュレーション] タブで [ライブラリ ブラウザー] をクリックします。

ブロック ライブラリから参照するには、ライブラリ ツリーでカテゴリ、機能領域の順に展開します。
使用可能なすべてのブロック ライブラリを検索するには、検索語を入力します。
たとえば、Pulse Generator ブロックを検索します。検索ボックスに「pulse」と入力してから、Enter キーを押します。名前または説明に pulse が含まれるブロックがライブラリで検索され、該当するブロックがライブラリ ブラウザーの [検索結果] タブに表示されます。
ヒント
[ライブラリ] タブをクリックすると、ライブラリ ツリーの参照に戻ることができます。

ブロックについての詳細情報を参照します。[検索結果] タブで、Pulse Generator ブロックを右クリックし、[Pulse Generator ブロックのヘルプ] を選択します。ドキュメンテーションが開き、ブロックのリファレンス ページが表示されます。
通常、ブロックには複数のパラメーターがあります。ほとんどのブロックでは、ブロックをダブルクリックすることでブロック パラメーターにアクセスできます。
モデルへのブロックの追加
モデルの作成を開始するには、ブロックをモデル キャンバスに追加します。ライブラリ ブラウザーまたはクイック挿入メニューを使用してブロックを追加できます。
まず、ライブラリ ブラウザーから Pulse Generator ブロックを追加します。
Sources ライブラリから、Pulse Generator ブロックを Simulink エディターにドラッグします。[振幅] パラメーターが既定値の
1である Pulse Generator ブロックがモデルに追加されます。
パラメーター値はシミュレーション全体を通じて維持されます。
クイック挿入メニューを使用して 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.ヒント
詳細ペインを非表示にするには、矢印
をクリックします。詳細ペインを表示するには、もう一度矢印をクリックします。 
Enter キーを押して Outport ブロックをモデルに追加します。
クイック挿入メニューの詳細については、クイック挿入メニューを使用したモデルへのブロックの追加を参照してください。
ライブラリ ブラウザーまたはクイック挿入メニューを使用して、以下のブロックをモデルに追加します。
ブロック ライブラリ パラメーター Gain Simulink/Math Operations ゲイン:
2Second-Order Integrator Simulink/Continuous 初期条件:
02 つ目の Outport ブロックを追加するため、既存のブロックをコピーし、キーボード ショートカットを使用して別のポイントにペーストします。
これで、モデルに必要なブロックが揃いました。
各ブロックをクリックしてドラッグすることで、ブロックを配置します。ブロックのサイズを変更するには、ブロックの角をドラッグします。

ブロックの接続
出力端子と入力端子との間にラインを作成することでブロックを接続します。その後、モデルを保存します。
Pulse Generator ブロックの出力端子を Gain ブロックの入力端子に接続します。
Gain ブロックの出力端子を Second-Order Integrator ブロックの入力端子に接続します。
Second-Order Integrator ブロックの 2 つの出力を 2 つの Outport ブロックに接続します。
たとえば、Pulse Generator ブロックを Gain ブロックに接続するには次のようにします。
Pulse Generator ブロックの右側の出力端子をクリックします。
その出力端子と接続に適したすべての入力端子が青色のシェブロン記号
で示されます。 接続キューを確認するには、シェブロン記号
をポイントします。キューをクリックし、ラインおよび信号の流れる方向を示す矢印を使用してブロックを接続します。
次のアニメーションは、モデルでブロックを接続する方法を示しています。

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

既定の終了時間である
10.0はこのモデルに適しています。この時間値には単位がありません。Simulink シミュレーションの時間単位は、方程式の構成方法によって異なります。この例では、簡略化された車の動きを 10 秒間シミュレートしますが、他のモデルでは時間の単位がミリ秒や年になる可能性もあります。モデルのシミュレーションを実行するには、[実行]
をクリックします。
シミュレーション データの確認
シミュレーション データ インスペクターでシミュレーション結果を確認するには、[データ インスペクター]
をクリックします。
シミュレーション データ インスペクターでデータをプロットするには、左にあるテーブルから信号を選択します。たとえば、車の位置をプロットするには、Out1:1 という名前の信号を選択します。

モデルの改良
ブロック パラメーターの変更
この例では、既存の運動モデル moving_car に基づいて近接センサーをモデル化します。
このシナリオでは、デジタル センサーは車と 10 m (30 ft) 離れた場所にある障害物との間の距離を測定します。モデルは、以下の条件を考慮してセンサーの測定値および車の位置を出力します。
車は障害物に到達すると急停止します。
物理的な世界では、センサーによる距離測定が不正確であるため、偶発的な数値誤差が生じます。
デジタル センサーは一定の時間間隔で作動します。
moving_car モデルを開きます。
open_system("moving_car.slx");最初に、車の位置が 10 に到達したときに急停止するようにモデル化する必要があります。Integrator, Second-Order ブロックにはこの目的のためのパラメーターがあります。
Integrator, Second-Order ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスが表示されます。
[制限 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 ブロックの出力が既に別の端子に接続されています。信号内で分岐を作成するには、信号を左クリックして接続に使用する可能性のある端子を強調表示し、適切な端子をクリックします。

信号の注釈付け
信号名をモデルに追加します。
信号をダブルクリックし、信号名を入力します。

テキスト ボックス以外の場所をクリックして終了します。
これらの手順を繰り返して、次のように名前を追加します。

複数の信号の表示
actual distance 信号と measured distance 信号を比較します。measured distance 信号のログは出力として記録されます。actual distance 信号のログを記録するには、信号ログ用にマークできます。
モデルで信号を選択します。
[シミュレーション] タブで、[信号のログ]
をクリックします。
ログ バッジ
は、その信号がログ記録用にマークされていることを示します。
モデルのシミュレーションを実行します。シミュレーション データ インスペクターでシミュレーション結果を確認するには、[データ インスペクター]
をクリックします。actual distance 信号と measured distance 信号を選択して、両方の信号を同じ時間プロットにプロットします。

測定値が実際の値から最大 0.3 m 逸脱する可能性があることがプロットで示されています。この情報は、衝突警報などの安全機能を設計するときに役立ちます。
別個のサブプロットでの信号の表示
別個のサブプロットに信号を表示して結果を解析することもできます。たとえば、pedal position 信号と velocity 信号のサブプロットを追加して、ペダルの位置、車の速度、車と障害物の間の距離について、それらの間の関係を確認できます。
モデルで pedal position 信号を右クリックし、[選択した信号のログ] を選択して pedal position 信号を信号ログ用にマークします。その後、モデルのシミュレーションを実行します。
シミュレーション データ インスペクターで、[可視化とレイアウト]
をクリックします。次に、グリッドの行数と列数を指定して 3 行 1 列のレイアウトを作成します。

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

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

シミュレーション データ インスペクターで、プロットや信号の外観のカスタマイズ、ズームとパン、データ カーソルの追加を行ってデータをさらに検証できます。詳細については、シミュレーション データ インスペクターを使用したプロットの作成を参照してください。
参考
ブロック
- Pulse Generator | Gain | Second-Order Integrator | Sum | Constant | Zero-Order Hold | Band-Limited White Noise