このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Simulink へのタスクのパラレル化の実装
次の例は、Simulink® モデルで表されたシステムにタスクのパラレル化を実装する方法を示しています。ex_task_parallelism_initial
モデルは、入力、同じ入力に適用された機能コンポーネント、連結された出力で構成されます。タスクのパラレル化の詳細については、パラレル化のタイプを参照してください。
このモデルを同時実行用に設定します。完成したモデルを見るには、ex_task_parallelism_top
モデルを開きます。
同時実行用のモデルの構成
ex_task_parallelism_initial
モデルを開きます。このモデル内の領域を参照モデルに変換します。同じ参照モデルを使用して、入力を処理する各機能コンポーネントを置き換えます。
モデル コンフィギュレーション パラメーターの設定
[タスクの構成] をクリックします。[同時実行] ダイアログ ボックスの右側のペインで、[同時実行用に明示的なモデル分割を有効にする] チェック ボックスをオンにします。明示的な分割を使用することにより、モデルを手動で分割できます。
[モデル化] タブで、[モデル設定] をクリックします。
[コード生成]、[インターフェイス]、[詳細設定パラメーター] を選択します。[MAT ファイルのログ] チェック ボックスをオフにします。
[ソルバー] を選択し、[タイプ] を
Fixed-step
に設定し、[適用] をクリックします。[ソルバー] ペインで、[ソルバーの詳細] を展開します。[周期的なサンプル時間の制約] が
Unconstrained
に設定されていることを確認します。[タスクとサンプル時間オプション] で、[ターゲット上でタスクの同時実行を許可] を選択します。[タスクの構成] をクリックします。
明示的な分割を使用したモデルの分割
最上位モデルを分割します。
[同時実行] ツリーの [タスクとマッピング] で [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)
に設定します。[適用] をクリックして、[同時実行] ダイアログ ボックスを閉じます。
モデルの確定
参照モデルへのコンフィギュレーション パラメーターの共有
コンフィギュレーション パラメーターをすべての参照モデルに適用します。
コンフィギュレーション セットを保存するデータ ディクショナリの初期化
ディクショナリのエントリであるコンフィギュレーション セットを表す
Simulink.data.dictionary.Entry
オブジェクトを作成します。この例では、ディクショナリの名前がmyData.sldd
で、Simulink.ConfigSet
オブジェクトの名前がmyConfigs
であると仮定します。ターゲット
Simulink.ConfigSet
オブジェクトのコピーを一時変数に保存します。ディクショナリに対して行った変更を保存します。
モデルのアクティブなコンフィギュレーション セットをコピーして、ベース ワークスペース内に独立型のコンフィギュレーション セットを作成します。
最上位モデルと各参照モデル用に別個のコンフィギュレーション参照を作成します。参照を独立型のコンフィギュレーション セットに向けるには、
SourceName
プロパティをコンフィギュレーションを表す変数freeConfigSet
に設定します。ConfigSetRef
オブジェクトを使用して、コンフィギュレーション参照を各モデルに付加します。モデルでコンフィギュレーション参照を使用するには、各モデルでそれをアクティブにします。
詳細については、コンフィギュレーションの複数のモデル間での共有、スクリプトを使用したモデル コンフィギュレーションの自動化およびディクショナリ内に保存されているコンフィギュレーション セットの変更を参照してください。
モデルを更新し、個別のモデル ブロックにマッピングされたタスクを確認します。