Protocolli e dati

ASDU, cause di trasmissione e indirizzi IEC 60870

Leggi un elenco di punti IEC 60870-5-101 o 104: tipo, causa, indirizzo comune e IOA, con la decodifica byte per byte di una trama IEC 104.

Ogni messaggio IEC 60870-5-101 o 104 che trasporta dati contiene un'ASDU, ossia un'unità dati del servizio applicativo. L'ASDU indica come è codificato il valore (tipo), perché è stato inviato (causa di trasmissione), la stazione o il dispositivo logico (indirizzo comune) e il punto (indirizzo dell'oggetto informativo). Gli errori di mappatura nascono spesso dal considerare uno solo di questi elementi: un IOA corretto sotto l'indirizzo comune sbagliato, un numero in virgola mobile letto come intero scalato oppure una risposta a un'interrogazione registrata come evento.

I campi

IEC 60870-5-101 definisce l'identificatore dell'unità dati all'inizio di ogni ASDU. IEC 60870-5-104 usa lo stesso identificatore con dimensioni dei campi fisse.

CampoContenutoDimensione in IEC 104Opzioni in IEC 101
Identificazione del tipoCodifica degli oggetti informativi1 byte1 byte
Qualificatore di struttura variabileNumero di oggetti, da 0 a 127 (bit da 1 a 7), e bit SQ (bit 8)1 byte1 byte
Causa di trasmissioneCausa, da 0 a 63 (bit da 1 a 6), bit P/N (bit 7) e bit T (bit 8)1 byte1 byte
Indirizzo dell'originatoreStazione di controllo che ha causato il messaggio, 0 se non utilizzato1 byte0 o 1 byte
Indirizzo comune (CA)Stazione o dispositivo logico2 byte1 o 2 byte
Indirizzo dell'oggetto informativo (IOA)Punto3 byte per oggetto1, 2 o 3 byte
Elementi informativiValore, qualità ed eventuale marca temporaleDipende dal tipoDipende dal tipo

In IEC 101 le dimensioni della causa, dell'indirizzo comune e dell'indirizzo dell'oggetto sono parametri di sistema nell'elenco di interoperabilità: le due estremità devono concordarle. Una dimensione errata sposta tutti i byte successivi. Rinumerare i punti non risolve il problema.

Il bit SQ cambia la disposizione degli oggetti. Con SQ = 0, ogni oggetto porta il proprio IOA. Con SQ = 1, l'ASDU porta un solo IOA, seguito dagli elementi di quell'indirizzo e degli indirizzi successivi in ordine. Un'ASDU di tipo 13 con SQ = 1, 10 oggetti e IOA 2001 porta i valori degli IOA da 2001 a 2010 usando solo 3 byte di indirizzo. Un decodificatore che si aspetta un IOA prima di ogni valore interpreta i byte dei float come indirizzi; tutti i valori dopo il primo risultano errati.

Il bit T segnala un messaggio di prova. Non memorizzare un valore con T = 1 come dato di processo. L'indirizzo dell'originatore identifica la stazione di controllo che ha inviato un comando e vale 0 quando non è utilizzato. Se due centri di controllo condividono una stazione periferica, ciascuno può impostare il proprio indirizzo di originatore. La stazione periferica lo copia nelle conferme, così ogni centro può associarle ai propri comandi.

Una trama sulla linea

Questa trama I IEC 104 trasporta una potenza attiva di 2.340,5 kW dall'indirizzo comune 12, IOA 1001, inviata perché il valore è cambiato:

68 12 00 00 00 00 0D 01 03 00 0C 00 E9 03 00 00 48 12 45 00

ByteCampoDecodifica
68Byte inizialeInizio di una trama IEC 104
12LunghezzaSeguono 18 byte
00 00 00 00Campo di controlloFormato I, numeri di sequenza di invio e ricezione pari a 0
0DIdentificazione del tipo13, M_ME_NC_1
01Qualificatore di struttura variabileSQ = 0, 1 oggetto
03Causa di trasmissione3, spontanea; P/N = 0, T = 0
00Indirizzo dell'originatore0, non utilizzato
0C 00Indirizzo comune12
E9 03 00IOA1001 (0x0003E9)
00 48 12 45Float corto0x45124800, 2.340,5
00Descrittore di qualità0, nessun indicatore di qualità impostato

Ogni campo di più byte viene trasmesso con il byte meno significativo per primo. Se un decodificatore legge i campi nell'ordine opposto ottiene l'indirizzo comune 3.072 (0x0C00) e l'IOA 15.270.656 (0xE90300). Interpreta il float come 6,6 × 10⁻³⁹, un valore che uno storico può memorizzare senza segnalare errori. Il convertitore IEEE 754 mostra i byte di qualsiasi valore. La guida a marche temporali e qualità spiega i bit di qualità e la marca temporale.

Identificazione del tipo

Il tipo stabilisce come decodificare gli elementi informativi. La clausola 7.3 di IEC 60870-5-101 definisce ogni tipo. Alcuni tipi comuni:

TipoNomeContenuto
1M_SP_NA_1Stato a punto singolo: 0 spento, 1 acceso
3M_DP_NA_1Stato a doppio punto: 1 spento, 2 acceso, 0 intermedio, 3 indeterminato
9M_ME_NA_1Valore misurato, normalizzato (16 bit)
11M_ME_NB_1Valore misurato, scalato (16 bit)
13M_ME_NC_1Valore misurato, virgola mobile corta (32 bit)
15M_IT_NA_1Totali integrati (contatori)
30, 31, 36, 37M_SP_TB_1, M_DP_TB_1, M_ME_TF_1, M_IT_TB_1Tipi 1, 3, 13 e 15 con marca temporale CP56Time2a
45, 46C_SC_NA_1, C_DC_NA_1Comandi singoli e doppi
50C_SE_NC_1Comando di setpoint in virgola mobile corta
100C_IC_NA_1Comando di interrogazione generale
101C_CI_NA_1Comando di interrogazione dei contatori
103C_CS_NA_1Comando di sincronizzazione dell'orologio

Il prefisso M indica dati di monitoraggio inviati dalla stazione periferica. Il prefisso C indica comandi diretti a essa. IEC 104 usa solo la marca temporale CP56Time2a di 7 byte. I tipi IEC 101 con marca temporale CP24Time2a di 3 byte, come 2, 4 e 14, non sono presenti in IEC 104.

I tipi 9 e 11 trasportano un intero con segno a 16 bit, non un valore fisico. Per il tipo 9, dividi l'intero per 32.768 per ottenere una frazione da -1 a +0,99997, poi moltiplicala per il valore di fondo scala. Con un fondo scala di 1.000 kW, il valore grezzo 16.384 equivale a 0,5, cioè 500 kW. Per il tipo 11, l'intero è il valore moltiplicato per un fattore concordato: 2.340,5 kW con fattore 10 vengono trasmessi come 23.405. Nessuno dei due tipi trasporta il proprio fondo scala o fattore. Un ricevitore con il fattore sbagliato produce un numero plausibile ma errato.

Neppure un tipo in virgola mobile trasporta l'unità. Un valore di 2.340,5 nel tipo 13 potrebbe essere in kW, kVA o A. L'unità, la convenzione del segno e il punto di misura devono figurare nell'elenco dei punti concordato tra le parti.

Causa di trasmissione

Cause di trasmissione comuni:

CausaSignificato
1Periodica o ciclica
3Spontanea: il valore è cambiato
5Richiesta
6Attivazione: un comando
7Conferma dell'attivazione
8, 9Disattivazione e relativa conferma
10Termine dell'attivazione: il comando è terminato
11, 12Informazione di ritorno causata da un comando remoto o locale
20Risposta a un'interrogazione generale della stazione
Da 21 a 36Risposta a un'interrogazione dei gruppi da 1 a 16
37Risposta a un'interrogazione generale dei contatori, per i totali integrati
44Identificazione del tipo sconosciuta
45Causa di trasmissione sconosciuta
46Indirizzo comune sconosciuto
47Indirizzo dell'oggetto informativo sconosciuto

Leggi la causa insieme al tipo e al bit P/N. La causa 7 con P/N = 1 è una conferma negativa: la stazione periferica ha rifiutato il comando. La guida ai comandi segue un comando attraverso le varie cause.

Indirizzi

Un punto è identificato dall'indirizzo comune e dall'indirizzo dell'oggetto informativo insieme, su una connessione. Il tipo non fa parte dell'indirizzo. L'IOA 1001 può esistere sotto l'indirizzo comune 12 e sotto l'indirizzo 13, oltre che su ogni RTU di un parco impianti. L'indirizzo IP (IEC 104) o l'indirizzo di collegamento (IEC 101) identifica la connessione, non il punto.

Una connessione IEC 104 può servire più indirizzi comuni. Il valore più alto, 65535 con un campo di 2 byte oppure 255 con un campo di 1 byte, è l'indirizzo globale. Una stazione di controllo lo usa per funzioni estese all'intera stazione, come l'interrogazione generale, e ogni indirizzo comune risponde con il proprio indirizzo. Non tutte le funzioni possono usarlo. La stazione periferica lib60870 rifiuta un comando di lettura (tipo 102), un comando di prova (tipi 104 e 107) o un comando di acquisizione del ritardo (tipo 106) inviato all'indirizzo globale, con causa 46.

L'elenco di interoperabilità specifica anche se l'IOA è strutturato o non strutturato. Alcuni strumenti ed elenchi di punti dei fornitori mostrano un IOA strutturato come tre ottetti decimali. L'IOA 1001 è 0x0003E9. Può apparire come 0.3.233 in uno strumento e come 233.3.0 in un altro. Converti entrambi gli elenchi in un unico intero prima di confrontarli.

Esempio di voce in un elenco dei punti:

CampoValore
ConnessioneRTU della sottostazione A, 10.40.1.20 porta 2404
Indirizzo comune12
IOA1001
Tipo13, M_ME_NC_1 (float corto, senza marca temporale)
SignificatoPotenza attiva al punto di connessione alla rete
Unità e segnokW, importazione positiva
Banda morta50 kW
Cause attese3 (spontanea, quando la variazione supera la banda morta), 20 (interrogazione generale)

Assegna righe distinte alla potenza misurata, al setpoint di potenza e alla lettura di ritorno del setpoint attivo, anche se i nomi sono simili. La potenza misurata è M_ME_NC_1 nella direzione di monitoraggio. Il setpoint è C_SE_NC_1, tipo 50, nella direzione di comando; la sua conferma arriva sullo stesso IOA con causa 7. La lettura di ritorno del setpoint è un altro punto monitorato, con un IOA proprio.

Verificare il rifiuto oltre all'accettazione

Durante la messa in servizio verifica almeno un punto per ogni tipo presente nell'elenco dei punti. Confronta il tipo decodificato, l'indirizzo comune, l'IOA, la causa, l'unità e il valore con l'elenco concordato.

Poi collega un simulatore di stazione master IEC 104 al posto del sistema di controllo e invia comandi che la stazione periferica deve rifiutare. Esegui queste prove durante il collaudo, prima che la stazione periferica comandi l'impianto in esercizio.

  1. Invia un tipo di comando non supportato dalla stazione periferica. Attendi la causa 44.
  2. Invia un comando supportato con causa 3 invece di 6. Attendi la causa 45.
  3. Invia un comando a un indirizzo comune non servito. Attendi la causa 46.
  4. Invia un comando a un IOA non configurato. Attendi la causa 47.

Una stazione periferica che risponde restituisce la richiesta con la nuova causa e il bit P/N impostato. Il comportamento con un indirizzo comune sconosciuto varia. La stazione periferica lib60870 restituisce la causa 46 solo se l'applicazione comunica alla libreria quali indirizzi comuni esistono. Alcune stazioni scartano la richiesta e non rispondono. Registra il risultato atteso di ogni caso nell'elenco di interoperabilità e conserva insieme la revisione dell'elenco dei punti e i risultati delle prove.

Telecontrollo e sistemi EpiSensor

Edge non implementa IEC 60870-5-101 né IEC 60870-5-104. In un sito con un collegamento di telecontrollo, la RTU o il gateway di sottostazione trasporta i punti del gestore di rete e un sistema EpiSensor misura il sito a valle. La guida a IEC 101 e 104 spiega dove si trova questo confine.

Domande frequenti

Che cos'è un'ASDU in IEC 60870-5-104?

L'unità dati del servizio applicativo è la parte del messaggio che trasporta dati di telecontrollo. Inizia con un identificatore dell'unità dati (tipo, qualificatore di struttura variabile, causa di trasmissione, indirizzo dell'originatore e indirizzo comune), seguito da uno o più oggetti informativi con indirizzo e valore.

Che cosa significa la causa di trasmissione 3?

Spontanea: la stazione periferica ha inviato il valore perché è cambiato. La causa 20 indica una risposta a interrogazione generale e la causa 1 una trasmissione periodica o ciclica.

Che cos'è un IOA in IEC 104?

L'indirizzo dell'oggetto informativo è un numero di 3 byte che identifica un punto o una funzione all'interno di un indirizzo comune. Viene trasmesso con il byte meno significativo per primo: l'IOA 1001 appare sulla linea come E9 03 00. Lo stesso IOA può esistere sotto un altro indirizzo comune o su un'altra connessione.

Che cos'è M_ME_NC_1?

È l'identificazione del tipo 13: un valore misurato in virgola mobile corta (32 bit), con un descrittore di qualità e senza marca temporale. La stessa misura con una marca temporale CP56Time2a è M_ME_TF_1, tipo 36.