CORSO DI PROGRAMMAZIONE PLC
LEZIONE 07
TIPI DI DATI, AREE DI MEMORIA E VARIABILI

Lezione gratuita di PLC - tipi di dati e memoria

Bentornato (o benvenuto se per te è la prima volta) al mio corso gratuito di programmazione PLC. Siamo nella lezione numero sette o oggi impariamo cosa sono le aree dati e soprattutto quali tipi di dato i controllori logici programmabili possono gestire.

I programmi per plc, come avviene per tutti i tipi di programmi informatici, sono creati utilizzando istruzioni e dati; senza quest’ultimi non si può scrivere software.

Novità automazione e plc
Ecco gli argomenti della lezione di oggi:
Aggregazione di bit utilizzate nei plc: bit, byte, word, double world, long word.
Tipi di dato dei plc: bool, byte, int, word, dint, float (real), char, string, time ecc.
Esempi di utilizzo dei tipi di dati nei programmi plc.
Le aree dati.
Tipi di dati aggregati.
Array di dati (vettori).

Aggregazione di bit utilizzate nei plc: bit, byte, word, double world, long word.
Nel plc, come in tutte le macchine programmabili, l’unità minima di memorizzazione di un dato o di uno stato si chiama bit, e può assumere i valori zero oppure uno. Questa è l’informazione più elementare che si può rappresentare all’interno della macchina.

Questi bit possono però essere aggregati e considerati a gruppi di otto, ecco che parliamo di byte; un byte è un insieme di 8 bit che ci permette di rappresentare non più uno stato singolo ma ben 255 stati diversi, infatti con otto bit abbiamo 255 combinazioni che questi possono assumere.

Se combiniamo due byte otteniamo una word (parola) che contiene 16 bit, in questo caso il numero di stati che possiamo rappresentare sono 65536.
Mettendo insieme due parole otteniamo una double word (doppia parola) che può rappresentare più di quattro milioni di stati, e procedendo possiamo anche avere una long word che contiene veramente tante ma tante combinazioni di bit.
Nella prossima immagine vediamo riassunta l’aggregazione dei bit nei vari tipi di dato.
Aggregazione dei bit nei plc
Tipi di dato dei plc: bool, byte, int, word, dint, float (real), char, string, time ecc.
Dopo aver visto i tipi di aggregazione dei bit nelle macchine e non solo nei plc, vediamo invece come queste unità di memorizzazione bit vengono interpretate; infatti per poter essere utili nel nostro programma plc questi dati devono assumere un significato.
Per esempio un bit rappresentare lo stato di un allarme o di un comando, una double word un numero reale che rappresenta una temperatura, e così via.

Nella prossima immagine possiamo vedere come i bit, i byte, le parole e così via, possono essere interpretate a nei plc Siemens.
Tipi di dati nei plc Siemens

Come si vede nella tabella sopra, un bit diventa un bool (booleano) e rappresenta lo stato on oppure off. Il range di valori va da 0 (falso) a 1 (vero).

Ogni tipo di dato occupa un certo numero di bit e può essere interpretato per rappresentare ciò che ci serve nel plc.
Oltre ai dati di tipo più comune troviamo nella tabella anche i dati particolari come quelli del tempo (S5TIME e TIME) che sono utilizzati per i timer; possiamo anche avere dati composti come TIME_OF_DAY e CHAR utilizzati per rappresentare caratteri.
Tra i tipi di dato più utilizzati nei programmi, oltre ovviamente ai tantissimi bit, troviamo le parole per rappresentare numeri interi, i reali (real o float) per numeri con la virgola, e i dati S5TIME.

Esempi di utilizzo dei tipi di dati nei programmi PLC.
Per comprendere meglio come utilizzare i tipi di dati nei programmi PLC possiamo fare degli esempi prendendo la classica applicazione nel settore d’automazione dove ci sono apparecchiature come valvole, motori, serbatoi e sonde ti temperature; è il caso di varie industrie tra le quali quella alimentare.

Come definiremmo i dati e cosa potrebbero significare per noi? Vediamolo subito:
Una variabile booleana potrebbe rappresentare lo stato di una valvola (comandata oppure no). Allo stesso modo due variabili sempre di tipo bool potrebbero essere il nostro comando di apertura e di chiusura della stessa, e un altro bit potrebbe rappresentare il suo stato d’allarme.

Poi potremmo avere due valori reali per rappresentare la temperatura misurata da una sonda all’interno di un serbatoio, e il suo set point (valore che vogliamo essa raggiunga); questi due valori potranno essere considerati con uno o due decimali.

Con un dato di tipo stringa (che poi è una array o vettore di caratteri) potremmo rappresentare il nome del lotto di produzione, e con un intero INT il numero di batch da produrre.

Un tempo di miscelazione potrebbe essere rappresentato con un dato di tipo S5TIME (ricordo che stiamo facendo esempi con plc Siemens ma il concetto non cambia con altri plc).

Come vedi possiamo facilmente tradurre i tipi di dato in qualcosa che rappresenta lo stato dell’impianto e dei processi. Nella prossima figura vediamo la definizione dei dati come ipotizzato nel nostro esempio.

Tipi di dato PLC associati alle variabili fisiche impianto

Le aree dati nei PLC.

Dove vengono memorizzate le variabili nei plc? A seconda del tipo di plc, le variabili, così come il programma, possono essere memorizzate nella memoria interna dello stesso oppure su schede di memoria come le SD, le SDHC e altre. La memoria conterrà i dati definiti da noi per programmare, i dati del programma (il programma in fondo occupa memoria e viene tradotto nel plc in bit), i dati di configurazione del sistema contenente l’hardware, i rack remoti, e le apparecchiature in rete con cui scambiare dati e così via.

Ogni cosa necessaria al funzionamento del sistema e dei compiti che dovrà svolgere sono memorizzati da qualche parte.

Nella prossima immagine vediamo uno schema che rappresenta in maniera semplificata come funziona il plc quando esegue il programma: egli avrà accesso alle aree di memoria per eseguire le istruzioni ed elaborare gli ingressi e le uscite, appoggiandosi sulle aree di memoria utente.

Le aree di memoria del PLC

A seconda del plc, le aree di memoria possono essere dedicate oppure libere, in questo senso nei plc più evoluti si sta diffondendo l’apertura delle aree dati che permette al programmatore di utilizzarle nel modo in cui meglio crede e senza vincoli.

Per fare un esempio, tradizionalmente i plc contenevano aree di memoria dedicate chiamate nell’ambiente Siemens “Marker o Merker”, oppure “DB”.
Allen Bradley a sua volta permetteva di creare aree dedicate al singolo tipo di dato, per esempio un file “B3” per indicare aree dati di bit, T4 per i timer, S2 per gli stati.
Nei plc Texas si avevano i relè (bool) chiamati C e le parole invece V e così via.

Ecco nella prossima immagine un esempio di configurazione memoria dedicata nei plc Allen Bradley, ogni “file” contiene un solo tipo di dati.

Aree di memoria nel PLC 5 Allen Bradley
Se prendiamo un PLC Allen Bradley moderno possiamo configurare la memoria a piacimento dando i nomi simbolici che riteniamo più opportuno. Nella prossima immagine vediamo una schermata con alcune variabili definite in questo modo.
Definizione variabili in un PLC Allen Bradley moderno

Naturalmente il modo di configurare le variabili e le schermate nei software di programmazione plc cambiano a seconda dell’ambiente di sviluppo, tuttavia i concetti che stiamo imparando sono sempre validi.

Tipi di dati aggregati nei plc.
I plc moderni ci permettono di configurare anche gruppi di variabili, in questo caso parliamo di tipi di dati utente (user data types). Con questa possibilità possiamo rappresentare ancora meglio il nostro impianto e i nostri processi, poiché raggruppare tutte le variabili che riguardano un oggetto ci permette di scrivere il programma più velocemente e renderlo più chiaro.

Facciamo un esempio tornando alla nostra ipotetica valvola: invece di definire diversi tag (variabili) per rappresentare gli stati della stessa, possiamo definire un tipo di dati che chiamiamo a piacimento, come proprio “valvola”. Questa definizione somiglierà a qualcosa come ciò che vediamo troviamo nelle prossime righe.

Type valvola
 Pulsante di start: bool
 Pulsante di stop: bool
 Uscita: bool
 Allarme: bool
End Type.

Una volta definito il tipo “valvola”, esso potrà essere utilizzato per definire variabili che rappresentano tutte le valvole di quel tipo presenti nella nostra installazione; vediamo come:

V1: valvola
V2: valvola
V3: valvola
e così via.

Possiamo definire strutture di dati utente molto complesse, per rappresentare per esempio un oggetto come un serbatoio o addirittura una macchina intera; in questo caso potremmo definire un tipo di dati come vediamo nella prossima immagine.

Esempio di dati strutturati nel PLC

Come si vede dalla figura sopra, tutto ciò che ci serve per visualizzare ed elaborare lo stato di un serbatoio nel nostro impianto è contenuto nel tipo di dati definito. Se per esempio sull’impianto abbiamo dieci tank dello stesso tipo, possiamo definire dieci variabili di tipo serbatoio.

Quali vantaggi ci porta tutto questo? Immaginiamo di costruire una routine parametrizzata che ci permette di elaborare le procedure passando a essa il nome del serbatoio: non avremo più bisogno di scrivere dieci pezzetti di programma identici cambiando ogni volta le nove variabili contenute nel tipo di dati.

Nella stesura del programma avremo una sola volta le linee di codice che elaborano il processo del serbatoio e dieci richiami.

Tutto questo lo vediamo riassunto nella prossima immagine.

Esempio di utilizzo funzioni nel PLC

Array di dati plc (vettori).

Nei plc possiamo anche definire dei vettori di dati, ovvero insiemi di dati aggregati in modo monodimensionale, bidimensionale e a più dimensioni. Per esempio possiamo creare un vettore di interi, di reali, ma anche di tipi di dati utente; come nel caso appena visto potremmo definire un vettore chiamato serbatoi_linea di “serbatoio”.

serbatoi_linea: serbatoio[10] definisce un vettore di dieci variabili di tipo serbatoio. A cosa serve questo? Si intuisce che nel programma, invece di richiamare dieci volte la routine di gestione (una per ogni serbatoio), potremo richiamarla passando di volta in volta un “indice” che identifica il serbatoio all’interno del vettore. Ecco come avverrebbe il tutto nelle prossime righe.

Definizione vettore: serbatoi_linea: serbatoio[10]

Chiamate di programma:

indice=indice +1 “incrementiamo l’indice”

gestserb(serbatoi_linea[indice]) “richiamiamo la routine di gestione passando il numero di serbatoio”

ritorno “passa a incrementare l’indice sopra”.

Per l’esempio ho utilizzato un linguaggio di tipo strutturato ma le stesse istruzioni le possiamo editare in qualsiasi linguaggio di programmazione per plc.

Riepilogo delle nozioni:

Terminiamo questa lezione riassumendo tutto ciò che abbiamo imparato:

I dati nel plc sono composti da bit che si aggregano in byte, parole, doppie parole e così via.

I dati vengono memorizzati in apposite aree nella memoria interna o su schede di memoria.

I dati nel plc sono di vario tipo e li interpretiamo come più ci è utile.

Possiamo aggregare dati e creare dei tipi di dato personalizzato per rappresentare meglio i nostri processi.

Possiamo creare array di dati (vettori) per elaborare velocemente molte variabili dello stesso tipo, usando un indice che le identifica all’interno del vettore.

Copyright(C) automazione-plc.it
P. IVA: 11676200964
Sito di informazione e didattica sull'automazione industriale, il mondo dei PLC e dei sistemi di supervisione.
Programmazione PLC.
Programmazione SCADA e HMI.
Apparecchiature e hardware industriale.
Strumentazione da campo.
Policy sulla Privacy e utilizzo dei Cookies