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, seulementFixedPinnedet0sont autorisés.FreeFloating,SequentiallyPinned, et chaque index principal à partir de1sont rejetées lors de la compilation.
Dialecte JSON
Format:
UTF-8Les 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 |
|---|---|---|---|
|
| Oui | Liste des groupes de travail Le tableau peut être vide. |
|
| 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. |
|
| 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 |
|---|---|---|---|
|
| Oui | Nom d'affichage librement choisi pour le groupe |
|
| Oui | Configuration de base Pour une description plus détaillée, voir « Valeurs de la configuration de base » ci-dessous. |
|
| 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. |
"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 utilisentFixedPinned, 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 |
|---|---|---|---|---|
|
| Oui | - | Noms des programmes appelés séquentiellement à chaque exécution de la tâche. Peut être vide. |
|
| Oui | - | Priorité de la tâche. Plus la valeur est basse, plus la priorité est élevée. |
|
| Oui | - |
Pour une description plus détaillée, voir « Types de tâches » ci-dessous. |
|
| Non |
| Temps de cycle (en microsecondes) Pertinent uniquement pour Pour |
|
| Non |
| Active le chien de garde pour la tâche Remarque : La tâche de surveillance n'est pas encore disponible. |
|
| Non |
| Délai d'expiration du chien de garde (en microsecondes) Pertinent uniquement lorsque |
|
| Non |
| Nombre de dépassements consécutifs tolérés avant le déclenchement du chien de garde. Pertinent uniquement lorsque |
Valeurs valides pour type
"Cyclic": La tâche s'exécute toutes les microsecondes, comme défini dans leintervalclé."Freewheeling": La tâche s'exécute en continu et redémarre dès que le cycle précédent est terminé. La valeur enintervalest ignoré.
Les types de tâches suivants ne sont actuellement pas acceptés :
Event,External, etParentSynchronToutes 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": []
}