Se si crea un nuovo progetto o si inserisce un nuovo task nella configurazione dei task , il task viene creato con le "impostazioni di default del task" priorità = 15 e tempo di ciclo = 10 ms. Il watchdog è attivato, impostato su 20 ms e sensibilità = 1.
La gestione del watchdog dipende anche dall'impostazione del parametro della CPU "Comportamento in caso di ciclo mancato":
Questo parametro configura il comportamento di un task in tempo reale se il tempo di elaborazione del task è superiore al tempo di ciclo.
"Avanti" significa: saltare il ciclo saltato e iniziare l'attività nel ciclo successivo in tempo. Questo potrebbe comportare il salto di attività, ma almeno l'attività con priorità più alta viene sempre avviata in tempo, se non viene saltata (= valore predefinito).
"ASAP" significa: iniziare immediatamente l'attività, se possibile.
Questo parametro è valido per tutti i task in tempo reale (priorità 0 ... 15) dell'applicazione PLC.
Esempio 1: impostazioni predefinite del task, tTask - tempo di elaborazione del task in [ms]
|
tAttività |
Par. |
![]() |
|
6 |
Avanti |
|
|
12 |
AL PIÙ PRESTO |
|
|
12 |
Avanti |
Non si verifica alcun watchdog, anche se il tempo di elaborazione del task è più lungo del tempo di ciclo (casi 2 e 3), poiché il tempo di elaborazione è più breve del tempo di watchdog.
Esempio 2: impostazioni del task predefinite, tTask - tempo di elaborazione del task 24 ms, SWD - sensibilità del watchdog
|
SWD |
Par. |
![]() |
|
1 |
Avanti |
|
|
3 |
AL PIÙ PRESTO |
|
|
3 |
Avanti |
Il watchdog si verifica in tutti e tre i casi, poiché il tempo di elaborazione del task è più lungo del tempo di watchdog. A seconda dell'impostazione della sensibilità, il watchdog si attiva dopo 1 o 3 cicli.
Oltre al task watchdog esiste il cosiddetto "watchdog del ciclo omesso" (OMCW). Il watchdog del ciclo di omissione è attivo solo se è stato configurato un watchdog per il task.
Il Watchdog "normale" si attiva solo se il tempo di elaborazione del task supera il valore di Watchdog impostato.
Il watchdog dei cicli omessi, invece, controlla i cicli completamente "falliti". Ad esempio, se lo scheduler ha un problema e il task non esegue più il suo ciclo, il watchdog "normale" non viene attivato. Pertanto, il tempo di esecuzione esegue un ulteriore controllo per verificare se un task è stato eseguito entro il doppio tempo di ciclo o il doppio tempo di watchdog (è valido il maggiore dei due). In caso contrario, viene attivato il watchdog del ciclo di omissione.
Esempio 3: impostazioni predefinite del task, tTask - tempo di elaborazione del task in ms, Clost - cicli persi
|
tAttività |
Cperso |
![]() |
|
6 |
3 ... 6 |
|
|
12 |
3 ... 6 |
|
|
¥ |
2ff |
Il ciclo di watchdog omesso si verifica dopo un tempo di watchdog doppio (2 x 20 ms = 40 ms).
Esempio 4: Due compiti con le seguenti impostazioni:
|
Compito |
Priorità |
Tempo di ciclo [ms] |
Tempo di watchdog [ms] |
Sensibilità |
Parametro |
Tempo di elaborazione dell'attività [ms] |
|---|---|---|---|---|---|---|
|
1 |
10 |
10 |
20 |
1 |
Avanti |
6 |
|
2 |
15 |
50 |
50 |
1 |
30 |
|
Compito |
![]() |
|
1 |
|
|
2 |
Il watchdog del task 2 viene attivato poiché il task non può essere eseguito nel ciclo di lavoro definito.
Esempio 5: Due task con le seguenti impostazioni
|
Compito |
Priorità |
Tempo di ciclo [ms] |
Tempo di watchdog [ms] |
Sensibilità |
Parametro |
Tempo di elaborazione dell'attività [ms] |
|---|---|---|---|---|---|---|
|
1 |
10 |
10 |
20 |
1 |
AL PIÙ PRESTO |
12 |
|
2 |
15 |
30 |
60 |
1 |
6 |
|
Compito |
![]() |
|
1 |
|
|
2 |
Il watchdog del task 2 viene attivato poiché il task non può essere avviato nel ciclo di lavoro definito.
Esempio 6: Due task con le seguenti impostazioni
|
Compito |
Priorità |
Tempo di ciclo [ms] |
Tempo di watchdog [ms] |
Sensibilità |
Parametro |
Tempo di elaborazione dell'attività [ms] |
|---|---|---|---|---|---|---|
|
1 |
10 |
10 |
20 |
1 |
Avanti |
12 |
|
2 |
15 |
30 |
60 |
1 |
6 |
|
Compito |
![]() |
|
1 |
|
|
2 |
Non viene attivato alcun watchdog, ma il task 1 viene eseguito con un ciclo di 20 ms invece del ciclo di 10 ms configurato. Il task 2 viene eseguito alternativamente ogni 20 ms o 40 ms.







