コンテンツにスキップ

タスクコントロール

概要

複数のスクリプトに対し、異なる周波数でこれらを実行したり、実行順序を設定することができます。また、異なるタスク間での変数の受け渡し等も可能です。


サンプル回路

Example

回路ファイルはサンプル回路TOPページからダウンロードできます。
サンプル回路はこちら:
Scideam/digital_palette/task_control/task_control.scicir
Scideam/digital_palette/task_control/task_control_Prog1.sciprc
Scideam/digital_palette/task_control/task_control_Prog2.sciprc
Scideam/digital_palette/task_control/task_control_Prog3.sciprc
Scideam/digital_palette/task_control/task_control_Prog4.sciprc

Info

必要オプション:Digital Palette

タスクコントロールとは

複数のスクリプトに対し、異なる周波数でこれらを実行したり、実行順序を設定することができます。
また、異なるタスク間での変数の受け渡し等も可能です。

サンプルでは回路素子は使用せず、4つのスクリプトで実現しています。


動作スクリプト

Prog1

i++;

setoutvar(i);

Prog2

j = var("Prog1","i");
k = j - 1;

setoutvar(k);

Prog3

a = var("Prog1","i");

setoutvar(a);

Prog4

b = var("Prog3","a");
c = b - 1;

setoutvar(c);

ポイント

実行周波数の変更

このサンプルでは、Prog1、Prog2はメイン周波数が設定されており、100[kHz]の周波数で動作します。 Prog3、Prog4はサブ周波数SubFreqが設定されており、50[kHz]の周波数で動作します。

実行順序の変更

実行順序の設定は、サブ周波数で実行周期を設定している場合と、していない場合で異なります。
どちらの場合もそれぞれスクリプトに設定された優先度によって実行順序が決定されます。

まず、メイン周期100[kHz]で動作しているProg1、Prog2については、Prog1が優先度0、Prog2が優先度1に設定されています。 これにより、メイン周期内ではまずProg1が実行され、次にProg2が実行されます。

次に、サブ周波数が設定されているProg3、Prog4についてはProg3の優先度を3、Prog4の優先度を4としていますので、 サブ周期内ではProg3、Prog4の順番でスクリプトが実行されます。
タスクコントロールの実行順序設定

優先度に関しましては優先度の設定を参照ください。


シミュレーション

Transient(fast)解析でシミュレーションを行い、それぞれのスクリプトでの変数の受け渡しや実行順序を確認しましょう。 シミュレーション時間は10m秒としてください。

結果は以下となります。

タスクコントロールによる実行順序解析結果

100[kHz]のタスクと、50[kHz]のタスクが実行されていることが分かります。