W&T collega
Adattatori per TCP/IP, Ethernet, RS-232, RS-485, USB, 20 mA, Fibra ottica di vetro e plastica, http, SNMP, OPC, Modbus TCP, I/O digitale, I/O analogico, ISA, PCI

Conoscenze di base:

Formati di dati e protocolli

Dal semplice byte al protocollo industriale



Cosa sono i dati?

Digitalizzazione, Industria 4.0 o IoT (Internet of Things): alla fine lo scopo è sempre quello che componenti spesso industriali e anche i loro utenti si scambino dati.

Dal punto di vista degli utenti questi dati possono essere le informazioni più diverse, p. es. temperature, stati di attivazione, pesi, indicazioni di tempo, dettagli di posizionamento e molto altro.

Ma indipendentemente dai contenuti, per l’elaborazione dati elettronica e la tecnica informatica, i dati sono sempre una quantità indeterminata di byte.

Un byte corrisponde a un valore numerico compreso tra 0 e 255.

Scambio di dati significa dunque trasferire dati da A a B


Scambio di dati regolato attraverso protocolli

Affinché il destinatario comprenda i dati che riceve dal mittente, è importante che si determini in che forma vengono trasmessi i dati.

Inoltre si deve definire in sistemi nei quali siano collegati fra loro più componenti, a chi sia destinato un invio di dati. Accanto ai dati di utilizzo effettivamente da trasmettere occorre

Se i dati utili e le informazioni di indirizzamento seguono una struttura predefinita, si parla di protocollo.

In passato per la trasmissione di dati tra componenti industriali si è spesso puntato sui sistemi bus di campo. I bus di campo sono composti seriali tra i componenti coinvolti. Qui si sono affermati molti standard contemporaneamente che si distinguono non solo nel protocollo e nella velocità di trasmissione. Anche la trasmissione fisica nonché le possibilità di connessioni meccaniche utilizzate variano molto.

I più recenti protocolli industriali si distinguono a livello di protocollo nella codifica dei dati, ma come mezzo di trasporto fisico la maggior parte utilizza l’Ethernet TCP/IP.

In questo modo si ha uno standard comune che offre molti vantaggi:

  • si può utilizzare l’infrastruttura presente
  • si possono usare diversi protocolli industriali nella stessa rete l’uno accanto all’altro
  • tecnica di trasmissione uniforme e connettori
  • comunicazione tra più sedi possibile
  • ampliabile a piacere

formati di dati

Nei protocolli che usano Ethernet TCP/IP come standard comune, l’indirizzamento avviene con poche eccezioni già mediante l’indirizzo IP.

Il protocollo industriale effettivo definisce in che forma i dati trasportati vengano trasmessi.

Esistono due formati di dati fondamentali:

  • Testo per le notizie
  • Dati binari

Quando si usa una delle due varianti dipende da diversi fattori.

Dati come testo

In particolare nelle applicazioni basate sul web vengono inviati dati di ogni tipo come testo. Testo significa che le informazioni vengono trasmesse come concatenazione di caratteri leggibili dall’uomo. Ogni carattere occupa un byte.

Dati come segni ASCII


La codifica in passato è avvenuta secondo lo standard ASCII. La correlazione di quale carattere corrisponda a quale valore numerico è definita nella tabella ASCII (ASCII = American Standard Code for Information Interchange).

Tabella ASCII


La particolarità in passato era che erano utilizzati solo 7 degli 8 bit di un byte disponibili, pertanto il numero di segni utilizzabili era limitato a 128 caratteri leggibili.

Nuovi standard come UTF8 superano questa limitazione e consentono persino di utilizzare due byte per un carattere.

Accanto a contenuti di testo formulati liberamente si sono affermati formati di testo standardizzati nei protocolli web e industriali:

  • XML
  • JSON

Desideriamo illustrare brevemente entrambi i formati.

XML - Extensible Markup Language
XML è un cosiddetto linguaggio di demarcazione. Gli effettivi dati utili vengono incorporati in tag. I tag sono denominazioni dei rispettivi valori e contenuti. Ogni tag comincia con una parentesi uncinata di apertura e termina con una di chiusura.

Ogni costrutto XML comincia con un tag di avvio, in cui sia indicata almeno la versione XML. Sono possibili anche altri parametri come p. es. la codifica di segni utilizzata:

<?xmlversion="1.0" encoding="UTF-8"?>

Dopo il tag di avvio seguono gli altri contenuti incorporati in tag. Tutti i contenuti ad eccezione del tag di avvio presentano un tag di apertura e uno di chiusura con lo stesso nome. Tuttavia la denominazione del tag di chiusura inizia con uno slash ("/").

Esempio:

<inhalt>irgendetwas</inhalt>

XML ammette anche tag racchiusi l’uno nell’altro strutturati secondo categoria. Qui come esempio i valori dei sensori di un termoigrobarometro web W&T:

<?xml version="1.0" encoding="UTF-8"?>
<webio>
  <iostate>
    <sensor>
      <name>Temperatur</name>
      <number>0</number>
      <unit>°C</unit>
      <value>23.900000</value>
    </sensor>
    <sensor>
      <name>rel. Feuchte</name>
      <number>1</number>
      <unit>%</unit>
      <value>36</value>
    </sensor>
    <sensor>
      <name>Luftdruck</name>
      <number>2</number>
      <unit>hPa</unit>
      <value>992</value>
    </sensor>
  </iostate>
</webio>

In XML le rientranze non sono obbligatorie, ma frequenti perché questo migliora notevolmente la leggibilità.

Il vantaggio in XML come formato di trasmissione sta nel fatto che sia l’essere umano sia la macchina o un programma di valutazione sono in grado di leggere bene i contenuti.

Lo svantaggio è il volume di dati grezzo molto elevato per pochi contenuti.

JSON - JavaScript Object Notation
La sintassi, ovvero la struttura di JSON, si basa su una quantità parziale della sintassi JavaScript.

JSON utilizza coppie da nomi e valore/contenuto per la codifica dei dati.

Esempio: "contenuto": "qualcosa"

Anche JSON ammette una struttura di contenuti racchiusi gli uni negli altri strutturata per gerarchia. Qui come esempio ancora una volta i valori dei sensori di un termoigrobarometro web W&T:

{
  "iostate":
  {
    "sensor":
    [
      {
        "name": "Temperatur",
        "number": 0,
        "unit": "°C",
        "value": 24.1
      },
      {
        "name": "rel. Feuchte",
        "number": 1,
        "unit": "%",
        "value": 35.9
      },
      {
        "name": "Luftdruck",
        "number": 2,
        "unit": "hPa",
        "value": 991.8
      }
    ]
  }
}

sia i nomi sia i valori sono incorporati sopra fra virgolette. Un’eccezione sono i valori numerici. Qui si possono evitare le virgolette.

Coppie nome/valori sono separati da virgole.

Coppie nome/valori appaiati devono essere riuniti in gruppi con parentesi graffe.

I gruppi appaiati possono costituire un array e vengono riuniti all’interno di parentesi quadre separati da virgole.

È disponibile una descrizione dettagliata del formato JSON in https://www.json.org.

Dal punto di vista del volume di dati JSON è notevolmente più compatto rispetto a XML e nonostante ciò ben leggibile da esseri umani e macchina.

Codifica Base64
Base64 è un procedimento che codifica e decodifica i dati binari in una catena di caratteri ASCII leggibili. In questo modo si possono trasportare contenuti binari anche con formati di trasmissione basati su testo.

Il procedimento è veramente semplice. Vengono trasmessi rispettivamente tre byte del codice binario in bit su quattro numeri di 6 bit.

Codifica Base64

Ognuno dei quattro numeri viene attribuito al carattere corrispondente al valore in base alla seguente tabella. Così vengono sostituiti tre byte binari con quattro caratteri, quindi segni leggibili.

Codifica Base64

Questo processo è ripetuto fino a quando non sono codificati tutti i byte binari. Se alla fine rimangono singoli byte, vengono aggiunti byte di riempimento, per codificare gli ultimi tre byte. I byte di riempimento hanno il valore 0.

Per riuscire a selezionare di nuovo i byte di riempimento durante la successiva decodifica, quindi il recupero dei byte binari originali, viene aggiunto alla catena di caratteri codificati alla fine un carattere "=" per ogni byte di riempimento.

I più frequenti casi di applicazione per la codifica Base64 sono applicazioni basate sul web ed e-mail.

Dati binari

I dati sono sempre un determinato numero di byte.

Quale byte assolve un determinato scopo in un punto qualunque, viene definito o attraverso un protocollo standardizzato o l’applicazione. Dietro uno o più byte si cela un valore, una serie di valori, una catena di caratteri o anche un richiamo di funzione.

Qui possono essere trasmessi singoli valori in un invio di dati. Spesso si lavora però anche con strutture di dati in cui si definisce in quale punto della catena di byte trasmessa viene archiviato un determinato valore.

Qui come esempio dati di un richiamo di funzione Modbus. Il codice Function è p. es. sempre situato nell’8° byte:

Struttura del pacchetto Modbus-TCP

un altro processo comune per struttura dati binaria è TLV che sta per Type Length Value. Vari contenuti di diverse dimensioni possono essere trasmessi in serie in un invio di dati.

Per ogni contenuto vale la sequenza:

  • Type - di che tipo di contenuto si tratta?
    Determinazione del tipo definita dall’applicazione
  • Length - quanti byte comprende il contenuto?
  • Value - Byte del valore e del contenuto.

Se dietro a una serie di questo genere ci sono altri byte, è la prossima sequenza.

Ecco un semplice esempio:

Struttura pacchetto TLV

I byte trasmessi contengono due valori: un valore da 16 bit (2 byte) e un valore da 32 bit (4 byte).

Il vantaggio della trasmissione di dati binaria è la struttura molto compatta dei dati.


Basi sui comuni protocolli industriali

Prodotti per applicazioni industriali con protocolli standard

in alto