Main Content

システム アーキテクチャの Simulink モデリング環境へのマッピング

ラピッド プロトタイピング展開のモデルを設計する場合、以下の設計要因を考慮します。

Modeling Algorithms (Embedded Coder)必要とする正確な結果を効率的に生み出すための、特定の初期状態と入力、一連のタスクまたは命令。
Modeling Interfaces (Embedded Coder)アルゴリズム コンポーネントがコンポーネントの境界を越えて情報を通信および交換できるようにするメカニズム。
Modeling Systems (Embedded Coder)高度なドメイン固有の目的または結果を達成するアルゴリズム コンポーネントのコレクション。コンポーネントは多くの場合リソースを共有します。
Modeling Target Platform Environments (Embedded Coder)システムのアルゴリズム リソースと実行のスケジューリングを処理するフレームワーク。

モデリング機能に関する以下の質問について考えます。モデルを設計する際に、質問とともにリストされている情報をガイドとして使用します。特定のランタイム実行環境を考慮してモデルを設計すると、やり直しや将来の変換および保守コストを回避できます。

アルゴリズムのモデル化

アーキテクチャにおける考慮事項モデル化における考慮事項関連情報
システムのドメインは?製品の必要条件 (コンポーネントのドメインに基づく)
システムは機械ドメイン、電気ドメイン、油圧ドメインなどの物理ドメインに関連していますか?物理システム
MathWorks® 製品で提供されるブロックで表現できるアルゴリズムの特性は?作成しなければならないブロックは?ブロックの使用方法、作成、カスタマイズ

コード生成向けにサポートされている製品とブロックの使用

アーキテクチャにステート マシン コンポーネントは含まれますか?イベントドリブン システム

Stateflow チャートを使用した有限ステート マシンのモデル化 (Stateflow)

インターフェイスのモデル化

アーキテクチャにおける考慮事項モデル化における考慮事項関連情報
  • 生成されたコードで表さなければならないデータは?

  • 入力と出力をどのように表す必要がありますか? (データ型、次元、実数/複素数)

  • データはどのように変化しますか?

データの表現
データはシステムのどこでどのように取得されてシステム内部に入力されますか?入力

信号読み込みの手法の比較

  • データはシステム内部のどこでどのようにプッシュされてシステム外に出力されますか?

  • 必要な外部トリガーは?

出力
  • 各コンポーネントに定義しなければならない関数は?

  • 各エントリ ポイント関数のプロトタイプは?

関数および関数呼び出し

生成された C 関数インターフェイスをモデルのエントリポイント関数用に構成

モデルの外側のロジックを制御することによって呼び出される関数をエクスポートする必要はありますか?関数のエクスポート
システムは信号またはログ データを (たとえば、キャリブレーションを行うために) 監視しますか?C API および ASAP2 データ交換インターフェイス
たとえば、特定のハードウェアのコードを最適化するために、生成されたコードで関数または演算子を置換する必要はありますか?コード置換
詳細化の要件および今後の考慮事項はありますか?詳細化および今後の考慮事項

モデル コンポーネントのインターフェイスの定義

システムのモデル化

アーキテクチャにおける考慮事項モデル化における考慮事項関連情報
  • システムのスコープは? コントローラーは? 外部環境またはプラントは? テスト ハーネスは?

  • システムをアルゴリズム コンポーネントに分割する方法 (ロジックのチャンク) は?

  • Simulink® で表すことのできるコンポーネントは?

  • コンポーネントを再利用するために設計できますか? 再利用の目的は? (作業分担やプラグインプレイなど)

コンポーネント化
  • システムのさまざまな側面で単体テストは必要ですか?

  • 複数人のチームでプロジェクトの共同作業を行っていますか?

  • 知的所有権を保護する必要はありますか?

モデル参照
クライアント/サーバー アーキテクチャをモデル化していますか?Simulink Function と Caller ブロック
関連するレガシまたはカスタムのコードは使用可能ですか?外部コードの統合外部コード統合ワークフローの選択 (Embedded Coder)
参照アーキテクチャまたは参照コンポーネントを適用できますか?モデルおよびプロジェクト テンプレート
関数は再利用できますか?関数の再利用
  • コンポーネントでグローバル データへのアクセスを共有する必要はありますか?

  • システム内で、状態の変化は発生しますか?それぞれの場合において、結果はどのように伝達されますか?

  • 考慮すべき識別子 (命名) の問題はありますか?

共有データ

ランタイム環境のモデル化

アーキテクチャにおける考慮事項モデル化における考慮事項関連情報
  • アプリケーションに必要なランタイム インターフェイスの制御レベルは?

  • システムのどの程度の部分をモデルで表すことができますか?

ランタイム インターフェイス
パラレル化を最大化するためにシステムは同時実行コンポーネントに分割されますか? どのコンポーネントですか?同時実行

マルチコア プロセッサ ターゲット

  • コンポーネントは外部クロックで駆動されますか?

  • システム コンポーネントで使用するクロック レートは?

  • コンポーネントはシングル レートと複数のレートのどちらを使用しますか?

クロックおよびクロック レート

モデル コンポーネントのインターフェイスの定義

  • システム内のコンポーネントはクロックで駆動されますか?

  • システム コンポーネントで使用するクロック レートは?

  • コンポーネントはシングル レートと複数のレートのどちらを使用しますか?

  • システム タスクと関数の優先順位は?

時間ベースのスケジューリング
  • システム内のコンポーネントはイベント (割り込み) で駆動されますか?

  • システム タスクと関数の優先順位は?

イベントベースのスケジューリング
システムが初期化イベント、リセット イベント、終了イベントを処理する必要はありますか?初期化、リセット、終了
  • システムはシングルタスク システムとマルチタスク システムのどちらですか?

  • コンポーネントをリアルタイムで実行する必要はありますか?

  • コンポーネント間の実行順序 (シーケンス) の依存関係は?

  • タスクと関数実行の時間の制約は?

タスクの実行
  • 処理プラットフォームは? (わかっている場合)

  • システムはシングルコア プロセッサとマルチコア プロセッサのどちらで実行しますか?

  • システムは分散システムですか?

  • 処理プラットフォームはハイブリッドと異種混合のどちらですか?

  • アーキテクチャは対称型マルチプロセッシングと非対称型マルチプロセッシングのどちらを使用しますか? 非対称型の場合、プラットフォーム ソフトウェアは CPU 間でどのように分割されますか?

処理プラットフォームマルチコア プロセッサ ターゲット