Skip to main content

Dispositivi bus di campo e driver I/O

La base tecnica per ciascun dispositivo bus di campo, configurato nella struttura dei dispositivi, è il driver I/O.

Il driver I/O è il collegamento tra lo stack del bus di campo, l'applicazione IEC e l'IDE. Il driver configura lo stack bus di campo 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 I/O, senza discutere i dettagli di sistemi bus specifici. Inoltre, vengono forniti alcuni consigli per la configurazione.

Compito del ciclo del bus

Il task ciclo bus è il task IEC nel cui contesto viene eseguito il driver I/O. Alcuni driver I/O utilizzano più attività: di solito una attività critica in tempo reale (con priorità alta), utilizzata per il trasferimento dei dati di I/O, e un'altra attività con priorità bassa per attività quali la valutazione della diagnostica e l'esecuzione di servizi aciclici del sistema di autobus.

Con i sistemi bus critici in tempo reale, è necessario assicurarsi che non vengano eseguite operazioni nel contesto di questo task bus che interromperebbero l'orologio del bus a causa del tempo di esecuzione.

Il task bus può essere configurato nella finestra di dialogo I/O mapping del dispositivo driver I/O. Si noti che le impostazioni del dispositivo principale vengono ereditate per impostazione predefinita. Se questo dispositivo è il PLC, la relativa impostazione del PLC si applica nel task del ciclo bus.

Importante

Se questa impostazione di cui sopra non è impostata, viene utilizzata l'attività con il tempo di ciclo più breve. In questo modo, un driver I/O non in tempo reale può essere eseguito involontariamente nel contesto del compito di un driver critico in tempo reale, interrompendone così la comunicazione. Per diagnosticare questi problemi di comunicazione, si consiglia di controllare il monitoraggio dell'attività.

Per ulteriori informazioni, vedere: Scheda: Impostazioni PLC

Mappatura I/O

Una funzione essenziale di un driver I/O è aggiornare la mappatura I/O. Ciò significa la mappatura dei dati 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 della memoria interna del sistema bus alle variabili IEC assegnate agli indirizzi %I e %Q.

Per il driver I/O, non vi è alcuna differenza interna se per questa mappatura I/O vengono utilizzati nomi simbolici o accesso "diretto" agli indirizzi %I e %Q. Per la manutenibilità dell'applicazione, si consiglia di utilizzare sempre nomi di variabili descrittivi (esempio: accesso variabile "TemperatureReactor" anziché "%IW117").

. L'aggiornamento della mappatura I/O può essere impostato con Aggiorna sempre le variabili (a livello mondiale nel Impostazioni PLC o individualmente per ciascun dispositivo nella finestra di dialogo di mappatura I/O):
  • Disabilitato:

    Vengono mappati solo i dati I/O utilizzati nell'applicazione.

    Ciò può migliorare le prestazioni evitando le operazioni di copia, ma può creare confusione se i dati di I/O nella finestra di dialogo di mappatura I/O non vengono aggiornati (i valori vengono quindi visualizzati in grigio). Questa impostazione è consigliata per un'applicazione il cui sviluppo è stato completato.

  • Abilitato 1:

    Tutti i dati vengono aggiornati.

  • Abilitato 2:

    Importante

    La disponibilità di questa opzione dipende dalla descrizione del dispositivo.

    Attenzione: Solo per uso produttivo in casi speciali.

    Di conseguenza, possono verificarsi dati I/O incoerenti, poiché il task del ciclo del bus legge/scrive questi dati mentre il codice dell'applicazione li utilizza in altri task.

Per ulteriori informazioni, vedere: Scheda: <nome dispositivo> Mappatura I/O

Coerenza dei dati di I/O

Il sistema di programmazione consente all'applicazione IEC di utilizzare più attività eseguite in parallelo (per la visualizzazione, bus di campo o altre POU). Il codice dell'applicazione può accedere ai dati I/O dal contesto di queste attività tramite le variabili IEC mappate. Accedendo agli stessi dati da attività diverse, potrebbero verificarsi dati incoerenti o danneggiati (ad esempio, a causa di un accesso in scrittura interrotto).

Il driver I/O garantisce la coerenza dei dati fornendo a ogni attività che esegue un ciclo di attività una mappatura coerente – uno snapshot, per così dire – di tutti i dati I/O utilizzati.

Quindi un codice come nell'esempio seguente non può causare problemi: (Nota "DIV by 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

Importante

Con il Aggiorna sempre le variabili opzione impostata su Abilitato 2 – sempre nel task ciclo bus, questo meccanismo viene ignorato. Di conseguenza, il codice dell'applicazione deve tenerne conto.

Servizi

Oltre alle funzionalità di base, alcuni driver I/O forniscono servizi che possono essere richiamati dall'IDE, come la funzione di scansione dei dispositivi o l'impostazione degli indirizzi dei dispositivi.

Raccomandazioni generali

. Impostazioni:
  • Impostazioni PLC: _cds_icon_checked.png Aggiornamenti I/O in stop:

    Il ciclo del bus continua anche quando l'applicazione viene arrestata, ad esempio quando l'applicazione si trova su un punto di interruzione di debug. In questo modo viene mantenuta la comunicazione con i dispositivi da campo che può essere proseguita immediatamente senza interruzioni.

  • Impostazioni PLC: Aggiorna sempre le variabili è impostato per Abilitato 1: usa l'attività del ciclo del bus se non viene utilizzata in nessuna attività:

    Durante lo sviluppo dell'applicazione, è utile vedere i valori di tutti i dati di I/O.

. Configurazione attività:
  • Soprattutto per i sistemi bus di campo critici in tempo reale come Profinet, EtherCAT o CAN, che dipendono dal mantenimento di un clock di invio/ricezione esatto, si consiglia di utilizzare un task ciclo bus separato con priorità elevata. Per task meno critici in tempo reale (ad esempio visualizzazione) dovrebbe essere selezionata una priorità significativamente inferiore rispetto al task ciclo bus.

  • Per ottenere il massimo throughput I/O con il minor offset possibile, è possibile eseguire POU separate nel task bus del sistema bus di campo. Tuttavia, questi devono poi soddisfare i requisiti in tempo reale: ad esempio, non possono essere eseguite funzioni di accesso ai file o di blocco dei socket, ma ad esempio solo il calcolo dei dati di output.

Più driver e attività di I/O (risoluzione dei problemi)

Se è necessario sincronizzare l'accesso coerente ai dati I/O da più task ed eventualmente da più istanze del driver I/O, in determinate circostanze possono verificarsi interferenze reciproche indesiderate tra il bus e il task dell'applicazione.

Questo è il caso, ad esempio, quando il carico generale del sistema è elevato o quando i dati I/O del sistema bus di campo critico in tempo reale vengono utilizzati insieme ai dati I/O di un sistema bus locale lento e bloccante nella stessa attività .

In caso di interferenza imprevista della comunicazione, con i bus di campo particolarmente critici in tempo reale (EtherCAT, Profinet, CAN), il monitoraggio del task dovrebbe quindi essere prima esaminato per jitter molto grande o valori anomali nel tempo di ciclo (valore massimo rispetto alla media valore). L'elenco delle attività fornisce informazioni dettagliate sull'utilizzo dei dati di I/O in diverse attività.

Potrebbe essere possibile evitare di utilizzare i dati I/O da diversi sistemi bus in uno stesso task o ridurre il numero di task I/O.

Per ulteriori informazioni, vedere: Scheda: Distribuzione attività