Main Content

Simulink へのタスクのパラレル化の実装

次の例は、Simulink® モデルで表されたシステムにタスクのパラレル化を実装する方法を示しています。ex_task_parallelism_initial モデルは、入力、同じ入力に適用された機能コンポーネント、連結された出力で構成されます。タスクのパラレル化の詳細については、パラレル化のタイプを参照してください。

A block diagram with an input connected to 2 functional components. Each functional component is connected to the output scope.

このモデルを同時実行用に設定します。完成したモデルを見るには、ex_task_parallelism_top モデルを開きます。

同時実行用のモデルの構成

  1. ex_task_parallelism_initial モデルを開きます。

  2. このモデル内の領域を参照モデルに変換します。同じ参照モデルを使用して、入力を処理する各機能コンポーネントを置き換えます。

モデル コンフィギュレーション パラメーターの設定

  1. [タスクの構成] をクリックします。[同時実行] ダイアログ ボックスの右側のペインで、[同時実行用に明示的なモデル分割を有効にする] チェック ボックスをオンにします。明示的な分割を使用することにより、モデルを手動で分割できます。

  2. [モデル化] タブで、[モデル設定] をクリックします。

  3. [コード生成][インターフェイス][詳細設定パラメーター] を選択します。[MAT ファイルのログ] チェック ボックスをオフにします。

  4. [ソルバー] を選択し、[タイプ]Fixed-step に設定し、[適用] をクリックします。

  5. [ソルバー] ペインで、[ソルバーの詳細] を展開します。[周期的なサンプル時間の制約]Unconstrained に設定されていることを確認します。[タスクとサンプル時間オプション] で、[ターゲット上でタスクの同時実行を許可] を選択します。

  6. [タスクの構成] をクリックします。

明示的な分割を使用したモデルの分割

最上位モデルを分割します。

[同時実行] ツリーの [タスクとマッピング][CPU] を選択します。[タスクの追加] を 3 回クリックし、新しいタスクを 3 つ追加します。

タスクへのブロックのマッピング

[同時実行] ツリーで [タスクとマッピング] を選択します。[タスクにブロックをマッピング] ペインで次を行います。

  • [ブロック: Input]select task をクリックし、Periodic: Task を選択します。

  • [ブロック: Function 1]Periodic: Task1 を選択します。

  • [ブロック: Function 2]Periodic: Task2 を選択します。

  • [ブロック: Output]Periodic: Task を選択します。

Input および Output モデル ブロックは 1 つのタスク上にあります。各機能コンポーネントは個々のタスクに割り当てられます。

[同時実行] ツリーで [データ転送] を選択します。[データ転送オプション] ペインで、パラメーター [周期信号]Ensure deterministic transfer (minimum delay) に設定します。[適用] をクリックして、[同時実行] ダイアログ ボックスを閉じます。

モデルの確定

参照モデルへのコンフィギュレーション パラメーターの共有

コンフィギュレーション パラメーターをすべての参照モデルに適用します。

コンフィギュレーション セットを保存するデータ ディクショナリの初期化

  1. ディクショナリのエントリであるコンフィギュレーション セットを表す Simulink.data.dictionary.Entry オブジェクトを作成します。この例では、ディクショナリの名前が myData.sldd で、Simulink.ConfigSet オブジェクトの名前が myConfigs であると仮定します。

  2. ターゲット Simulink.ConfigSet オブジェクトのコピーを一時変数に保存します。

  3. ディクショナリに対して行った変更を保存します。

  4. モデルのアクティブなコンフィギュレーション セットをコピーして、ベース ワークスペース内に独立型のコンフィギュレーション セットを作成します。

  5. 最上位モデルと各参照モデル用に別個のコンフィギュレーション参照を作成します。参照を独立型のコンフィギュレーション セットに向けるには、SourceName プロパティをコンフィギュレーションを表す変数 freeConfigSet に設定します。

  6. ConfigSetRef オブジェクトを使用して、コンフィギュレーション参照を各モデルに付加します。モデルでコンフィギュレーション参照を使用するには、各モデルでそれをアクティブにします。

詳細については、コンフィギュレーションの複数のモデル間での共有スクリプトを使用したモデル コンフィギュレーションの自動化およびディクショナリ内に保存されているコンフィギュレーション セットの変更を参照してください。

モデルを更新し、個別のモデル ブロックにマッピングされたタスクを確認します。

A Simulink model with 4 reference model blocks to represent the input, 2 functions, and output. Each reference model has a block-to-task mapping symbol in the top-left corner.

関連する例

詳細