主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

時間ベースのスケジューリングとコード生成

サンプル時間に関する考慮事項

金宝app®モデルは1つ以上のサンプル時間で実行します。金宝app仿真软件製品は1つを超えたサンプル時間で実行するマルチレートシステムの作成にかなりの柔軟性があります。しかし,この柔軟性のために,マルチタスク環境で実行するためのリアルタイムコードをコードジェネレーターが生成できないモデルを作成することも可能になります。マルチレートモデルを期待どおりにリアルタイムで動作させる(つまり正しい答えを得る)には,モデルを変更するか,仿真软金宝app件エンジンにモデルを変更するよう指示しなければならない場合があります。一般にこの変更には,サンプル時間が異なるブロック間に率过渡ブロックを配置することが必要です。次の節ではマルチレートモデルをマルチタスク環境使用するために処理しなければならない課題について説明します。レート変換を含むサンプル時間の包括的な説明については,サンプル時間とはサブシステム内のサンプル時間システム内のサンプル時間レート変換の関連付けおよび関連トピックを参照してください。

タスクモード

固定ステップモデルにはシングルタスクとマルチタスクの2つの実行モードがあります。これらは固定ステップソルバーでのみ利用できます。実行モードを選択するには,モデルコンフィギュレーションパラメーター(各離散レートを個別のタスクとして扱う)を選択します。このパラメーターを選択すると,マルチタスク実行がマルチレートモデルに適用されます。このパラメーターをオフにすると,シングルタスク実行が適用されます。

メモ

マルチレートでマルチタスクを使用しているモデルは,シングルタスクを使用しているマルチレートモデルを参照できません。

リアルタイムシステムでのモデルの実行はリアルタイムオペレーティングシステム下で行えます。またはモデルを割り込みサービスルーチン(ISR)のコンテキスト内で実行する,”“ベアメタルターゲットハードウェア上で実行できます。

システム(Open Group UNIX®または微软®视窗®システムなど)がマルチタスクであっても,プログラムがリアルタイムで実行できることを意味するわけではありません。これはプログラムが必要な場合に他のプロセスをプリエンプトしない可能性があるためです。

一定の時間に1つのプロセスだけが存在しうるようなオペレーティングシステム(PC-DOSなど)の場合,割り込みサービスルーチン(ISR)はプロセッサコンテキストの保存,モデルコードの実行,データの収集,プロセッサコンテキストの復旧のステップを実行しなければなりません。

POSIX準拠などの他のオペレーティングシステムには,自動コンテキストスイッチとタスクスケジュールの機能があります。これはISRが実行する作業を単純化します。この場合,通常はブロックされるモデルの実行タスクをISRが有効にします。次の図にこの違いを示します。

モデルの実行とレート変換

期待どおりにリアルタイムで実行されるコードを生成するには,ユーザー(または仿真软金宝app件エンジン)がモデル内のサンプルレートの変換を識別し処理する必要があります。マルチタスクモードでは,既定の設定では,このモデルに無効なレート変換が含まれている場合,シミュレーション中に仿真金宝app软件エンジンによってエラーが生成されますが,モデルコンフィギュレーションパラメーター[マルチタスクレート変換]を使用してこの動作を変更することもできます。パラメーター[シングルタスクレート変換]は同じ目的でシングルタスクモードで使用できます。

レート変換エラーが発生しないようにするには,タスク間に率过渡ブロックを挿入します。金宝app仿真软件エンジンが自動的にレート変換を処理するようにするには,非表示の率过渡ブロックを挿入します。このオプションの説明については,自動レート変換を参照してください。

このような問題を理解するには,最初に仿金宝app真软件のシミュレーションとリアルタイムプログラムの相違を十分に確認する必要があります。

金宝appモデルのシミュレーションの実行

金宝app仿真软件エンジンは,モデルをシミュレートする前に,位相的依存関係に基づいてブロックの順序を決めます。このとき,バーチャルサブシステムは,これらがもつ個々のブロックに展開され,モデル全体が1つのリストにフラット化されます。この手順が完了すると,各ブロックは指定された順序に従って実行されます。

このプロセスでは,ブロックの順序が重要です。出力がその入力に直接依存しているブロック(すなわち,直達のあるブロック)は,その入力を駆動するブロックが実行されるまで実行できません。

一来のブロック,前のタイムステップで取得れ値ににか,ブロックブロックパラメーターとして指定された条件条件,出によって,出によっての出は,メモリに格式出れはいるますによって入力とため关键词更中,时间に対応するが前计算计算実ますますれますますますますますますますますれれますれれれれれれれれれは生长しません)。

リアルタイムでのモデルの実行

リアルタイムプログラムは,このプログラムがモデルコードをリアルタイムで同期して実行しなければならないという点において,仿真软金宝app件シミュレーションと異なります。すべての計算で,若干の計算遅延が発生します。すなわち,実行が非効率になるため,サンプル間隔を短縮または延長できません(仿金宝app真软件シミュレーションでは可能)。

以下のタイミングの図について検討します。

サンプル間隔t1の処理が非効率です。定義上,サンプル時間がリアルタイムで指定されるため,この間隔を圧縮して,実行速度を上げることはできません。

この潜在的な非効率性を解消するには,マルチタスクモードを使用します。マルチタスクモードで定義されるタスクは,サンプルレートが異なるモデルコードの一部を実行するための優先度が異なります。

この管理のの明については,マルチタスクモードと疑似マルチタスクモードをを参照しててこの节节のをををに解しててからにに节してからてにををしてからてにをを続てててて

シングルタスクシングルタスク作品とマルチタスク操作用

シングルタスクプログラムでは,すべての計算が各クロック期間内に実行されなければならないため,より長いサンプル間隔を必要とします。このため,前の図が示すように,有効なCPU時間が効率的に使用されない場合があります。

マルチタスクモードでは,モデルが大規模で,異なるレートで実行されるブロックが多い場合にプログラムの効率が改善されます。

ただし,モデルが単一レートで指定され,より遅いレートで実行されるブロックが非常に少ない場合は,マルチタスクモードを指定すると実際はパフォーマンスが低下する場合があります。このようなモデルでは,タスクの切り替え時に発生するオーバーヘッドが,より遅いレートのブロックを実行する時に必要な時間より大きくなる場合があります。このような場合,すべてのブロックを主要なレートで実行すると効率が改善します。

マルチタスクで実行した方がメリットの多いモデルでは,速度过渡ブロックを追加してモデルを変更し(または,同様の処理が行われるように仿真软件エンジンを指定し),金宝app期待した結果を生成する必要がある場合があります。

2つの実行モードの詳細と例については,シングルタスク実行のモデル化およびマルチタスク実行のモデル化を参照してください。

関連するトピック