Tutto sui PLC (parte 4)

11 02 2008

Realizzare un programma non vuol dire solo rispettare i requisiti imposti dal processo che si andrà a comandare, ma anche sviluppare il lavoro in modo ordinato per evitare di incorrere in troppi errori e quindi eccessivi collaudi e per poter eseguire su di esso, in modo veloce, tutte le manipolazioni dovute a modifiche e letture.

 

Per poter creare un software per un problema dato è indispensabile conoscere tutti gli aspetti inerenti il processo, sia in termini di funzionalità, che di modalità di marcia / arresto, e questo per poter affrontare tutti gli aspetti sulla sicurezza sia di chi realizza l’automatismo che dell’operatore che vi andrà a lavorare. Lo studio del problema va quindi realizzato tenendo conto di tutti i requisiti previsti, anche per poter effettuare la scelta dei dispositivi da utilizzare nonché il loro dimensionamento. Una volta stabilite tutte le specifiche relative al sistema da comandare, è consigliabile realizzare diagrammi esplicativi delle funzioni della macchina, per esempio: ciclo di funzionamento, situazioni di emergenza e altro; ciò per poter rivedere le condizioni generali fissate in fase di analisi. A questo scopo sono disponibili per l’utente diverse tipologie di diagrammi: di flusso, GRAFCET, temporali e altro.

 

La costruzione di un programma legato ad un automatismo non può essere eseguita in blocco ma è necessario frammentare il problema generale in tanti sottoproblemi funzionali, che devono poter essere affrontati, in modo indipendente cercando, la dove è possibile di suddividerli ancora. Tale metodologia è da applicare, sicuramente, quando ci si trova davanti ad un problema complesso, ma può essere uno strumento valido anche per la risoluzione di piccoli problemi, nel qual caso ogni sottoproblema è la singola uscita che è necessario attivare. Consideriamo il caso di una teleinversione di un motore asincrono trifase. Possiamo scomporre il problema generale in due sottoproblemi (marcia avanti e marcia indietro), in modo da ottenere due problemi più “piccoli” quindi più semplici da risolvere. Consideriamo anche che il problema dato prevederà anche un circuito di segnalazione (sottoproblema aggiuntivo). Apportiamo ancora una modifica: si vuole che la marcia avanti sia possibile a funzionamento continuo ed a impulsi. Il sottoproblema 1 (marcia avanti) può essere a sua volta suddiviso in altri due sottoproblemi, che saranno risolti in modo indipendente l’uno dall’altro. La risoluzione della sola marcia avanti assume adesso due aspetti che devono essere affrontati in modo separato tenendo conto delle precise esigenze di funzionamento. Quando si ritiene che non sia più possibile, o utile, scomporre ulteriormente i sottoproblemi, si passa alla risoluzione, in un qualsiasi linguaggio, delle singole entità, identificando i segnali che concorrono al loro funzionamento. Una volta realizzata questa fase, è sufficiente mettere insieme le varie risoluzioni per ottenere il programma completo. La tecnica top – down offre i seguenti vantaggi: permette la risoluzione di problemi più piccoli, è più facile intervenire sul programma sia in merito a modifiche che a correzioni, sono ridotti al minimo gli errori, è possibile effettuare il collaudo anche su ogni singolo sottoproblema prima di unire le parti. Si può, però, verificare un impegno di un maggior numero di istruzioni. Proviamo a risolvere il problema proposto.

Realizzare il programma per il funzionamento di un motore asincrono trifase rispettando i seguenti requisiti:

1)    il motore può essere avviato in entrambi i sensi di marcia, in modo indiretto, tramite i pulsanti PMA (marcia avanti) e PMI (marcia indietro);

2)    la marcia avanti può essere azionata a impulsi tramite il pulsante P;

3)    l’arresto può avvenire tramite il pulsante di stop (PSTOP) o per intervento del relè termico(RT);

4)    il circuito di segnalazione è così composto: L1 = marcia avanti, L2 = marcia indietro, L3 = sovraccarico al motore.

Realizziamo, prima di tutto, la tabella di assegnazione I / O, utilizzando uno dei codici conosciuti.

I due contatti NC dei teleruttori (PMI e PMA) hanno la funzione di blocco elettrico, quindi dovranno essere riportati sull’ingresso del PLC.

Consideriamo ogni singolo sottoproblema, partiamo dalla marcia avanti a impulsi.

Il funzionamento a impulsi è possibile tramite P con il consenso di RT e se il motore non è in rotazione opposta, sulla base di questi tre segnali possiamo utilizzare uno schema funzionale qualsiasi, dopo di che si farà la conversione nel codice previsto dal PLC in dotazione. È da tener presente che quando una stessa uscita è attivata da problemi diversi è necessario ricorrere ai registri poiché non possiamo assegnarla due volte nello stesso programma.

 

La marcia avanti continua è abilitata da: PMA, PSTOP, RT, e da un contatto che mi dice che il motore non è in marcia indietro.

Concateniamo le due soluzioni ed otteniamo così il programma per la marcia avanti con le due modalità. A questo punto potremmo già realizzare il collaudo. Prima di passare alla modalità RUN è bene ricordarsi di posizionare gli ingressi nella condizione imposta nella tabella di assegnazione.

 

Il problema marcia indietro va risolto in modo simmetrico rispetto a quello della marcia avanti continua.

 

Di particolare aiuto può essere avere ben chiaro come sono distribuiti i vari sotto problemi all’interno della memoria programma; in questo modo, infatti, risulta molto semplice, specialmente nel caso di software molto lungo, raggiungere parti del programma su cui effettuare collaudi o modifiche (ossia individuare dalla riga 0 alla 12 la marcia avanti, dalla 13 alla 18 la marcia indietro, dalla 19 alla 22 le segnalazioni). Ciò consente di avere una mappa generale di come abbiamo strutturato il programma nella memoria del PLC. Tale strumento può essere molto valido nel caso di problemi complessi, là dove le modalità operative richieste sono tante, quindi il programma è molto lungo. Una modalità molto utile è anche quella di assegnare, ad ogni blocco programma, un certo numero di elementi funzionali (timer, registri, ecc.) il cui indirizzo non è scelto in modo casuale, ma secondo una logica che può anche essere diversa in funzione dell’applicazione. Un esempio potrebbe essere quello di usare lo stesso indirizzo per un registro o un timer che svolgono una particolare funzione: TIM10 e M10. Questi semplici artifizi consentono una maggiore chiarezza sia in fase di progettazione che di rilettura.

 

Un altro artifizio utile a rendere più semplice la costruzione di un programma è quello di utilizzare, nella fase della sua prima stesura, per un’identificazione dei vari segnali o elementi funzionali, dei codici personalizzati anziché gli indirizzi previsti dal PLC in dotazione. Molti Software di programmazione tramite PC mettono a disposizione questa possibilità: prima di scrivere le istruzioni è sufficiente, in fase di SETUP, definire i codici che si intendono utilizzare assegnandoli agli indirizzi di memoria corretti. Nella fase di trasferimento del programma nella memoria del PLC sarà lo stesso PC a decodificare i codici. L’impiego di commenti consente un’interpretazione del lavoro più rapida e senza errori. In questo modo, anche se il programma è scritto in modo ordinato, esso resta comunque un valido supporto alla corretta costruzione di un programma.

 

Problema 2

Realizzare il programma per il ciclo di lavoro di una pressa secondo i seguenti requisiti:

1)    il funzionamento della pressa avviene con comando di sicurezza a due mani (intervallo consentito 0,5 secondi) e dopo due secondi dall’avvenuto comando;

2)    la discesa della presa avviene se esistono le condizioni: schermo di protezione chiuso e punzone alto;

3)    la risalita del punzone avviene:

a)     per l’attivazione del sensore di fine lavorazione;

b)    per il rilascio di uno dei due pulsanti di azionamento;

c)     per l’apertura dello schermo protetivo;

4)    realizzare il circuito di segnalazione:

L1 schermo aperto

L2 pressa in funzione.

Per semplicità non vengono considerati i tanti dispositivi di sicurezza di cui la pressa dovrà essere dotata. Prima di tutto si realizza un diagramma, per esempio un diagramma di flusso, attraverso il quale vengono stabilite le corrette sequenze operative, dopo di che si passerà alla tabella di assegnazione. Risolviamo, attraverso uno schema a blocchi, la suddivisione per sottoproblemi, con la considerazione che, siccome non vengono richieste particolari funzioni, tale suddivisione è limitata ai soli elementi funzionali. L’unica uscita che può essere attivata attraverso fasi diverse è la salita pressa che dovrà funzionare sia quando il ciclo segue la funzionalità corretta, sia quando c’è una situazione di emergenza. I sotto problemi sono: 1 discesa, 2 salita (scindibile in 2a in ciclo e 2b, in emergenza), 3 segnalazioni (scindibile in 3a schermo aperto e 3b pressa in funzione), 4 temporizzatore di ritardo alla discesa. A questo punto, possiamo analizzare uno alla volta ogni singola entità di lavoro considerando unicamente i segnali che concorrono al loro funzionamento.

Discesa: il comando di discesa è abilitato dai seguenti segnali: schermo di protezione, sensore alto ed il contatto del temporizzatore di ritardo discesa. A questo punto non possiamo provare la fase di discesa poiché manca il segnale del temporizzatore. Possiamo prima risolvere questa parte in modo da poter collaudare il tutto.

Temporizzatore ritardo alla discesa: la risoluzione del segnale di start proveniente dal temporizzatore è un po’ più complessa poiché deve tenere conto dell’azionamento quasi contemporaneo dei due pulsanti.

 

RISOLUZIONE DI PROBLEMI COMPLESSI

In questo paragrafo faremo un esempio di problema complesso che però non sarà risolto come ladder o lista di istruzioni, ma vuole essere solo una dimostrazione di come lo si può ridurre secondo un’analisi top – down.

Un trapano a colonna esegue un numero di fori prestabilito (per esempio tre) su delle piastre che vengono caricate e scaricate in modo automatico. La detta foratura è realizzata tramite .lo spostamento della colonna lungo l’asse x con comando a tempo (per semplicità); alla fine del ciclo il trapano ritorna nella posizione iniziale. È prevista la possibilità per l’operatore di eseguire dei test su ogni singolo attuatore e di monitorare, attraverso un visualizzatore di messaggi, le condizioni del sistema.

La suddivisione può essere così effettuata: blocco 1 stazione di carico / scarico piastre, sottoblocco 1a carico piastra, sottoblocco 1b scarico piastra; blocco 2 posizionamento colonna asse x, sottoblocco 2a movimento a destra, che gestisce a sua volta i tre sottoblocchi 2a’ (foro 1), 2a’’ (foro 2), 2a’’’ (foro 3), sottoblocco 2b movimento a sinistra; blocco 3 ciclo di foratura, sottoblocco 3a discesa, sottoblocco 3b salita, sottoblocco 3c rotazione mandrino; blocco 4 controllo anomalia del sistema; blocco 5 test sui singoli attuatori, sottoblocco 5a funzione discesa / salita, sottoblocco 5b posizionamento asse x, sottoblocco 5c movimentazione della stazione carico / scarico; blocco 6 codifica messaggi ed invio al display, sottoblocco 6a messaggi in ciclo, sottoblocco 6b messaggi in emergenza.

La struttura così realizzata consente di focalizzare l’attenzione su alcuni aspetti del problema generale, quindi più facilmente risolvibili.

È bene ricordare che, quando una stessa uscita viene analizzata in sottoproblemi diversi, va risolto con l’ausilio dei registri interni che poi saranno messi in funzione OR per agire sulla stessa.

Ci sono alcuni controllori che offrono la possibilità di lavorare proprio per blocchi di programmi, dove ognuno di essi ha una propria area di memoria a disposizione per svolgere la funzione per cui è stato programmato. All’occorrenza tali parti vengono richiamate dal programma principale per essere eseguite.

In questa struttura, le parti in cui essa è suddivisa vengono definite blocchi e denominati, in base al loro impiego in: blocchi organizzativi (OB) per la gestione del programma; blocchi programma (PB) per la strutturazione del programma in routine singole; blocchi funzionali (FB) per svolgere le funzioni complesse; blocchi di passo (SB) per la risoluzione di catene sequenziali; blocchi di dati (DB) parte di memoria dove vengono memorizzati i dati di lavoro.

Là dove non viene fornita questa possibilità, si può fare ricorso alle istruzioni che consentono di far elaborare alla CPU solo quelle parti di programma che in un determinato istante sono necessarie.

 

Molto spesso, negli attuali sistemi produttivi, vengono impiegate unità di lavoro automatiche o stazioni di lavoro, che svolgono, per assolvere alla loro funzione, delle operazioni sequenziali, cioè secondo un preciso ordine che non potrà cambiare. Per la risoluzione di questa tipologia di problemi, le diverse case costruttrici di PLC mettono a disposizione degli utenti istruzioni, linguaggi o circuiti in grado di adattarsi a questo tipo di esigenze.

 

L’analisi del problema si suddivide in task operative numerate, ogni task ha una sua sequenza divisa in passi successivi (step), alla fine si risolve ogni singola task in base al PLC in uso. Alla fine si collegano le singole risoluzioni e si collauda il programma.

Una volta studiato il problema in generale, anche in questo caso, in base alla sua complessità, si cercherà di suddividerlo in sottoproblemi funzionali ben distinti che verranno poi trattati nel modo più idoneo (per esempio un sistema in cui sono presenti più stazioni di lavoro); potremmo quindi avere situazioni di cicli ordinati e situazioni di cicli che evolveranno in modo diverso secondo requisiti prestabiliti.

Normalmente, anche se il sistema è tutto sequenziale, si preferisce comunque suddividerlo in un numero di fasi più contente, denominate task, in modo da dover affrontare più problemi ma più piccoli, quindi più facilmente risolvibili. Dopo aver suddiviso il problema in task è necessario definire, per ogni singola task e nell’ordine corretto, le sequenze di funzionamento a cui sarà associata una determinata uscita. Tali procedure, molto semplici, vengono applicate per qualsiasi tipo di problema purché il sistema abbia un funzionamento sequenziale.

Tramite lo shift register assegniamo ad ogni uscita del registro le sequenze operative rispettando l’ordine di processo. In questo modo vengono attivate più volte alcune uscite del PLC, poiché si ripete una stessa operazione, ma che sappiamo di non poter elaborare più di una volta. Per questo motivo è molto comodo realizzare una tabella in cui vengono riportati, per ogni singola uscita, i bit che l’attivano. Da questa tabella è già possibile scrivere la prima parte di programma in cui si assegnano i bit del registro a scorrimento alle varie uscite, che non potremmo però, momentaneamente collaudare. Il punto successivo da risolvere sarà quello di portare a 1 logico il primo bit del registro a scorrimento e farlo poi scorrere per quante sono le sequenze da realizzare; dovremo cioè elaborare i tre segnali di ingresso del registro a scorrimento. Possiamo programmare il registro a scorrimento utilizzando, come segnali di abilitazione tre registri interni qualsiasi. Per la programmazione dei tre segnali, DATA, CLOCK, RESET seguiremo le modalità di seguito riportate.

Il DATA ed il CLOCK vanno attivati tramite il segnale di inizio ciclo, per esempio il pulsante di start. Se si vuole realizzare un ciclo automatico si può aggiungere il segnale che identifica la fine del processo sequenziale.

Per realizzare lo scorrimento in modo da spostare il primo bit lungo tutte le uscite è necessario, tenendo a 0 logico il DATA, inviare il solo segnale di CLOCK alla fine di ogni singola sequenza. Per questo è possibile usare l’ultimo segnale che interviene.

Tali segnali, programmati con l’istruzione ONE SHOT, vanno messi in OR, sul registro di CLOCK, utilizzandoli una sola volta. Per l’arresto di tutto il sistema può essere utilizzato il segnale di RESET. Collegando i vari blocchi programma si può collaudare il ciclo di lavoro completo. Particolare attenzione va posta all’atto del collaudo al banco poiché è necessario: rispettare la condizione logica assunta per i segnali in ingresso e stabilita nell’assegnazione I / O; portare il PLC nella modalità RUN; attivare i segnali di ingresso secondo il corretto ordine prestabilito dal ciclo.

 

Annunci

Azioni

Information

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger hanno fatto clic su Mi Piace per questo: