Main Content

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

model_reset

Simulink モデルのリセット コードが含まれる、生成された C/C++ エントリポイント関数

説明

void model_reset(void) は、Simulink® モデルのリセット コードを実行する、生成された C/C++ エントリポイント関数です。モデルに Reset Function ブロックが含まれている場合、リセット コードが生成されます。条件または状態をリセットするには、アプリケーション コードから関数を呼び出します。

モデルのリセット エントリポイント関数の生成された呼び出しインターフェイスは、[言語] パラメーターと [コード インターフェイスのパッケージ化] パラメーターによって異なります。詳細については、コード インターフェイスのパッケージ化を参照してください。

生成されたリセット エントリポイント関数の名前をプレビューおよびカスタマイズするには、Embedded Coder® のライセンスが必要です。リセット エントリポイント関数をプレビューするには、コード マッピング エディターを開いて [関数] タブをクリックします。関数名をカスタマイズするには、[関数名] 列でスプレッドシートをクリックして直接編集します。関数名と引数をカスタマイズするには、[関数プレビュー] 列で関数のハイパーリンクをクリックし、表示されれたダイアログ ボックスでリセット関数を設定します。テンプレートを使用して関数をカスタマイズするには (C++ ではサポートされない)、[関数カスタマイズ テンプレート] 列で、関数に適用するテンプレートを選択します。詳細については、個々のステップ関数に対する名前と引数の設定Interactively Configure C++ InterfaceおよびConfigure Default Code Generation for Functionsを参照してください。

生成されたリセット エントリポイント関数を確認するには、[コード] ビューまたはコード生成レポートを開いて、モデルのソース コードを表示します。詳細については、Analyze Generated Data Code Interface Reportを参照してください。

すべて折りたたむ

この例では、Embedded Coder を使用した再利用できない C リセット エントリポイント関数の生成方法を示します。

カウンター モデルとリセット関数の確認

カウンター モデルを開き、サブシステム Counter Subsystem を確認します。カウンターは Discrete-Time Integrator ブロックで駆動されます。

counterModel = "CounterECoderModel";
open_system(counterModel);

モデルのシミュレーションを実行し、サブシステムによって出力がインクリメントされる様子を観察します。この例では、シミュレーションは、ペースのあるモードで実行され、カウントの速度を低下させるように設定されています。

sim(counterModel);

モデルから C コードを生成します。

evalc("slbuild(counterModel,GenerateCodeOnly=true);");

生成された .c ファイルを開き、生成されたリセット関数 CounterECoderModel_reset を検査します。

generatedCFile = fullfile(counterModel + "_ert_rtw",counterModel + ".c")
generatedCFile = 
"CounterECoderModel_ert_rtw/CounterECoderModel.c"

リセット関数は、Discrete-Time Integrator ブロックの値を 0 に設定します。

coder.example.extractLines(generatedCFile,"CounterE_CounterSubsystem_reset(void)",...
      "/* End of Outputs for SubSystem: '<S1>/Reset Function' */",true,true);
void CounterE_CounterSubsystem_reset(void)
{
  /* Outputs for Atomic SubSystem: '<S1>/Reset Function' */
  /* StateWriter: '<S2>/State Writer' incorporates:
   *  Constant: '<S2>/Constant'
   */
  CounterECoderModel_DW.DiscreteTimeIntegrator_DSTATE = 0.0;

カウンター モデルとリセット関数をテストするためのテスター モデルの使用

例のこの部分では、テスター モデルが、カウンター モデルの修正されたバージョンを参照し、それを送信するラッパーとして動作します。テスター モデルは、シミュレーション中にカウンター モデルの関数を呼び出すことができます。

テスター モデルを開きます。テスター モデルは、カウンター モデルのカウンター アクティベーション トリガーを送信します。カウンター モデルはシミュレーション全体でテスター モデルと一緒に実行されます。テスター モデルの [Reset Counter] ボタンは、カウンター モデルの関数 reset を送信します。このボタンをクリックするとカウンターがリセットされます。

testerModel = "CounterTesterModel";
open_system(testerModel);

テスター モデルのシミュレーションを実行し、カウンター モデルから取得するカウントを観察します。

sim(testerModel);

[Reset Counter] ボタンをクリックして、リセット エントリ ポイント関数を呼び出します。カウンターはリセットされます。[Reset Counter] ボタンは複数回クリックできます。

入力引数

すべて折りたたむ

リセット エントリポイント C/C++ 関数は、モデルのリセット コードへのインターフェイスを提供します。既定では、生成された関数は、引数をもたない void-void インターフェイスを提供します。

出力引数

すべて折りたたむ

リセット エントリポイント C/C++ 関数は、モデルのリセット コードへのインターフェイスを提供します。既定では、生成された関数は、戻り値をもたない void-void インターフェイスを提供します。

バージョン履歴

R2006a より前に導入