La base tecnica di ogni dispositivo fieldbus, che viene configurato nell'albero dei dispositivi, è il driver di I/O.
Il driver I/O è il collegamento tra lo stack di bus di campo, l'applicazione IEC e l'IDE. Il driver configura lo stack del bus di campo a partire dai dati della configurazione del dispositivo. Mostra la diagnosi, fornisce un'API per l'applicazione IEC ed è responsabile della mappatura degli I/O (vedere il capitolo "Mappatura degli I/O").
Questo capitolo fornisce una breve panoramica delle funzionalità di base dei dispositivi driver di I/O, senza discutere i dettagli di sistemi bus specifici. Inoltre, vengono fornite alcune raccomandazioni per la configurazione.
Attività del ciclo bus
Il task del ciclo del bus è il task IEC nel cui contesto viene eseguito il driver di I/O. Alcuni driver di I/O utilizzano più task: di solito un task critico in tempo reale (con priorità alta), utilizzato per il trasferimento dei dati di I/O, e un altro task con priorità bassa per compiti quali la valutazione della diagnostica e l'esecuzione di servizi aciclici del sistema bus.
Nei sistemi bus critici in tempo reale, è necessario garantire che nel contesto di questo task bus non vengano eseguite operazioni che interrompano il clock del bus a causa del tempo di esecuzione.
Il task bus può essere configurato nella finestra di dialogo I/O mapping del dispositivo I/O driver. Si noti che le impostazioni del dispositivo padre vengono ereditate per impostazione predefinita. Se questo dispositivo è il PLC, l'impostazione del PLC si applica al task ciclo bus.




AVVISO

Se questa impostazione non è impostata, viene utilizzato il task con il tempo di ciclo più breve. In questo modo, un driver di I/O non in tempo reale può essere eseguito involontariamente nel contesto del task di un driver critico in tempo reale, interrompendone la comunicazione. Per diagnosticare questi problemi di comunicazione, si consiglia di controllare il monitoraggio delle attività.
Mappatura I/O
Una funzione essenziale di un driver di I/O è quella di aggiornare la mappatura degli I/O. Ciò significa la mappatura dei dati di I/O del sistema bus alle variabili dell'applicazione IEC (e viceversa).
I dati di ingresso/uscita vengono mappati ciclicamente mediante operazioni di copia e conversione in entrambe le direzioni dall'immagine di memoria interna del sistema bus alle variabili IEC assegnate agli indirizzi %I e %Q.
Per il driver I/O non c'è alcuna differenza interna se per questa mappatura I/O vengono usati nomi simbolici o accesso "diretto" agli indirizzi %I e %Q. Per la manutenibilità dell'applicazione, si raccomanda di utilizzare sempre nomi di variabili descrittivi (esempio: variabile "TemperatureReactor" invece di accesso "%IW117").
L'aggiornamento della mappatura degli I/O può essere impostato con «Aggiorna sempre le variabili» (a livello globale in «Impostazioni PLC» o individualmente per ciascun dispositivo nella finestra di dialogo Mappatura I/O):
-
Disabili:
Vengono mappati solo i dati di I/O utilizzati nell'applicazione.
Questo può migliorare le prestazioni evitando le operazioni di copia, ma può causare confusione se i dati di I/O nella finestra di dialogo della mappatura I/O non vengono aggiornati (i valori sono in grigio). Questa impostazione è consigliata per un'applicazione il cui sviluppo è stato completato.
-
Abilitato 1:
Tutti i dati sono aggiornati.
-
Abilitato 2:
IMPORTANTE:
La disponibilità di questa opzione dipende dalla descrizione del dispositivo.
Attenzione: Solo per uso produttivo in casi particolari.
Di conseguenza, possono verificarsi dati di I/O incoerenti, perché il task del ciclo del bus legge/scrive questi dati mentre il codice applicativo li utilizza in altri task.
Consistenza dei dati di I/O
Il sistema di programmazione consente all'applicazione IEC di utilizzare più task eseguiti in parallelo (per la visualizzazione, i bus di campo o altre POU). Il codice applicativo può accedere ai dati di I/O dal contesto di questi task tramite le variabili IEC mappate. Accedendo agli stessi dati da task diversi, potrebbero verificarsi dati incoerenti o corrotti (ad esempio, a causa dell'interruzione dell'accesso in scrittura).
Il driver I/O garantisce la coerenza dei dati fornendo a ogni task che esegue un ciclo di task una mappatura coerente - un'istantanea, per così dire - di tutti i dati di I/O utilizzati.
Quindi un codice come quello dell'esempio seguente non può causare problemi: (Nota "DIV di ZERO")
IF(inputData <> 0) THEN // inputData is mapped to %I
x := y / inputData; // This will never result in DIV_BY_ZERO Exception
END_IF // inputData is not updated by bus cycle during execution of POU




AVVISO

Con l'opzione «Aggiorna sempre le variabili» impostata su «Abilitato 2 - sempre nel task del ciclo bus», questo meccanismo viene sovrascritto. Di conseguenza, il codice dell'applicazione deve tenerne conto.
Servizi
Oltre alle funzionalità di base, alcuni driver di I/O forniscono servizi che possono essere richiamati dall'IDE, come la funzione di scansione del dispositivo o l'impostazione degli indirizzi del dispositivo.
Raccomandazioni generali
Impostazioni:
-
«Impostazioni del PLC»:
Aggiornamenti I/O in stop: Il ciclo del bus continua anche quando l'applicazione è ferma, ad esempio quando l'applicazione si trova in un breakpoint di debug. In questo modo, la comunicazione con i dispositivi di campo viene mantenuta e può essere continuata immediatamente senza interruzioni.
-
«Impostazioni del PLC»: «Aggiornare sempre le variabili» è impostato su «Abilitato 1 - utilizza il task ciclo bus se non viene utilizzato in nessun task»:
Durante lo sviluppo dell'applicazione, è utile vedere i valori di tutti i dati di I/O.
Configurazione del compito:
-
Soprattutto per i sistemi di bus di campo critici in tempo reale, come Profinet, EtherCAT o CAN, che dipendono dal mantenimento di un orologio di invio/ricezione esatto, si raccomanda di utilizzare un task di ciclo bus separato con priorità elevata. Per i compiti meno critici in termini di tempo reale (ad esempio, la visualizzazione) si dovrebbe selezionare una priorità significativamente più bassa rispetto al compito del ciclo bus.
-
Per ottenere la massima produttività di I/O con il minor offset possibile, è possibile eseguire POU separati nel task bus del sistema fieldbus. Tuttavia, questi devono soddisfare i requisiti di tempo reale: ad esempio, non possono essere eseguiti accessi ai file o funzioni di socket bloccanti, ma solo il calcolo dei dati di uscita.
Driver e task di I/O multipli (risoluzione dei problemi)
Se è necessario sincronizzare l'accesso coerente ai dati di I/O da parte di più task e possibilmente da più istanze del driver di I/O, in determinate circostanze si possono verificare interferenze reciproche indesiderate tra il bus e il task applicativo.
Ciò avviene, ad esempio, quando il carico generale del sistema è elevato o quando i dati di I/O del sistema di bus di campo critico in tempo reale vengono utilizzati insieme ai dati di I/O di un sistema di bus locale lento e bloccante nello stesso task.
In caso di interferenze impreviste nella comunicazione, con i bus di campo particolarmente critici per il tempo reale (EtherCAT, Profinet, CAN), il monitoraggio dell'attività deve essere esaminato per verificare la presenza di un jitter molto elevato o di valori anomali nel tempo di ciclo (valore massimo rispetto al valore medio). L'elenco dei task fornisce informazioni dettagliate sull'uso dei dati di I/O nei diversi task.
Può essere possibile evitare di utilizzare i dati di I/O provenienti da sistemi di bus diversi in uno stesso task o ridurre il numero di task di I/O.