7
Simulink Coder 8.0 Simulink モデルと Stateflow モデルからの C コードと C++ コードの生成 概要 Simulink Coder™ (以前の Real-Time Workshop ® ) は、Simulink ® ダイアグラム、Stateflow ® チャート、および MATLAB ® 関数から C コードと C++ コードを生成して実行します。生成されたコードは、シミュレー ションの高速化や、ラピッド プロトタイピング、HILhardware-in-the-loop)テストなど、リアルタイ ムと非リアルタイムのアプリケーションに利用できます。Simulink では、生成コードのチューニング とモニター、ならびに MATLAB® Simulink の環境外からコードの実行と操作を行うことができま す。 主な機能 離散、連続、またはハイブリッドの Simulink モデルと Stateflow モデルのための、ANSI/ISO C C++ のコードと実行ファイルを生成。 大規模なモデルのためのインクリメンタル コード生成。 整数、浮動小数点、固定小数点のデータ タイプをサポート シングルレート、マルチレート、非同期のモデルのコード生成 RTOS の有無に関わらない、シングルタスク、マルチタスク、マルチコアのコード実行 パラメーター チューニングと信号モニターのための、エクスターナル モードによるシミュレーシ ョン 1

Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

Embed Size (px)

Citation preview

Page 1: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

Simulink Coder 8.0Simulink モデルと Stateflow モデルからの C コードと C++ コードの生成

概要

Simulink Coder™ (以前の Real-Time Workshop®) は、Simulink® ダイアグラム、Stateflow® チャート、およびMATLAB® 関数から C コードと C++ コードを生成して実行します。生成されたコードは、シミュレーションの高速化や、ラピッド プロトタイピング、HIL(hardware-in-the-loop)テストなど、リアルタイムと非リアルタイムのアプリケーションに利用できます。Simulink では、生成コードのチューニングとモニター、ならびに MATLAB® や Simulink の環境外からコードの実行と操作を行うことができま

す。

主な機能▪ 離散、連続、またはハイブリッドの Simulink モデルと Stateflow モデルのための、ANSI/ISO C と

C++ のコードと実行ファイルを生成。

▪ 大規模なモデルのためのインクリメンタル コード生成。

▪ 整数、浮動小数点、固定小数点のデータ タイプをサポート

▪ シングルレート、マルチレート、非同期のモデルのコード生成

▪ RTOS の有無に関わらない、シングルタスク、マルチタスク、マルチコアのコード実行

▪ パラメーター チューニングと信号モニターのための、エクスターナル モードによるシミュレーシ

ョン

1

Page 2: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

ターゲットの選択と操作

Simulink モデル エクスプローラーでは、コード生成のためのすべての設定を行うために、Simulink 内でシングル ユーザー インターフェイスが提供されます。モデル エクスプローラーでは、次の操作を実

行できます。

▪ コード生成ターゲットの選択

▪ コード生成のターゲットの設定

▪ モデルやサブシステムのコード生成

コード生成アドバイザーでは、モデルとコード生成設定がチェックされ、ユーザーのニーズに基づい

て設定を向上するようにアドバイスが表示されます。プロジェクトに最適な設定が見つかったら、他

のモデルで再利用できるように、設定セットとして保存します。

Simulink でモデリングした大規模な航空機システム。Simulink Coder では大規模なモデリングのために、Model ブロック、バリアント サブシステム、バスの配列などの、高度な Simulink 機能がサポートされています。

ターゲットの選択

Simulink Coder では、システム ターゲット ファイルを使用して、モデルがソース コードと実行ファイルに変換されます。ターゲット ファイルでは、生成したコードを実行する環境を指定します。Simulink Coder には、即座に実行可能な構成のターゲット ファイルが付属しており、サードパーティ

やカスタムのターゲットもサポートされています。組込みのターゲットには次のものがあります。

汎用のリアルタイム汎用のリアルタイム ターゲットターゲット— インタラクティブにモデル パラメーターをチューニングするためのコード生成、リアルタイム シミュレーションの結果を記録および表示、リアルタイム実行の効率化

のために静的にデータをアロケート

2

Page 3: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

汎用のリアルタイム汎用のリアルタイム Malloc ターゲットターゲット— 生成されたコード内で動的にメモリ アロケーションを使用し、1 つの実行ファイルの中に、ユーザーのモデルの複数のインスタンス、または、複数のモデルを持

たせることが可能

ラピッドラピッド シミュレーションシミュレーション ターゲットターゲット (RSim) — 固定ステップ ソルバーまたは可変ステップ ソルバーを使用したバッチあるいはモンテカルロ シミュレーションを実行するための、高速でフレキシブルなテスト プラットフォームを提供することにより、データを固有の出力ファイルに保存することが容易

に。

これらのターゲットを拡張して、カスタマイズした実行時インターフェイスとデバイス ドライバー ファイルを作成すれば、特定の環境をターゲットとして、Simulink Coder の実行機能やデバッグ機能にア

クセスできます。

生成コードのコンパイルと実行

Simulink Coder では、以下にような一般的な開発環境のために、生成コードのコンパイルと実行のサポ

ートが組み込まれています。

▪ Eclipse™ IDE

▪ Microsoft® Visual C++® IDE

▪ Linux® オペレーティング システム

▪ Windows® オペレーティング システム

Embedded Coder では、最適化された C コードや C++ コードを生成して、リアルタイム組込みシステム

に実装できます。

データの定義と制御

Simulink Coder では、生成したコードにおけるモデル データの実装方法を定義および制御できます。

また以下の方法によりユーザーのデータを管理することができます。

▪ 整数、浮動小数点、固定小数点としてデータ タイプを宣言

▪ パラメーターや定数のチューニング、キャリブレーションのためのメモリ ストレージを指定

▪ 信号データをモニターし、ロギングするためのメモリストレージを指定

▪ ローカルでスコープしたデータを最小にするためのメモリ ストレージの再利用

Simulink Coder は、Simulink モデル エクスプローラーからアクセスできる Simulink ダイアグラムまたはデータ ディクショナリに保存されているデータからコードを生成します。異なるデータ ディクショナリ セットを組み込むことで、単一のモデルから複数のターゲットへの実装コードの適用が可能です。

3

Page 4: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

モデルで使用されているさまざまなデータ タイプやストレージ クラスを示す Simulink モデル エクスプローラー。

コードの生成

Simulink Coder では、Simulink と Stateflow の機能とコンポーネントのために、以下のような総合的なコ

ード生成サポートが提供されています。

▪ コードをインクリメンタルに生成するためのモデル ブロック

▪ C 言語のリエントラント関数を通じたコードの再利用のための Atomic サブシステムと Atomic サブ

チャート

▪ コードで構造を生成するためのバス オブジェクトとバスの配列

▪ レガシー コードのシミュレーションとインターフェイスのための S-function

▪ MATLAB コンポーネントをもつモデルからコードを生成するための、Simulink および Stateflow

のMATLAB 関数ブロック

Simulink Coder では、固定小数点モデリング、物理モデリング、信号処理と通信のモデリング、ラピッド プロトタイピングとハードウェアインザループ (HIL) テストのための各製品といった、Simulink プロダクト ファミリもサポートされています。

コード生成のオプション

Simulink Coder には、デスクトップ環境やシミュレーション環境で生成されたコードを簡単に実行でき

るように、ユーザーが選択可能なオプションが用意されています。これらのオプションには以下が含

まれます。

▪ コードの再利用

▪ 式の畳み込み (Folding) 表現

▪ 信号ストレージの再利用

▪ デッド パスの除去

▪ パラメーターのインライン処理

4

Page 5: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

▪ ビルド済みの単精度 math ライブラリ (ISO C や GNU C など)

10 個の要素をもつ配列信号を含むモデルに対して、For-ループの統合と畳み込み表現を使用して生成されたコード。Simulink Coder は、単次元信号や多次元信号のための、効率的で可読性の高いコードを生成します。

リアルタイム環境でのコード実行

Simulink Coder では、生成したコードをリアルタイムで実行し、このコードをユーザーの実行環境に組

み込むための、完全なフレームワークが提供されています。これにより、モデルで指定されているサ

ンプル時間の周期に基づいたシングルレートまたはマルチレートコードが生成されます。

実行モード

コードは RTOS の有無にかかわらず、シングルタスク モード、マルチタスク モード、非同期モードに

対応します。

シングルタスク モードシングルタスク モード

シングルタスク モードではレート間の優先度を妨げないように、簡単なスケジューラーが生成コードをシングルス レッドで実行するように呼び出します。

マルチタスク モードマルチタスク モード

マルチタスク モードでは、確定的なレート モノトニック スケジューラーが生成されたコードを呼び出

し、レート間の優先度を有効にします。ベアボード環境では、入れ子になった割り込みでコードをプリエンプトします。RTOS 環境では、タスク プライオリティとタスク プリエンプションを使用しま

す。

非同期モード非同期モード

非同期モードでは、Simulink の S-function を使用して、非周期的レートまたは非同期レートが指定されます。Simulink Coder によって、これらのレートがユーザーの実行環境で必要なコードに変換されます。ユーザーは、ハードウェアの割り込みや、独立したタスクのトリガ サブシステムのようなイベントごとに、コードをモデリングし生成します。付属の非同期ブロック ライブラリをテンプレートとし

て使用し、他の環境に適したライブラリを作成できます。

5

Page 6: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

リアルタイム ディプロイメントリアルタイム ディプロイメント

Simulink と Simulink Coder では、リアルタイム ディプロイメントのために、ターゲットに依存しない

完全な機能セットが提供されています。これには以下が含まれます。

▪ ユーザー モデル内の各レートに指定可能な、タスクの優先度

▪ 絶対時間および経過時間を計算するための量産品質のカウンターとタイマー

▪ 。データの完全性、決定論、およびパフォーマンスのトレードオフを考慮してレート間のデータ転送メカニズム(セマフォ、ミューテックス、ダブルバッファリングなど)を指定するための RateTransition ブロック

▪ 各レートのオーバーランを検出するための統合されたエラーハンドリング ロジック

レガシー コードの統合レガシー コードの統合

C、Fortran、Ada、 C++ のカスタムのレガシー コードをシミュレーションやコード生成に組み込むことで、生成されるコードと実行時環境をカスタマイズできます。Simulink Coder のカスタマイズ ツールには、Target Language Compiler (TLC)、カスタム コード ブロック、テンプレート makefile、ビルド プロセスの API、および S-Function Builder があります。Legacy Code Tool を使用すれば、既存の C や C++の関数を Simulink モデルにすばやく統合でき、組込みシステムで通常使用される離散時間コードの統

合に特に便利です。

パラメーターのチューニングとデータのロギング

Simulink Coder では、生成された実行ファイルを操作および解析できるため、アルゴリズムのパフォー

マンスを最適化し、コードの実行動作を向上させることができます。

Simulink Coder では、次のデータ インターフェイスを使用して、ブロック信号やパラメーターをモニ

ターおよびチューニングできます。

ターゲットベースのターゲットベースの C API — ユーザーが作成したコードで MATLAB や Simulink の環境外からブロッ

クの出力やパラメーターにアクセスすることが可能となります。

ホストベースのホストベースの ASAP2 データデータ エクスチェンジエクスチェンジ ファイルファイル— MATLAB と Simulink の環境外から、データ計測、キャリブレーション、診断システムのための ASAP2 標準データ記述を利用することが可能で

す。

Simulink エクスターナルエクスターナル モードモード— 新しいパラメーターの値をダウンロード、信号値をアップロードすることにより、Simulink で信号を表示したり、MATLAB ワークスペースで記録することができます。(ソース ブロックのダイアログ ボックスを開くと Simulink は一旦停止します。その間にパラメーターを変更することが可能です。変更を反映して Simulink を引き続き使用するには、ダイアログ ボックスを閉じる必要があります。)

6

Page 7: Simulink Coder 8 - MathWorks · PDF fileSimulink Coder 8.0 Simulink モデル ... ルには、Target Language Compiler ... ターゲットベースの C API — ユーザーが作成したコードでMATLAB

製品詳細、デモ、動作環境www.mathworks.co.jp/products/simulink-coder

評価版ソフトウェアwww.mathworks.co.jp/trialrequest

営業窓口www.mathworks.co.jp/contactsales

テクニカル サポートwww.mathworks.co.jp/support

リソース

オンライン ユーザー コミュニティwww.mathworks.co.jp/matlabcentral

技術トレーニング サービスwww.mathworks.co.jp/training

サードパーティ製品とサービスwww.mathworks.co.jp/connections

世界各地のお問い合わせ先www.mathworks.co.jp/contact

© 2011 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarksfor a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders. 7