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, soltantoFixedPinnedE0sono consentiti.FreeFloating,SequentiallyPinnede ogni indice principale a partire da1vengono rifiutati durante la compilazione.
Dialetto JSON
Formato:
UTF-8I 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 |
|---|---|---|---|
|
| SÌ | Elenco dei gruppi di lavoro L'array può essere vuoto |
|
| Sì (deve essere vuoto: | Riservato per il supporto futuro delle attività relative agli eventi. Attualmente, viene restituito un errore per tutti gli elementi. |
|
| 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 |
|---|---|---|---|
|
| SÌ | Nome visualizzato liberamente scelto per il gruppo |
|
| SÌ | Configurazione principale Per una descrizione più dettagliata, vedere "Valori per la configurazione principale" di seguito. |
|
| 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. |
"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'assegnazioneQuesto 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à utilizzanoFixedPinned, 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 unPer 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 |
|---|---|---|---|---|
|
| SÌ | - | Nomi dei programmi che vengono chiamati in sequenza ogni volta che viene eseguita l'attività. Può essere vuoto. |
|
| SÌ | - | Priorità dell'attività. Valori più bassi indicano una priorità maggiore. |
|
| SÌ | - |
Per una descrizione più dettagliata, vedere "Tipologie di attività" di seguito. |
|
| NO |
| Tempo di ciclo (in microsecondi) Rilevante solo per Per |
|
| NO |
| Attiva il watchdog per l'attività Nota: la funzione di watchdog non è ancora disponibile. |
|
| NO |
| Tempo di timeout del watchdog (in microsecondi) Rilevante solo quando |
|
| NO |
| Numero di overflow consecutivi tollerati prima dell'attivazione del watchdog. Rilevante solo quando |
Valori validi per type
"Cyclic": L'attività esegue ogni numero di microsecondi come definito nellaintervalchiave."Freewheeling": L'operazione viene eseguita continuamente e si riavvia non appena il ciclo precedente è completo. Il valoreintervalviene ignorato.
Al momento non sono accettate le seguenti tipologie di attività:
Event,External, EParentSynchronTutte 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": []
}