Protocollo DLMS, o IEC 62056-21¶
Con il nuovo protocollo standard DLMS (Device Language Message Specification), la comunicazione con i sistemi di metering viene immensamente semplificata. Questo protocollo ha una struttura orientata agli Oggetti che rende possibile leggere con la stessa identica modalità dati applicativi provenienti da contatori di diversi costruttori.
Lo standard IEC 61107 o IEC 62056-21 è uno standard internazionale che descrive il protocollo DLMS per la lettura da parte di un computer dei dati da contatori tariffari di energia elettrica, acqua e gas.
Il protocollo prevede una fase di Sign-On con il contatore durante la quale occorre fornire un codice di accesso (Solitamente il numero di serie del contatore), ed il contatore fornisce una password in uscita che può essere utilizzata per criptare i dati.
Terminata questa fase è possibile richiedere al contatore il valore dei suoi registri utilizzando i codici di identificazione OBIS a 5 caratteri (IEC 62056-61).
Per la famiglia SlimLine abbiamo sviluppato un apposito blocco funzione che automatizza tutte le operazioni, occorre passare il numero di serie del contatore ed il codice OBIS del registro da leggere. Il blocco funzione esegue il Sign-On sul contatore e ritorna il valore del registro indicato.
Interfaccia con il contatore
Per interfacciarsi con il contatore è possibile utilizzare un apposito accoppiatore ottico che si appoggia alla finestra di lettura del contatore e si connette ad una delle porte seriali dello SlimLine (Nella foto l’accoppiatore ISKRA).
Oppure nel caso di contatori predisposti con l’uscita RS485 è possibile connettersi direttamente alla porta RS485 dello SlimLine.
IEC62056_21Rd, IEC62056-21 protocol read¶
Type FB, Library eLLabUtyLib_C030
Type FB | Library eLLabUtyLib_C030 |
Type | Library |
FB | eLLabUtyLib_C030 |
Questo blocco funzione esegue la gestione della lettura di registri da sistemi di metering utilizzando il protocollo IEC62056-21.Questo è un blocco funzione protetto per utilizzarlo occorre richiedere il codice di protezione, vedi protezione funzioni e blocchi funzione. E” comunque possibile utilizzarlo liberamente in modo test per 30 Min.
Occorre in SerialNr definire il numero seriale del contatore (Utilizzato come chiave di accesso alla lettura) e in Register l’indirizzo del registro da leggere secondo la normativa OBIS. Se la lettura ha esito positivo viene attivata l’uscita Done e le variabili MeterCode, Password e Value sono valorizzate con i dati letti dal contatore.
Enable (BOOL) | Attivando l’ingresso viene gestita la lettura del contatore. |
File (FILEP) | Pointer al file della risorsa così come ritornato dalla funzione Sysfopen. |
SerialNr (STRING[16]) | Numero di serie del contatore, viene utilizzato come chiave di accesso. |
Register (STRING[16]) | Indirizzo registro da leggere secondo la codifica OBIS. |
Done (BOOL) | Viene attivato per un loop al termine della acquisizione. |
Fault (BOOL) | Viene attivato per un loop in caso di errore nella sequenza di acquisizione. |
TxString (STRING[32]) | Contiene la stringa di comando inviata al contatore, può essere utilizzato in debug per verificare i comandi inviati. |
RxString (STRING[32]) | Contiene la stringa di risposta ritornata dal contatore, può essere utilizzato in debug per verificare le risposte ricevute. |
MeterCode (STRING[32]) | Contiene stringa con il codice del contatore acquisita durante fase di acceso (Sign-on). |
Password (UDINT) | Contiene valore password acquisita dal contatore durante fase di acceso (Sign-on). |
Value (STRING[32]) | Contiene stringa con valore registro richiesto acquisita dal contatore. |
Codici di errore
In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.
10016010 | Valore di File non definito. |
10016020 | FB protetta, terminato tempo funzionamento in modo demo. |
10016050 | Timeout esecuzione. |
10016070 | Errore case gestione. |
10016100~1 | Errore ricezione tipo da contatore. |
10016110~2 | Errore ricezione password da contatore. |
10016120~2 | Errore ricezione valore parametro da contatore. |
10016200 | Overflow ricezione stringa da contatore. |
Esempi
E” disponibile un programma di esempio Ptp122*000 che esegue la lettura da un contatore di energia di 3 registri. A titolo indicativo diamo un esempio di massima per la lettura di un registro.
Su attivazione dell’ingresso digitale Di00M00 viene eseguita la lettura del registro 1.8.0 (Potenza in Kw). Se la lettura ha esito positivo si attiva per un loop l’uscita digitale Di00M00. Le variabili MeterCode, Password e Value, saranno valorizzate con i valori letti dal contatore.
Definizione variabili |
![]() |
Esempio LD (PTP114A000, LD_IEC62056_21Rd)