Skip to main content

TaskConfiguration.json

Chaque CODESYS 4 L'application possède une TaskConfiguration.json Ce fichier est automatiquement ajouté lors de la création d'un projet de périphérique. Il décrit les tâches exécutées par le système d'exécution, ainsi que les programmes appelés par ces tâches.

Important

CODESYS 4 Il prend également en charge les contrôleurs monocœurs. Le format de TaskConfiguration.json est identique à celui des cibles multicœurs, mais il existe deux restrictions :

  • Un seul groupe de travail est autorisé.

  • Pour coreConfig, seulement FixedPinned et 0 sont autorisés. FreeFloating, SequentiallyPinned, et chaque index principal à partir de 1 sont rejetées lors de la compilation.

Dialecte JSON

  • Format: UTF-8

  • Les noms des clés sont écrits en camelCase.

  • Les virgules finales sont autorisées après le dernier élément d'un objet ou d'un tableau.

  • Commentaires en ligne avec // et bloquer les commentaires avec /* ... */ sont autorisés.

Niveau supérieur

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

Clé

Taper

Requis

Description

taskGroups

array of Task Group

Oui

Liste des groupes de travail

Le tableau peut être vide.

systemEvents

array

Oui (doit être vide) : [] )

Réservé pour la prise en charge future des tâches événementielles. Actuellement, une erreur est renvoyée pour tous les éléments.

v3Meta

object

Non

Métadonnées de migration dérivées de CODESYS 3Des projets ont été appliqués. Format libre. Affiche des notifications dans l'application, mais ne modifie pas le comportement de la tâche. Cette option doit être omise pour les nouveaux fichiers.

Groupe de travail : taskGroups

Un groupe de tâches attribue un ensemble de tâches à une configuration de base.

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

Clé

Taper

Requis

Description

groupName

string

Oui

Nom d'affichage librement choisi pour le groupe

coreConfig

string

Oui

Configuration de base

Pour une description plus détaillée, voir « Valeurs de la configuration de base » ci-dessous.

tasks

object map (nom de la tâche → tâche)

Oui

Les clés correspondent aux noms des tâches. Les tâches sont traitées par ordre alphabétique de leur nom, indépendamment de leur ordre dans le fichier.

. Valeurs pour la configuration de base
  • "FreeFloating": Toutes les tâches IEC du groupe sont distribuées dynamiquement aux cœurs des processeurs par le système d'exploitation via l'équilibrage de charge. Dans certaines circonstances, les tâches peuvent fréquemment changer de noyau. L'utilisateur n'a aucun contrôle sur l'attribution.

    Cette valeur est recommandée pour la plupart des applications car le système d'exploitation gère automatiquement l'équilibrage de charge.

  • "SequentiallyPinned": Toutes les tâches IEC du groupe sont liées en permanence à différents cœurs de processeur. S'il y a moins de cœurs que de tâches, la liaison commence au cœur 1, se poursuit avec le noyau 2, le noyau 3, etc. et revient au noyau 1, au cœur 2, etc. en cas de débordement. L'utilisateur n'a aucun contrôle sur quelle tâche est liée à quel cœur.

  • "FixedPinned": Toutes les tâches IEC du groupe sont liées en permanence à un cœur de processeur unique. Le système d'exécution sélectionne le cœur (généralement le cœur 1). Si plusieurs groupes de tâches utilisent FixedPinned, chaque groupe de travail est alors lié à un noyau différent. Le devoir commence généralement par le noyau 1.

  • "0", "1", "2",... : Toutes les tâches IEC du groupe sont liées de manière permanente au cœur de processeur spécifié. Si le contrôleur ne possède pas ce noyau, la compilation échouera avec une erreur.

    Pour plus d'informations, veuillez consulter les documents suivants : CODESYS V3 : Groupes de tâches

Tâche

Il s'agit d'une tâche unique. La clé de l'entrée dans la pièce jointe "tasks" object est le nom de la tâche. Le nom doit être un identifiant IEC valide et unique dans la configuration. Les symboles spécifiques à la tâche sont générés à partir de celui-ci

Exemple de "tasks" objet

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

Clé

Taper

Requis

Valeur par défaut

Description

calls

array of string

Oui

-

Noms des programmes appelés séquentiellement à chaque exécution de la tâche. Peut être vide.

priority

int

Oui

-

Priorité de la tâche. Plus la valeur est basse, plus la priorité est élevée.

type

string enum

Oui

-

Cyclic ou Freewheeling

Pour une description plus détaillée, voir « Types de tâches » ci-dessous.

interval

int

Non

0

Temps de cycle (en microsecondes)

Pertinent uniquement pour Cyclic tâches

Pour Freewheeling tâches, la valeur est définie sur 0.

watchdogEnable

bool

Non

false

Active le chien de garde pour la tâche

Remarque : La tâche de surveillance n'est pas encore disponible.

watchdogTime

int

Non

0

Délai d'expiration du chien de garde (en microsecondes)

Pertinent uniquement lorsque watchdogEnable a la valeur true

watchdogSensitivity

int

Non

0

Nombre de dépassements consécutifs tolérés avant le déclenchement du chien de garde. Pertinent uniquement lorsque watchdogEnable a la valeur true

. Types de tâches

Valeurs valides pour type

  • "Cyclic": La tâche s'exécute toutes les microsecondes, comme défini dans le interval clé.

  • "Freewheeling": La tâche s'exécute en continu et redémarre dès que le cycle précédent est terminé. La valeur en interval est ignoré.

. Types de tâches actuellement inacceptables
  • Les types de tâches suivants ne sont actuellement pas acceptés : Event, External, et ParentSynchron

  • Toutes les propriétés des tâches répertoriées dans Tâches CODESYS 3 ne sont actuellement pas acceptées, à l'exception de celles listées dans la section « Types de tâches » de cette page d'aide.

Important

Lors de la comparaison de clés et de types, la sensibilité à la casse est importante.

Valeurs par défaut pour une nouvelle application

Quand TaskConfiguration.json n'existe pas, une nouvelle demande commence avec l'équivalent suivant :

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

Exemple

Ci-dessous figure un exemple de TaskConfiguration.json fichier contenant un groupe de tâches et plusieurs tâches :

{
  "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": []
}