Come ripristinare la comunicazione Modbus RTU su ET200SP dopo un’interruzione PROFINET in TIA Portal

Per ripristinare la comunicazione Modbus RTU gestita da un modulo CM PtP su ET200SP decentrato dopo un’interruzione della rete PROFINET, è necessario azzerare manualmente la variabile MB_State presente nel DB di istanza di Modbus_Master (o MB_MASTER). Quando il collegamento PROFINET cade, il blocco di comunicazione interno rimane bloccato in uno stato di errore non gestito autonomamente. Il ripristino automatico si ottiene intercettando l'evento di ritorno della stazione PROFINET tramite l'OB di interruzione di guasto di periferia (OB86) e resettando MB_State = 0.

Indice

Causa tecnica: blocco dello stato di comunicazione in Modbus_Master

Quando un PLC Siemens SIMATIC S7-1500 comunica con dispositivi Modbus RTU mediante un modulo di comunicazione CM PtP (6ES7 137-6AA00-0BA0) installato su un'interfaccia di periferia decentrata ET200SP (6ES7 155-6AU00-0BN0), lo scambio dati avviene attraverso la rete PROFINET IO.

Se il cavo PROFINET viene scollegato o si verifica una perdita temporanea della rete tra l'S7-1500 e l'ET200SP:

  1. L'istruzione Modbus_Master (FB641) interrompe l'esecuzione della sequenza di lettura/scrittura Modbus.
  2. La variabile interna MB_State all'interno del DB di istanza di Modbus_Master rimane bloccata su uno stato di errore attivo generato dalla disconnessione della periferia.
  3. Al ripristino della connessione fisica PROFINET, l'istruzione Modbus_Master non tenta autonomamente una nuova inizializzazione e rifiuta la lavorazione di nuove richieste, ignorando i fronti di salita sul parametro REQ.
  4. Il semplice riciclo del segnale di esecuzione di MB_COMM_LOAD (FB640) non cancella lo stato interno bloccato dell'istruzione Master, rendendo necessario un riavvio STOP/RUN della CPU in assenza di un intervento da programma.

Prerequisiti

Per applicare le procedure di ripristino è necessario disporre di:

  • Hardware: PLC SIMATIC S7-1500 (es. CPU 1511-1 PN 6ES7 511-1AK00-0AB0) collegato via PROFINET a una stazione ET200SP (6ES7 155-6AU00-0BN0) con modulo CM PtP (6ES7 137-6AA00-0BA0).
  • Software: TIA Portal con supporto alle istruzioni MB_COMM_LOAD e MB_MASTER / Modbus_Master.
  • Accesso al progetto: Licenza di ingegneria TIA Portal e autorizzazione al caricamento di blocchi di programma (OB, FB, DB) nella CPU.

Metodo 1: Reset automatico di MB_State tramite OB86

Se usa migliore quando: Si desidera una gestione automatica dell'errore all'interno del programma utente che ripristini la comunicazione non appena l'ET200SP torna online sulla rete PROFINET, senza arrestare il PLC.

Procedura

  1. Aprire il progetto in TIA Portal e accedere alla struttura del progetto nella CPU S7-1500.
  2. Inserire l'Organization Block OB86 ("Rack failure or station failure") nella cartella dei blocchi di programma.
  3. Intercettare l'evento di ritorno della stazione (evento uscente / outgoing event, ovvero quando l'ET200SP riprende la comunicazione con la CPU).
  4. All'interno di OB86 o in un blocco di analisi guasti richiamato da esso, inserire la logica per azzerare la variabile MB_State nel DB di istanza del blocco Modbus_Master:

Structured Text

// Verificare che l'evento corrisponda al ritorno della stazione ET200SP interessata
// Nel contesto dell'evento uscente di OB86:
"InstModbusMasterDB".MB_State := 0;
  1. Compilare i blocchi di programma e scaricare la configurazione nella CPU S7-1500.

Risultato previsto: Alla riconnessione del cavo PROFINET, l'OB86 rileva il rientro della stazione decentrata e azzera il registro di stato interno di Modbus_Master. L'istruzione torna allo stato inattivo (MB_State = 0) e riprende la trasmissione ciclica delle richieste Modbus RTU al primo fronte di salita di REQ.

Verifica: Scollegare la connessione PROFINET verso l'ET200SP, attendere l'allarme di stazione persa, ricollegare il cavo e verificare che i bit DONE, BUSY ed ERROR dell'istruzione Modbus riprendano i loro cicli standard senza impostare l'S7-1500 in STOP.

Limitazione: Questo metodo agisce direttamente sulla variabile d'istanza dell'istruzione. È valido per le versioni delle librerie Modbus RTU che non resettano automaticamente la macchina a stati interna al rientro del bus di campo.

Metodo 2: Re-inizializzazione mediante blocco MB_COMM_LOAD e aggiornamento del campione

Se usa migliore quando: La sequenza di comunicazione richiede anche il re-invio della configurazione della porta seriale (baud rate, parità, time-out) al modulo CM PtP a seguito di una perdita prolungata dell'alimentazione della stazione decentrata.

Procedura

  1. Verificare la versione della libreria di esempio Modbus RTU in uso nel progetto TIA Portal. Se si utilizza una versione precedente (es. 68202723_S7-1500_ModbusRTU_V1d0), aggiornare i blocchi applicativi alla versione più recente resa disponibile da Siemens (es. v1.2 o successive).
  2. Verificare che l'esecuzione di MB_COMM_LOAD sia condizionata al rientro della stazione PROFINET o al rilevamento di un errore permanente su Modbus_Master (ERROR = TRUE con un codice di stato correlato alla mancanza del modulo).
  3. Eseguire la seguente sequenza logica nel programma principale (es. OB1):

    • Rilevare il rientro della stazione PROFINET (tramite OB86 o bit di stato della periferia).
    • Impostare a 0 la variabile MB_State nel DB di istanza di Modbus_Master.
    • Generare un fronte di salita sul parametro REQ dell'istruzione MB_COMM_LOAD.
    • Una volta completata l'inizializzazione (MB_COMM_LOAD.DONE = TRUE), riattivare le chiamate cicliche al blocco Modbus_Master.

Structured Text

// Esempio di sequenza combinata di ripristino in SCL
IF #ProfinetRestored THEN
    "InstModbusMasterDB".MB_State := 0;
    #ExecuteCommLoad := TRUE;
    #ProfinetRestored := FALSE;
END_IF;

"MB_COMM_LOAD_DB"(
    REQ := #ExecuteCommLoad,
    // Altri parametri di configurazione seriale
    DONE => #CommLoadDone,
    ERROR => #CommLoadError
);

IF #CommLoadDone OR #CommLoadError THEN
    #ExecuteCommLoad := FALSE;
END_IF;

Risultato previsto: Il modulo CM PtP viene riconfigurato e la macchina a stati di Modbus_Master viene sbloccata, ripristinando lo scambio dati sulla rete RTU.

Verifica: Monitorare il parametro STATUS di MB_COMM_LOAD fino al valore 16#0000 (completato senza errori) e verificare la successiva esecuzione del ciclo di lettura/scrittura del master Modbus.

Verifica

Il ripristino della comunicazione Modbus RTU dopo un'interruzione della rete PROFINET è eseguito correttamente quando si verificano le seguenti condizioni:

  • Stato della stazione ET200SP: I LED di stato dell'interfaccia IM e del modulo CM PtP indicano un funzionamento normale senza LED di errore (SF/BF spenti).
  • Macchina a stati dell'istruzione: La variabile "InstModbusMasterDB".MB_State torna al valore 0 o aggiorna dinamicamente i propri valori durante la lavorazione dei comandi.
  • Segnali di output di Modbus_Master: Il parametro ERROR torna a FALSE, mentre il parametro DONE genera impulsi regolari ad ogni risposta corretta inviata dagli slave Modbus RTU.
  • Senza intervento manuale: La comunicazione riprende automaticamente entro pochi secondi dalla riconnessione del cavo PROFINET senza richiedere il passaggio della CPU S7-1500 nello stato STOP e successivamente in RUN.

Limitazioni e precauzioni operative

  • Rischio di scrittura su variabili interne di istanza: La variabile MB_State fa parte della struttura interna del blocco di istanza Siemens. Sebbene la modifica sia indicata dal supporto tecnico per superare questo blocco delle versioni software impattate, occorre assicurarsi che l'azzeramento avvenga solo dopo il reale ripristino della rete PROFINET (evento uscente di OB86), per evitare conflitti con la normale esecuzione del blocco.
  • Comportamento dell'OB86: Se l'OB86 non è presente nel progetto S7-1500, il distacco di un nodo PROFINET causa il passaggio della CPU in STOP o la mancata gestione dell'evento di rientro dell'hardware.
  • Compatibilità delle librerie: L'anomalia del blocco dello stato riguarda specifiche revisioni delle istruzioni Modbus_Master (FB641) e relativi blocchi applicativi di esempio. Si raccomanda di verificare sempre la documentazione ufficiale della propria versione di TIA Portal e aggiornare le librerie di comunicazione quando disponibili.

Domande frequenti per ingegneri

Perché il solo azionamento di MB_COMM_LOAD non ripristina la comunicazione?

L'istruzione MB_COMM_LOAD imposta i parametri fisici e di protocollo della scheda di comunicazione CM PtP (baud rate, parità, modalità di interfaccia). Tuttavia, non azzera lo stato di errore interno (MB_State) rimasto attivo nell'istanza dell'istruzione Modbus_Master, la quale continua a rilevare un'interruzione della sequenza precedente.

Cosa succede se non si inserisce l'OB86 nel progetto della CPU S7-1500?

Se la stazione ET200SP si disconnette dalla rete PROFINET e l'OB86 non è presente nella memoria della CPU, il sistema operativo dell'S7-1500 potrebbe passare in modalità STOP (a seconda della configurazione di reazione ai guasti di periferia) oppure non eseguire alcun blocco dedicato all'intercettazione del rientro in servizio della periferia decentrata.

È necessario riavviare la CPU S7-1500 per cancellare il blocco di Modbus_Master se non si modifica la logica?

In assenza della gestione del reset della variabile MB_State o dell'aggiornamento dei blocchi applicativi, il passaggio della CPU da RUN a STOP e nuovamente a RUN rappresenta l'unico modo per re-inizializzare completamente i DB di istanza e sbloccare la comunicazione.

Questo problema si verifica anche se il modulo CM PtP è installato direttamente nel telaio centrale del PLC?

No, l'anomalia descritta è legata alla perdita della rete di comunicazione PROFINET che interconnette il PLC alla periferia decentrata ET200SP. Se il modulo seriale è installato nel rack locale del PLC, la perdita della rete PROFINET non influisce sul bus di schiena locale.

Articoli correlati

Tags correlate

Code: C140

6 respuestas