2. Il PLC - Unibg

60
Sistemi Logico Programmabili – Cap. 2 Pag. 33 2. Il PLC In questo capitolo viene presentato il PLC (Programmable Logic Controller), in termini di hardware e software. Dopo essere comparso sul mercato all’inizio degli anni 70 in alternativa alle logiche a relais, il PLC si è affermato negli anni 80 grazie ad una riduzione di costi, ad un aumento dell’affidabilità rispetto ai primi esemplari, e all’attenuarsi della diffidenza degli operatori (tipicamente manutentori ed elettricisti). Inoltre, grazie al diffondersi di sistemi digitali e computerizzati anche ai più bassi livelli (azionamenti a controllo digitale, sensori smart con processore integrato per la compensazione automatica della caratteristica di trasferimento,…) il PLC, in quanto sistema computerizzato, meglio si integrava con tali sistemi, oltre ovviamente ad una migliore integrazione con gli altri sistemi computerizzati del panorama industriale (supervisori, master,…). Tra l’altro il PLC consente campi di impiego inimmaginabili per le logiche a relais (regolazioni adattative per lavorazioni a carico variabile), per cui è senz’altro il componente computerizzato più diffuso a livello di cella. Il microcomputer industriale o PMC, sebbene presenti prestazioni ottime, richiede personale altamente qualificato per la programmazione e pertanto viene utilizzato in applicazioni che richiedono un elevato investimento iniziale di progetto, notevoli costi di debug, ma che non sono destinati a subire frequenti e notevoli variazioni. Quando le funzioni da svolgere sono semplici o comunque non particolarmente innovative (gestione di segnali logici, anelli di regolazione tradizionali tipo PID, gestione di una semplice interfaccia operatore,...) la soluzione più naturale ed utilizzata è una struttura PLC (Programmable Logic Controller), sebbene oggi l’uso del PLC sia consueto anche nei compiti di regolazione e controllo che fino a pochi anni fa erano dominio dei PMC. Rispetto al PMC, il PLC è quindi più semplice da utilizzare e più rapido nei tempi di sviluppo delle applicazioni. I programmi possono essere sviluppati anche da personale non altamente specializzato, sono brevi e fortemente supportati da software di base che consente l'uso di linguaggi a macrofunzioni, simbolici o pseudografici. Il programmatore sviluppa il software su un apposito sistema di sviluppo (spesso un PC dotato di opportuno software) e quindi, collegando il sistema di sviluppo al PLC, programma in modo non volatile il PLC (il programma viene scaricato su memoria EEPROM o RAM dotata di batteria tampone). Grazie alla semplicità dei linguaggi pseudografici e alla potenza del software di sviluppo, non si richiedono le competenze per sviluppare un programma dall'inizio alla fine e per memorizzarlo su EPROM, come nei microcomputer industriali. In realtà oggi, con l’avvento del controllo distribuito, l’uso e la programmazione dei PLC per il progetto di un sistema di automazione, richiede una professionalità che abbraccia competenze di impiantistica, di elettronica, di telecomunicazioni e di informatica industriale. E’ invece ancora vero che la manutenzione di impianti realizzati mediante PLC, che consiste nell’apportare semplici modifiche o introduzione di nuove funzionalità “pseudostandard” rispetto a programmi preesistenti, può essere svolta da personale non altamente specializzato.

Transcript of 2. Il PLC - Unibg

Page 1: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 33

2. Il PLC

In questo capitolo viene presentato il PLC (Programmable Logic Controller), in termini di hardware e software. Dopo essere comparso sul mercato all’inizio degli anni 70 in alternativa alle logiche a relais, il PLC si è affermato negli anni 80 grazie ad una riduzione di costi, ad un aumento dell’affidabilità rispetto ai primi esemplari, e all’attenuarsi della diffidenza degli operatori (tipicamente manutentori ed elettricisti). Inoltre, grazie al diffondersi di sistemi digitali e computerizzati anche ai più bassi livelli (azionamenti a controllo digitale, sensori smart con processore integrato per la compensazione automatica della caratteristica di trasferimento,…) il PLC, in quanto sistema computerizzato, meglio si integrava con tali sistemi, oltre ovviamente ad una migliore integrazione con gli altri sistemi computerizzati del panorama industriale (supervisori, master,…). Tra l’altro il PLC consente campi di impiego inimmaginabili per le logiche a relais (regolazioni adattative per lavorazioni a carico variabile), per cui è senz’altro il componente computerizzato più diffuso a livello di cella.

Il microcomputer industriale o PMC, sebbene presenti prestazioni ottime, richiede personale altamente qualificato per la programmazione e pertanto viene utilizzato in applicazioni che richiedono un elevato investimento iniziale di progetto, notevoli costi di debug, ma che non sono destinati a subire frequenti e notevoli variazioni. Quando le funzioni da svolgere sono semplici o comunque non particolarmente innovative (gestione di segnali logici, anelli di regolazione tradizionali tipo PID, gestione di una semplice interfaccia operatore,...) la soluzione più naturale ed utilizzata è una struttura PLC (Programmable Logic Controller), sebbene oggi l’uso del PLC sia consueto anche nei compiti di regolazione e controllo che fino a pochi anni fa erano dominio dei PMC. Rispetto al PMC, il PLC è quindi più semplice da utilizzare e più rapido nei tempi di sviluppo delle applicazioni. I programmi possono essere sviluppati anche da personale non altamente specializzato, sono brevi e fortemente supportati da software di base che consente l'uso di linguaggi a macrofunzioni, simbolici o pseudografici. Il programmatore sviluppa il software su un apposito sistema di sviluppo (spesso un PC dotato di opportuno software) e quindi, collegando il sistema di sviluppo al PLC, programma in modo non volatile il PLC (il programma viene scaricato su memoria EEPROM o RAM dotata di batteria tampone). Grazie alla semplicità dei linguaggi pseudografici e alla potenza del software di sviluppo, non si richiedono le competenze per sviluppare un programma dall'inizio alla fine e per memorizzarlo su EPROM, come nei microcomputer industriali. In realtà oggi, con l’avvento del controllo distribuito, l’uso e la programmazione dei PLC per il progetto di un sistema di automazione, richiede una professionalità che abbraccia competenze di impiantistica, di elettronica, di telecomunicazioni e di informatica industriale. E’ invece ancora vero che la manutenzione di impianti realizzati mediante PLC, che consiste nell’apportare semplici modifiche o introduzione di nuove funzionalità “pseudostandard” rispetto a programmi preesistenti, può essere svolta da personale non altamente specializzato.

Page 2: 2. Il PLC - Unibg

A. Flammini

Se invece il PLC viene confrontato con i sistemi basati su PC, presenta i seguenti vantaggi: dispone di un elevato numero e tipologia di ingressi e uscite, è progettato per le applicazioni in tempo reale (sistema deterministico) e, nelle sue versioni più semplici, è più economico. I PLC sono sistemi che si possono definire quasi-standard, nel senso che, sebbene non vi sia la portabilità delle applicazioni tra PLC di diversi costruttori (cosa che invece è il punto di forza dei sistemi basati su PC: si pensi alla portabilità su piattaforme e sistemi operativi diversi di programmi Java), il numero e l’entità delle modifiche strutturali da apportare ad un programma per la migrazione da un ambiente ad un altro è in genere molto limitato (mentre è molto elevato per i PMC).

Esiste una norma italiana, CEI EN 61131, dedotta dalla norma europea IEC 1131, che definisce i controllori programmabili. Sebbene tale norma si riferisca al 1996, i PLC attualmente sul mercato non hanno una piena aderenza alla normativa, quindi di seguito verrà fornita una descrizione generica dei PLC, non necessariamente in stretta aderenza con quanto previsto dallo standard. Nel paragrafo 5.2 verranno fornite le linee generali dello standard con una particolare attenzione ai linguaggi previsti.

2.1 I livelli di applicabilità

I PLC solitamente operano a livello di cella e a livello di comando. Come per i

computer industriali, anche per i PLC esistono varie famiglie di prodotto dedicate a diverse applicazioni.

PLC

COMPATTI MODULARIESPANDIBILIBASSO COSTO ALTE PRESTAZIONIFLESSIBILITA’

Linguaggi logici(Ladder )

Linguaggi evoluti(IEC 1131-3 )

COMPATTI ESPANDIBILI MODULARI

Struttura HW Monoblocco Modulare Modulare

Linguaggi SW Logici (ladder) Logici (ladder) Evoluti (IEC1131-3)

PLC modulari

Pag. 34

Page 3: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 35

A livello di cella e per comandi di elevata complessità si utilizzano PLC modulari, basati su strutture aperte, dall'hardware molto simile ai PMC e di livello qualitativo equivalente. Si tratta di strutture basate sull’uso di più CPU che operano contemporaneamente. In effetti per l'implementazione di comandi di macchine complesse, di funzioni di automazione o di supervisione di processo, il confine tra PMC e PLC modulari multiprocessore è molto sottile e spesso si limita al software di base: infatti nei microcomputer industriali il software di base consiste in un sistema operativo multitasking real-time e il software applicativo deve essere sviluppato in linguaggio ad alto livello (Es. “C”) da personale altamente qualificato, dato che spesso è possibile escludere il sistema operativo ed avere il completo controllo dell'hardware. Nei PLC il sistema operativo non può essere eliminato ed è anzi molto rigoroso, il che va a discapito delle prestazioni in termini di tempo di esecuzione dei programmi, ma gioca a vantaggio dell'affidabilità del software. La programmazione pseudografica mediante schema a contatti (ladder) o a blocchi funzionali o a lista di macroistruzioni e macrofunzioni a libreria è molto più semplice e affidabile e può essere demandata a personale non altamente qualificato. La semplicità del software applicativo dei PLC può risultare limitativa rispetto ad applicazione di una certa complessità, come accade nel caso di PLC modulari: si ricorre pertanto a linguaggi più potenti (Es. IEC61131-3) ma che richiedono personale qualificato, proprio come accade per i microcomputer industriali. Anche la differenza tra PLC e PMC in termini di prestazioni non è di grande rilevanza, dato che i PLC modulari più recenti e potenti consentono un tempo di ciclo nell’ordine del ms. Il tempo di ciclo e la velocità nell’esecuzione dei programmi sono parametri di notevole importanza qualora il PLC venga impiegato per la realizzazione di controlli digitali: sebbene storicamente le funzioni di controllo demandate ai PLC fossero relative a processi lenti (Es. controllo della temperatura), oggi è possibile trovare PLC impiegati per controllo di processi sempre più veloci (controllo di posizione, controllo assi ad elevate velocità,…). I PLC modulari vengono impiegati essenzialmente in applicazioni critiche in termini di tempo di elaborazione e di architettura multi-CPU: si tratta di sistemi molto potenti utilizzati in architetture centralizzate. Il limite delle architetture centralizzate in molte applicazioni è costituito dalla criticità del cablaggio, per cui oggi sembra che i potenti PLC modulari stiano cedendo il passo ad architetture distribuite formate da più PLC di minore complessità collocati là dove servono: questa migrazione dalle architetture centralizzate verso le architetture distribuite è resa possibile dall’efficienza (determinismo, bassissimo jitter,..) delle nuove tecniche di comunicazione industriale.

PLC espandibili Se invece l’applicazione non richiede un’architettura multi-CPU centralizzata, ma ad

esempio i compiti possono essere ripartiti tra più PLC comunicanti tra loro su rete a elevata efficienza (architettura distribuita) o i compiti possono essere svolti da una sola CPU eventualmente supportata da moduli funzionali, si utilizzano PLC espandibili. In genere i moduli per PLC espandibili sono funzionalmente molto simili a quelli utilizzati nei PLC modulari e spesso l’unica differenza è di tipo costruttivo in quanto i PLC espandibili si suppongono comunque ad architettura “snella” e cioè costituiti da una sola CPU e da un numero di moduli nell’ordine della decina. Data la necessità di poter migrare le applicazioni da ambiente espandibile ad ambiente modulare, i sistemi di sviluppo del software sono spesso compatibili, anche se le applicazioni basate su PLC

Page 4: 2. Il PLC - Unibg

A. Flammini

Pag. 36

espandibile sono in genere sviluppate in linguaggi logici mentre le applicazioni che nascono direttamente per architettura modulare (multi-CPU) sono sviluppate in linguaggi evoluti, più adatti al supporto della comunicazione tra processi. I PLC espandibili vengono quindi utilizzati in modalità “stand-alone” per lo svolgimento di sezioni di automazione o in architetture distribuite. Nel primo caso il programma del PLC viene sviluppato in linguaggio tipicamente semplice (come si vedrà nello standard IEC61131-3 sono permessi e integrabili tra loro molti linguaggi) e il livello di comunicazione con altri PLC o sistemi di supervisione e controllo a livello superiore è piuttosto limitato. Nelle architetture distribuite, invece, il programma dei diversi PLC viene progettato in modo fortemente coordinato secondo un’unica struttura (ambiente di sviluppo unico): in questo modo l’architettura hardware può essere facilmente cambiata in quanto l’allocazione dei sottoprogrammi nei diversi PLC è una delle ultime operazioni. Oggi lo sforzo è di mettere a disposizione ambienti di sviluppo che, a valle dell’allocazione delle funzioni sui diversi oggetti fisici, progettino automaticamente il sistema di comunicazione che consenta di gestire un’architettura distribuita, che presenta vantaggi in termini di costo, affidabilità, versatilità, esattamente come se fosse centralizzata. In molte architetture distribuite alcuni PLC espandibili, così come alcuni PLC compatti, vengono utilizzati come I/O distribuito, ossia centri di raccolta, distribuzione ed elaborazione locale di ingressi e uscite verso il campo.

PLC compatti A livello di comando operano i PLC compatti, soprattutto quando il requisito

principale è il basso costo, mentre vengono utilizzati i PLC espandibili se viene richiesta una certa flessibilità e prestazioni superiori. I PLC compatti sono strutture hardware rigide, caratterizzate da un unico blocco con al più un numero molto limitato di opzioni. Si tratta di sistemi dove la competizione tra i costruttori è molto elevata ed essenzialmente basata sul costo, di conseguenza anche l’ambiente di sviluppo è molto semplificato in quanto non può costare troppo e difficilmente è compatibile con ambienti di sviluppo per PLC espandibili o modulari. I linguaggi supportati sono solo quelli logici e spesso le possibilità numeriche, in termini di complessità e quantitativi delle strutture dati gestibili da questi sistemi, sono molto limitate. I PLC compatti vengono utilizzati per l’ambiente industriale così come nei settori civili (domotica, automazione di edifici,…) e in genere vengono programmati per svolgere sequenze logiche temporizzate.

Nel complesso quindi la classificazione proposta per i PLC (compatti, espandibili, modulari) è piuttosto sfumata: a livello della struttura i PLC espandibili e i PLC modulari non differiscono per componenti (schede CPU, schede di I/O,..), ma solo per la configurazione architetturale (configurazione a una o più CPU); d’altro canto a livello di linguaggio praticamente non vi è differenza tra i linguaggi impiegati per i PLC compatti e quelli espandibili.

Per meglio comprendere le strutture delle 3 architetture (PLC compatti, espandibili, modulari), verrà di seguito descritto il principio di funzionamento di un generico PLC nella sua accezione più semplice, ossia costituito da una CPU e generici punti di ingresso/uscita digitali.

Page 5: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

2.2 Principio di funzionamento della CPU

La CPU è una scheda basata su un processore, memorie, interfacce di generazione e gestione del bus verso i moduli periferici. E’ fornita di sistema operativo residente. Il sistema operativo si occupa di fornire un ambiente real-time strutturato, robusto e affidabile per l’esecuzione del programma applicativo. Si occupa anche della gestione di particolari funzioni di diagnostica (stato batteria tampone, check sum iniziale delle memorie, …), la gestione dei temporizzatori interni e di implementare il protocollo per mezzo del quale, tramite l’apposito pacchetto di sviluppo, è possibile trasferire e testare i programmi. La CPU di un PLC può operare in due diversi modi:

- STOP (detto anche PROG o TERM) - RUN

Nella modalità STOP la CPU non esegue il programma applicativo, ma risiede nel suo sistema operativo dove riceve comandi da un’unità di programmazione (tipicamente un PC) per la configurazione, la memorizzazione del programma applicativo e la diagnostica. Nella modalità RUN il programma applicativo viene fatto eseguire sotto il controllo di un sistema operativo residente. La modalità di funzionamento rimane memorizzata anche a seguito di mancanza di tensione di alimentazione. Quando si avvia la modalità RUN, il sistema operativo esegue delle procedure di inizializzazione, quindi entra in un modo di funzionamento ad architettura ciclica, detto ciclo di funzionamento della CPU.

2.2.1 Ciclo di funzionamento della CPU (ciclo di scansione)

In figura è rappresentata la sequenza delle operazioni svolte nel caso di normale

funzionamento in RUN della CPU (ciclo di funzionamento o di scansione).

Legge gli ingressi (IPI)

Esegue il programma

Comunica

Esegue l’autodiagnosi

Scrive le uscite (IPU)

Dal ciclo indicato in figura appare chiaro come la CPU esegua, oltre al programma

applicativo, anche altri compiti. Ne consegue che il tempo di ciclo dipenderà dalla lunghezza del programma applicativo, ma comunque non potrà mai scendere sotto un

Pag. 37

Page 6: 2. Il PLC - Unibg

A. Flammini

Pag. 38

valore limite che in genere si attesta attorno al ms. Nel caso di programmi molto semplici questo valore è dominante, dato che il tempo medio impiegato da un PLC recente nello svolgimento di un’istruzione è inferiore al microsecondo.

Il PLC è in genere basato su una CPU costruita attorno ad un microcontrollore, ossia un microprocessore dedicato alla gestione delle periferiche e, più in generale, dell’I/O. I microcontrollori eseguono programmi scritti in codice macchina mentre, come si è detto, l’operatore costruisce i programmi applicativi mediante linguaggi grafici, vicini agli schemi funzionali realizzati mediante relais. Per ottimizzare il tempo di esecuzione del programma applicativo, il sorgente scritto in linguaggio grafico dovrebbe essere compilato fino ad ottenere un eseguibile in linguaggio macchina da memorizzare e far eseguire dal microcontrollore. Tale soluzione, tuttavia, limita fortemente la diagnostica in quanto si perde la corrispondenza tra istruzione macchina e istruzione grafica; inoltre in questo modo, l’intero programma verrebbe ricompilato ad ogni modifica del programma utente, rendendo il sistema più vulnerabile rispetto agli errori di programmazione. Il sistema di sviluppo provvede quindi a elaborare il sorgente in modo da fornire in uscita un programma scritto in un linguaggio intermedio, che il microcontrollore interpreta, ossia decodifica istruzione per istruzione. In pratica il costruttore sviluppa, compila e memorizza un programma, che costituisce una sorta di sistema operativo del PLC e che comprende l’interprete, mentre il programma utente viene scaricato in un’area di memoria riservata e reinterpretato ad ogni ciclo di scansione: questo tipo di architettura è più sicura in quanto un programma utente, anche grossolanamente sbagliato, non può bloccare il microcontrollore, che potenzialmente torna al sistema operativo dopo l’esecuzione di ciascuna istruzione utente. Inoltre in questo modo l’utente può modificare il proprio programma mentre questo è in esecuzione.

Come si può intuire osservando la struttura del SW indicata in figura, il programma applicativo deve avere una organizzazione adatta all’inserimento in tale struttura ciclica, cioè deve essere eseguito dall’inizio alla fine senza punti di attesa. Questo si adatta molto bene alla gestione di operazioni di tipo combinatorio (come per esempio la gestione di operazioni logiche booleane) ed è facile e naturale tradurre uno schema a contatti elettromeccanico in un programma siffatto. Per contro risulta piuttosto macchinoso e poco intuitivo nella gestione di operazioni di tipo sequenziale (per esempio una sequenza di lavorazione composta da più movimenti in successione) dove è necessario memorizzare su memorie d’appoggio lo stato raggiunto per poi riprenderlo nel ciclo di scansione successivo. Per la verità i nuovi PLC, ad architettura modulare, mettono a disposizione nuovi e potenti linguaggi di programmazione (per esempio gli SFC – sequential flow chart – descritti in seguito) che risolvono questo inconveniente permettendo una programmazione più naturale dei punti di attesa e delle sequenze. Anche se non rappresentate in figura, sono possibili applicazioni funzionanti ad interrupt. Ovviamente l’esecuzione di tali sottoprogrammi è subordinata non alle regole del ciclo di scansione, ma alle condizioni di attivazione dell’interrupt.

Le immagini di processo non sono altro che variabili nelle quali viene memorizzato il valore degli ingressi logici all’inizio del ciclo o sulle quali si lavora proprio come se si trattasse delle uscite logiche ma che vengono effettivamente scaricate sulle uscite fisiche alla fine del ciclo; corrispondono quindi allo stato “campionato” dei segnali di ingresso e dei segnali di uscita. Quindi, gli ingressi logici vengono letti una sola volta durante il ciclo di scansione e memorizzati in apposite variabili, dette appunto immagini di processo di ingresso (IPI). Analogamente il programma applicativo non agisce

Page 7: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

direttamente sulle uscite, ma su variabili immagine di processo delle uscite (IPU) e solo alla fine del ciclo di scansione le uscite vengono effettivamente modificate in base al valore delle IPU: così se il programma applicativo setta e poi resetta un’uscita, in realtà è solo la IPU che viene settata e poi resettata mentre l’uscita verrà solo posta a zero alla fine del ciclo di scansione.

Pag. 39

Un notevole vantaggio di questa architettura è che gli ingressi sui quali si lavora e si

prendono decisioni sono stabili per tutto il ciclo e, per quanto riguarda le uscite, il PLC agisce anche da sincronizzatore. Dato che il tempo di ciclo dipende dalla complessità del programma e quindi può risultare troppo lungo, è possibile, mediante istruzioni particolari (accesso diretto, che non agisce sull’immagine di processo), agire direttamente sugli ingressi fisici, saltando le immagini di processo. Non tutti gli ingressi e le uscite seguono la regola del singolo accesso nel ciclo di scansione: ad esempio ci sono ingressi “veloci” che vengono letti molto frequentemente, inoltre le routine di interrupt, che possono intervenire in qualsiasi momento del ciclo di scansione, consentono l’accesso diretto a ingressi e uscite. Altro caso particolare sono gli I/O analogici dove difficilmente si hanno immagini di processo ma si opera direttamente sulla periferia.

Vi sono anche PLC (Es. PLC SAIA) che non utilizzano le immagini di processo, per cui il ciclo di funzionamento è molto simile al ciclo di funzionamento di un PMC. In questo caso la lettura di un ingresso viene effettuata nel momento stesso in cui viene invocata e la modifica dello stato di una uscita si ripercuote immediatamente sul campo. L’organizzazione del programma è più libera e risulta possibile strutturare il ciclo con punti di attesa e feedback senza problemi, con una facile e naturale traduzione sia di strutture combinatorie sia di strutture sequenziali. In questi PLC si hanno a disposizione più blocchi di programma che vengono eseguiti in parallelo (per essere più precisi c’è una sorta di schedulatore che regola l’avanzamento dei diversi task). Naturalmente a fronte di una più elevata efficienza e flessibilità di programmazione, si ha una più difficile gestione e, se non vengono adottate opportune tecniche informatiche, è più probabile ottenere sistemi poco robusti rispetto a errori di programmazione. In genere questo tipo di PLC, come il PMC, è più adatto a persone di estrazione informatica, mentre i PLC sono tradizionalmente rivolti a personale che magari conosce bene il processo, ma che può non essere un esperto di elettronica o informatica.

Tornando al ciclo di scansione, il programma applicativo viene eseguito in sequenza e quindi le istruzioni vengono interpretate ed eseguite nell’ordine in cui sono state scritte nel programma. Ciascuna istruzione è del tipo

Input

IPI

IPU

Output

Page 8: 2. Il PLC - Unibg

A. Flammini

Pag. 40

ACCUMULATORE := ACCUMULATORE OPERANDO OPERATORE

Come si vedrà meglio nel paragrafo dedicato alle memorie, l’accumulatore si appoggia ad uno stack per il calcolo delle grandezze intermedie.

Durante la fase indicata come “comunica” il PLC provvede alle comunicazioni su rete verso sistemi a più alto livello e inoltre elabora i messaggi di comunicazione che ha ricevuto dall’unità diagnostica e di programmazione, che potrebbe essere connessa anche durante la fase di RUN per eseguire la diagnostica del programma applicativo (“esegui solo un certo numero di cicli”, “visualizza lo stato della memoria”,...). Le operazioni di comunicazione, dovute alla possibilità di connessione (RUN) con il dispositivo di programmazione per diagnosi, vengono dette di “background” e in genere è possibile configurare un tempo massimo (es. 1ms) da dedicare alle operazioni di background.

Molta importanza viene data all’autodiagnosi. Durante questa fase del ciclo la CPU controlla il corretto funzionamento e l’integrità delle proprie risorse (memorie, programma, sistemi di temporizzazione,....), ma soprattutto verifica il corretto stato di connessione con i moduli periferici.

2.2.2 Memorie

Il firmware, ossia il sistema operativo del PLC, risiede in memoria non volatile e,

sperabilmente, non modificabile dall’utente o da usi impropri del PLC (sovratensioni, scariche elettriche,... (ROM, EPROM). Il programma applicativo, così come i dati di configurazione della CPU (Es. parametrizzazione dell’interfaccia di programmazione) devono poter essere modificati dall’utente ma devono poter essere comunque ritenuti in assenza di alimentazione e protetti da problemi ambientali come le sovratensioni,.... Si utilizza in genere memoria riscrivibile elettricamente (EEPROM, Flash) tuttavia sono previsti meccanismi di protezione contro possibilità accidentali di cancellazione. Per comodità, in fase di messa in servizio dell’impianto, il programma viene di solito caricato su memorie di tipo RAM il cui contenuto, in caso di mancanza di tensione, è conservato grazie ad una batteria tampone; così il programma applicativo può essere caricato e modificato molto velocemente per mezzo del sistema di programmazione. Al termine della messa in servizio il programma deve essere posto su memorie di tipo non volatile (di solito EPROM o EEPROM) in modo tale che, anche se la batteria tampone si scarica, il programma non viene perso.

Per quanto riguarda i dati, questi vengono memorizzati in RAM, opportunamente sostenute da batterie tampone (durata del tamponamento superiore alle 10h) per preservare i dati nel caso di mancanza di alimentazione. Tuttavia molti PLC permettono di suddividere questi dati, in modo fisso o impostabile, in volatili (o non ritentivi) e non volatili (o ritentivi). Nel primo caso i dati vengono azzerati ad ogni riavviamento del programma (per esempio alla riaccensione del PLC) mentre gli altri vengono mantenuti nello stato che avevano prima dell’arresto.

Per facilitarne la gestione a livello programma utilizzatore, i dati vengono strutturati in modo logico suddividendo lo spazio disponibile in memoria secondo varie tipologie aventi dimensione e operatori differenti.

Page 9: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 41

- Immagini di processo degli ingressi (I)

- Immagini di processo delle uscite (Q)

- Variabili (V –variable-)

- Variabili (L –local-)

- Variabili (M –merker-)

- Variabili (S –sequence-)

- Variabili (SM –special merker-)

- Temporizzatori (T –timer-)

- Contatori (C –counter-)

- Ingressi analogici (AI –analog input-)

- Uscite analogiche (AQ –analog output-) L’accesso alle variabili è tipicamente a byte tuttavia sono previsti accessi a bit, a

word (indirizzi pari ) e double word (indirizzi divisibili per 4). Le immagini di processo, come visto precedentemente, sono le immagini in RAM

dello stato di ingressi e uscite logiche: gli ingressi vengono campionati e memorizzati nelle immagini di processo degli ingressi (IPI) prima dell’esecuzione del ciclo kmo del programma applicativo, il programma applicativo opera su IPI e IPU (immagini di processo delle uscite), quindi alla fine del ciclo kmo del programma applicativo le IPU vengono scritte sulle uscite. In questo modo il programma si svolge a I/O congelato. In termini di occupazione di RAM le immagini di processo degli ingressi sono un vettore di byte a e ciascun byte possono essere associati 8 ingressi logici. L’accesso al bit 5 del byte identificato da I6 avverrà secondo la sintassi I6.5. La dimensione dell’area di memoria associata alle immagini di processo degli ingressi di fatto limita il numero massimo di ingressi logici gestibili dalla CPU, indipendentemente dal numero di moduli di I/O aggiuntivi che posso inserire. Discorsi analoghi valgono per le immagini di processo delle uscite.

L’area V è l’area destinata alle variabili globali, che cioè possono essere raggiunte da

più parti del programma (programma principale, sottoprogrammi, routine di interrupt). In genere l’area V è allocata in RAM tuttavia può esistere un’area di memoria permanente (EEPROM) dedicata alla memorizzazione dell’area V o di parte di essa. In particolare in caso di mancanza alimentazione l’area V o parte di esse memorizzata in RAM viene copiata in EEPROM e alla riaccensione l’area V in RAM viene copiata da quella in EEPROM (RUN) o caricata dal dispositivo di programmazione (PROG).

L’area L è l’area destinata alle variabili locali e non è soggetta a ritenzione. L’area M o Merker è l’area destinata alle variabili utilizzate prevalentemente a bit.

Può essere programmata perchè parte di essa sia soggetta a ritenzione. Funzionalmente esiste poca differenza tra l’area V, l’area M e l’area S; più che altro si tratta di differenze nell’ottica dell’utilizzazione: l’area V viene riservata alle variabili dei processi regolati, l’area M viene riservata come bit di appoggio per le sequenze logiche

Page 10: 2. Il PLC - Unibg

A. Flammini

Pag. 42

e l’area S viene riservata come indicatore dello stato nel caso di gestione di sequenze (macchine a stati).

Un discorso a parte meritano gli special merker: ad esempio esiste un bit che è a “1” solo per il primo ciclo e che viene utilizzato per abilitare le operazioni di inizializzazione, un altro bit è un clock di ciclo di scansione, che può essere utilizzato come ingresso di un contatore per l’identificazione del ciclo, bit che oscillano a frequenza fissa, e così via: si tratta quindi di “facility” messe a disposizione del programmatore per superare i limiti imposti dalla struttura a ciclo di scansione.

I temporizzatori o timer sono elementi che conteggiano il tempo in incrementi dt (dt

= 1ms/10ms/100ms). In particolare è possibile precaricare un temporizzatore (costante di tempo) e associare un evento all’istante in cui avrà valore zero; il firmware, in modo trasparente, si occuperà di decrementarlo fino a 0. Il timer può essere abilitato, riportato nella condizione di partenza, fermato,...Lo spazio RAM dedicato ad un timer è costituito da due elementi:

- valore corrente: numero intero a 16 bit che memorizza la costante di tempo residua del timer

- bit di temporizzazione: indica se il timer ha raggiunto o meno lo zero e può essere utilizzato per abilitare operazioni (“dopo che è passato questo tempo fai...)

Un contatore è invece un contatore di eventi relativi ad un segnale esterno. Vi sono

contatori che contano solo in avanti, contatori che contano solo in indietro e contatori bidirezionali. I contatori possono essere testati, impostati, azzerati, attivati e bloccati dal programma. Lo spazio RAM dedicato a un contatore è anche in questo caso costituito da due elementi: valore corrente e bit di conteggio a indicare che il valore preimpostato è stato raggiunto. Oltre ai normali contatori vi sono i contatori veloci, che hanno la funzione di conteggiare eventi veloci rispetto al ciclo di scansione: si tratta di variabili a 32 bit.

Gli ingressi analogici vengono convertiti in parole tipicamente a 16 bit e

memorizzati in apposite variabili (AI). Analogamente le uscite analogiche vengono scritte dal programma in variabili di appoggio (AQ) che vengono passate ad un convertitore digitale/analogico.

Oltre ai dati raggiungibili dall’utente, la memoria RAM ospita le variabili di sistema,

ossia le variabili gestite dal software di base del PLC (sistema operativo). Di seguito viene illustrato lo schema a blocchi di una generica CPU. L'unità di gestione, sotto il controllo del sistema operativo, legge le istruzioni

residenti nella memoria di programma e le esegue. Un altro blocco importante nella struttura di un PLC, non rappresentato in figura perché all’interno dell’unità di gestione, è l'unità aritmetico-logica. Solitamente si ripartisce in più architetture a seconda del tipo di dato (logico, byte, word, real,…) e ciascuna architettura consta tipicamente di un accumulatore e uno stack. Dato che il PLC esegue soprattutto operazioni logiche booleane (AND, NOT, OR,…), dispone di un accumulatore logico a un bit detto RLC (Risultato Logico Combinatorio) su cui viene memorizzato il risultato parziale dell’espressione logica in corso di valutazione.

Page 11: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Ad esempio, si osservi quale potrebbe essere il modo di procedere di un PLC per l’esecuzione dell’istruzione (&=AND, +=OR). OUT1 := (A.AND.B.AND.C).OR.(D.AND.(E.OR.F)) LD A Carica A nell’RLC, ossia RLC:=A AND B Eseguo l’AND con B, ossia RLC:=RLC&B AND C Eseguo l’AND con C, ossia RLC:=RLC&C OR (D OR=>stack operatori, RLC=>stack dati(=A&B&C), RLC:=D AND (E AND=>stack operatori, RLC=>stack dati(=D), RLC:=E OR F Eseguo l’OR con F, ossia RLC:=RLC+F ) RLC:=RLC.(stack operatori).(stack dati), ossia RLC:=(E+F).AND.D ) RLC:=RLC.(stack operatori).(stack dati), ossia RLC:=RLC.OR.(A&B&C) Nota: questo approccio di fatto coincide con il linguaggio Instruction List (IL) previsto dallo standard IEC1131. Come si può osservare la presenza delle due parentesi a racchiudere A.AND.B.AND.C è superflua.

- Programma applicativo

- Timers, counters

- Merker, variabili

- Immagini di processo

- Dati di sistema

RA

M

- Programma applicativo

- Parametri di configura-zione

- Variabili (in parte) EEPR

OM

- Sistema operativo

RO

M

UNITA’

DI

GESTIONE

BUS PER I/O MODULE

Pag. 43

Page 12: 2. Il PLC - Unibg

A. Flammini

2.3 La struttura dei PLC compatti

Un PLC compatto si presenta come un monoblocco avente dimensioni molto contenute. In genere si tratta di PLC economici con una configurazione di ingressi e uscite fissa e non espandibile (se non in modo molto limitato). Di norma hanno possibilità di comunicazione piuttosto limitate (in genere non sono disponibili interfacce per bus di campo), un set di istruzioni ristretto e un pacchetto di sviluppo molto semplice che ben si adatta a utenti poco esperti. Vengono utilizzati per applicazioni di automazione elementari, standardizzate e per le quali non si prevedono espansioni future. In pratica sono costituiti solo dall’alimentatore e dalla CPU nella quale viene integrato un limitato numero di punti di I/O (Input/Output). A titolo di esempio si riportano le caratteristiche di un PLC compatto prodotto da Siemens (Simatic S7-222). (http://www.ad.siemens.de/s7-200/index_76.htm).

Tale PLC (raffigurato a sinistra), di dimensioni molto contenute (90x80x62 mm) integra 8 ingressi logici, 6 uscite logiche tuttavia prevede 128 immagini di processo degli ingressi e 128 immagini di processo delle uscite, il che significa che, comunque arricchito di moduli opzionali, non può supportare più di 128 ingressi logici e 128 uscite logiche. Gli ingressi logici locali possono essere filtrati grazie a tool numerici introducendo ritardi da 0,2ms a 12,8ms. Sempre grazie a funzioni residenti, c’è la possibilità di attivare funzioni di misura di impulsi di breve durata per cui ciascun ingresso logico viene isolato galvanicamente, filtrato, eventualmente misurato in termini di durata del singolo impulso e reso disponibile nelle immagini di processo campionandolo a ogni inizio ciclo o reso disponibile attraverso un canale parallelo di accesso immediato.

Isolatore

galvanico

Filtro

digitale Misurazione

impulsi

IPI

Accesso diretto

Input

Pag. 44

Page 13: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 45

Dispone di 256 contatori di segnali esterni e 256 temporizzatori. Supporta tra l’altro 2 interrupt a tempo per la realizzazione di funzioni a periodo fisso (il ciclo di scansione ha una durata che può variare da ciclo a ciclo). Può essere espanso con un massimo di due moduli opzionali selezionabili tra 25 (ingressi e uscite digitali e analogici, orologio, moduli di interfaccia verso termocoppie o termoresistori, moduli di comunicazione,...). A destra è raffigurato un modulo opzionale. Il PLC supporta programmi di lunghezza massima pari a circa 2000 istruzioni mettendo a disposizione 1024 word per i dati. Si tratta di un PLC molto economico ma con potenzialità decisamente limitate. Per fare un raffronto, il modello immediatamente superiore (Simatic S7-224), che si inquadra tra i PLC espandibili di livello basso, consente programmi più lunghi (4kword codice + 2.5kword dati), un maggior numero di punti di I/O logico (14 ingressi e 10 uscite) e di moduli di espansione (7 moduli, tra i quali l’interfaccia verso bus di campo Profibus); inoltre integra ingressi di interrupt e consente l’esecuzione di istruzioni base in circa 0.37μs. La famiglia S7-200 prevede più soluzioni a diversa complessità e diversa capacità di punti di ingresso/uscita logico: tali sistemi supportano anche gli ingressi e le uscite analogiche a livello di modulo opzionale e, dal punto di vista delle comunicazioni, possono essere master di reti dedicate a sensori e attuatori semplici (sensori e attuatori booleani), come il bus ASI, e possono essere slave di reti a livello di cella, come Profibus-DP.

2.4 La struttura dei PLC espandibili e modulari

Un PLC espandibile o modulare è costituito da diverse unità funzionali (moduli) che si possono combinare tra loro a seconda delle esigenze dell'applicazione. Rispetto alla struttura dei microcomputer industriali (PMC), si parla di moduli funzionali piuttosto che di schede; infatti nei PLC non si aggiunge una scheda il cui software è completamente da realizzare, ma si aggiunge un kit indissolubile costituito da una scheda più un pacchetto software dedicato. Questa soluzione ha il vantaggio di agevolare e velocizzare la realizzazione dei programmi applicativi permettendo anche ad utenti poco esperti la realizzazione di funzioni complesse. Per contro si ha una perdita netta di flessibilità: tutto quello che non è previsto dal pacchetto software a corredo non può essere realizzato anche se, potenzialmente, la scheda sarebbe in grado di farlo. Per esempio una scheda di interfaccia verso un encoder fornita di un pacchetto in grado di gestire un posizionamento assi non è in grado di usare l'encoder come trasduttore fine di velocità anche se, scrivendo direttamente il software, questo sarebbe possibile.

I PLC espandibili o modulari hanno una struttura molto più vantaggiosa rispetto a quella dei PLC compatti. In primo luogo questa è una struttura modulare cioè è possibile configurare l’architettura del PLC in base alle effettive esigenze dell’automazione. E’ possibile inserire, di volta in volta, il numero e il tipo di moduli che occorrono senza sprechi e con una flessibilità notevole rispetto a eventuali ampliamenti futuri. Di riflesso questo porta ad avere una notevolissima varietà di moduli a propria disposizione, anche per svolgere funzioni molto particolari, come controllori PID e fuzzy, moduli CNC, moduli di comunicazione speciali, etc. La

Page 14: 2. Il PLC - Unibg

A. Flammini

disponibilità di moduli di comunicazione che implementano i principali protocolli a livello di campo (fieldbus) e a livello di fabbrica rende il PLC facilmente integrabile con tutto quanto gli sta attorno (I/O remoti, sistemi SCADA,...). Inoltre è scalabile perché è possibile scegliere il modello della CPU in funzione della complessità della configurazione e della gestione da implementare; questo perché tutti i modelli di una famiglia di CPU sono compatibili a livello software (almeno verso l’alto). Modularità, integrabilità e scalabilità sono le principali caratteristiche di un PLC espandibile o modulare. Per contro, come è intuibile, questi PLC sono più costosi dei compatti. In figura viene riportata la struttura di un PLC espandibile: il PLC Siemens SIMATIC-S5 (destra) e il PLC SIMATIC-S7-300 (sinistra). Anche se la serie S5 è superata rispetto alla serie S7, l’architettura non è di molto cambiata e il PLC si può sempre considerare come un sistema alloggiabile su guida a Omega (5) strutturato da un bus (4), da un alimentatore (1), una CPU (2) e dei moduli periferici (3).

Pag. 46

CPU314C-2 PtP

120m

L’alimentatore provvede alla generazione della tensione di lavoro del PLC,

tipicamente 5V, ed è provvisto di un sistema di alimentazione ausiliario (batteria tampone) per la memorizzazione dei dati dinamici così da garantire continuità di servizio anche in presenza di buchi o interruzioni di rete. Come si può notare nei PLC viene data grande importanza all’industrializzazione del prodotto. Ad esempio il bus è modulare, ossia è costituito da moduli a innesto e può essere reso lungo a piacere; inoltre è predisposto per il montaggio su guida a Ω per un semplice fissaggio del PLC alla parete di un quadro industriale. Spesso esistono versioni differenziate di uno stesso PLC (esempio i PLC espandibili Simatic S7-300) per montaggio in quadro o in esecuzione “outdoor”, ossia non riparata dagli agenti esterni, come ad esempio avviene per gli impianti di controllo del traffico, o su mezzi ferroviari. Generalmente l’elettronica si basa su componenti con limitato range di temperatura di funzionamento (0-70°C) che quindi risultano inadatti per simili impieghi: le versioni outdoor sono in grado di funzionare correttamente da –25°C a +70°C e di resistere a urti e vibrazioni. Nel proseguo verranno presi in esame i principali moduli di PLC espandibili e modulari con riferimento ai PLC Simatic S7-300 (serie espandibile) e Simatic S7-400 (serie modulare).

Page 15: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 47

2.4.1 Rack e Moduli di bus

Meccanicamente i vari moduli che compongono il sistema PLC trovano posto su un

“telaio a rastrelliera”, chiamato rack, oppure sono innestate su un più semplice modulo di bus; entrambi hanno la funzione di facilitare il montaggio meccanico e, soprattutto, di effettuare la connessione dei bus e delle alimentazioni fra i vari moduli. Le strutture a rack o a bus garantiscono la modularità dell’architettura del PLC. A sua volta il tutto viene montato a scatto su particolari guide profilate normalizzate chiamate guide Omega.

Ogni rack può contenere un numero massimo di schede ma, a parte posizioni particolari (tipicamente i primi 2 posti sono occupati da alimentatore e CPU), ogni posto può essere occupato da un qualsiasi tipo di scheda. Inoltre il sistema PLC può anche essere composto da più rack collegati, secondo varie configurazioni e gerarchie, in locale (se i rack sono fisicamente vicini) o in remoto (se i rack sono distanti). In generale per far questo sono necessarie opportune schede di interfaccia sia sul rack master sia su quelli slave.

L’indirizzo delle schede innestate sul rack o sul bus può essere di tipo posizionale (per esempio la scheda nella prima posizione utile ha indirizzo 0, la seconda 16,...) oppure può essere assegnato a piacimento tramite parametri impostabili dall’ambiente di programmazione del PLC.

2.4.2 Modulo alimentatore

Questo modulo permette di generare le tensioni di alimentazione per tutte le schede

che compongono il PLC (in genere +5VDC, +15VDC e -15VDC) partendo da una sorgente di alimentazione ausiliaria (24VDC, 115VAC oppure 230VAC) che spesso alimenta anche altri carichi. E’ quindi molto importante che questo modulo svolga una efficiente azione filtrante e stabilizzante al fine di aumentare la robustezza e l’affidabilità di tutto il sistema.

Molto spesso questo modulo esplica anche funzioni di sorveglianza, sia sulle alimentazioni che sulla corretta esecuzione del programma da parte della CPU (funzioni di watch dog), e funzioni di gestione dell’alimentazione di back up per le memorie volatili del PLC. Non è raro che il modulo alimentatore risulti fisicamente inserito nello stesso contenitore della CPU come avviene, per esempio, sui PLC Siemens S5.

2.4.3 Modulo CPU

Per l’architettura di una generica CPU, si rimanda a quanto detto a proposito dei PLC

compatti. I PLC espandibili o modulari, per la loro particolare struttura, permettono di poter scegliere fra diversi moduli CPU, tutti compatibili a livello elettrico e meccanico, ma con prestazioni e costi diversi; così per ciascuna applicazione è possibile scegliere la CPU più adatta. Nella scelta della CPU devono essere considerati diversi fattori. In primo luogo si deve valutare la capacità di memoria necessaria per quella particolare applicazione, sia a livello di programma sia a livello dati. Stimare la memoria

Page 16: 2. Il PLC - Unibg

A. Flammini

Pag. 48

necessaria può non essere facile, soprattutto per quanto riguarda il programma, e spesso ci si basa sull’esperienza data da altre applicazioni simili (corretta da coefficienti di sicurezza piuttosto abbondanti). Un altro parametro da considerare è il tempo di elaborazione del programma. Se il programma è molto lungo e complesso il PLC potrebbe risultare troppo lento nella gestione degli I/O e potrebbe arrivare a perdere particolari eventi (per esempio l’intervento di un sensore con Ton molto breve) oppure potrebbe svolgere i vari compiti con troppo ritardo (si pensi a un asse che deve arrestarsi su un finecorsa). Dai costruttori di solito viene fornita una tabella che riporta, per le varie CPU, i tempi di esecuzione delle istruzioni suddivise per categorie (operazioni sul bit, operazioni in virgola fissa, operazioni in virgola mobile, operazioni di branch, ...). Anche qui risulta però difficile stimare a priori la lunghezza del programma, la tipologia e il numero delle istruzioni che verranno impiegate. Tuttavia per le comuni applicazioni è difficile sbagliare perché in genere il tempo di elaborazione di una CPU è inversamente proporzionale alla sua capacità di memoria, quindi se un programma riesce a stare su una data CPU probabilmente sarà anche elaborato in un tempo ragionevole. Un’altra caratteristica da considerare è il numero e il tipo di interfacce disponibili. Il modulo CPU dispone sempre di una porta (spesso un'interfaccia seriale collegabile direttamente, o per mezzo di adattatori, alla porta RS232 di un PC) per il collegamento al sistema di programmazione. Spesso la comunicazione avviene tramite un protocollo predefinito implementato a livello firmware, in altri casi è possibile anche gestirla a livello di programma applicativo. Inoltre questa interfaccia può essere di tipo punto-punto (come la porta disponibile sulle CPU Siemens S5) oppure di tipo multipunto (come la porta MPI disponibile culle CPU S7-3xx Siemens su cui si possono connettere fino a 32 stazioni a 187.5 kbaud). In ogni caso, come si vedrà in seguito, queste non sono le uniche porte di comunicazione per un PLC. Quando servono altre porte (oppure porte che implementano protocolli più sofisticati) è possibile inserire sul bus speciali moduli detti moduli di comunicazione (Es. Profibus). Un’altra possibile variante fra le CPU è lo spazio di indirizzamento inteso come numero di I/O e il numero di rack che possono essere gestiti. Le schede tecniche delle CPU riportano sempre il numero di I/O e il numero di moduli gestibili tuttavia il significato di questi dati varia da costruttore a costruttore. Per alcuni tipi di PLC quello che limita è solo il numero di moduli innestabili e, in questo caso, non si distingue fra I/O digitali, I/O analogici o altri moduli. Per altri PLC, che usano un diverso tipo di architettura, vi è un limite per gli I/O digitali, uno per gli I/O analogici e uno per il numero massimo di moduli innestabili. Bisogna anche fare attenzione se nello spazio di indirizzamento riportato rientrano gli I/O remoti. In alcuni casi questi vengono trattati come se fossero I/O locali quindi rientrano nel computo complessivo, in altri casi gli I/O remoti vengono gestiti a parte.

2.4.4 Unità Periferiche “non intelligenti” 2.4.4.1 Moduli I/O digitali

Questi moduli permettono di connettere direttamente al PLC i trasduttori e gli

attuatori digitali posti sul campo. Finecorsa, sensori induttivi, sensori capacitivi, pulsanti, selettori e tutto quanto fornisce un segnale digitale verrà connesso alle schede

Page 17: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 49

d’ingresso mentre relè, elettrovalvole, spie di segnalazione e tutto quanto viene comandato da un segnale digitale verrà connesso alle schede di uscita. Sia i moduli di ingresso che quelli di uscita possono avere un parallelismo di 8, 16, 32 o 64 punti di I/O e possono esistere moduli misti di ingresso e uscita (per esempio 16 ingressi e 16 uscite sulla stessa scheda).

Le caratteristiche principali per un modulo di ingresso sono la tensione nominale in ingresso, la possibilità della separazione galvanica sugli ingressi e il valore del filtro d’ingresso. In genere la tensione nominale in ingresso è di 24VDC (anche se esistono schede a 115VAC e 230VAC), questo significa che vi sarà un certo campo di tensioni sull’ingresso in cui il segnale logico riconosciuto dal PLC sarà lo 0 (tipicamente da -30VDC a +5VDC) e ve ne sarà un altro in cui verrà riconosciuto come 1 (tipicamente da +15VDC a +30VDC). Molte schede d’ingresso sono anche dotate di optoisolatori che garantiscono la separazione galvanica fra il campo e il PLC. L’utilizzo di queste schede è sempre consigliabile soprattutto quando il PLC viene installato in ambienti elettromagneticamente molto disturbati dove si possono creare differenze di potenziale elevate. Un altro parametro da tenere presente durante la progettazione è che sugli ingressi digitali è sempre presente un filtro che, di fatto, limita la frequenza massima del segnale leggibile su un ingresso digitale. Tipicamente questo filtro ha una costante di tempo da 0.1 ms a 20 ms.

Per quanto riguarda le schede di uscita è importante definire il tipo di stadio d’uscita e la corrente massima fornibile. Tipici stadi d’uscita sono i transistor in configurazione open collector (con possibilità di avere optoisolatori per la separazione galvanica), relè e SSR (solid state relè). La scelta dello stadio d’uscita porta ad avere limiti sulla massima frequenza di commutazione (per esempio nel caso di uscite a relè si ha una frequenza massima di qualche decina di Hz, mentre le uscite a transistor possono superare il MHz) e sul tipo di segnale commutabile (le uscite a transistor possono comandare solo carichi in corrente continua mentre gli SSR solo quelli in alternata). Le tipiche correnti di uscita massime (per carichi resistivi) sono da 0.5A a 2A per le uscite a transistor e fino a 8A per le uscite a relè.

2.4.4.2 Moduli I/O analogici

Questi moduli permettono di connettere direttamente al PLC i trasduttori e gli

attuatori analogici posti sul campo. Potenziometri, dinamo, sistemi estensimetrici, celle di carico, sensori di pressione e tutto quanto fornisce un segnale analogico verrà connesso alle schede d’ingresso mentre riferimenti di velocità per inverter, indicatori da pannello e tutto quanto viene comandato da un segnale analogico verrà connesso alle schede di uscita. Sia le schede di ingresso che quelle di uscita possono avere un parallelismo di 2, 4, 8 o 16 punti di I/O e possono esistere schede miste di ingresso e uscita (per esempio 4 ingressi e 2 uscite sulla stessa scheda). Si ricorda che in ogni caso non può essere superato il massimo numero di punti di I/O analogici previsti nella dimensione delle variabili di appoggio.

Vi sono poi interfacce per il rilevamento di soglie analogiche, che permettono di sorvegliare l’andamento di una grandezza analogica in rapporto a dei limiti (o soglie), regolabili dall’utente. Ogni interfaccia (o via) effettua in maniera continua il confronto tra il valore del segnale di ingresso e due soglie, alta e bassa, regolabili mediante potenziometri tipicamente a controllo digitale. I risultati di questi confronti vengono

Page 18: 2. Il PLC - Unibg

A. Flammini

trasmessi al processore del PLC, sotto forma di segnali logici che vengono memorizzati come bit che rappresentano lo stato dei comparatori, per poi essere utilizzati dal programma di controllo.

Le principali caratteristiche dei moduli d’ingresso analogici sono il tipo di ingresso supportato (0..+10V, -10V..+10V, 0..20mA, 4..20mA, ingresso per termoresistenza Pt100 (termoresistore al platino di valore pari a 100Ω) e Pt1000 (termoresistore al platino di valore pari a 1000Ω), ingresso per termocoppia, ecc.), il numero di bit di risoluzione per il ADC (da 8 a 16 bit) e il tempo di conversione (in genere, per problemi di disturbi, si usa un ADC a doppia rampa con tempo di conversione nell’ordine delle decine di ms).

Per quanto riguarda i moduli d’uscita si hanno il tipo del segnale d’uscita (0..+10V, -10V..+10V, 0..20mA, 4..20mA, ecc.), il numero di bit di risoluzione per il DAC (da 8 a 16bit), il tempo di conversione, il massimo carico collegabile all’uscita e il tipo di collegamento al carico (a 2 fili o 4 fili nel caso in cui vi sia un circuito, detto di sensing, in grado di eliminare l’errore dovuto alla caduta di tensione sui cavi di collegamento).

2.4.5 Unità Periferiche “ intelligenti” Le interfacce intelligenti, dette anche moduli funzionali, hanno lo scopo di assolvere autonomamente funzioni di controllo che richiedono una continua sorveglianza, cosa che la CPU, visto il suo modo sequenziale di operare, non è in grado di svolgere. Questi moduli hanno normalmente precedenza nell’accesso all’unità centrale e sono usati per controllo assi, conteggio di impulsi veloci, ecc. Le attuali necessità dell’automazione industriale richiedono di impegnare sia funzioni combinatorie e sequenziali, sia funzioni speciali di tipo misura/regolazione, dialogo, conteggio e posizionamento. Queste funzioni vengono realizzate tramite interfacce ed accoppiatori intelligenti che eseguono un continuo monitoraggio del processo mentre scambiano informazioni con il processore del PLC ad ogni ciclo di quest’ultimo. Le interfacce intelligenti comprendono una parte specifica che garantisce l’adattamento dei segnali di ingresso o di uscita (amplificazione, filtraggio, ...), mentre una diversa parte costituisce l’interfaccia con il bus del PLC.

Interfacciaverso il PLC

Parte

Specifica

Bus del PLC Ingressi

Uscite

Gli accoppiatori intelligenti (vedi lo schema tipico della figura seguente) sono dei moduli che hanno un proprio processore e dei programmi interni che gli permettono di effettuare operazioni di elaborazione in maniera autonoma rispetto al processore del PLC. Gli accoppiatori scambiano informazioni con il processore del PLC. I risultati delle elaborazioni possono essere utilizzati sia direttamente dall’accoppiatore, nel caso in cui disponga di uscite proprie, sia dal programma utente del PLC. Alcuni

Pag. 50

Page 19: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

accoppiatori, ad esempio quelli per il posizionamento ed il comando degli assi, utilizzano un linguaggio specifico di programmazione.

Interfaccia

verso

il PLC

Bus del PLC Parte

specifica

Ingressi

Uscite

Unità di

elaborazione

Memoria

comune

con il PLC

Di seguito vengono riportate alcune tipiche schede d’interfaccia ed accoppiatori intelligenti:

- Schede per ingressi veloci, usate per individuare impulsi di durata molto breve, tali da non consentire l’uso delle normali schede per ingressi logici;

- Moduli ASCII, impiegati per ricevere oppure inviare dati di tipo alfanumerico

da o verso periferiche come stampanti, schermi, ecc. Molto utili per visualizzare dati di tipo diagnostico, come informazioni di produzione.

- Moduli di uscita verso motori passo-passo. Questi moduli generano sequenze

veloci di impulsi che permettono di comandare motori passo-passo (utilizzati per operazioni di posizionamento di pezzi o parti mobili di un impianto). Tra i problemi che questi moduli possono risolvere ci sono la generazione delle rampe di accelerazione o decelerazione necessarie per la partenza e la frenatura del motore.

- Moduli per il posizionamento di assi, spesso denominati APM (Axis Positioning

Module). A differenza dei moduli per il controllo dei motori passo-passo, i moduli per il posizionamento di assi hanno la capacità di ricevere un segnale di retroazione e quindi di effettuare il controllo della posizione a ciclo chiuso. In genere il posizionamento di assi è una problematica tipica dei Controlli Numerici Computerizzati, i CNC. Il fatto che la stessa funzione sia implementabile anche su alcune gamme di PLC, allarga moltissimo i campi di applicazione di questi ultimi.

- Moduli PID, regolatori con azioni Proporzionale, Integrale e Derivativo. Queste

interfacce sono usate nei controlli di processo in cui è necessario un controllo a ciclo chiuso.

Alcune di queste interfacce e moduli intelligenti vengono presentate di seguito in maniera più approfondita, scegliendo le strutture più tipiche.

Pag. 51

Page 20: 2. Il PLC - Unibg

A. Flammini

Pag. 52

2.4.5.1 Moduli di posizionamento assi In questa categoria rientrano una grande varietà di moduli che si possono suddividere

in 3 differenti tipologie, non sempre disponibili su tutti i modelli di PLC espandibili. I più semplici, chiamati moduli o schede di conteggio veloce, permettono di

collegare al PLC i segnali forniti da un encoder incrementale che, per la frequenza elevata dei segnali (fino al MHz per encoder a elevato numero di impulsi per giro), non può essere collegato direttamente ai comuni ingressi digitali. Questo tipo di modulo viene fornito corredato da librerie che forniscono funzioni per la lettura del contatore interno (in cui ho il numero di impulsi letti dall’encoder, e quindi lo spostamento relativo effettuato dall’asse) e la modifica del suo valore (utile, per esempio, per azzerare il conteggio) piuttosto che funzioni che ritornano la velocità e l’accelerazione attuale nel caso in cui l’encoder venga impiegato per il rilevamento preciso di una velocità.

Vi sono anche moduli che permettono di gestire anche un piccolo numero di I/O digitali a cui è possibile collegare finecorsa o gestire uscite veloci al raggiungimento di particolari soglie sul conteggio (per esempio è possibile gestire il rallentamento e l’arresto del movimento su un particolare valore di conteggio senza passare attraverso il programma del PLC).

Un’estensione dei precedenti sono i moduli di controllo assi in cui, oltre alle funzioni summenzionate, si ha a disposizione anche una uscita analogica che viene connessa all’azionamento motore (azionamenti per motori in C.C., brushless, motori passo-passo o inverter di tipo vettoriale) ed è in grado di comandare direttamente la velocità dell’asse per ottenere un posizionamento continuo, regolare e preciso. In questo caso le librerie a corredo sono molto più complesse e permettono funzioni del tipo: “muovi l’asse alla velocità X e accelerazione Y con profilo di velocità a S dalla posizione attuale alla posizione Z”.

Il modulo è in grado di gestire il tutto senza l’intervento del PLC (magari gestendo anche i finecorsa di sicurezza) e, al completamento del movimento, fornisce una segnalazione al PLC che è così in grado di effettuare semplici ma precise movimentazioni punto-punto.

In alcuni di questi moduli il programma interno al modulo è costituito da una serie di istruzioni o “passi” che descrivono i movimenti da effettuare; l’utente dispone di una quarantina di istruzioni che consentono di realizzare traiettorie più o meno complesse. Il modulo possiede una propria memoria dati (tabella di quote interne) nella quale possono essere memorizzate le quote in base ad una procedura di apprendimento. Dispone inoltre di 4 contatori che consentono di effettuare sequenze ripetitive. Il modulo dialoga con il processore del PLC tramite una apposita interfaccia; riceve dal processore i comandi (modi di marcia, comandi manuali...) e restituisce a quest’ultimo informazioni di controllo.

In genere i moduli controllo assi, per effettuare il controllo dell’asse, implementano un controllore di tipo PID in cui le costanti proporzionale, integrale e derivativa sono parametrizzate e impostabili direttamente dal PLC. Ultimamente, soprattutto per PLC giapponesi, sono disponibili moduli che implementano anche controllori di tipo fuzzy e neuro-fuzzy.

Per i PLC più potenti esistono anche moduli CNC o moduli di interpolazione assi che sono in grado di comandare contemporaneamente in modo coordinato una serie di assi (da 2 a 8) e quindi permettere traiettorie lineari, circolari e ellittiche. In effetti

Page 21: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 53

questi moduli costituiscono un sistema a parte, anche se innestato sul bus del PLC, con un loro processore e una loro memoria in cui è possibile caricare programmi di tipo part-program (descrizioni ad alto livello delle traiettorie da eseguire). Il PLC ha solo funzioni di supervisione con possibilità di selezione e avviamento per i vari part-program.

Con questi moduli è possibile soppiantare i sistemi CNC quando si devono implementare applicazioni non troppo complesse. Questi ultimi rimangono insostituibili nel caso di un numero molto elevato di assi o quando vi è la necessità di una interfaccia grafica sofisticata con l’utente o con i sistemi CAD/CAM. 2.4.5.2 Moduli controllore

In questa categoria rientrano tutti quei moduli che implementano controllori general-

purpose di tipo PID, fuzzy o neuro-fuzzy. In generale è possibile definire: - il valore di riferimento che deve essere raggiunto (per esempio la temperatura in

un forno) - l’ingresso di retroazione al controllore tra le tante variabili interne al PLC (per

esempio la temperatura letta da un forno per mezzo di una termocoppia che è stata collegata ad un’opportuna scheda di ingresso analogica)

- i parametri di regolazione (per esempio KP, KI e KD per un controllore PID dove OUT = KP*err + KI∫err + KD*d(err)/dt )

- l’uscita OUT del controllore tra le tante variabili interne al PLC (per esempio il valore che viene posto sull’uscita analogica che comanda l’apertura della valvola del gas del bruciatore di un forno).

- Il tempo di campionamento del controllore. E’ importante sottolineare come la riconfigurazione di tali moduli sia un’operazione

molto semplice da parte del PLC. Infatti è possibile riparametrizzare il regolatore così da permettere rapide variazioni di tipologia di lavorazione.

2.4.5.3 Moduli di comunicazione

Questi moduli permettono di collegare il PLC ad altre apparecchiature per mezzo di

reti di vario tipo utilizzando protocolli standard. Le comunicazioni possono essere sostanzialmente di 3 tipi: comunicazione diagnostica, comunicazione verso il campo e comunicazione verso altre unità intelligenti.

Tutti i PLC mettono a disposizione una porta alla quale è possibile collegare il sistema di programmazione e diagnostica e quindi programmare la CPU e verificare la corretta esecuzione del programma. Come detto precedentemente, il PLC ha almeno due modi di funzionamento: PROG, modalità di programmazione, in cui l’utente compila e scarica il proprio programma applicativo nel PLC, e RUN, modalità operativa, nella quale il PLC gestisce gli ingressi e le uscite secondo il programma operativo. Nel passaggio da PROG a RUN il PLC esegue delle procedure di inizializzazione che sono trasparenti per l’operatore. Spesso però questa porta “diagnostica” permette solo collegamenti di tipo punto-punto con caratteristiche non adatte all’ambiente industriale (per esempio è una porta RS232 a cui è possibile connettere direttamente un PC).

Page 22: 2. Il PLC - Unibg

A. Flammini

Pag. 54

Nella modalità operativa il PLC gestisce I/O locale ma anche I/O remoto, per cui diventa master (o client) di un bus di campo dedicato a sensori e attuatori. Per esempio spesso si utilizzano schede di I/O digitali remote, poste lontane dal PLC ma vicine ai trasduttori e attuatori sul campo, connesse tramite bus di campo al PLC master grazie ad un modulo di comunicazione che permette al PLC di gestire questi punti di I/O come se fossero fisicamente connessi a schede di I/O digitali poste sul suo rack. Questo permette una drastica riduzione dei tempi e costi di cablaggio (si usa un semplice doppino in luogo di un numero di fili almeno pari al numero di punti di I/O da gestire) senza stravolgere o complicare il programma del PLC. A questo proposito si rimanda al capitolo destinato ai bus di campo per maggiori approfondimenti.

Il PLC, a seconda della sua funzione, può essere di tipo compatto o espandibile e utilizzato prevalentemente per la gestione diretta di sensori e attuatori, oppure può essere di tipo modulare e utilizzato per funzioni di coordinamento di una cella di lavorazione: rispetto al bus di cella si può trovare nella condizione di master (client) verso sensori e attuatori complessi (videocamere, azionamenti) o PLC compatti, così come si può trovare nella condizione di slave (server) nei confronti di computer preposti alla supervisione e alla gestione di database. Attraverso queste reti è anche possibile comandare dispositivi complessi, come azionamenti e regolatori, migliorandone la stabilità: lo scambio dei dati, essendo digitale, non ha problemi di disturbi che possono invece degradare i segnali di tipo analogico (per esempio per un tipico azionamento brushless si passa da un control stability di 0.1% in analogica ad uno 0.006% tramite bus di campo).

Grazie ai moduli di comunicazione è anche possibile effettuare la parametrizzazione di questi dispositivi con notevoli vantaggi di tempo, comodità e sicurezza. Per esempio un tipico azionamento brushless può avere diverse decine di parametri impostabili e variabili a seconda della lavorazione: se si pensa ad un cambio di lavorazione si coglie come la presenza di una rete di comunicazione consenta di ridurre i tempi morti rispetto ad una riparametrizzazione da operatore mediante impostazione manuale; se si considera che una tipica applicazione può avere diverse apparecchiature di questo tipo è chiara la comodità di un sistema centralizzato per l’impostazione e il controllo.

Page 23: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

2.5 Il software

E’ fondamentale puntare sulla semplicità di programmazione dei PLC: i programmi devono risultare semplici, affidabili e ben documentati in quanto soggetti a frequenti modifiche. In generale, il ciclo di vita del software di automazione può essere schematizzato come in figura. Si comprende quindi l’importanza della scelta del linguaggio di programmazione che deve essere semplice, rigido e schematico e, nello stesso tempo, potente ed efficiente.

Specifiche di

progetto

Studio difattibilita’ Analisi e

specifica deirequisiti

Programma-zione e test

unita’Integrazionedelle unita’

e test

Richiesta dinuove

funzionalita’

Manuten-zione

Progetta-zione

2.5.1 I linguaggi tradizionali

I PLC di tipo compatto o espandibile vengono comunemente programmati con un linguaggio di programmazione che fa uso di tre diversi modi di rappresentazione:

- Ladder diagram (schemi a contatti) - Instruction List (lista di istruzioni) - Function block diagrams (schema elettrico funzionale)

Di seguito si farà riferimento alle simbologie adottate dai PLC Simatic S5-S7 della Siemens: per tutti i controllori programmabili della famiglia SIMATIC vi è un linguaggio di programmazione, lo STEP5-7, linguaggio che fa uso dei tre modi di rappresentazione, come accennato sopra, lista di istruzioni (AWL), schema logico funzionale (FUP) e schema a contatti (KOP), detto anche ladder diagram. Vediamo più da vicino queste tre possibili filosofie.

AWL

Ogni programma è costituito da una sequenza di prescrizioni elementari di lavoro per il controllore. Queste prescrizioni vengono chiamate “istruzioni”. Perciò un programma non è altro che un elenco di istruzioni, la cosiddetta “lista istruzioni”, abbreviata in AWL. Tutte le istruzioni sono strutturate nello stesso modo: la prima parte comunica al

Pag. 55

Page 24: 2. Il PLC - Unibg

A. Flammini

Pag. 56

controllore l’azione da compiere (operazione), la seconda parte comunica l’oggetto dell’azione richiesta (operando).Un operando è composto da una sigla (p.e. “E”,”A” ) e da un parametro, che a sua volta comprende il numero di posto-connettore (da 0 a 31) e il numero dell’ingresso o dell’uscita (da 0 a 7).

La lista di istruzioni (AWL) rappresenta quindi le funzioni con abbreviazioni mnemoniche: una riga AWL è un'istruzione. A puro titolo di esempio vengono riportate le caratteristiche di programmazione di un PLC reale.

Gli operandi possono essere: • E Ingressi Interfacce da processo a controllore • A Uscite Interfacce da controllore a processo • M Merker Memoria per risultati binari intermedi • D Dati Memoria per risultati numerici intermedi • T Temporizz. Memoria per attuare temporizzazioni • Z Contatori Memoria per attuare conteggi • P Periferia Interfaccia da processo a controllore • OB,PB,SB,FB,DB Blocchi Ausili per strutturare il programma

Nella programmazione a lista di istruzioni si fa uso di parentesi; le principali

istruzioni, utilizzate nella forma fissa istruzione-operando, sono:

U AND UN NAND O OR ON NOR S SET (di una variabile, di un flag, di un tempo, di un contatore) R RESET (di una variabile, di un flag, di un tempo, di un contatore) = Assegnazione L Caricamento T Trasferimento SI Attivazione di un tempo come impulso

(monostabile con uscita a 1 a partire dall'attivazione del segnale di ingersso per un tempo Tx, quindi uscita a zero)

SE Attivazione di un tempo come ritardo all'inserzione (monostabile con uscita ancora a 0 a partire dall'attivazione del segnale di ingresso per un tempo Tx, quindi se l'ingresso è ancora attivo, l'uscita va a 1)

SA Attivazione di un tempo come ritardo alla disinserzione (monostabile con uscita a 1 per un tempo Tx dopo che l'ingresso è andato a 0) ZV Conteggio in avanti di un contatore (+1 se l'ingresso è a 1) ZR Conteggio all'indietro di un contatore (-1 se l'ingresso è a 1) !=F Confronto su uguale (ACC1=ACC2?) ><F Confronto su disuguale (ACC1><ACC2?) > F Confronto su maggiore (ACC2>ACC1? < F Confronto su minore (ACC2<ACC1?) + F Somma (ACC1+ACC2) - F Sottrazione (ACC2-ACC1) Le costanti di tempo per i temporizzatori possono essere espresse nel modo seguente:

KT xxx.y dove KT sta ad indicare che si tratta di una costante di tempo xxx è il numero espresso in secondi y è il fattore di scala y=1 0.1 y=2 1 y=3 10

Per realizzare, ad esempio, la semplice funzione booleana sotto riportata si farà:

Page 25: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

(A1.0) = (E0.0&E0.1) + (E0.2&E0.3) nota: A=uscita E=ingresso U = AND, O = OR

U E0.0 U E0.1 O U E0.2 U E0.3 = A1.0

Riassumendo si può dire che il linguaggio a lista di istruzioni è un linguaggio fortemente orientato alla macchina, una sorta di assembler, riservato a personale con una certa esperienza di programmazione.

FUP

Lo schema logico (FUP) rappresenta il programma come se venisse realizzati mediante circuiti digitali identificati secondo la simbologia standard ANSI/IEEE Std.91. In pratica si procede a una programmazione con blocchi grafici. Per realizzare, ad esempio, la semplice funzione booleana vista sopra si farà:

(A1.0) = (E0.0)&(E0.1) + (E0.2)&(E0.3)

E0E0 &

Pag. 57

>=

Il linguaggio FUP è un linguaggio pseudografico che in genere non viene adottato di frequente in quanto non offre le potenzialità del linguaggio a lista di istruzioni, ne’ l’immediatezza del linguaggio a contatti. Inoltre il linguaggio grafico rapresenta processi concorrenti e sequenziali, mentre il programma di un PLC viene sempre eseguito in modo sequenziale.

KOP

Programmazione con simboli grafici come in uno schema funzionale. Lo schema a contatti (KOP), il più classico linguaggio per PLC, rappresenta il programma in forma grafica, utilizzando le connessioni serie e parallelo, secondo un ipotetico flusso di corrente che va da sinistra a destra (ladder). Questo tipo di programmazione è il piu’ vetusto, molto legato alla cultura degli addetti ai lavori perché fornisce un modello equivalente allo schema elettromeccanico. I primi PLC si potevano programmare esclusivamente in linguaggio ladder. Il linguaggio ladder fornisce una descrizione a contatti delle funzioni logiche da implementare, in accordo a come si era soliti documentare le logiche implementate a relais (linguaggio orientato al personale di formazione elettrotecnica): il programma consta di più segmenti formati ciascuno da una fila di elementi di base (contatti, bobine,…) dove si ipotizza un flusso di corrente da sinistra a destra. Per realizzare la solita semplice funzione booleana si farà:

&

1

.0

.1

.2

.3 A1.0E0E0

Page 26: 2. Il PLC - Unibg

A. Flammini

I0.0 I0.1 Q1.0 nota: Q(oppure A)=uscita I(oppure E)=ingresso ] [ ] [ ( ) I0.0 I0.1 ] [ ] [ Ipotetico flusso

Quale è la migliore metodologia? Dipende da cosa si vuole fare. Il Ladder (KOP) è potente nello schematizzare reti combinatori, reti sequenziali, varie combinazioni IO-Merker…, idoneo per rappresentazioni di schemi a contatti. E’ proprio per rispettare la formazione culturale degli addetti, abituati a gestire logiche a relais e quindi schemi funzionali a contatti, che i primi e attualmente più diffusi linguaggi dei PLC ricalcano i linguaggi grafici a contatti. AWL è il tipico linguaggio simbolico, quasi un assembler semplificato, adatto a effettuare operazioni complesse sui dati (trasferimenti di blocchi..), ad implementare algoritmi, per realizzare funzioni matematiche. FUP rappresenta la classica programmazione attraverso schemi funzionali rivolta a personale di estrazione elettronica. Tutti e tre questi linguaggi sembrano comunque adatti alla rappresentazione di funzioni semplici e quindi trovano vasta applicazione nei PLC compatti e espandibili.

2.5.1.1 Organizzazione dei programmi

Il programmatore, prima di stendere la sequenza di istruzioni che costituisce il programma applicativo richiamato nel ciclo di scansione, analizza le funzionalità richieste in termini di scatola nera ossia di matrice di interfacciamento. In questo modo sono chiaramente definiti tutti gli ingressi e le uscite che vengono quindi elencate in una sorta di tabella dei simboli, alla quale possono essere aggiunte le variabili globali (area V, M,..). Grazie a questa tabella, nota come lista delle attribuzioni, è possibile attribuire nomi simbolici ai dati migliorando la leggibilità del programma. Il programma di un PLC può essere steso in modo lineare o in modo strutturato: nel primo modo si ha un’unica sequenza che termina con il segmento END e che costituisce la parte principale del programma, mentre nel modo strutturato il programma viene ripartito in più sequenze richiamate da una sequenza principale. Il secondo modo è quello più utilizzato in quanto permette una migliore leggibilità e minimizza l’impatto delle modifiche e pertanto sarà quello analizzato di seguito. I programmi di un generico PLC sono costituiti da 3 elementi di base:

- programma principale

- sottoprogrammi (opzionale)

- routine di interrupt (opzionali)

Il programma principale, che termina con un segmento END, consta di blocchi di tipo Programma (sequenze di segmenti), di tipo Funzione (configurazione di moduli

Pag. 58

Page 27: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 59

funzionali –Es. PID-) e di tipo Sequenza (sequenze di passi –azioni da fare- e transizioni –condizioni per passare al passo successivo-). Gli eventuali sottoprogrammi iniziano con una dichiarazione del tipo SBR:1 –subroutine 1- e terminano con un segmento RET. Le chiamate a subroutine possono essere condizionate (“se è attivo l’ingresso I1.3 allora esegui SBR2”…). Le eventuali routine di interrupt iniziano con una dichiarazione del tipo INT:0 –interrupt 0- e terminano con un segmento RETI. Possono essere associate a ingressi o a eventi (eccezioni) quali la partenza “a freddo” o “a caldo”, la perdita del programma applicativo (batterie scariche),… Il programma viene suddiviso in sezioni secondo “buone regole” che dipendono dal settore produttivo coinvolto. Lo scopo è di rendere il programma leggibile, così che possa essere soggetto a modifiche ottimizzando i tempi del successivo test.

Ciascuna famiglia di PLC ha un proprio modello per l’organizzazione dei programmi; noi considereremo un PLC basato su immagini di processo, con riferimento ai PLC Siemens della serie S5.

In genere tutti i PLC permettono una programmazione di tipo strutturato e modulare mettendo a disposizione, per mezzo del sistema operativo residente (trasparente all’operatore), diverse tipologie di blocchi con differenti caratteristiche. Esistono sempre blocchi di tipo organizzativo (chiamati OB nei Siemens) che permettono di organizzare la struttura generale ad alto livello del programma utente. Vi saranno uno o più blocchi (OB1 per il Siemens) che verranno eseguiti ad ogni scansione fra la lettura dell’immagine di processo degli ingressi (IPI) e l’emissione dell’immagine di processo delle uscite (IPU) come mostrato nelle figure di seguito.

E’ buona norma che questi blocchi contengano solo il richiamo di sottoblocchi (di tipo PB o FB) che realizzano le varie tasks richieste; così il programma risulta più leggibile e la struttura del programma è individuabile anche solo ad una prima occhiata. Sempre per aumentare la leggibilità del programma è possibile effettuare scomposizioni di tipo logico (chiamate segmenti) per suddividere gli OB in sottoparti che risultano scorrelate fra loro (per esempio si può creare un segmento per la gestione dell’interfaccia utente, uno per il manuale, uno per l’automatico, uno per il comando degli ausiliari d’impianto, ecc.). In genere il sistema operativo del PLC effettua anche un controllo sul tempo di ciclo, inteso come il tempo per l’esecuzione di un ciclo di scansione completo, in modo da rilevare eventuali errori di programmazione che portano a bloccare il sistema (per esempio un branch errato che crea un loop infinito).

Esistono anche altri blocchi di tipo organizzativo (chiamati anche exceptional organization blocks) che vengono eseguiti solo al verificarsi di particolari eventi. In genere vi sono blocchi che vengono eseguiti solo durante una partenza a caldo del sistema (OB21 nel Siemens), durante la partenza a freddo (OB22 nel Siemens), quando viene riconosciuto che la batteria tampone è scarica (OB34 nel Siemens), e così di seguito. In alcuni PLC l’organizzazione a blocchi viene sostituita da altri tipi di organizzazione, come ad esempio quella citata a proposito degli special merker.

Altre tipologie di blocchi disponibili sono i blocchi di tipo programma (chiamati PB nei Siemens) e blocchi di tipo funzionale (chiamati FB nei Siemens) dove vengono implementate le varie tasks richieste dall’applicazione. La differenza fondamentale fra i due è che ai blocchi di tipo funzionale è possibile passare una serie di parametri in fase di richiamo mentre questo non è possibile per i blocchi di programma. Entrambi possono essere richiamati, in modo condizionato o incondizionato, sia dai blocchi organizzativi sia da altri blocchi funzionali o di programma. In questo caso occorre prestare attenzione al numero di livelli di nidificazione (cioè il numero di chiamate di

Page 28: 2. Il PLC - Unibg

A. Flammini

blocchi in cascata) perché esiste un limite imposto dal sistema operativo del PLC che non può essere superato (il Siemens supporta fino ad un massimo di 16 livelli).

Una tipologia di blocco che purtroppo non è sempre presente in modo nativo è il blocco di tipo sequenziale (chiamato SB nei Siemens) che permette una implementazione semplice e leggibile di funzioni sequenziali (per esempio una serie di comandi in sequenza che realizzano il ciclo di automatico di una macchina). In genere si basano su diagrammi chiamati Grafcet (sullo stile delle reti di Petri) composti da sequenze ordinate di passi (rappresentati con quadrati) e transizioni (rappresentati con croci). I passi contengono operazioni che codificano azioni da eseguire (per esempio la partenza di un motore, il comando di un pistone, l’attivazione di una spia di segnalazione,…) mentre le transizioni codificano delle condizioni di test che devono essere verificate per la prosecuzione della sequenza (per esempio l’attesa di un finecorsa, l’attesa di un tempo di ritardo, il controllo di un pulsante azionato dall’operatore,…). La semantica che regola il tutto è molto semplice: un blocco sequenziale inizia eseguendo un particolare passo (chiamato passo iniziale – initial step), poi vengono controllate le transizioni seguenti e, al verificarsi di una di esse, viene eseguito il passo successivo nella sequenza, poi di nuovo le transizioni che lo seguono e così di seguito fino al completamento della sequenza. Nella figura di seguito viene riportato un esempio che mostra la leggibilità e la semplicità di una banale sequenza implementata per mezzo di un blocco sequenziale.

0 Passo iniziale

(I0.2 = 1?)

1 Commuta A0.0 32 volte

(I0.2 = 0?) (fatto)

(0)

(1) (4)

2 Commuta A0.0 32 volte

(fatto) (2)

2.5.1.2 Dati

Pag. 60

Page 29: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Per quanto riguarda la gestione dei dati occorre seguire alcune regole fondamentali. Come si è detto le variabili globali sono enumerate nell’elenco dei simbolico e pertanto per ogni dato, così come per ogni linea di ingresso o uscita è possibile associare un simbolico e un commento che ne chiarifichi la funzione.

In genere bisogna tenere presente che in un PLC i dati rivestono la stessa importanza del programma. Una buona strutturazione dei dati può portare ad un notevole aumento di efficienza nella loro gestione. Per esempio occorre organizzare dati fra loro omogenei in variabili adiacenti (come indirizzo). Questo porta a minimizzare il tempo di trasferimento verso altri sistemi, per esempio i sistemi SCADA, dato che con una sola sessione di comunicazione è possibile trasferire tutti i dati che interessano per una data operazione (si ricordi che è più efficiente trasmettere un blocco composto da tanti dati in una sola sessione piuttosto che tante sessioni di blocchi più piccoli perché ciascun telegramma ha al suo interno altre informazioni, per esempio quelle per l’instradamento, che quindi vengono ripetute per ciascun blocco trasmesso). Oltre a questo conviene lasciare sempre delle zone di memoria libere fra i vari blocchi di variabili correlate tra loro. Queste serviranno come scorta nel caso di upgrade futuri dell’impianto.

Altro punto fondamentale è la documentazione: occorre commentare adeguatamente i dati definendo con chiarezza i produttori, i consumatori e le interfacce. Per questo possono essere utilizzati alcuni strumenti messi a disposizione dall’ambiente di sviluppo oppure occorre creare una adeguata documentazione cartacea (tabelle, cross reference, …). Questo può sembrare una perdita di tempo ma bisogna ricordare che un impianto può rimanere in funzione per molti anni e, spesso durante la sua vita, richiede modifiche dovute a migliorie sul processo, aggiunte di interfacce verso altre macchine, e tante altre cause difficilmente prevedibili a priori. Risulta quindi fondamentale attuare tutte quelle strategie atte a rendere il programma il più manutenibile possibile.

2.5.1.3 Strategie di programmazione Di seguito vengono enunciate una serie di buone regole di programmazione di PLC mediante linguaggi tradizionali, senza pretesa di esaustività.

1) Ogni segmento deve poter essere commentabile in modo chiaro e compiuto (strutturare il programma in sottoprogrammi ed eventualmente suddividere segmenti complessi in più segmenti semplici facendo uso di merker come variabili intermedie)

2) Seguire le logiche in sicurezza, possibilmente ridondando gli interblocchi su più segmenti

3) Si raggruppino le condizioni relative ad un certo stato di una o più uscite secondo la logica del “minimo impatto delle modifiche” (se si aggiungesse una condizione si dovrebbe modificare il programma nel minimo numero di punti)

4) Uscite e merker devono essere assegnati una sola volta all’interno di ogni ciclo di scansione

5) Si deve porre grande attenzione nell’ordine dei segmenti. Ad esempio si veda la realizzazione di un rilevatore (M01) di fronte di salita del segnale E0.0

E0.0 M0.0 M0.1

E0.0 M0.0 M0.1

E0.0 M0.0

Pag. 61

Page 30: 2. Il PLC - Unibg

A. Flammini

Se si associa ad ogni linea tratteggiata un ciclo, si osserva (disegno a sinistra) che nel

ciclo in cui E0.0 commuta, commuta anche M0.1 ma non M0.0, che deve commutare al ciclo successivo. La realizzazione a ladder riportata a destra rispecchia tale comportamento, dato che M0.0 viene aggiornato dopo che è stato utilizzato; se si scambiassero di posizione i due ladder, E0.0 e M0.0 commuterebbero insieme e quindi M0.1 risulterebbe sempre disattivo (figura sotto).

Pag. 62

2.5.1.4 Strutture ad autoritenuta Una delle più semplici e comuni applicazioni dei PLC consiste nella gestione di logiche di AVVIO/ARRESTO e nella gestione di logiche di ALLARME.

Pulsante AVVIO E0.0 Pulsante ARRESTO E0.1 Stato ABILITAZIONE A0.0

Condizione di ALLARME E0.0 Pulsante di RIPRISTINO E0.1 Segnalazione di ALLARME A0.0

Di seguito vengono riportati gli schemi funzionali della logica di avvio/arresto (a sinistra) e della logica di allarme (a destra).

Come si può osservare entrambe le configurazioni si dicono “ad autoritenuta” in quanto mantengono memoria dell’ultimo pulsante premuto. Nel caso entrambi i pulsanti siano contemporanenamente premuti, la configurazione di sinistra fa prevalere la

avvi E0.0 A0.0

arresto E0.1

A0.0

allarme A0.0

ripristino E0.1

A0.0

E0.0

E0.0 M0.0 M0.1

E0.0 M0.0 M0.1

E0.0 M0.0

Page 31: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

condizione di arresto (struttura stop-prevalente), mentre quella di destra fa prevalere la condizione di allarme (struttura start prevalente), secondo una logica di sicurezza. In generale i comandi di AVVIO sono contatti NA (normalmente aperti) , mentre i contatti di ARRESTO sono NC (normalmente chiusi). Infatti in caso di rottura cavi, si avrebbe AVVIO = aperto = disattivo e ARRESTO = aperto = attivo, generando automaticamente l’arresto secondo la logica in sicurezza. Analogamente i contatti relativi a condizione di allarme sono NC, mentre i contatti relativi a comandi di ripristino sono NA. La realizzazione su PLC della struttura stop-prevalente può essere realizzata in più modi:

KOP (Ladder diagram) AWL(lista istruzioni)

U ( O E0.0

Pag. 63

O A0.0 ) UN E0.1 = A0.0 La realizzazione a ladder di una struttura stop-prevalente prevede la condizione di set in parallelo con l’uscita e il tutto in serie con il negato della condizione di reset: in questo modo se è attiva la condizione di reset, comunque sia la condizione di set, l’ipotetico flusso di corrente da sinistra a destra risulta interrotto e l’uscita A0.0 risulta disattiva. La realizzazione a destra è effettuata mediante lista di istruzioni. . Con un controllore programmabile possiamo risolvere il compito sopra definito in maniera più semplice: per fare ciò utilizziamo le operazioni di set e reset a nostra disposizione. Avremo così:

AWL(lista istruzioni) FUP U E 0.0 S A0.0 U E 0.1 R A0.0 La realizzazione a destra, detta a box, chiarifica il meccanismo delle immagini di processo di uscita: infatti se sono contemporaneamente attive le condizioni di set e reset, l’immagine di A0.0 viene prima settata e poi resettata (N.B. solo la variabile immagine e non l’uscita), ma il valore che a fine ciclo verrà effettivamente caricato sull’uscita A0.0 è zero. La realizzazione su PLC della struttura start-prevalente può essere realizzata in più modi:

KOP (Ladder diagram) AWL(lista istruzioni)

E0.0

A0.0

E0.1 A0.0

S

R

E0.0A0.0

E0.1

Page 32: 2. Il PLC - Unibg

A. Flammini

U A0.0 UN E0.1

Pag. 64

O E0.0 = A0.0 La realizzazione a ladder di una struttura start-prevalente prevede la condizione di set in parallelo con la serie tra l’uscita e il negato della condizione di reset: in questo modo se è attiva la condizione di set, comunte sia la condizione di reset, l’ipotetico flusso di corrente da sinistra a destra risulta assicurato e l’uscita A0.0 risulta attiva. La realizzazione a destra è effettuata mediante lista di istruzioni. Come prima possiamo anche procedere in questo modo: AWL(lista istruzioni) FUP U E 0.0 R A0.0 U E 0.1 S A0.0

La realizzazione a destra, detta a box, chiarifica il meccanismo delle immagini di processo di uscita: infatti se sono contemporaneamente attive le condizioni di set e reset, l’immagine di A0.0 viene prima resettata e poi settata (N.B. solo la variabile immagine e non l’uscita), ma il valore che a fine ciclo verrà effettivamente caricato sull’uscita A0.0 è uno.

2.5.1.5 Macchine a stati La struttura a sequenza di istruzioni dei programmi crea qualche difficoltà nella realizzazione di macchine a stati. Si pensi al seguente problema: in presenza del segnale “abil” di abilitazione della sequenza si ha la seguente macchina a stati E’ possibile implementare tale macchina a stati utilizzando dei flag (implementabili con i merker). Tali flag sono identificativi degli stati e perciò si ha: - flag1 (stato di attesa dello START a motori spenti) - flag2 (stato di motore_avanti e attesa del finecorsa_dx) - flag3 (stato di motore_indietro e attesa del finecorsa_sx) Si definiscono delle reti combinatorie per le transizioni tra gli stati: Se flag1 .AND. START .AND. automatico -> res(flag1),set(flag2),res(flag3)

E0.0

A0.0 E0.1

A0.0

R

SE0.0

E0.1A0.0

Motore avanti

START Finecorsa_dxSTART NOT(abil)

Motore indietro

Motori spenti

Finecorsa_sx .OR. NOT(abil)

Page 33: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Se flag2 .AND. finecorsa_dx -> res(flag2), set(flag3), res(flag1) Se flag3 .AND. finecorsa_sx -> res(flag3), set(flag1), res(flag2) Se .NOT. automatico -> res(flag2), res(flag3), set(flag1) Quindi si condizionano le azioni da fare: Se flag1 -> spegni motori Se flag2 -> motore avanti Se flag3 -> motore indietro Applicando tale metodo potrebbe esserci più di una transizione alla volta. E’ preferibile quindi introdurre un ulteriore flag a garanzia che nel singolo ciclo di scansione vi sia al massimo una transizione tra uno stato e il successivo. Si avrebbe quindi: Si definisce un flag (flag0) che indica un passaggio di stato Se flag1.AND.START.AND.abil .OR. flag2.AND.finecorsa_dx .OR. flag3.AND. finecorsa_sx: -> set flag0 La sezione delle transizioni diventerebbe Se flag0.AND.flag1.AND.START.AND.abil -> res(flag0,flag1,flag3), set(flag2) Se flag0.AND.flag2.AND.finecorsa_dx -> res(flag0,flag1,flag2), set(flag3) Se flag0.AND.flag3.AND.finecorsa_sx -> res(flag0,flag2,flag3), set(flag1) Se .NOT. abil -> res(flag0,1,2,3) Mentre la sezione dei passi rimarrebbe inalterata Se flag1 -> spegni motori Se flag2 -> motore avanti Se flag3 -> motore indietro Si analizzi la macchina a stati realizzata in linguaggio ladder utilizzando solo segmenti ladder e merker: se I0.0 inizia la sequenza, si esegue il sottoprogramma 1 (SUBR1) e, a seguito dell’evento EV1, si passa a eseguire il sottoprogramma 2 (SUBR2) e, a seguito dell’evento EV2, la sequenza termina e ricomincia solo a seguito di I0.0. Si hanno 3 stati:

- Stato 0: attesa inizio sequenza (attesa I0.0) - Stato 1: esecuzione SUBR1 e attesa EV1 - Stato 2: esecuzione SUBR2 e attesa EV2 Agli stati possono essere associati altrettanti merker (M0.0, M0.1, M0.2). Il

programma risulterebbe il seguente (si noti la scarsa leggibilità):

RILEVAZIONE CAMBIAMENTO DI STATO (flag M1.0)

EV1 M0.1

I0.0 M0.0

EV2 M1.0S

M0.2

Pag. 65

Page 34: 2. Il PLC - Unibg

A. Flammini

CAMBIAMENTI DI STATI (TRANSIZIONI) E AZIONI (PASSI)

M1.0

Pag. 66

Si noti come in questa logica le subroutines relative ai passi devono essere svolte in un unico ciclo di scansione.

M1.0R

M0.2R

M0.0S

M0.2 M1.0

R M0.0

R M0.1

S

M0.0 M1.0

SUBR1

M1.0R

M0.1R

M0.2S

M0.1 M1.0

SUBR2

Page 35: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

2.5.1.6 Uso di timer e contatori Un timer viene in genere rappresentato a box.

Pag. 67

Il timer è un contatore di tempo e si incrementa dopo che è trascorso un tempo detto “base tempi”. Esistono timer a diverse basi tempi (1ms, 10ms,…). Possono esistere diversi tipi di timer. Il timer più generale, indicato come timer Ton nella nomenclatura Siemens Simatic S7-200, ha un ingresso di abilitazione IN (se IN=0 il timer rimane fisso a zero) e dispone di una costante di tempo PT trascorsa la quale l’uscita viene posta a 1. Il timer può disporre di autoritenuta (Tonr): in tal caso se IN si disattiva prima del tempo PT, il conteggio parziale viene memorizzato e, alla successiva riattivazione di IN, il conteggio riprende da dove era stato interrotto. Nell’esempio riportato a lato il timer 32 ha una base tempi di 1ms e pertanto dopo 8ms dall’attivazione di E0.0 T32 si attiva e rimane attivato fino a quando non si disattiva E0.0. Se invece E0.0 rimane attivo per meno di 8ms, allora non si ha alcun effetto su T32. Anche i contatori sono rappresentati a box. Esempio L’ingresso CU abilita il conteggio in incremento e quindi per ogni impulso del segnale in ingresso a CU il contatore si incrementa. Analogamente l’ingresso CD abilita il conteggio in decremento, tuttavia in caso di CU e CD attivi contemporaneamente non si ha ne’ incremento ne’ decremento. L’ingresso R azzera il contatore.fronte di salita. Nell’esempio riportato a lato Z48 rimane alto per tutto il tempo in cui il contatore 48 ha valore 3.

Posso anche gestire in modo molto potente funzioni di temporizzazione con linguaggi tipo AWL. Un controllore SIMATIC possiede temporizzatori interni con diverse funzioni: ad esempio ritardo all’inserzione o alla disinserzione….. Sulla scorta di due esempi, “l’avvio di un tempo quale impulso” ed il “ritardo all’inserzione”, conosceremo più da vicino alcune di queste funzioni di temporizzazione.

PT

Txx

IN

PT

Txx

IN Ton

PT

Txx

IN Tonr

E0.0

8 PT

T32

IN Ton

PV

Zxx

CU

RCD

PV

Z48

CUE0.0

RCD

E0.1

E0.2

3

Page 36: 2. Il PLC - Unibg

A. Flammini

Usiamo la funzione di temporizzazione ritardo all’inserzione “SE” quando sussiste la seguente problematica: un ingresso deve attivare un’uscita con un certo ritardo (es. 7 secondi) e lasciarla attivata finchè l’ingresso porta il segnale “1”. Nel seguente diagramma è rappresentata graficamente tale situazione:

Nella lista istruzioni dovremo impiegare l’operazione “SE”, per l’avvio di un tempo

quale ritardo all’inserzione. Con “KT” stabiliremo quanto tempo deve passare prima che il temporizzatore “T2” porti il segnale ad “1”. Pertanto si ricava la seguente lista istruzioni:

E0.0

70 PT

T35IN Ton

E0.0 T35 A0.0

U E 0.2 L KT 70.1 SE T2 U T2 =A 1.3

In altre parole appena attiviamo l’ingresso E 0.2 lasciandolo attivato, avviamo il

ritardo all’inserzione; con l’istruzione “kt 70.1” abbiamo definito un ritardo di 70*0.1s=7sec. Le due istruzioni “L KT 70.1” e “SE T2” fanno sì che il temporizzatore T2 fornisca un segnale “1” dopo 7 secondi dall’attivazione dell’ingresso E 0.2, purchè l’ingresso rimanga attivato almeno per quel tempo, quindi se l’ingresso rimane attivato per più di 7 secondi, l’uscita A 1.3 si attiva dopo 7 secondi, altrimenti non si attiva.

Impieghiamo la funzione di temporizzazione avvio di un tempo quale impulso ”SI” quando si presenta il seguente quesito: un’uscita deve sempre attivarsi quando un determinato ingresso porta il segnale “1” e deve rimanere attivata finchè persiste il segnale “1” all’ingresso, però al massimo, per un tempo prestabilito (es. per 40 secondi). Il diagramma temporale illustra chiaramente tale situazione:

Pag. 68

Page 37: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

La lista istruzioni AWL risulta questa:

E0.1

40 PT

T1IN Ton

E0.1 T1 A1.2

U E 0.1 L KT 40.2 SI T1 U T1 = A 1.2 Praticamente con l’ingresso E 0.1 avviamo il temporizzatore; le due istruzioni successive “ L KT 40.2 “ e ” SI T1” fanno sì che il temporizzatore T1, una volta avviato, funzioni per 40 secondi sempre che all’ingresso E 0.1 sia presente per tutto quel tempo il segnale “1”; finchè il temporizzatore è in funzione, l’istruzione “U T1” fa in modo che l’uscita A 1 sia attivata.

2.5.2 Nuovi Standard di programmazione: IEC1131-3 Come si è detto, il linguaggio Ladder diagram è legato alla formazione culturale degli addetti ai lavori. Gli schemi funzionali sono rivolti al personale di estrazione elettronica ma, con l’avvento di programmi di definizione dell’Hardware diversi dagli schemi funzionali (Es. VHDL Very High speed Integrated Circuit Hardware description Language), questa modalità sembra destinata a rimanere in ombra. Le liste di istruzioni sono più orientate al personale di estrazione informatica, tuttavia sono legate biunivocamente ai ladder diagram (a una lista di istruzioni corrisponde una sequenza di ladder) e quindi ne conservano i limiti. Questi tre linguaggi tradizionali sono orientati all’implementazione di programmi semplici e non consentono, ad esempio, una facile integrazione tra parti di programma sviluppate da diversi progettisti. L’assenza di una metodologia di progetto del Software comporta lunghi tempi di sviluppo e le scarse doti di autodocumentazione di tali linguaggi comportano un’affidabilità limitata. Inoltre vi è una certa diversità tra i linguaggi proposti dai diversi costruttori (Ad esempio la modalità lista di istruzioni prevede istruzioni e simbologie diverse a seconda del costruttore) e più in generale il software risulta fortemente legato all’hardware, con una conseguente difficoltà nelle operazioni di “upgrade” dell’hardware. La riduzione dei tempi di messa in servizio di un impianto di automazione, e quindi la riduzione dei tempi di test sul campo, è un problema di notevole importanza. I linguaggi tradizionali mal si prestano alla realizzazione di potenti strumenti di sviluppo e simulatori in grado di aumentare le procedure di test che possono essere effettuate prima della messa in servizio. Sebbene molti costruttori abbiano messo a disposizione linguaggi tipo “Structured Text” in grado di adattarsi meglio alle applicazioni più complesse, la necessità di uno standard ha portato alla defnizione dello standard di programmazione per PLC noto come IEC1131-3 (std.61131). Le caratteristiche principali dello standard IEC 1131-3 sono riassunte nei seguenti punti:

Pag. 69

Page 38: 2. Il PLC - Unibg

A. Flammini

Pag. 70

1. Lo standard incoraggia uno sviluppo del software ben strutturato: top-down o bottom-up. Un programma può essere suddiviso in elementi funzionali detti POU (Program organization unit: programmi, function block, funzioni). Questi elementi software possono essere usati ripetutamente in differenti parti di un'applicazione. Ogni copia di questi elementi prende il nome di istanza. L'uso delle POU incoraggia la riusabilità del software. 2. Lo standard richiede che ci sia uno "strong data typing": ossia la capacità di verificare quando un programmatore tenta erroneamente di scrivere un dato di tipo errato in una variabile. Per esempio, assegnando il valore 1 come bit , ad una locazione di memoria designata per ricevere il valore di un tempo come 1 secondo, si provocherà un errore che sarà rilevato prima che il programma venga scaricato sul PLC. 3. Full execution control. Diverse parti di programma possono essere eseguite ad intervalli di tempo diversi, con differenti frequenze e in parallelo. Per esempio una parte del programma può necessitare una scansione ogni 50 ms, mentre un'altra parte del programma può necessitare di una scansione ogni secondo. Questo è ottenuto assegnando le varie parti di un programma a task differenti. 4. Pieno supporto per descrivere le sequenze. Un Complex sequential behaviour può essere risolto utilizzando un linguaggio grafico chiamato SFC. Questo permette di descrivere le sequenze in termini di step. 5. È possibile definire strutture dati. Per esempio una pompa controllata da un PLC può avere un bit di stato che definisce se è attivo o no, un'uscita analogica che definisce la velocità richiesta, un ingresso analogico che definisce la velocità misurata e così via. Tutti questi dati possono essere definiti dentro una singola struttura dati detta "pump ". È poi possibile passare tutte queste informazioni come una singola variabile tra differenti POU. Ciò aumenta la leggibilità dei programmi. 6. Flexible language selection. Il progettista del sistema è libero di scegliere fra cinque linguaggi: tre grafici, due testuali, per rappresentare differenti parte di un'applicazione di controllo. 7. Vendor-independent software. In altre parole, una grossa porzione di software scritto secondo le specifiche dello standard IEC 1131-3 dovrebbe essere eseguibile su PLC di differenti fornitori. Lo schema generale del modello software IEC1131-3 è illustrata in figura. L’elemento esterno (configuration) corrisponde generalmente ad un PLC. Nella descrizione di un sistema si possono avere più configuration tra le quali è possibile stabilire delle comunicazioni secondo modalità previste e definite dallo standard. All’interno di una configuration troviamo una o più resource che costituiscono il supporto di esecuzione dei programmi. Le resource sono autonome tra loro e possono essere messe in corrispondenza con le varie CPU che compongono i PLC modulari più complessi: la comunicazione tra differenti resource avviene tipicamente attraverso variabili condivise (global variable, directly represented variable).

Page 39: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

x

x

x

x

I Task possono essere intesi come i motori di attivazione (periodici o legati a eventi) di più parti di più program (ad esempio se non vi sono task -zero task- i program vengono eseguiti secondo una struttura sequenziale). L’obiettivo dei task è di assegnare differenti frequenze di esecuzione ai programmi o ai Function Blocks di una stessa Resource. La dichiarazione di un task è caratterizzata da 3 parametri: SINGLE (il task viene eseguito quando SINGLE passa da 0 a 1 –evento-), INTERVAL, costituito prevalentemente dalla gestione della variabile TIME (il task viene eseguito periodicamente con periodo pari a TIME), PRIORITY, costituito prevalentemente da una variabile decrescente –“0” è la più alta priorità-. L’esecuzione dei task dipende però dal sistema operativo, che può permette l’interruzione dell’esecuzione deltask (preemptive) o no. I program sono dei contenitori di costrutti eseguibili, scritti nei linguaggi previsti dallo standard. Tali costrutti si ripartiscono in function block (procedure con parametri di ingresso e di uscita e variabili locali –Es. regolatore PID- ) e function (sistemi a più ingressi e una sola uscita priva di stati interni). I function block possono essere costituiti a loro volta da altri function block secondo una struttura gerarchica. I moduli, che nello standard sono detti POU (Program Organisation Unit) sono quindi dei tipi program, function block e function, che in genere sono presenti a livello di librerie e hanno la caratteristica di non essere ricorsivi, ossia l’invocazione di una POU non deve comportare l’invocazione di un’altra PUO dello stesso tipo (in altre parole un program può essere istanziato solo dentro una resource, mentre un blocco funzionale può essere istanziato all’interno di un programma o di un altro blocco funzionale.. La definizione di un POU ne permette l’utilizzo un numero di volte illimitato in diverse parti dell’applicazione. La normativa prevede un ricco insieme di dati elementari: booleani (1 bit), interi con e senza segno (8, 16, 32, 64 bit), reali (32, 64 bit), stringhe di caratteri e di bit (campo non numerico), più alcuni tipi di dato definiti dall’implementazione (data, ora, data&ora, tempo) e tipi di dati generici (ANY). Lo standard inoltre prevede variabili a

Pag. 71

Page 40: 2. Il PLC - Unibg

A. Flammini

Pag. 72

molti elementi (tabelle –tutti dati dello stesso tipo- e strutture –dati composti da un insieme di elementi nominati-). Tra le function standard ricordiamo le funzioni di conversione di tipo (Es. real_to_int, trunc, int_to real, BCD_to_int,...), funzioni numeriche (ADD,SUB, MUL, DIV, MOD, ABS, LN, LOG, SIN, SQRT, MOVE,.....), funzioni di stringhe di bit (ROR, ROL, SHR, SHL), funzioni di stringa di baratteri (Lenght, insert,...), funzioni di selezione e comparazione (MAX, MIN, MUX, Greater than –GT-,...), funzioni booleane (AND, OR, XOR, NOT), funzioni di tipi di dati relativi al tempo (ADDTIME, DATA_AND_TIME_TO_TIME_OF_DAY), .... Tra i blocchi funzionali standard troviamo gli elementi bistabili (Set-Rest set-dominante, Set-Reset reset-dominante, semafori), i due rilevatori di fronti, i contatori up, down e up-down, i timer (temporizzazione di impulso –parte in corrispondenza del fronte in ingresso e dopo un certo tempo PT si attiva-, con ritardo all’attivazione TON –se abilitato conta e si attiva dopo PT, con ritardo di disattivazione TOF –segue l’ingresso sul fronte di salita mentre sul fronte di discesa comincia a contare e dopo PT si disattiva-) e i blocchi di comunicazione (definiti nella IEC1131-5). Per evitare di dipendere dall’hardware e tentare di lavorare su una cosiddetta “macchina virtuale”, lo standard evita di definire alcune caratteristiche quali ad esempio la mappa dei punti di ingresso/uscita. Sono previsti vari linguaggi per la strutturazione interna di un POU:

- Ladder Diagram (Es. KOP) - Instruction List (Es. AWL) - Function Block Diagram (Es. FUP) - Structured Text (Linguaggio ad alto livello tipo PASCAL o BASIC) - Sequential Function Charts (SFC) Il linguaggio SFC (variante del linguaggio grafcet al quale si è accennato precedentemente) è costituito da diagrammi a passi tipo flow charts caratterizzati da:

- Steps (stati delle sequenza di controllo) - Actions (più azioni contemporanee possono essere assegnate ad un passo e la

temporizzazione di ciascuna azione e’ fissata mediante qualificatori) - Transitions (passaggi tra passi)

2.5.3 Sistemi di sviluppo

Per programmare il PLC viene fornito un ambiente di sviluppo, tipicamente residente su PC. L’ambiente di sviluppo dovrà essere personalizzato per quel tipo di PLC (modello CPU). Di seguito viene mostrato a titolo di esempio un ambiente di programmazione. Dopo aver completato un segmento o una serie di segmenti si può verificare la sintassi del codice introdotto selezionando il comando del menu CPU Compila, o facendo clic sul pulsante di compilazione. Se la compilazione non ha dato

Page 41: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

errori è possibile caricare il programma sul PLC, avendo l’accortezza di verificare che si trovi nello stato PROG. Di fatto nel PLC vengono caricati i seguenti oggetti: - Il blocco di codice (OB1) contiene la logica di programma che la CPU deve eseguire. - Il blocco dati (DB1) contiene i valori di inizializzazione da usare nel programma. - La Configurazione CPU (CFG) contiene le informazioni di sistema sul configurazione, che includono i parametri di comunicazione, i campi a ritenzione, le selezioni dei filtri di ingresso, le password e le definizioni delle tabelle di uscita. L’utente può utilizzare l’editor del blocco dati per preimpostare o inizializzare le variabili (area V) da utilizzare nel programma utente. È opzionale l’utilizzo di un blocco dati. L’impostazione avviene semplicemente indicando l’indirizzo seguito dal valore di inizializzazione. Nella maggior parte degli ambienti di sviluppo è possibile eseguire la diagnostica del programma sviluppato, eventualmente selezionando le variabili di interesse e posizionandole in strutture dette tabelle di stato: in questo modo, per quella data variabile, è possibile tenere sotto controllo il valore o forzarlo. Per migliorare la leggibilità dei programmi è fondamentale un buon uso della tabella dei simboli. La tabella dei simboli permette di assegnare nomi simbolici a ingressi, uscite e indirizzi di memoria interni. La prima colonna della tabella dei simboli viene utilizzata per selezionare righe. Le altre colonne sono destinate al nome simbolico, all’indirizzo e al commento. Per ogni riga l’utente assegna un nome simbolico all’indirizzo assoluto di un ingresso o uscita digitale, un indirizzo di memoria, un merker speciale o altro elemento. Per ogni simbolo assegnato è opzionale, anche se fortemente consigliata, l’aggiunta di un commento.

Pag. 73

Page 42: 2. Il PLC - Unibg

A. Flammini

Pag. 74

A corredo degli ambienti di sviluppo vi sono i simulatori, oggetti nei quali è possibile sviluppare e testare programmi senza disporre dell’hardware dove il programma andrà a girare. A titolo di esempio viene descritto sommariamente l’ambiente di sviluppo Siemens STEP7. STEP 7 è il pacchetto di base utilizzato per configurare e programmare i sistemi di automazione SIMATIC. Esso rappresenta una parte integrante del software industriale SIMATIC. Del pacchetto base STEP 7 esistono le seguenti versioni: • STEP 7-Micro/DOS e STEP 7-Micro/Win per applicazioni semplici Stand-alone (non

integrate) nell'ambito di SIMATIC S7-200 • STEP 7 per applicazioni in SIMATIC S7-300/400, SIMATIC M7-300/400 e

SIMATIC C7 con un volume di funzioni supplementari. Il pacchetto di base è di supporto in tutte le fasi del processo di generazione di soluzioni di automazione e dispone appunto di una serie di applicazioni: • Linguaggi di programmazione (KOP, FUP, AWL) e possibilità di passare da un

linguaggio di programmazione ad un altro (nota: solo se vengono rispettate tutte le regole sintattiche).

• SIMATIC Manager per gestire ed organizzare i dati appartenenti a un progetto (cioè organizzare tra loro i vari blocchi di un unico programma).

• Editor di simboli con cui vengono gestite tutte le variabili globali, permettendo una programmazione più efficiente, assegnando ad ogni variabile un identificativo simbolico per migliorare le leggibilità del programma.

• Configurazione hardware per la configurazione e la parametrizzazione dell’hardware di un progetto di automazione.

• Configurazione della comunicazione. • Diagnostica hardware che offre una panoramica sullo stato del sistema di

automazione. L'interfaccia utente del software STEP 7 è stata ideata secondo moderni principi ergonomici, e consente un facile approccio al software. Un progetto all’interno dello STEP7 viene organizzato a blocchi di vario tipo: OB (Blocchi Organizzativi) , FC (Funzioni definite dall’utente), SFC (blocchi Funzioni di Sistema), DB (Blocchi Dati), FB (Blocchi funzionali), SFB (Blocchi Funzionali di Sistema). I blocchi OB determinano la struttura del programma utente e sono i blocchi con priorità maggiore, in particolare l’OB1 è sempre il primo ad essere interrogato ad ogni ciclo macchina; ci sono anche altri OB predefiniti come OB35 che vengono interrogati ciclicamente ad ogni periodo prestabilito in fase di programmazione. I blocchi FC contengono le routine di programma per le funzioni più utilizzate e sono eseguiti solo se vengono esplicitamente chiamati da qualche altro blocco. Le funzioni di sistema (SFC) sono funzioni preprogrammate, e sono integrate nella CPU S7. Le SFC possono essere richiamate dal programma. Sia le FC che le SFC sono blocchi "privi di memoria". I blocchi FB sono blocchi con "memoria", programmabili dall'utente. Il blocco funzionale di sistema SFB è un blocco funzionale con memoria integrato nella CPU S7. Siccome fanno parte del sistema operativo, gli SFB e gli SFC non vengono caricati come parte del programma. I DB sono aree di dati per la memorizzazione dei dati utente. Oltre ai dati rispettivamente assegnati a un blocco funzionale, possono essere definiti dati globali utilizzabili da blocchi qualsiasi; infine i blocchi SFB ed i

Page 43: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 75

blocchi SFC rendono accessibili alcune importanti funzioni di sistema. I blocchi SFB sono come dei blocchi FB a cui però è assegnato sempre un DB, cioè quando vengono aperti, bisogna aprire anche il DB associato. Un progetto ha quindi un’architettura ramificata come quella delle directory, in cui, il blocco organizzativo è la directory “madre” e contiene n sottodirectory, cioè tutte le funzioni e i data-base connessi.

Page 44: 2. Il PLC - Unibg

A. Flammini

2.6 Esempi di PLC

Rispetto alla offerta dei costruttori di PLC property, le grandi aziende che si dedicano all’automazione industriale, offrono un ottimo supporto tecnico ed una grande possibilità di espansione. Garantiscono inoltre i loro prodotti di norma per un anno (in alcuni casi ladurata della garanzia è maggiore), e questo è un fattore molto importante per chiunque decida di automatizzare la propria attività produttiva. Le case costruttrici esaminate costituiscono gran parte della leadership mondiale nel settore dell’automazione industriale e ognuna di esse può vantare una gamma di microcontrollori programmabili molto vasta, che copre tutte le possibili esigenze in termini di complessità. Si tratta di General Electric, Siemens, Omron, Allen Bradley (Rockwell Automation) e Modicon (Schneider). Per ogni casa costruttrice verranno descritte una o più famiglie di PLC. Viene descritto più nel dettaglio un modulo di espansione di un PLC per il controllo della temperatura, visto che moduli di questo tipo sono largamente utilizzati nella maggioranza dei controlli di processo industriali. General Electric Verranno descritte le caratteristiche di un modello della serie GE 90-30, i modelli GE 90 Micro ed il modulo di controllo della temperatura TCM. Serie GE Fanuc 90-30 – Modello 331

La serie GE Fanuc 90-30 PLC, è una famiglia di controllori programmabili, sistemi di I/O e moduli specifici tra le più diffuse nel mondo.

Pag. 76

Page 45: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

La serie è composta da quattordici CPU, più di cento moduli di I/O diversi, una vasta gamma di moduli aggiuntivi, e svariati modelli di interfacce bus. Il modello preso in esame, la CPU 331, è una delle quattro CPU considerate di media gamma. Si è scelto questo modello a rappresentanza dei PLC espandibili, essendo espandibile fino ad un totale di 1024 I/O discreti e 128 I/64 O analogici, con la possibilità di aggiungere moduli specifici, come il modulo TCM (Temperature Control Module) di controllo della temperatura. La programmazione di questi PLC si può realizzare con Ladder logic, o con SFC, sfruttando i tools grafici disponibili. La tabella mostra le principali caratteristiche:

GE 90-30 CPU 331 Numero massimo di I/O discreti 1024 Numero massimo di I/O analogici 128 In/64 Out Registri di memoria (word) 2048 Memoria utente 16 kbytes Tempo di esecuzione di una operazione booleana

0.4 μs

Tempo di scansione degli I/O 5 – 8 ms Temporizzatori/contatori 680 Tipo di memoria RAM, EPROM, EEPROM Linguaggio di programmazione Ladder logic, SFC Reti collegabili LonWorks, DeviceNet, SDS Garanzia 1 anno Serie GE Fanuc 90 Micro Il modello 90 Micro è un PLC compatto disponibile in due versioni, con 14 I/O e con 28 I/O, ai quali possono essere aggiunti moduli di espansione che portano il totale rispettivamente a 79 e a 84 punti. Per questo il campo di applicazioni che interessa questi modelli, non copre macchine troppo complesse, ma si presta alla gestione di macchine semplici, con un numero limitato di parametri di controllo e di attuatori da gestire. Il 90 Micro ha proprio nella semplicità di installazione, di programmazione e di utilizzo le sue caratteristiche più interessanti. Ecco le principali specifiche delle due versioni: GE Fanuc 90 MICRO Punti di I/O 14 28 Tempo di esecuzione di una operazione booleana

1.8 μs 1 μs

Tempo di esecuzione di una istruzione base

48 μs 29 μs

Tempo di scansione degli I/O 5-8 ms 5-8 ms Capacità memoria 3 Kwords 8 Kwords

Pag. 77

Page 46: 2. Il PLC - Unibg

A. Flammini

Tipo di memoria RAM, Flash EEPROM, programmer memory card Registri dati 256 2000 Temporizzatori/contatori 80 600 Linguaggio di programmazione

Ladder logic Ladder logic

Set di istruzioni 14 booleane + 60 avanzate 14 booleane + 60 avanz. Porte seriali 1 porta RS422 2 porte RS422 Garanzia 1 anno Temperature Control Module (TCM) Il modulo di controllo della temperatura TCM, che costituisce una possibilità di espansione per i PLC della serie GE 90-30, è in grado di gestire fino ad otto canali di ingresso a termocoppia (più un canale per eventuale riferimento esterno) e otto canali di controllo di uscita. Ogni canale può operare in modo ad anello chiuso o aperto sollevando il PLC dal compito dalle funzioni di controllo della temperatura. La risoluzione del TCM è di 12 bit o di 0.2°C con una tolleranza di ±1°C ed una capacità di ±12V [24].

Il modulo è in grado di controllare otto zone indipendenti e può operare in due modi: automatico o manuale. Nel modo automatico, il TCM opera un controllo della temperatura con PID ad anello chiuso. L’output è una PWM (Pulse Width Modulation) in cui è possibile impostare il periodo di ogni zona da 0.1 a 60 secondi. Il duty cycle di ogni zona del PWM in uscita, che è generato automaticamente in funzione dei coefficienti del PID, si estende dallo 0 al 100% del periodo di uscita con una risoluzione dello 0.1%. I coefficienti del PID per ogni zona sotto controllo sono valori caricati dalla CPU del 90-30. Nel modo manuale il TCM implementa un ciclo di controllo in anello aperto. Il duty cycle del PWM in uscita può essere settato da 0 a 100% con una risoluzione dello 0.1%. Il periodo del PWM di uscita è programmabile da 0.1 a 60 secondi. Il modulo, esegue i seguenti controlli diagnostici: - test all’avvio delle memorie e dei circuiti periferici;

Pag. 78

Page 47: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

- monitoraggio continuo e indicazioni della condizione della linea di potenza tramite indicatori LED; - controllo sulla condizione delle termocoppie di ogni zona e segnalazione di due tipi di guasto: 1) circuito aperto e 2) polarità invertita. In caso di guasto alle termocoppie, il controllore di zona può mantenere un duty cycle fisso (manuale) o azzerare l’uscita immediatamente; - rapporto dello stato degli errori delle termocoppie per ogni zona. Siemens SIMATIC S7-200

La famiglia Siemens SIMATIC S7-200 è composta da: - 5 modelli di unità base - 17 moduli di espansione digitali e analogici - 2 moduli di comunicazione per connettersi a sistemi PROFIBUS e ad interfaccia AS Il Simatic S7-200 con CPU 214, è un PLC di gamma medio bassa, tra i più diffusi. E’ dotato di 14 ingressi digitali e 10 uscite digitali, ed è possibile aggiungere fino ad un massimo di sette moduli di espansione aggiuntivi. Il processore è dotato di 4 ingressi ad interrupt basati sui fronti di salita e di discesa, di 2 ingressi ad interrupt periodico a tempo, di 7 allarmi di contatori veloci e di 2 allarmi di sequenza di impulsi. E’ inoltre presente un orologio hardware e c’è la possibilità di impostare tre livelli di password. Nella seguente tabella vengono elencate le rimanenti principali specifiche tecniche: SIMATIC S7-200 (CPU 214) Numero massimo di I/O 64 Massima dimensione di un programma 2048 word Tempo di esecuzione di una istruzione base 0.8 μs Bit ausiliari interni 256 Bit ausiliari speciali 688 Temporizzatori 128 Contatori 128 Memorie dati 2048 word Garanzia 1 anno

Pag. 79

Page 48: 2. Il PLC - Unibg

A. Flammini

SIMATIC S5-115U

I controllori programmabili S5-115U sono una famiglia di PLC presenti sul mercato da molto tempo, modulari di fascia media. La famiglia è composta da cinque modelli di processori e da numerosissimi moduli di espansione. Gli S5 sono programmabili in Ladder logic, in CSF (Control System Flowchart), o in STL (STatement List). Ecco le caratteristiche di un Siemens Simatic S5-115U con una CPU modello 944:

SIMATIC S5-115U (CPU 944) Numero massimo di I/O digitali 4096 Numero massimo di I/O analogici 256/256 Massima dimensione di un programma 96 kbyte Tempo di esecuzione di una istruzione base 0.8 – 1.8 μs Tempo di risposta agli interrupt 2 ms Bit di memoria 2048 Temporizzatori 128 Contatori 128 Reti collegabili PG/OP/SINEC L1, ASCII driver Garanzia 1 anno Siemens Serie S7-300 (espandibile)

Pag. 80

Page 49: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Memoria di lavoroIstruzioniMemoria di caricamentoTempo di elaborazioneTempo di reazione MerkerTemporiz. / contatoriSpazio indirizzam. I/ONo. canali digitaliNo. canali analogici I/O

312C

16 KB

5 k

Plug-in 64k-4MB

Min. 0.2 µs

800 µs

1024

128 / 128

1024 / 1024 byte

266

64 / 32

313C 314C

32 KB

10 k

Plug-in 64k-4MB

Min. 0.1 µs

400 µs

2048

256 / 256

1024 / 1024 byte

1000

248 / 124

48 KB

16 k

Plug-in 64k-4MB

Min. 0.1 µs

400 µs

2048

256 / 256

1024 / 1024 byte

1000

248 / 124

Le tre CPU dispongono di I/O integrato come rappresentato in tabella. Ogni ingresso digitale può essere configurato come ingresso di interrupt e ogni ingresso analogico può essere utilizzato anche come ingresso digitale.

Numero di DINumero di DONumero di AINumero di AO

312C 314C313C

10

6

-/-

-/-

313C 313C-2 PtP / DP24 16

16 16

4+1* -/-

2 -/-

314C-2 PtP / DP24

16

4+1*

2 * un ingresso ulteriore dedicato alle PT100 (termoresistori)

Le caratteristiche degli I/O digitali e analogici sono le seguenti:

Tensione nom inale

C am po am m issibile

C orrente nom inale

R itardo all’ingresso

R itardo di Sw itch-off

Isolam ento elettrico dal bus posteriore

G ruppi d i

M ax. frequenza

D igitalinputs

D C 24 V

D C 20.4 - 28.8 V

---

0 .1/0.5/3/15 m s

---

S I

16

---

Digitaloutputs

DC 24 V

DC 20.4 - 28.8 V

0.5 A

---

2 m s

SI

8

100 Hz

Pag. 81

Page 50: 2. Il PLC - Unibg

A. Flammini

C am pi d i m isura

Tensione

C orrente

R isoluzione

Filtro (50/60 H z)

R itardo all’ingresso

R itardo all’uscita

Isolam ento elettrico dalbus posteriore

Analoginputs

±10 V ; 0 - 10 V

±20 m A; 0/4-20 m A

11 bits + segno

Selezionabile

5 m s

---

Yes

Analogoutputs

±10 V ; 0 - 10 V

±20 m A; 0/4-20 m A

11 bits + segno

---

---

1.2 m s

Yes

Esistono moduli funzionali per l’interfaccia encoder, il posizionamento assi e la regolazione PID. Vi sono inoltre contatori veloci per segnali da 10Hz a 60kHz con possibilità di selezionare la strategia di conteggio (misura di tempo, di frequenza, misure multiperiodo,…) e uscite a impulsi con frequenza massima di 2.5kHz. Per quanto riguarda l’integrazione le possibilità di interfaccia sono differenziate per tipo di CPU.

312C313C 314C-2 PtP

313C-2 PtP314C-2 DP313C-2 DP

MPI

Punto-a-punto

PROFIBUS-DPScambio dati veloce e ciclico Grande sicurezza dei dati

Interfaccia presente su tutte le CPU - connessione di CPU, dispositivi di program. e OPComunicazione a basso costo senza Hw addizionale e di semplice configurazioneComunicazione con max. 11 OP contemporaneamente (dipendente dalla CPU)

Interfaccia seriale integrataScambio dati con dispositivi di altri fornitori

Siemens Serie S7-400 (modulare) Per quanto riguarda la serie di PLC modulare, questa offre un notevole numero di CPU, per cui vengono riportate le caratteristiche di alcune di esse.

Pag. 82

Page 51: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Codice / DatiIstruzioniDI/DOAI/AOVeloc. di elabor.MerkerTempor./Contator.Interfacce di comunicazione

CPU414-2 414-32x128kB 2x384KB

42 K 128 K

cad 16K cad 32K

cad 1K cad 2K

da 0,1µs

8K

256 / 256

MPI/DPPROFIBUS DP

IFM SS

CPU414-2 414-32x128kB 2x384KB

42 K 128 K

cad 16K cad 32K

cad 1K cad 2K

da 0,1µs

8K

256 / 256

MPI/DPPROFIBUS DP

IFM SS

CPU416-2 416-32x0,8MB 2x1,6MB

265 K 530 K

cad 32K cad 64K

cad 4K

da 0,08µs

16K

512 / 512

MPI/DPPROFIBUS DP

CPU416-2 416-32x0,8MB 2x1,6MB

265 K 530 K

cad 32K cad 64K

cad 4K

da 0,08µs

16K

512 / 512

MPI/DPPROFIBUS DP

CPU 412-1 412-22x48kB 2x72kB

16 K 24 K

cad 8 K

cad 512

da 0,2µs

4K

256 / 256

MPI/DPPROFIBUS DP

CPU 412-1 412-22x48kB 2x72kB

16 K 24 K

cad 8 K

cad 512

da 0,2µs

4K

256 / 256

MPI/DPPROFIBUS DP

CPUCPU 417-42x2MB *)

660 K

cad 128K

cad 8K

da 0,1µs

16K

512 / 512

MPI PROFIBUS DP

2 IFM SS*) espandibile fino a 10MB cad.

CPUCPU 417-42x2MB *)

660 K

cad 128K

cad 8K

da 0,1µs

16K

512 / 512

MPI PROFIBUS DP

2 IFM SS*) espandibile fino a 10MB cad.

Se per quanto concerne gli ingressi e le uscite digitali non vi sono sensibili differenze rispetto agli ingressi e uscite digitali supportati dalla serie S7-300, per quanto riguarda il mondo dell’interfaccia analogica si nota una maggiore flessibilità verso il panorama dei sensori.

Analoginputs

+/- 80 mV ... 10 V,

+/- 20 mA,4 ... 20 mA etc.

8, 16

Pt 100, Pt 1000, Ni 100,termocoppieB,R,S,T,E,J,K,N,U,L

8 to 16-bitincl. Sign bit

0.05 ... 100 ms

Typ A Typ B— x

Ex(i)

Analogoutputs

+/- 10 V, 0 ... 10 V

+/- 20 mA,4 ... 20 mA, etc.

8

--

12-bitincl. Sign bit

0.4 ... 1 ms

Typ A Typ B— x

Ex(i)

Gamma di tensione

Gamma di corrente

Canali

Sensori(incl. linearizazione)

Risoluzione

Tempo di conversione

Diagnostica

Caratterist. speciali*(*via ET 200M)

C’è da sottolineare l’attenzione verso l’industrializzazione del prodotto: possibilità di alimentazione ridondante, plug&play “in linea” dei moduli, cavi preconfezionati protetti contro l’inversione delle polarità,….. Particolarmente interessante è la connettività di tali sistemi, che si estende anche a Internet, e la possibilità di connessione diretta a pannelli di interfaccia uomo-macchina.

Pag. 83

Page 52: 2. Il PLC - Unibg

A. Flammini

PC/Computer OS/OP

S5115U/H135U155U/H

SIMATIC505 S5-95UPC/

ComputerPC/

Computer OS/OPS5115U/H135U155U/H

SIMATIC505 S5-95U

Tramite processore di comunicazionealleggerimento della CPU

Tramite processore di comunicazionealleggerimento della CPU

PROFIBUS

con cavo in fibra ottica fino a 23.8 km

PROFIBUSS7 expanded comm.S5 compatible comm.Standard comm. (FMS)12 Mbit/sUp to 127 nodes

PROFIBUSS7 expanded comm.S5 compatible comm.Standard comm. (FMS)12 Mbit/sUp to 127 nodes

PG/PCwithSTEP 7

PG/PCwithSTEP 7

C7 S7-300 S7-400C7 S7-300 S7-400Tutte le funzioni PGTutte le funzioni PG

Industrial EthernetS7 expanded comm.S5 compatible comm.Standard comm. (TCP/IP)10 Mbit/sUp to 1024 nodes

Industrial EthernetS7 expanded comm.S5 compatible comm.Standard comm. (TCP/IP)10 Mbit/sUp to 1024 nodes

Industrial Ethernet

con cavo infibra ottica

fino a 4.3 km

PROFIBUSPROFIBUS

Industrial EthernetIndustrial Ethernet

Profibus-DP o MPI

S7-300

S7-400

S7-400

S5-115US5-135US5-155U

Dispositivo di programmazione (PG) /pannello operatore (OP)

S7-400

Management computer

S5-115U

PG/PC

PG/PC

Profibus-DP o MPI

S7-300S7-300

S7-400S7-400

S7-400S7-400

S5-115US5-135US5-155U

S5-115US5-135US5-155U

Dispositivo di programmazione (PG) /pannello operatore (OP)Dispositivo di programmazione (PG) /pannello operatore (OP)

S7-400S7-400

Management computerManagement computer

S5-115US5-115U

PG/PCPG/PC

PG/PCPG/PC

Omron

La gamma di PLC Omron è composta di tre gruppi: i PLC compatti, i modulari di fascia media e i modulari di fascia alta. Di seguito verranno descritte le principali caratteristiche del compatto Omron CPM1, il più semplice della fascia bassa, e il modulare C200H, di fascia media.

Omron CPM1 Si tratta di una soluzione che privilegia la semplicità e la compattezza rispetto alle possibilità di espansione che infatti sono molto limitate. Sono disponibili tre diversi tipi di CPU che integrano rispettivamente 10, 20 e 30 I/O.

Pag. 84

Page 53: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Pag. 85

L’espansione del sistema consiste nel collegare un modulo di I/O da 20 punti alla CPU, per questo la massima configurazione consentita è di 50 I/O (30+20). Sysmac CPM1, pur essendo un micro PLC, utilizza gli strumenti di programmazione, le periferiche e i protocolli dei modelli di fascia superiore. Si possono scegliere sia la console, sia il software di programmazione, disponibile anche in ambiente Windows e anche in lingua italiana. Il CPM1 può inoltre essere integrato in una rete tramite la porta RS422 e quindi supervisionato da un PC all’interno di un ciclo di lavorazione.

SYSMAC CPM1 Numero massimo di I/O 50 punti Moduli di I/O 20 punti Massima dimensione di un programma 2048 word Set di istruzioni 134 Tempo di esecuzione di una istruzione base 0.72 μs/istruzione Bit ausiliari interni 512 Bit ausiliari di memoria 256 Bit di mantenimento 320 Bit di collegamento 256 Temporizzatori o contatori 128 Memorie dati (16 bit) 1024 Reti collegabili Sysmac Way, PLC Link Garanzia 1 anno Omron C200H E’ uno dei modelli di PLC utilizzato nell’impresa oggetto del caso di studio del capitolo successivo. I PLC di fascia media C200H della Omron, sono disponibili in diversi modelli di CPU che variano per alimentazione, potenzialità e velocità. Oltre ai moduli di I/O di diverse taglie, il Sysmac C200H dispone di numerosi moduli speciali, come il contatore veloce a 50 e 75 kHz, interfacce seriali a doppino telefonico e in fibra ottica, controlli asse, ingressi a termocoppia e per regolazione di temperatura. SYSMAC C200H Numero massimo di I/O 880 punti (2096 in rete Sysmac Bus) Moduli di I/O 5/8/12/16/32/64 punti Massima dimensione di un programma 6.6 kword Set di istruzioni 170 Tempo di esecuzione di una istruzione base 0.75 – 2.25 μs/istruzione Bit ausiliari interni 3520 Bit ausiliari di memoria 448 Bit di mantenimento 1600 Bit di collegamento 1024 Temporizzatori o contatori 512 Memorie dati (16 bit) 2000 Reti collegabili Sysmac (Way, Link, Net, Bus), Profibus Garanzia 1 anno

Page 54: 2. Il PLC - Unibg

A. Flammini

Omron CQM1

I PLC Omron CQM1 sono una serie di controllori per applicazioni abbastanza semplici, che offrono un buon compromesso tra semplicità di installazione e di utilizzo, costo e prestazioni. Si tratta di piccoli PLC modulari, con una scelta fra sette CPU, moduli di I/O ed alcuni moduli speciali, come il modulo CQM1-TC00 di controllo della temperatura. Nella tabella di seguito sono mostrate le caratteristiche del modello con CPU 21, la seconda in ordine di prestazioni: SYSMAC CQM1 (CPU 21) Numero massimo di I/O 128 Moduli di I/O 4/8/16/32 I/O Massimo numero di moduli di I/O 7 moduli Massima dimensione di un programma 3.2 Kwords Linguaggio di programmazione Ladder logic Tempo di esecuzione di una istruzione base 0.5 – 1.5 μs Bit ausiliari 448 Bit di collegamento 1024 Set di istruzioni 117 Temporizzatori o contatori 512 Memorie dati 1 kwords Reti collegabili Sysmac Way, Sysmac Bus, PLC Link,

Sysmac Link, Sysmac Net, Profibus Garanzia 1 anno Allen Bradley

Allen Bradley, la grande azienda del gruppo Rockwell Automation, si mostra particolarmente attenta ai diversi settori applicativi, proponendo non macchine generiche quanto soluzioni per specifici settori. Così ad esempio per il settore del controllo nelle macchine trasformatrici di materie plastiche Allen Bradley propone

Pag. 86

Page 55: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

moduli per alcuni modelli di PLC Allen Bradley di diverse complessità, dai semplici e compatti della serie SLC (modulo 1746-BLM), ai più complessi della serie PLC-5 (moduli QDC). Verrà data una descrizione più accurata del sistema PLC-5+modulo QDC, denominato Pro-Set 700 Injection Molding Control System: si tratta di un sistema di controllo di macchine per lo stampaggio ad iniezione completo che costituisce una buona soluzione già quasi pronta all’uso.

I componenti principali di un sistema di stampaggio a iniezione

Modulo di stampaggio 1746-BLM

Il modulo 1746-BLM (Blow Molding Module) può essere aggiunto ad un sistema basato su un PLC della serie SLC 500, una famiglia di controllori compatti. Il modulo esegue il controllo indipendentemente, ma riceve la configurazione e la gestione run-time dal processore SLC, e restituisce le variabili di controllo e lo stato degli allarmi. Il modulo permette di immettere il profilo del pezzo da stampare grazie all’immissione di punti (fino a 256) che vengono interpolati. Questi settaggi e le altre fasi della configurazione e del monitoraggio possono essere visualizzate tramite l’interfaccia Allen Bradley Panel-View 900. Famiglia SLC

Pag. 87

Page 56: 2. Il PLC - Unibg

A. Flammini

SLC 500 Numero massimo di I/O 104 Moduli di I/O 4/8/12/16/32 Massima dimensione di un programma 1 kword Tempo medio di scansione del programma (per Kword)

8 ms

Tempo di scansione degli I/O 2.6 ms Porte DH-485 Tipi di memorie RAM con batteria di backup, EPROM o

EEPROM Linguaggi di programmazione Ladder logic Garanzia 1 anno

Pro-Set 700 Injection Molding Control System La Allen Bradley offre un sistema completo dedicato allo stampaggio a iniezione della plastica. Il sistema combinato della Allen Bradley, denominato Pro-Set 700 Injection Molding System, è costituito essenzialmente dal software Pro-Set 700, dal modulo di controllo della formatura della plastica QDC e da una unità centrale PLC-5. Tale sistema di base può essere arricchito da ulteriori moduli di espansione come il modulo di controllo della co-iniezione QI, dal modulo TCM per il controllo delle temperature nelle varie zone, e dal modulo SPI per la comunicazione con altri componenti.

Pag. 88

I componenti del sistema Pro-Set 700

Page 57: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

La configurazione della lavorazione avviene impostando dei “profili” di comportamento delle varie parti controllabili. Per esempio, è possibile impostare i profili di ampiezza della pressione o della velocità della vite, lungo il ciclo di lavorazione. Per il monitoraggio del processo il sistema Pro-Set 700, fornisce il SPC (Statistical Process Control), ovvero un componente software in grado di tracciare l’andamento dei parametri caratteristici della lavorazione. Uno dei vantaggi nell’utilizzo di questo sistema è la presenza di una bella interfaccia operatore organizzata ad icone, che rende comode le operazioni di settaggio e di configurazione della macchina. La configurazione dei moduli QDC e QI avviene attraverso una serie di videate e risulta abbastanza semplice e veloce.

Un’altra caratteristica importante di questo sistema è la possibilità di salvare e caricare le ricette (Per “ricetta” si intendono i parametri relativi ad un determinato oggetto e ad uno specifico materiale e tutti i settaggi della macchina per quella lavorazione.) relative alle lavorazioni di specifici oggetti e di specifici materiali su/da disco fisso o da floppy, possibilità che permette di passare da una lavorazione all’altra in modo molto veloce. Il sistema può essere interfacciato ad un PC tramite porta seriale, per la programmazione on-line e off-line del processore PLC-5 e dell’interfaccia operatore, nonché per il salvataggio/caricamento delle ricette.

Processori PLC-5 Midsize

PLC-5 Midsize Processors Numero massimo di I/O 512 - 3072 Moduli di I/O 8/16/32 Massima dimensione di un programma 8/100 kword Tempo minimo di scansione del programma (per Kword)

0.5 ms

Tempo medio di scansione del programma (per Kword)

2 ms

Tempo di scansione degli I/O 9ms @ 57.6k bit/s 5ms @ 115.2k bit/s 3ms @ 230k bit/s

Tipi di memoria RAM con batteria di backup o EEPROM Linguaggio di programmazione Ladder logic, SFC, Funzioni a blocco,

structured-text programming Porte RS-232-C / RS-422-A / RS-423-A Garanzia 1 anno

Pag. 89

Page 58: 2. Il PLC - Unibg

A. Flammini

Modicon Modicon, divisione del Gruppo Shneider specializzata sull’automazione industriale, per quanto riguarda i PLC, offre la serie 984, una famiglia di controllori abbastanza vasta composta di tre settori: PLC compatti, modulari si fascia media e modulari di fascia alta. Verrà di seguito data una breve descrizione dell’architettura dei PLC Modicon in generale, quindi saranno illustrate le specifiche di due serie, la 984-x85 e la 984-48x. Tutti i PLC della serie 984 hanno una memoria basata su tecnologia CMOS con batteria di backup per mantenerne l’integrità durante le perdite di tensione, inoltre un interruttore di protezione sul controllore previene da manipolazioni non autorizzate della memoria stessa. E’ anche possibile, per applicazioni che richiedessero specifiche particolari, dotare le memorie di batterie agli ioni di litio, in grado di supportare le memorie per più di un anno senza altre fonti di energia. Tutti i PLC della serie 984 sono programmabili tramite Ladder logic, ormai linguaggio standard per la programmazione dei controllori industriali; i software di programmazione Modicon offrono delle funzioni aggiuntive rispetto ao tradizionali blocchi-funzione della Ladder logic, come funzioni matematiche, di trasferimento dati, matriciali, e operazioni binarie. E’ previsto un ulteriore linguaggio di programmazione, da usare a sé stante o integrandolo con la Ladder logic, denominato MSL (Modicon State Language), per programmare e per effettuare la diagnosi dei dispositivi. Come per quasi tutti i PLC, i moduli di I/O possono essere locali (collocati in prossimità del controllore) o remoti (collocati ad una distanza fino a 4,5 Km rispetto al controllore). Il controllore è integrato con i sistemi di I/O secondo il seguente schema: Ogni componente periferico, come pannelli di interfacciamento, o computer, può comunicare con il controllore, attraverso una porta Modbus (RS-232), per acquisizione di dati, editing di programmi o operazioni di archiviazione. Serie PLC Modicon 984-x85

Pag. 90

Page 59: 2. Il PLC - Unibg

Sistemi Logico Programmabili – Cap. 2

Modicon 984-x85 Numero massimo di I/O discreti 8192/16384 Numero massimo di I/O analogici 1088 In/ 1088 Out Moduli di I/O 8/16/32 Massima dimensione di un programma 10/32 kword Registri 1088 Tempo medio di scansione del programma (per Kword)

1 ms

Tempo di scansione degli I/O 8.3 ms Tipi di memoria RAM con batteria di backup o EEPROM Linguaggio di programmazione Ladder logic, SFC, Funzioni a blocco,

structured-text programming, MSL Porte 2 Modbus (RS-232) e 1 Modbus Plus Garanzia 1 anno Serie PLC Modicon 984-48x

Modicon 984-48x Numero massimo di I/O discreti 2048 Numero massimo di I/O analogici 224 In /224 Out Moduli di I/O 8/16/32 Massima dimensione di un programma 16 kword Registri 1920 Tempo medio di scansione del programma (per Kword)

3 ms

Tempo di scansione degli I/O 8.3 ms Tipi di memoria RAM con batteria di backup o EEPROM Linguaggio di programmazione Ladder logic, SFC, Funzioni a blocco,

structured-text programming Porte 2 Modbus (RS-232) Garanzia 1 anno

Pag. 91

Page 60: 2. Il PLC - Unibg

A. Flammini

Pag. 92

RIFERIMENTI CAP. 2

http://www.plcs.net/contents.shtml Tutorial su PLC

http://www.plcman.co.uk/plc/ Tutorial su PLC

http://www.diit.unict.it/users/scava/ii_dispense.html PLC, std.1131, OPC

v. anche Riferimenti per il cap. 2