Skip to main content

TaskConfiguration.json

Ogni CODESYS 4 l'applicazione ha un TaskConfiguration.json Questo file viene aggiunto automaticamente alla creazione di un progetto di dispositivo. Descrive le attività eseguite dal sistema runtime, nonché i programmi richiamati dalle singole attività.

Importante

CODESYS 4 supporta anche i controller single-core. Il formato di TaskConfiguration.json è lo stesso che con i target multicore, ma ci sono due restrizioni:

  • È consentito un solo gruppo di attività.

  • Per coreConfig, soltanto FixedPinned E 0 sono consentiti. FreeFloating, SequentiallyPinned e ogni indice principale a partire da 1 vengono rifiutati durante la compilazione.

Dialetto JSON

  • Formato: UTF-8

  • I nomi delle chiavi sono scritti in formato camelCase.

  • È consentito utilizzare una virgola finale dopo l'ultimo elemento di un oggetto o di un array.

  • Commenti di riga con // e bloccare i commenti con /* ... */ sono consentiti.

Livello superiore

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

Chiave

Tipo

Necessario

Descrizione

taskGroups

array of Task Group

SÌ

Elenco dei gruppi di lavoro

L'array può essere vuoto

systemEvents

array

Sì (deve essere vuoto: [] )

Riservato per il supporto futuro delle attività relative agli eventi. Attualmente, viene restituito un errore per tutti gli elementi.

v3Meta

object

NO

Metadati di migrazione derivati da CODESYS 3-I progetti sono stati applicati. Formato libero. Visualizza le notifiche nell'applicazione, ma non modifica il comportamento dell'attività. Questa chiave deve essere omessa per i nuovi file.

Gruppo di lavoro: taskGroups

Un gruppo di attività assegna un insieme di attività a una configurazione principale.

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

Chiave

Tipo

Necessario

Descrizione

groupName

string

SÌ

Nome visualizzato liberamente scelto per il gruppo

coreConfig

string

SÌ

Configurazione principale

Per una descrizione più dettagliata, vedere "Valori per la configurazione principale" di seguito.

tasks

object map (nome dell'attività → attività)

SÌ

Le chiavi corrispondono ai nomi delle attività. Le attività vengono elaborate in ordine alfabetico in base al loro nome, indipendentemente dal loro ordine nel file.

. Valori per la configurazione principale
  • "FreeFloating": tutte le attività IEC del gruppo vengono distribuite dinamicamente ai core del processore dal sistema operativo tramite il bilanciamento del carico. In alcune circostanze, le attività possono cambiare kernel frequentemente. L'utente non ha alcun controllo sull'assegnazione

    Questo valore è consigliato per la maggior parte delle applicazioni perché il sistema operativo gestisce automaticamente il bilanciamento del carico.

  • "SequentiallyPinned": tutte le attività IEC del gruppo sono permanentemente legate a diversi core del processore. Se ci sono meno core rispetto ai task, l'associazione inizia dal core 1, continua con il core 2, il core 3, ecc. e torna al core 1, al core 2, ecc. in caso di overflow. L'utente non ha alcun controllo su quale attività è legata a quale core

  • "FixedPinned": tutte le attività IEC del gruppo sono collegate permanentemente a un singolo core del processore. Il sistema di runtime seleziona il core (di solito il core 1). Se più gruppi di attività utilizzano FixedPinned, quindi ogni gruppo di attività è associato a un core diverso. L'assegnazione di solito inizia con il nucleo 1

  • "0", "1", "2",...: tutte le attività IEC del gruppo sono permanentemente legate al core del processore specificato. Se il controller non dispone di questo core, la compilazione fallirà con un

    Per ulteriori informazioni, consultare quanto segue: CODESYS V3: Gruppi di lavoro

Compito

Si tratta di un compito singolo. La chiave dell'ingresso nell'allegato "tasks" oggetto è il nome dell'attività. Il nome deve essere un identificatore IEC valido e univoco all'interno della configurazione. I simboli specifici dell'attività vengono generati

Esempio di "tasks" oggetto

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

Chiave

Tipo

Necessario

Valore predefinito

Descrizione

calls

array of string

SÌ

-

Nomi dei programmi che vengono chiamati in sequenza ogni volta che viene eseguita l'attività. Può essere vuoto.

priority

int

SÌ

-

Priorità dell'attività. Valori più bassi indicano una priorità maggiore.

type

string enum

SÌ

-

Cyclic O Freewheeling

Per una descrizione più dettagliata, vedere "Tipologie di attività" di seguito.

interval

int

NO

0

Tempo di ciclo (in microsecondi)

Rilevante solo per Cyclic compiti

Per Freewheeling compiti, il valore è impostato su 0.

watchdogEnable

bool

NO

false

Attiva il watchdog per l'attività

Nota: la funzione di watchdog non è ancora disponibile.

watchdogTime

int

NO

0

Tempo di timeout del watchdog (in microsecondi)

Rilevante solo quando watchdogEnable ha il valore true

watchdogSensitivity

int

NO

0

Numero di overflow consecutivi tollerati prima dell'attivazione del watchdog. Rilevante solo quando watchdogEnable ha il valore true

. Tipi di attività

Valori validi per type

  • "Cyclic": L'attività esegue ogni numero di microsecondi come definito nella interval chiave.

  • "Freewheeling": L'operazione viene eseguita continuamente e si riavvia non appena il ciclo precedente è completo. Il valore interval viene ignorato.

. Tipi di attività attualmente inaccettabili
  • Al momento non sono accettate le seguenti tipologie di attività: Event, External, E ParentSynchron

  • Tutte le proprietà delle attività elencate in CODESYS 3 attività Al momento non sono accettati, ad eccezione di quelli elencati nella sezione "Tipi di attività" di questa pagina di aiuto.

Importante

Quando si confrontano tasti e tipi, è importante distinguere tra maiuscole e minuscole.

Valori predefiniti per una nuova applicazione

Quando TaskConfiguration.json non esiste, una nuova applicazione inizia con il seguente equivalente:

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

Esempio

Di seguito è riportato un esempio di TaskConfiguration.json file con un gruppo di attività e più attività:

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