TargetLinkは、効率性の高いCコードをMathWorks® Simulink®/Stateflow®から直接生成します。また、コードの自動生成では、複数の行のコードに影響を与える変更を加えた場合にも、TargetLinkが自動的にすべての行をアップデートします。そのため、開発者は実際のアプリケーションだけに集中することができます。また、TargetLinkの固有のシミュレーションおよびテスト機能を用いて初期検証を行えるため、ターンアラウンドタイムを短縮し、コストを削減することが可能です。
コード品質が重要である理由
ラピッドコントロールプロトタイピングでは、新たなコンセプトをテストする際に開発者が多大な自由度を保持しておく必要があります。そのような場合に使用されるコードと比べ、車両や飛行機における電子制御またはその他のあらゆる実用的な産業アプリケーションで使用される量産コードは、品質の面で極めて厳しい要件を満たす必要があります。たとえば開発者は、コードが高度に最適化されていること、他のソフトウェアと容易に統合できること、保守を容易にするため現在および将来において読みやすいこと、要件やモデル、コード間のあらゆる依存関係が明瞭で理解しやすいこと、およびコードが関連する規格に準拠していることを確認する必要があります。つまり、最高の信頼性、効率性、安全性、保守性、トレーサビリティが必要であり、生成プロセスに関しては再現性(すなわち、同一のモデルからは同一のコードが生成されること)も求められます。
TargetLinkによる高品質な量産コードの実現
量産コード生成ツールであるdSPACE TargetLinkは、高品質なコードを常に保証する極めて強力なソフトウェアシステムであり、さらには個別の要件や関連する規格を考慮に入れることもできます。TargetLinkの機能は広範に及ぶにもかかわらず、量産コード生成の一般的な手順はわかりやすく、プロセスを個別の環境に適合させるための多数のオプションがあります。一般的な手順には、制御設計、(シミュレーションに基づいた)反復的な妥当性確認と検証、およびECUでのコード統合などがあります。また、TargetLinkは他のdSPACEツールや他のベンダー製のツールとの相性もよく、これらを組み合わせることでTargetLinkエコシステムを構成しています。
TargetLinkで直接コントローラモデルを設計
Simulink®ブロックライブラリはシミュレーション工程において非常に強力なツールであり、必要な仕様作成機能をすべて提供します。しかし、コード生成の段階では各ブロックにはより多くの情報が必要になります。たとえば、固定小数点シミュレーションに対する追加の機能をサポートする必要があります。そのため、TargetLinkには、サポートする個別のSimulinkブロックに対応したTargetLinkブロックライブラリが付属しています。
TargetLinkブロックでは、サポートしているSimulinkブロックの機能を大幅に拡張しており、コード生成に必要な実装固有の情報を入力できる拡張ダイアログを備えています。また各ブロックは、データロギングおよびオーバーフロー検出の手段も提供します。専用のルーチンによって、SimulinkブロックがTargetLinkブロックに拡張され、TargetLinkでのコード生成に必要なSimulinkモデルが自動的に生成されます。これにより、モデルは量産コード生成やオンターゲットバイパス処理にすぐに対応できます。
大規模なモデルのプロパティを変更する必要がある場合、グラフィカルに操作できるTargetLinkのProperty Managerを使用し、手作業によりブロックダイアログのプロパティを簡単に変更できます。Property Managerは、モデル内のTargetLinkブロックとStateflowオブジェクトのプロパティを表示します。また、複数のプロパティを同時に表示、フィルタリング、および変更することができます。
テストにおける3つのシミュレーションモード
コード生成ツールは手作業によるプログラミングと比較してもほとんど見劣りしないコードを生成しますが、生成されたコードとその基準となる仕様のテストは必要です。TargetLinkは生成されたコードを検証するための強力で簡単な手段を提供します。コードテストは、基準となるシミュレーションモデルを指定するために使用されたのと同じシミュレーション環境で実行します。シミュレーションの結果が一致したときに機能は同一といえます。TargetLinkは、仕様(モデル)と実装(生成されたコード)が機能的に同一であることをクリック1つで示すことができる3段階の検証プロセスを提供します。
MIL(Model-in-the-Loop)シミュレーション |
シミュレーションモデルから基準プロット用のデータを記録します。選択したブロックからの信号と状態変数をTargetLinkが自動的に記録します。
MIL(Model-in-the-Loop)シミュレーションは、後にCコードで実装する、指定されたモデルの動作をキャプチャします。記録された信号プロットは、以降の検証ステップで基準となるものです。 また、MIL(Model-in-the-Loop)シミュレーションは、整数変数のオーバーフローの検出に使用することも可能で、その結果をシミュレーションを利用した自動スケーリングに使用します。 |
SIL(Software-in-the-Loop)シミュレーション |
コードが生成され、シミュレーションモデル(たとえば、同じプラントおよびスティミュラスシグナル)内のコントローラブロックがCコードに置き換えられます。TargetLinkはこれをバックグラウンドで自動的に実行します。
コントローラブロックは変わらず表示されますが、実際にはホストPCで実行されるコードになっています。信号プロットはMIL(Model-in-the-Loop)シミュレーションの結果とほとんど同じになります。同じにならない場合、これらを分析して差が生じた原因を理解し、固定小数点の設定を微調整することができます。 |
PIL(Processor-in-the-Loop)シミュレーション |
生成されたコードは組込みプロセッサ上で実行されますが、ホストPC上で正しく動作するコードでも依然不具合を起こす可能性があるため、さらに検査が必要です。
既製の評価用ボードをホストPCに接続すると、生成されたコードがターゲットコンパイラでコンパイルされ、評価用ボードにダウンロードされます。 TargetLinkはホストPCと評価用ボードの間の通信を管理します。すべての動作は自動化され、インタラクティブな操作は必要ではありません。評価用ボードでのシミュレーションに必要な操作は2回のマウスクリックだけです。 |
シミュレーションコンセプトの特徴と利用効果
特徴 | 説明 | 利用効果 |
---|---|---|
クリック1つで実現するMIL、SIL、PILシミュレーション | MILからSILまたはPILシミュレーションへの切り替えがクリック1つで可能 |
強力なシミュレーション環境
特別なテストモデルの作成や、S-Functionの生成、テスト用結線モデルへの手作業による挿入が不要 |
統合されたデータログ機能 | すべてのシミュレーションモードに対応した組込みのデータログ機能と結果のプロット |
モデルの修正が不要
すべてのシミュレーションモデルで利用可能 |
MIL/SIL/PIL結果の直接比較 | すべてのシミュレーション結果を同じプロットウィンドウ内に自動的にプロット |
シミュレーション結果を異なるモードで直接表示し、偏差を解析することが可能
コードとモデルシミュレーションが一致するかどうかを直接フィードバック |
詳細な信号分析と偏差のプロット | 信号のズーム表示による偏差の点検、制約(定められた範囲など)の表示、カーソルによる信号履歴のスクロール表示、信号値の数値表示または信号偏差のプロット |
信号動作の明確な把握
浮動小数点から固定小数点への変換で特に便利 |
データロギングとプロットの統合 | TargetLinkブロックにはデータログ機能が組込まれています。ブロックの出力信号をログに記録するかどうかをブロックダイアログで指定できます。 | |
ランタイム解析によるコードのプロファイリング | PIL(Processor-in-the-Loop)シミュレーションは、生成されたコードのプロファイリングにも使用できます。PILシミュレーション中、TargetLinkはターゲットプロセッサ上で直接、実行時間とスタック消費量を自動的に計測します。 | |
コードカバレッジ分析 | テストがどれほど総合的に行えたかは、コードカバレッジ分析によって評価することができます。TargetLinkではC0およびC1カバレッジ分析を提供します。これはステートメントカバレッジおよびデシジョンカバレッジとも呼ばれます。 | |
モデルとコード間のトレーサビリティ | トレーサビリティの向上、およびコードレビューを簡単にするため、オプションで、コードファイルをHTML形式で生成できます。HTMLファイルには、モデルからコードまたその逆に移動できるハイパーリンクが含まれます。 |
高いコード効率
TargetLinkは、アプリケーションのタイプ(固定小数点または浮動小数点)に関わらず、組込みシステム向けの極めて効率的な量産コードを生成します。複数のスケーリングプロパティは、実行時間の短縮、演算精度の向上、オーバーフローの防止という相反する要件を満たすように固定小数点のコードを微調整するための豊富な選択肢を提供します。オーバーフローが発生すると、TargetLinkのオーバーフロー検出機能により、ブロック線図上の正確な位置が表示されます。問題はその場で修正できます。
変数のスケーリング
時間を要し、ミスが起きやすい手作業によるスケーリングプロセスを短縮するため、TargetLinkでは自動スケーリングツールが提供されています。このツールにより、適切な範囲の検出と適正なスケーリングパラメータの計算が可能になります。従来、数日から数週間かかっていたスケーリング作業が、数分から数時間で済むようになります。
TargetLinkは、スケーリング手法として組込み制御アプリケーションで幅広く使われる2係数の線形スケーリングを提供しています。TargetLinkで固定小数点スケーリングを指定するためのプロパティには、以下が存在します。
- データタイプ
- 2のべき乗のスケーリング係数または任意のスケーリング係数
- オフセット値
- 制約値
- ビットセーフティマージン
- 飽和オプション
固定小数点スケーリングはソフトウェアエンジニアが手作業で行うこともできますが、ほとんどの場合はTargetLinkの自動スケーリングツールで対応できます。自動スケーリングには2つの手順が利用できます。
- シミュレーションベースの自動スケーリング – 最高の計算精度が実現します
-
ワーストケース自動スケーリング – プラントモデルが不要で、オーバーフローを自動的に防止します
また、TargetLinkはスケーリング式やタイプ定義を使用したスケーリングもサポートしています。
強力なコード最適化
TargetLinkは、最適化された手書きのコードと同じ位効率性に優れた高度に最適化されたANSI Cコードを生成します。これは、最新のCコンパイラでも使用されている標準的な最適化技術など、さまざまな最適化技術によって実現されています。TargetLinkのブロック間最適化機能は、あたかもソフトウェアエンジニアが作成したようなコードを生成します。なぜなら、TargetLinkのコードの統合方法が、経験豊富なソフトウェアエンジニアのそれと非常に近いからです。より複雑なブロックの場合、TargetLinkはコード生成プロセス中に内部コードパターンライブラリのコードを取得し、複雑なブロックのコードの効率性も高めます。
TargetLinkのその他の検証機能
機能 | 説明 |
---|---|
|
|
|
|
|
|
|
|