Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

関数呼び出しを生成するテスト ハーネスの作成

ブロックの状態を初期化、再初期化、リセット、終了するモデル コンポーネントを作成した後 (初期化関数、再初期化関数、リセット関数および終了関数の使用を参照)、モデルをシミュレーション テスト ハーネスに配置できます。テスト ハーネスは、モデル コンポーネントの開発、テスト、およびデバッグに使用する Simulink® モデルです。

テスト ハーネスを作成するには、新しいモデル内にモデル コンポーネントが含まれるエクスポート関数モデルを参照してから、Stateflow® チャートを追加して関数呼び出しイベント スケジューラをモデル化します。

エクスポート関数モデルの参照

エクスポート関数モデルにはテスト用のモデル コンポーネントが含まれます。エクスポート関数モデルを作成するには、エクスポート関数モデルの作成を参照してください。

  1. Simulink モデルを作成します。このモデルを Test_Model という名前で保存します。

  2. ソルバーのコンフィギュレーション パラメーター [タイプ][固定ステップ] に、ソルバーを [自動] に、[固定ステップ サイズ]1 に設定します。

  3. Model ブロックを追加します。[ブロック パラメーター] ダイアログ ボックスを開きます。[モデル名] テキスト ボックスで、エクスポート関数モデルの名前を入力します。この例では、「Model02」と入力します。

  4. Function-Call Generator ブロックを Run 端子に接続することで、参照されるモデル コンポーネントをテストします。Constant ブロックを Signal In 端子に、Scope ブロックを Signal Out 端子に接続します。

  5. シミュレーションを実行し、モデルが親モデルから適切にシミュレートされることを確認します。関数呼び出しイベント端子を使用せずにモデルをシミュレートする場合、Initialize Function ブロックはシミュレーションの最初に実行され、Terminate Function ブロックはシミュレーションの最後に実行されます。

  6. 関数呼び出し入力端子を Model ブロックに提示します。Model ブロックを右クリックし、[ブロック パラメーター] を選択します。[ブロック パラメーター] ダイアログ ボックスで、[モデル初期化端子を表示][モデル リセット端子を表示]、および [モデル終了端子を表示] を選択します。

  7. Function-Call Generator ブロックを削除し、Ctrl+D を押してモデルを更新します。

    初期化関数呼び出し入力端子を Model ブロックで有効にする場合、モデルを実行する前に、初期化関数呼び出しを initialize 端子で受信しなければなりません。関数呼び出しの受信によって、既定のモデル初期化ルーチンの実行に続いて Initialize Function ブロックの内容の実行がトリガーされます。

    Reset 端子での関数呼び出しの受信によって、Reset Function ブロックの内容の実行がトリガーされます。

    Terminate 端子での関数呼び出しの受信によって、Terminate Function ブロックの内容の実行に続いて、既定のモデル終了ルーチンの実行がトリガーされます。その後、モデルは実行を停止します。モデルを再度実行するには、関数呼び出しイベントを initialize 端子に送信することでモデルを再初期化しなければなりません。

イベント スケジューラのモデル化

Stateflow チャートを使用してイベント スケジュールをモデル化し、初期化関数呼び出し信号と終了関数呼び出し信号を生成します。

  1. Stateflow チャートを追加します。モデル ブロック線図をクリックし、Chart と入力します。検索リストで を選択します。

  2. チャートを開き、2 つの状態ブロックを上下に追加します。

  3. デフォルト遷移を追加し、最上部の状態ブロックに接続します。ラベルを編集します。

    {step = 0}
  4. 最上部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 2]/{Initialize}

  5. 最下部のブロックから最下部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 5]/{Reset}

  6. 最下部のブロックから最上部のブロックへの遷移を追加します。ラベルを編集します。

    [step == 9]/{Terminate}

  7. 最上部のブロックのコンテンツを編集します。

    Inactive
    entry: step = step + 1;
    during: step = step + 1;

  8. 最下部のブロックのコンテンツを編集します。

    Running
    entry: step = step + 1; Run;
    during: step = step + 1; Run;

テスト モデルへのチャートの接続

チャートで関数呼び出し出力端子を作成し、モデル コンポーネントを制御および実行します。

  1. モデル エクスプローラーを開きます。[モデル化] タブ、および [設計] セクションから [モデル ワークスペース] を選択します。

  2. インデックス変数を作成します。メニューから、[追加][データ] を選択します。[データ] ダイアログ ボックスで、[名前]Step を入力します。

  3. 関数呼び出し出力端子を作成します。作成する関数呼び出しイベントごとに [追加][イベント] を選択し、[イベント] ダイアログ ボックスで次の値を入力および選択します。

    [イベント] テキスト ボックスへの入力スコープの設定トリガーの設定
    InitializeSimulink に出力関数呼び出し
    ResetSimulink に出力関数呼び出し
    TerminateSimulink に出力関数呼び出し
    RunSimulink に出力関数呼び出し

  4. モデルの最上位レベルに移動します。チャート上の Initialize 端子、Reset 端子、Terminate 端子、Run 端子を Model ブロック上の initialize 入力端子、reset 入力端子、terminate 入力端子、Run 入力端子に接続します。

  5. シミュレーションを実行します。

    ブロックの状態が 4 に初期化されている場合、モデルは 2 番目のタイム ステップまで実行できません。5 番目のタイム ステップで、リセット端子へのリセット関数呼び出しが Reset Function ブロックの実行をトリガーします。9 番目のタイム ステップで、サブシステムは実行を停止し、ブロックの状態は一定に維持されます。

    関数呼び出しを初期化する前に、実行する関数呼び出しをモデルが受信すると、シミュレーション エラーが発生します。

参考

| | | | | | |

関連するトピック

外部の Web サイト