TaskConfiguration.json
Cada CODESYS 4 La aplicación tiene una TaskConfiguration.json Este archivo se agrega automáticamente al crear un proyecto de dispositivo. Describe las tareas que ejecuta el sistema de tiempo de ejecución, así como los programas que llaman dichas tareas.
Importante
CODESYS 4 También admite controladores de un solo núcleo. El formato de TaskConfiguration.json Es lo mismo que con los objetivos multinúcleo, pero existen dos restricciones:
Solo se permite un grupo de trabajo.
Para
coreConfig, soloFixedPinnedy0están permitidos.FreeFloating,SequentiallyPinnedy todos los índices principales a partir de1son rechazados durante la compilación.
Dialecto JSON
Formato:
UTF-8Los nombres de las claves están escritos en formato camelCase.
Se permiten comas al final del último elemento de un objeto o matriz.
Comentarios de línea con
//y bloquear comentarios con/* ... */están permitidos.
Nivel superior
{ "taskGroups": [ … ], // required
"systemEvents": [ ], // required — must be empty
"v3Meta": { … } // optional
}Llave | Tipo | Requerido | Descripción |
|---|---|---|---|
|
| Sí | Lista de grupos de trabajo El array puede estar vacío. |
|
| Sí (debe estar vacío: | Reservado para futuras tareas de eventos. Actualmente, se devuelve un error para todos los elementos. |
|
| No | Metadatos de migración derivados de CODESYS 3-Se han aplicado proyectos. Formato libre. Muestra notificaciones en la aplicación, pero no modifica el comportamiento de la tarea. Esta clave debe omitirse para archivos nuevos. |
Grupo de trabajo: taskGroups
Un grupo de tareas asigna un conjunto de tareas a una configuración principal.
{
"groupName": "IEC-Tasks",
"coreConfig": "FixedPinned",
"tasks": {
"MainTask": { … },
"BackgroundTask": { … }
}
}Llave | Tipo | Requerido | Descripción |
|---|---|---|---|
|
| Sí | Nombre de visualización elegido libremente para el grupo |
|
| Sí | Configuración principal Para obtener una descripción más detallada, consulte la sección "Valores para la configuración principal" a continuación. |
|
| Sí | Las claves son los nombres de las tareas. Las tareas se procesan en orden alfabético según su nombre, independientemente de su orden en el archivo. |
"FreeFloating": El sistema operativo distribuye dinámicamente todas las tareas de IEC del grupo entre los núcleos del procesador mediante el equilibrio de carga. Las tareas pueden cambiar de núcleo con frecuencia; el usuario no tiene ninguna influencia en la asignaciónSe recomienda este valor para la mayoría de las aplicaciones, ya que el sistema operativo gestiona automáticamente el equilibrio de carga.
"SequentiallyPinned": Todas las tareas de IEC del grupo están vinculadas permanentemente a diferentes núcleos de procesador. Si hay menos núcleos que tareas, la vinculación comienza en el núcleo 1, continúa con el núcleo 2, el núcleo 3,... y vuelve al núcleo 1, al núcleo 2,... El usuario no tiene ninguna influencia sobre qué tarea está vinculada a qué núcleo"FixedPinned": Todas las tareas de IEC del grupo están permanentemente vinculadas a un único núcleo de procesador. El sistema de ejecución selecciona el núcleo, normalmente el núcleo 1. Cuando hayFixedPinned, cada grupo de tareas está vinculado a un núcleo diferente. La asignación normalmente comienza en el núcleo 1."0","1","2",...: Todas las tareas de IEC del grupo están vinculadas permanentemente al núcleo del procesador especificado. Si el controlador no tiene este núcleo, se producirá un error en la traducciónPara obtener más información, consulte lo siguiente: CODESYS V3: Grupos de trabajo
Tarea
Se trata de una tarea única. La clave de la entrada que figura en "tasks"objeto es el nombre de la tarea. El nombre debe ser un identificador IEC válido y debe ser único en la configuración. A partir de él se generan iconos específicos de las tareas
Ejemplo de un objeto "tasks"
{
"calls": ["PLC_PRG"],
"priority": 1,
"type": "Cyclic",
"interval": 200000,
"watchdogEnable": false,
"watchdogTime": 0,
"watchdogSensitivity": 0
}Llave | Tipo | Requerido | Valor predeterminado | Descripción |
|---|---|---|---|---|
|
| Sí | - | Nombres de los programas que se llaman secuencialmente cada vez que se ejecuta la tarea. Puede estar vacío. |
|
| Sí | - | Prioridad de la tarea. Los valores más bajos indican una mayor prioridad. |
|
| Sí | - |
Para obtener una descripción más detallada, consulte la sección "Tipos de tareas" a continuación. |
|
| No |
| Tiempo de ciclo (en microsegundos) Relevante únicamente para Para |
|
| No |
| Activa el sistema de vigilancia para la tarea. Nota: La tarea de supervisión aún no está disponible. |
|
| No |
| Tiempo de espera del sistema de vigilancia (en microsegundos) Relevante solo cuando |
|
| No |
| Número de desbordamientos consecutivos que se toleran antes de que se active el temporizador de vigilancia. Relevante solo cuando |
Valores válidos para type
"Cyclic": Todas las tareas se ejecutan en la claveintervalmicrosegundos definidos"Freewheeling": La tarea se ejecuta de forma continua y se vuelve a iniciar en cuanto finaliza el ciclo anterior. El valor enintervalse ignora.
Actualmente no se aceptan los siguientes tipos de tareas:
Event,External, yParentSynchronTodas las propiedades de la tarea enumeradas en Tareas de CODESYS 3 Actualmente no se aceptan, excepto las que figuran en la sección "Tipos de tareas" de esta página de ayuda.
Importante
Al comparar claves y tipos, es importante tener en cuenta las mayúsculas y minúsculas.
Valores predeterminados para una nueva aplicación
Cuando TaskConfiguration.json Si no existe, se inicia una nueva aplicación con el siguiente equivalente:
{
"taskGroups": [
{
"groupName": "IEC-Tasks",
"coreConfig": "FixedPinned",
"tasks": {
"DefaultTask": {
"calls": ["PLC_PRG"],
"priority": 1,
"type": "Cyclic",
"interval": 200000
}
}
}
],
"systemEvents": []
}Ejemplo
A continuación se muestra un ejemplo de un TaskConfiguration.json Archivo con un grupo de tareas y varias tareas:
{
"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": []
}