Progettazione elettronica e sviluppo di sistemi per automazione
industriale, programmazione firmware, software e PLC
 
   
  Azienda Servizi Contatti Articoli Download Links
 
 
 
 
   
 
 
 
 
 
Architettura

L'architettura classica di un PLC è simile a quella di un computer (vedi slide): c'è una CPU, degli elementi d’ingresso e uscita, ed una memoria.

Per quanto riguarda la memoria, abbiamo:

Una parte a sola lettura, deputata a contenere sia il sistema operativo, sia il programma di controllo da far eseguire al PLC (ad ogni avvio il PLC va a leggere questa memoria per sapere quale programma deve eseguire; in altre parole potremmo dire che questa la memoria sta al PLC, pressappoco come “ROM + hard disk” stanno ad un PC). La parte di memoria deputata a contenere il programma di controllo, può essere fisicamente realizzata con memorie:

ROM; va sostituita ogni volta che si deve modificare il programma.

PROM; può essere facilmente programmata (con l'ausilio di un opportuno programmatore di prom), ma si può fare una sola volta, dopodiché, se si vuole ulteriormente modificare il programma, deve essere sostituita anche lei.

EPROM; sono delle memorie ‘rom’ che è possibile ‘riprogrammare’ per un numero finito di volte (come le ‘eeprom’), consentendo la modifica del programma senza imporre la sostituzione della memoria.

Per i PLC, come per tutti i sistemi basati su microprocessore, non è detto che convenga utilizzare sempre una EPROM, perché queste hanno ovviamente un costo leggermente superiore, non sono adatte a tutte quelle applicazioni in cui occorre produrre, su vasta scala, un PLC standard, con un programma ben definito, che non dovrà essere modificato per tutta la vita del componente. A titolo di esempio, si pensi ai PLC o ai microcontrollori, che progettati per equipaggiare un particolare modello di elettrodomestico: a livello di prototipazione sarà opportuno utilizzare una ‘prom’, mentre per la produzione in vasta scala converrà acquistare delle ‘rom’ già opportunamente programmate dal produttore.

Una parte anche riscrivibile:

RAM; utilizzata per memorizzare le variabili temporanee, necessarie all'elaborazione (nei PLC queste locazioni sono normalmente fisse).

Riassumendo: principali differenze tra un PLC ed i più comuni sistemi a microprocessore ad architettura simile, sono:

Nella realizzazione delle parti; il PLC monta un microprocessore in genere più “semplice” di quello di un PC, che utilizza una memoria a sola lettura in luogo dell’hard disk, ed è equipaggiato con una minore quantità di RAM (bastano anche 500 Kb, o comunque memorie dell'ordine di un centesimo di quelle usate dai PC).

Nel linguaggio utilizzato (“naturale” e sistema operativo); nei PLC si utilizzano linguaggi elementari, di solito simile all’Assembler dei PC.

Gestione degli I/O

I PLC sono anche caratterizzati da una particolare gestione d’ingressi ed uscite, che possiamo riassumere nei seguenti punti:

Gestione degli I/O completamente automatica. Il PLC è nato come strumento per l'automazione industriale, quindi tutti quei compiti che normalmente devono essere svolti da un dispositivo di questo genere, sono stati inclusi come “caratteristica naturale”, perciò sia la lettura degli ingressi, sia la scrittura delle uscite, sono state rese completamente automatiche. Questo vuol semplicemente dire che per programmare l'attivazione di un’uscita non si deve far altro che specificarlo attraverso un'opportuna un'istruzione di assegnazione, del tipo: « “locazione di memoria associata all'uscita in questione” = ‘1’ » (in LADDER avrei dovuto aggiungere un ‘piolo’) e questa basta (non ci si deve preoccupare d'altro). Una volta comunicato al PLC l'intenzione di attivare quella determinata uscita, sarà lui stesso ad occuparsi di tutta la gestione necessaria per raggiungere questo scopo, in maniera completamente autonoma ed automatica.

La gestione è affidata al sistema operativo (SO) della macchina. Ogni volta che il PLC si trova di fronte ad un’istruzione di I/O, deve svolgere automaticamente tutta una serie d’operazioni che, ovviamente, devono essere gestite da un SO.

All'inizio d’ogni ciclo d’esecuzione del programma, il SO legge gli ingressi e li carica in una specifica sezione di memoria; in modo da consentire al processore di avere un'immagine del processo in quel momento. In altre parole la gestione degli ingressi avviene attraverso un’acquisizione sincrona del processo. Per riprodurre gli effetti di un’elaborazione parallela, mediante l'utilizzo di un processore sequenziale, il SO del PLC provvede a “fotografare” la situazione degli ingressi all'inizio d’ogni ciclo (fa semplicemente una copia, in memoria, di tutti i segnali che gli arrivano dall'impianto); successivamente calcola, attraverso una esecuzione sequenziale del programma, le uscite corrispondenti e le memorizza (fa una copia in memorie di tutte le uscite calcolate); infine rende disponibili in contemporanea tutte le uscite calcolate. Questo meccanismo serve ad impedire che il PLC elabori le uscite in funzione di ingressi letti in tempi diversi, e quindi relativi a situazioni diverse dell'impianto.

Scansione ciclica del programma

Una caratteristica fondamentale per i PLC è quella della scansione ciclica del programma, le cui fasi fondamentali sono riportate nella slide a fianco. I passi principali con cui il sistema operativo gestisce l'esecuzione del programma, si succedono sempre uguali:

Lettura degli ingressi. Avviene per tutti gli ingressi contemporaneamente, prima di iniziare l'esecuzione del programma.

Memorizzazione degli ingressi. Il SO fa una copia di tutti gli ingressi memoria.

Elaborazione. Ha inizio l'esecuzione del programma, sulla base del quale vengono calcolati i valori delle uscite, in funzione degli ingressi memorizzati.

Memorizzazione delle uscite. Man mano che vengono calcolate, anche le uscite vengono memorizzate nella RAM, esattamente come è avvenuto per gli ingressi.

“Scrittura” delle uscite. Non appena l'esecuzione del programma è terminata, e quindi tutte le uscite sono state calcolate e memorizzate, il SO le rende disponibili tutte assieme (prende tutta la memoria dedicata alle uscite, e la in via in blocco alle schede di I/O, ovvero, trasferisce contemporaneamente tutti i dati nelle celle di memoria dedicate all’output).

CPU

I primi PLC avevano un set d’istruzioni molto ridotto (AND, OR, NOT, IN, OUT, SET, RESET), al fine di consentire l'esecuzione di un'istruzione in un solo ciclo di clock (negli anni '70 la velocità dei microprocessori era tale da non concedere margini di manovra); infatti, con queste semplici istruzioni è possibile implementare qualsiasi logica combinatoria o sequenziale. Il vantaggio di quest’approccio, era ovviamente quello di ottenere una grande efficienza di esecuzione ed elevate prestazioni. In questo contesto molti PLC utilizzavano CPU ad1 bit, per ottenere migliori prestazioni (in termini di velocità di elaborazione).

In realtà può capitare ancora oggi di trovare PLC che usano microprocessori ad un bit, perché molte delle applicazioni in cui sono impiegati questi dispositivi, non richiedono grosse capacità elaborative (sono più che sufficienti le operazioni booleane di base, con operandi ad un bit), mentre è spesso necessaria una buona velocità di esecuzione.

Naturalmente, utilizzare un set d’istruzioni ridotto comporta un'inevitabile mancanza di flessibilità, che va a limitare il campo d’impiego di questi PLC (la ricerca di maggiore flessibilità è stata proprio una delle ragioni che inizialmente hanno portato all'affermazione dei PLC).

La necessità di introdurre nuove macroistruzioni e di aumentare le capacità d’elaborazione, ha determinato l'ingresso delle CPUmulti-bit, anche nel mondo dei PLC.

Le CPU a più bit diventano addirittura indispensabili in tutti i casi in cui c'è la necessità di:

Elaborare operandi non binari (operazioni aritmetiche e di confronto, per variabili non booleane).

Introdurre salti di programma.

Realizzare conteggi (i contatori sono molto diffusi nell'automazione industriale, perché molto utili in un gran numero d’applicazioni).

Gestire ingressi e/o uscite di tipo puramente analogico, nel caso in cui non sia possibile scomporre il problema in una serie di sottoproblemi digitali (in questi casi non è più sufficiente limitarsi a gestire comandi puramente digitali; del tipo “on – off”).

Per quanto riguarda l'ultimo punto, vale la pena osservare che anche nei casi in cui si ha a che fare con un problema apparentemente analogico, a ben guardare è spesso possibile scomporre il problema originario in una serie di sottoproblemi di natura digitale. In molti casi si può aggirare la difficoltà introdotta dalla necessità di gestire un segnale analogico, scomponendolo in una serie di “soglie”, sistemate in modo da individuare gli istanti fondamentali per la gestione del controllo dell'impianto. Ad esempio, possiamo utilizzare un sensore analogico per fare la rilevazione di una temperatura, semplicemente scomponendo l’intervallo di variazione del segnale emesso con una serie di soglie, sistemate in modo da consentirci di rilevare il superamento delle sole temperature significative per la nostra applicazione. In questo modo potremmo continuare ad utilizzare un PLC ad un solo bit, limitandoci a verificare se la temperatura supera o meno le soglie precedentemente impostate (alla CPU arriva solo un’informazione del tipo di tipo “on – off”: “Soglia numero ‘n’ superata”- “Soglia numero ‘n’ non superata”). Ovviamente, in questo caso dovremo assegnare un bit d’ingresso per ognuna delle soglie da controllare.

In ogni caso le architetture delle CPU, anche se multi bit, rimangono abbastanza semplici nel complesso (non hanno pipeline o altre cose del genere).

Si evita di utilizzare architetture più complesse, perché per questo tipo d’applicazioni non sono necessarie! Si cerca di fare in modo che la CPU agisca in modo diretto, eseguendo istruzioni molto semplici, e tenendo conto che si andrà ad operare in un contesto in cui difficilmente si avrà necessità di utilizzare salti di programma, mentre molto spesso sarà utile avere un tempo d’esecuzione dell'istruzione quanto più vicino possibile a quello del ciclo di clock.

La necessità di aggiungere nuove macroistruzioni, ed il conseguente ingresso delle CPU multi-bit, ha determinato l'inizio dell'era della programmazione strutturata anche per i PLC.

I controllori a logica programmabile più moderni implementano:

L'uso delle “subroutine” (blocco funzionale che realizza una funzione logica e che può essere richiamato ovunque serva nel programma).

L'uso di linguaggi simbolici al posto di quelli assoluti (necessario per la parametrizzazione delle subroutine).

Inoltre, l'allargamento del set d’istruzione ha costretto i produttori di PLC ad usare una metodologia multiprocessore, per far fronte alle stringenti necessità di velocità tipiche di talune applicazioni.

Sezione d’ingresso/uscita

Nell'interfacciamento di I/O vengono normalmente utilizzati degli standard ben precisi, onde ridurre al minimo la possibilità di conflitto tra il PLC ed i vari elementi ad esso collegati.

Tra gli elementi che concorrono per ottenere un efficace interfacciamento con il processo ricordiamo:

Lo stadio d’isolamento galvanico (è l’elemento più delicato del sistema, ed è per questo motivo che viene spesso realizzato mediante l’utilizzo di “optoisolatori”).

L'utilizzo di contatti a vite (per velocizzare le procedure di istallazione).

L'utilizzo di ‘led’ per la visualizzazione dello stato (allo scopo di velocizzare il debugging visuale del processo).

Interfacciamento con i sensori attraverso tensioni standard (DC: 5, 12, 24, 48 Volt; AC: 110, 280 Volt).

Lo stadio di rettificazione e livellamento per i segnali a tensione alternata (in generale realizzato con il classico ponte a diodi, seguito da un filtro).

Lo stadio finale (realizzato con dispositivi di potenza, quali: triac, relè, transitori, ecc..

Una cosa importante da dire sulla sezione “ingresso/uscita”, è che le schede che consentono l'interfacciamento tra il PLC ed i vari dispositivi esterni, sono in genere già disponibili sul mercato, per modificare o ampliare l’insieme dei dispositivi controllati, basta semplicemente procurarsi la scheda adatta e inserirla in uno degli slot dedicati all’I/O. Queste schede realizzano tutte quelle operazioni che è necessario mettere in atto (conversioni “digitale/analogico” e “analogico/digitale”, modulazione e demodulazione, amplificazione, ecc, ecc), per garantire la corretta interazione tra il PLC e la categoria di dispositivi esterni associati.

Tra le schede di I/O specializzate, di solito già disponibili sul mercato, possiamo trovare:

Scheda con regolatore PID standard. Normalmente i regolatori PID sono dispositivi autonomi, commercializzati in contenitori separati dai PLC: con un ingresso, un’uscita, ed alimentazione autonoma. Sono inoltre provvisti di tre manopole, mediante le quali è possibile regolare le tre azioni fondamentali (attraverso tutta una serie di prove e metodi), allo scopo di ottenere le migliori regolazioni possibili per ottimizzare il controllo. In talune applicazioni però, è conveniente inserire il regolatore PID all'interno del PLC, in modo da modificare i parametri delle tre azioni fondamentali, secondo le condizioni operative del sistema che si sta controllando.

  • Scheda per il controllo assi.
  • Scheda per il conteggio veloce (lettura dell'uscita di un encoder).
  • Scheda per la lettura ed il controllo della temperatura.
  • Scheda per la lettura degli estensimetri.
  • …ecc.

    Scheda controllo assi

    A titolo d’esempio possiamo approfondire un po’ il discorso su una delle schede più utilizzate in automazione industriale: la scheda controllo assi.

    All'interno di questa scheda c'è già, opportunamente codificata, il tipo di movimentazione che i motori devono realizzare nel posizionamento del loro carico. Questo vuol dire che il programmatore di PLC non si deve preoccupare di realizzare il controllo dell'accelerazione e/o della velocità, perché sono già definiti nel firmware interno alla scheda.

    Attraverso la programmazione del PLC bisogna soltanto comunicare alla scheda (bastano poche istruzioni) quanto segue: “ruota di tot giri” o “vai alla posizione numero tot”; senza preoccuparsi del tipo di motore utilizzato, del tipo di trasmissione, del tipo di carico azionato, ecc. All'interno della scheda quindi, ci deve essere tutto il controllo, l’asservimento, e quanto altro necessario per gestire l'azionamento dei motori, in modo che tutte le specifiche siano rispettate.

    L'unica preoccupazione del programmatore è quella di farsi due conti per capire di quanto si muove il carico che vogliamo spostare, in rapporto alla rotazione (espressa in numero di giri) dei motori che lo spingono, in modo da poter assegnare alla posizione finale, cui si desidera arrivare, le rispettive posizioni dei vari motori impegnati nella movimentazione.

    E’ molto difficile che capiti di dover realizzare un programma che simuli un controllo assi, perché in genere le schede oggi in commercio contengono già tutto il necessario.

    Va detto che conoscere a fondo il funzionamento di una scheda controllo assi è, comunque, molto utile, perché ci consente di scegliere tra le diverse schede proposte dal mercato, in considerazione del fatto che la qualità del controllo imposto va a determinare anche la qualità della lavorazione che è realizzata! In generale risparmiare su una scheda di controllo assi (scegliendo una scheda scadente o addirittura cercando di realizzare il controllo assi per proprio conto) non è detto che voglia dire risparmiare poi sul prodotto finito.

    Circuiti di isolamento

    Nell'ambiente di lavoro in cui operano i PLC, assume particolare importanza il problema dell'isolamento tra i circuiti interni (a bassa potenza) e quelli esterni (ad alta potenza).

    Per quanto riguarda gli ingressi, siamo interessati ad evitare che eventuali condizioni di sovraccarico possano danneggiare i componenti interni più delicati (come ad esempio la CPU).

    Nella slide a fianco è mostrato un circuito d’optoisolamento, tipicamente usato nei PLC per ottenere l'isolamento degli ingressi.

    In genere, subito dopo l'ingresso, c'è un ponte raddrizzatore che serve per raddrizzare la tensione nel caso in cui questa sia alternata. Il segnale in uscita al ponte è poi trasmesso per via ottica, ad un transistor che lo riporta verso il PLC. In genere completano il circuito anche con due diodi led, così da semplificare le operazioni di debugging o di riparazione (ad esempio per verificare se il dispositivo d’isolamento optoelettrico funziona ancora).

    Il vantaggio di questo circuito sta nel riuscire a trasferire un segnale dall'ingresso del PLC, alla CPU interna, senza trasmettere tensione (in  isolamento galvanico)! Questo è un grosso vantaggio, perché, in questo modo, si isola la CPU da eventuali sovraccarichi di corrente e/o di tensione, si realizza il migliore isolamento possibile!

    Per quanto riguarda le uscite invece, è certamente indispensabile che le relative schede prevedano una protezione contro i corto-circuiti.

    Questa protezione può essere ottenuta limitando la corrente d’uscita, o disconnettendo l'uscita stessa; ma in entrambi casi è altresì importante che lo stato di sovraccarico si è evidenziato, ad esempio con un indicatore luminoso. Nella slide a fianco è mostrato un circuito di protezione con flessibile in uno stato d’uscita isolato, che usa un triac come dispositivo d’amplificazione in alternata.

    Memoria

    La memoria di un PLC può essere divisa in diverse aree, in base all’utilizzo che ne fa:

    Area del sistema operativo; è quella destinata alla memorizzazione permanente dei programmi del sistema operativo.

    Area di lavoro del sistema operativo (RAM); è quella dedicata alla memorizzazione delle variabili temporanee utilizzate dai programmi del sistema operativo.

    Area di I/O (RAM); è quella nella quale sono memorizzati i valori relativi agli ingressi e i valori da assegnare le uscite.

    Area programmi utente (RAM - PROM per il programma finale), è quella utilizzata per la memorizzazione del programma da eseguire durante la fase di controllo.

    Area dati utente (RAM); è quella destinata alla memorizzazione del valore delle variabili temporanee del programma utente.

    Area funzioni di sistema (RAM); è quella utilizzata per l'accesso alle “funzioni di sistema” definite dall'utente (timer, contatori, ecc…).

     

    Indietro   Avanti
     
     
     
     
       

     
    Copyright © 2008 Autech di Fabbri Andrea
      AddMe.com, Search Engine Submission and SEO