Skip to main content

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, solo FixedPinned y 0 están permitidos. FreeFloating, SequentiallyPinned y todos los índices principales a partir de 1 son rechazados durante la compilación.

Dialecto JSON

  • Formato: UTF-8

  • Los 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

taskGroups

array of Task Group

Sí

Lista de grupos de trabajo

El array puede estar vacío.

systemEvents

array

Sí (debe estar vacío: [] )

Reservado para futuras tareas de eventos. Actualmente, se devuelve un error para todos los elementos.

v3Meta

object

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

groupName

string

Sí

Nombre de visualización elegido libremente para el grupo

coreConfig

string

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.

tasks

object map (nombre de la tarea → tarea)

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.

. Valores para la configuración principal
  • "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ón

    Se 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 hay FixedPinned , 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ón

    Para 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

calls

array of string

Sí

-

Nombres de los programas que se llaman secuencialmente cada vez que se ejecuta la tarea. Puede estar vacío.

priority

int

Sí

-

Prioridad de la tarea. Los valores más bajos indican una mayor prioridad.

type

string enum

Sí

-

Cyclic o Freewheeling

Para obtener una descripción más detallada, consulte la sección "Tipos de tareas" a continuación.

interval

int

No

0

Tiempo de ciclo (en microsegundos)

Relevante únicamente para Cyclic tareas

Para Freewheeling tareas, el valor se establece en 0.

watchdogEnable

bool

No

false

Activa el sistema de vigilancia para la tarea.

Nota: La tarea de supervisión aún no está disponible.

watchdogTime

int

No

0

Tiempo de espera del sistema de vigilancia (en microsegundos)

Relevante solo cuando watchdogEnable tiene el valor true

watchdogSensitivity

int

No

0

Número de desbordamientos consecutivos que se toleran antes de que se active el temporizador de vigilancia. Relevante solo cuando watchdogEnable tiene el valor true

. Tipos de tareas

Valores válidos para type

  • "Cyclic": Todas las tareas se ejecutan en la clave interval microsegundos definidos

  • "Freewheeling": La tarea se ejecuta de forma continua y se vuelve a iniciar en cuanto finaliza el ciclo anterior. El valor en interval se ignora.

. Tipos de tareas actualmente inaceptables
  • Actualmente no se aceptan los siguientes tipos de tareas: Event, External, y ParentSynchron

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