Skip to main content

TaskConfiguration.json

それぞれCODESYS 4アプリケーションにはTaskConfiguration.jsonこのファイルは、デバイスプロジェクトが作成されると自動的に追加されます。このファイルには、ランタイムシステムが実行するタスクと、個々のタスクによって呼び出されるプログラムが記述されています。

重要

CODESYS 4シングルコアコントローラもサポートしています。TaskConfiguration.jsonマルチコアターゲットの場合と同じですが、2つの制限があります。

  • タスクグループは1つのみ許可されます。

  • のためにcoreConfig、 のみFixedPinnedそして0許可されています。FreeFloating、SequentiallyPinned、およびすべてのコアインデックスは1コンパイル時に拒否されます。

JSON方言

  • 形式:UTF-8

  • 鍵名はキャメルケースで表記されています。

  • オブジェクトまたは配列の最後の要素の後には、末尾のカンマを付けることができます。

  • 行コメント//そしてコメントをブロックします/* ... */許可されています。

トップレベル

{ "taskGroups": [ … ], // required 
  "systemEvents": [ ], // required — must be empty 
  "v3Meta": { … } // optional 
}

鍵

タイプ

必須

説明

taskGroups

array of Task Group

はい

タスクグループ一覧

配列は空でも構いません

systemEvents

array

はい(空欄にする必要があります:[])

イベントタスクの将来的なサポートのために予約されています。現在は、すべての要素に対してエラーが返されます。

v3Meta

object

いいえ

移行メタデータは以下から派生CODESYS3プロジェクトが適用されました。自由形式。アプリケーションに通知を表示しますが、タスクの動作は変更しません。新規ファイルの場合は、このキーを省略してください。

タスクグループ: taskGroups

タスクグループは、一連のタスクをコア構成に割り当てます。

{
  "groupName": "IEC-Tasks", 
  "coreConfig": "FixedPinned", 
  "tasks": { 	
      "MainTask": { … }, 
      "BackgroundTask": { … } 
}
}

鍵

タイプ

必須

説明

groupName

string

はい

グループの表示名(自由に選択可能)

coreConfig

string

はい

コア構成

より詳細な説明については、下記の「コア構成の値」を参照してください。

tasks

object map (タスク名 → タスク)

はい

キーはタスク名です。タスクはファイル内の順序に関係なく、名前のアルファベット順に処理されます。

. コア構成の値
  • "FreeFloating": グループ内のすべての IEC タスクは、ロードバランシングによってオペレーティングシステムによってプロセッサコアに動的に分散されます。状況によっては、タスクが頻繁にカーネルを切り替えることがあります。ユーザーは割り当てを制御できません

    ほとんどのアプリケーションでは、オペレーティングシステムが負荷分散を自動的に処理するため、この値が推奨されます。

  • "SequentiallyPinned": グループ内のすべての IEC タスクは異なるプロセッサコアに永続的にバインドされます。コア数がタスクの数よりも少ない場合、バインディングはコア 1 から始まり、コア 2、コア 3 などで続き、オーバーフローが発生した場合はコア 1、コア 2 などに戻ります。ユーザーはどのタスクをどのコアにバインドするかを制御できません

  • "FixedPinned": グループ内のすべての IEC タスクが 1 つのプロセッサコアに永続的にバインドされます。ランタイムシステムがコア (通常はコア 1) を選択します。複数のタスクグループが使用する場合 FixedPinnedそして、各タスクグループは異なるコアにバインドされます。通常、課題はコア 1 から始まります。

  • "0"、 "1"、 "2",...: グループ内のすべての IEC タスクは、指定されたプロセッサコアに永続的にバインドされます。コントローラにこのコアがないと、コンパイルはエラーで失敗します

    詳細については、以下を参照してください。 CODESYS V3: タスクグループ

タスク

これは 1 つのタスクです。囲みの中にあるエントリのキー "tasks" オブジェクトはタスクの名前です。名前は有効な IEC 識別子で、設定内で一意である必要があります。タスク固有のシンボルはそこから生成されます

の例 "tasks" オブジェクト

{
 "calls": ["PLC_PRG"],
 "priority": 1,
 "type": "Cyclic",
 "interval": 200000,
 "watchdogEnable": false,
 "watchdogTime": 0,
 "watchdogSensitivity": 0
}

鍵

タイプ

必須

デフォルト値

説明

calls

array of string

はい

-

タスクが実行されるたびに順番に呼び出されるプログラムの名前。空欄でも構いません。

priority

int

はい

-

タスクの優先度。数値が低いほど優先度が高いことを示します。

type

string enum

はい

-

CyclicまたはFreewheeling

より詳細な説明については、下記の「タスクの種類」を参照してください。

interval

int

いいえ

0

サイクルタイム(マイクロ秒)

関連するのはCyclicタスク

のためにFreewheelingタスクでは、値は次のように設定されます。0。

watchdogEnable

bool

いいえ

false

タスクの監視機能をアクティブ化する

注:ウォッチドッグタスクはまだ利用できません。

watchdogTime

int

いいえ

0

ウォッチドッグタイムアウト(マイクロ秒単位)

関係するのは以下の場合のみwatchdogEnable値true

watchdogSensitivity

int

いいえ

0

ウォッチドッグがトリガーされるまでに許容される連続オーバーフローの数。以下の場合にのみ関係します。watchdogEnable値true

. タスクの種類

有効な値type

  • "Cyclic": タスクはで定義されているマイクロ秒単位で実行されます。 interval キー。

  • "Freewheeling": タスクは継続的に実行され、前のサイクルが完了するとすぐに再開されます。の値は interval 無視されます。

. 現在受け入れられないタスクの種類
  • 現在、以下のタスクタイプは受け付けておりません。Event、External、 そしてParentSynchron

  • タスクプロパティ一覧CODESYS 3 タスクこのヘルプページの「タスクの種類」セクションに記載されているものを除き、現在受け付けていません。

重要

キーや型を比較する際には、大文字と小文字の区別が重要です。

新規アプリケーションのデフォルト値

いつTaskConfiguration.json存在しない場合は、新しいアプリケーションを以下の同等の形式で開始します。

{
  "taskGroups": [
    {
      "groupName": "IEC-Tasks",
      "coreConfig": "FixedPinned",
      "tasks": {
        "DefaultTask": {
          "calls": ["PLC_PRG"],
          "priority": 1,
          "type": "Cyclic",
          "interval": 200000
        }
      }
    }
  ],
  "systemEvents": []
}

例

以下は、TaskConfiguration.jsonタスクグループと複数のタスクを含むファイル:

{
  "taskGroups": [
    {
      "groupName": "IEC-Tasks",
      // "FreeFloating" | "FixedPinned" | "SequentiallyPinned"
      // or a quoted core index, e.g. "0"
      "coreConfig": "FixedPinned",
      // Tasks run in alphabetical order of their key — not file order.
      "tasks": {
        "MainTask": {
          "calls": ["PLC_PRG", "MyProgram"],
          "priority": 1,
          "type": "Cyclic",
          "interval": 200000,        // microseconds
          "watchdogEnable": true,
          "watchdogTime": 1000000,   // microseconds
          "watchdogSensitivity": 1
        },
        "BackgroundTask": {
          "calls": ["Diagnostics"],
          "priority": 15,
          "type": "Freewheeling"
          // interval is ignored for Freewheeling tasks
        }
      }
    }
  ],
  // Must be present, must be empty (events are not yet supported).
  "systemEvents": []
}