Main Content

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

モデル用 C コードの生成

Simulink® モデル、Stateflow® チャート、および MATLAB® 関数から C または C++ コードを生成するには、Simulink Coder™ 製品を使用します。シミュレーションの高速化、ラピッド プロトタイピング、ハードウェアインザループ (HIL) シミュレーションなどのアプリケーションで生成コードを使用します。

SimulinkCoder を初めて使用する場合、またはアプリケーション コードのカスタマイズ要件が最小の場合は、グラフィカル ツールと既定のモデル コンフィギュレーション設定を使用して、コードをすばやく生成できます。

コードの生成と確認は、クイック スタート ツールを使用してコード生成用にモデルを準備するのと同じように簡単に実行できます。次に、Simulink エディターからアクセスできるコード ツールを使用して、データ インターフェイスを構成し、コード生成を開始して、生成したコードを検証できます。

このチュートリアルでは、モデル例として rtwdemo_secondOrderSystem を使用します。

コマンド ウィンドウにモデル名を入力してモデルを開きます。

rtwdemo_secondOrderSystem

モデルは、理想的なマス-バネ-ダンパー システムと呼ばれる 2 次物理システムを実装しています。Gain ブロックは、システム方程式の成分 (MassStiffness、および Damping) を表します。システムの方程式は mX" + cX' + kX = f(t) です。

  • m = システムの質量 (1.0E-6 kg)

  • c = 減衰比 (4.0e-4 Ns/m)

  • k = バネの剛性 (1.0 N/m)

  • f(t) = x 方向の強制関数 (N)

Signal Generator ブロックは、振幅が 4 で周波数が 20 Hz の矩形波を挿入します。このブロックでは、波形の時間変数の値のソースとしてシミュレーション時間を使用します。モデルは、コード生成に必要な固定ステップ ソルバーで構成されているため、Simulink ではシミュレーション全体に同じステップ サイズが使用されます。統一されたステップ サイズによって、理想的な波形に対する等間隔のサンプル表現になります。

このモデル例は、MATLAB Function ブロックを使用して、既存の MATLAB 関数コードを、組み込み可能な C コードを生成できる Simulink モデルに統合する方法を示しています。モデル例の MATLAB 関数ブロックは、コンポーネント変数の和を計算する MATLAB 関数を統合します。

Integrator ブロックは、時間に関する MATLAB 関数ブロック出力の積分を計算します。ソルバーは、現在の入力値と前のタイム ステップでの状態の値を使用して、現在のタイム ステップでの Integrator ブロックの出力を計算します。Integrator ブロックはこの計算モデルをサポートするために、次のタイム ステップでのそのブロックの出力を計算するときにソルバーが使用できるように現在のタイム ステップでの当該ブロックの出力を保存します。このブロックはまた、シミュレーションの実行開始時のそのブロックの初期状態を計算するときに使用する初期条件をソルバーに提供します。このモデル例の既定の初期条件と設定は 0 です。

Dashboard ブロック Knob および Dashboard Scope は、減衰の調整と波形の監視を行うビジュアル ツールを提供します。Knob ブロックは、Damping Gain ブロックに接続されています。Dashboard Scope ブロックは、信号 Force: f(t):1 および X に接続します。

このモデルを使用して、次の方法を学習します。

  1. SimulinkCoder クイック スタート ツールを使用してコードを生成します。

  2. 生成した実行可能プログラムの結果が、シミュレーション結果と一致するかどうかを検証します。

  3. プログラム実行中にパラメーターを調整します。

  4. プロトタイプ コードとアーティファクトを配布します。

チュートリアルを開始するには、Simulink Coder クイック スタート ツールを使用した C コードの生成を参照してください。