Vai al contenuto
PLC Forum


Consiglio Su Controlli In Fase Di Avvio Programma


step-80

Messaggi consigliati

Buongiorno ragazzi

chiedo a voi consiglio su una questione che ultimamente mi ha incuriosito.

Quando scrivete un programma, come usate(e cosa) controllare prima di iniziare a far girare il programma vero e proprio?Mi spiego:ipotizzando una macchina per confezionamento, semplice, con una ventina di cilindri pneumatici, cosa andate a controllare all'accensione della macchina stessa? Richiamate un blocco una volta sola all'inizio nel quale andate a sincerarvi che tutti i cilindri siano in posizione di riposo? (e se non lo sono, cosa fate?) Stessa cosa per i sensori(eventuali) di riposo dei cilindri?

Per eventuali allarmi invece come vi comportate di solito? Date il comando al cilindro, e contemporaneamente andate a controllare che dopo un certo tempo x sia impegnato il finecorsa altrimenti alzate l'allarme, e cosi per tutti i cilindri?

Scusate le molteplici domande,la fase di start-up mi sta molto a cuore, vorrei scrivere dei programmi più professionali possibili. So che non c'è una regola generale che possa andare bene per tutte le macchine, ecco perchè ho fatto l'esempio di una macchina da confezionamento. Parlo cioè di una macchina che non presenta particolari pericoli per l'operatore .

Grazie anticipatamente a tutti coloro che vorranno darmi preziosi consigli

Matteo

Link al commento
Condividi su altri siti


Personalmente analizzo , con l'aiuto del progettista meccanico . quali sono :

- le interferenze meccaniche che impediscono agli organi di movimento di potersi muovere senza collisioni ;

- stesura degli interblocchi con individuazione delle priorità e/o delle condizioni di movimento sicuro ;

- le cicliche per il ciclo di riposizionamento per ogni singola unità che compone la macchina e la sequenza che le singole cicliche devono assumere

per ottenere un ciclo di riposizionamento (homing) completo della macchina stessa ;

- le cicliche che sono state pensate per ogni singola unità che compone la macchina per l'esecuzione della produzione e la sequenza con la quale queste cicliche devono operare ;

- diagnostica su ogni singolo movimento possibile (es. timeout apertura/chiusura pinza , contemporaneità dei finecorsa , timeout sulla esezione di particolari sequenze) ;

- ..... altro

bigalex :blink:

Link al commento
Condividi su altri siti

Giuseppe Signorella

Come hai detto tu, non esiste una regola generale, ogni caso va valutato volta per volta.

Personalmente procedo nel seguente modo:

1) Se la macchina è gestita mediante ricette, all'avvio della macchina ricarico i parametri dell'ultima ricetta utilizzata prima che venisse spenta.

Quasi sempre richiedo l'abilitazione della macchina mediante la pressione di un pulsante sul touch se presente. Questa abilitazione viene persa ogni qual volta si verifica un evento che determina in fermo macchina ad eccezione della pressione dello stop. Questa abilitazione non fa MAI partire la macchina. La partenza della macchina avviene a secondo della valutazione del rischio fatta, mediante la pressione di uno o due pulsanti per X tempo.

2) Verifico ce ci sono tutte le condizioni di sicurezza per poter far abilitare la macchina all'operatore.

Tutti i controlli di sicurezza li effettuo in un OB.

3) Le condizioni di sicurezza sono rispettate? OK verifico se la macchina è in manuale o automatico. (Lo faccio con un commutatore fisico)

Se in manuale richiamo un apposito OB se in automatico ne richiamo un altro.

4) Effettuo un controllo: Se l'ultima volta la macchina è stata spenta mediante il pulsante di stop, e quindi ha fatto la normale procedura di spegnimento, oppure se la macchina è stata spenta per esempio per mancanza energia elettrica o mediante il tasto di emergenza.

5) La macchina ha necessità di effettuare un Homming o comunque una procedura di inizializzazione? La macchina non entra in automatico se tale procedura non è stata effettuata.

Per gli allarmi io personalmente li storicizzo in un buffer, e inserisco un tasto di cancellazione degli allarmi, sia quelli di sistema che quelli da me creati. Storicizzo anche le segnalazioni.

Gli allarmi a secondo della condizione da te stabilita possono provocare il fermo totale della macchina, attivare una procedura di fermo, (eventualmente la stessa procedura che attivo con il pulsante di stop) oppure il fermo di una sola parte della macchina.

Gli allarmi possono poi richiedere o meno il consenso dell'operatore.

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

le cicliche per il ciclo di riposizionamento per ogni singola unità che compone la macchina e la sequenza che le singole cicliche devono assumere

per ottenere un ciclo di riposizionamento (homing) completo della macchina stessa ;

Intendi che all'accensione della macchina oppure dopo una fermata di emergenza devi effettuare una ben precisa ciclica di riposizionamento per evitare che gli attuatori, per la loro particolare posizione, possano andare in collisione riposizionandosi? Se si, all'apertura della valvola generale dell'aria, come fai ad evitare che il cilindro x vada a riposizionarsi (ad esempio a stelo retratto, perchè al mancare dell'aria era caduto) prima del cilindro y? non so se mi sono spiegato.. :o

diagnostica su ogni singolo movimento possibile (es. timeout apertura/chiusura pinza , contemporaneità dei finecorsa , timeout sulla esezione di particolari sequenze)

Intendi che ogni volta che fai partire un movimento e/o una sequenza contemporaneamente fai partire un temporizzatore allo scadere del quale verifichi che tutto sia andato a buon fine?

Se la macchina è gestita mediante ricette, all'avvio della macchina ricarico i parametri dell'ultima ricetta utilizzata prima che venisse spenta.

Ecco, ma come fai ad effettuare ciò? cioè immagino che tu intenda inserire le suddette istruzioni in un ob di avvio, oppure eseguirle con un merker di primo ciclo, sbaglio? Personalmente non effettuo questa operazione(magari sbagliando) in quanto le ricette e tutti i dati ad esse associati le ho inserite nella memoria retain, e quindi all'avvio mi ritrovo l'ultima ricetta selezionata: senz'altro la tua soluzione è più professionale e sicura ;)

Tutti i controlli di sicurezza li effettuo in un OB.

Intendi che in un ob specifico verifichi che tutte le tue condizioni di sicurezza siano soddisfatte( es contatto porte chiuse, no allarmi ecc) e con questa condizione che fai? comandi un merker di tutto ok?

Effettuo un controllo: Se l'ultima volta la macchina è stata spenta mediante il pulsante di stop, e quindi ha fatto la normale procedura di spegnimento, oppure se la macchina è stata spenta per esempio per mancanza energia elettrica o mediante il tasto di emergenza.

Come fai ad eseguire questo controllo?

Per gli allarmi io personalmente li storicizzo in un buffer, e inserisco un tasto di cancellazione degli allarmi, sia quelli di sistema che quelli da me creati. Storicizzo anche le segnalazioni.

Cosa significa storicizzare gli allarmi in un buffer?cioè che li memorizzi? non capisco... :toobad:

Grazie della pazienza.. :worthy:

Link al commento
Condividi su altri siti

Ciao

Per il punto 1 :

Intendi che all'accensione della macchina oppure dopo una fermata di emergenza devi effettuare una ben precisa ciclica di riposizionamento per evitare che gli attuatori, per la loro particolare posizione, possano andare in collisione riposizionandosi? Se si, all'apertura della valvola generale dell'aria, come fai ad evitare che il cilindro x vada a riposizionarsi (ad esempio a stelo retratto, perchè al mancare dell'aria era caduto) prima del cilindro y? non so se mi sono spiegato.. :o

All'accensione della macchina o per la riaccensione dovuta a mancanza rete o in caso di avviamento del ciclo automatico verifico la condizione attuale della macchina o meglio verifico la condizione di ogni singola unità (nel caso di macchina complessa con più unità/dispositivi ) e ne eseguo la fase di "homing" .

Viene abilitato lo start alla ciclica di "homing".

Quando tutti i dispositivi , unità , assi (servo,elettrici,pneumatici etc.) sono nelle rispettive condizioni di "homing" (posizioni dalle quali lo start ciclo può avvenire) la linea produttiva è in posizione di "homing" ed abilito lo start del ciclo automatico.

E' evidente che comando quello che posso comandare, se alla riaccesione o al ritorno in pressione un cilindro si muove in modo incontrollato e collide con altro dispositivo o componente questo è un problema del progettista meccanico che deve fare in modo di impedire il movimento del cilindro se non comandato (nel caso montando un freno preumatico sul cilindro).

Per il Punto 2 :

Intendi che ogni volta che fai partire un movimento e/o una sequenza contemporaneamente fai partire un temporizzatore allo scadere del quale verifichi che tutto sia andato a buon fine?

Si, per ogni movimento pneumatico, ad esempio apre/chiude pinza, ogni volta che la valvola di chiusura o di apertura viene comandata parte un tempo entro il quale il movimento deve essere giunto in posizione finale (finecorsa) .

Se ciò non avviene si setta il relativo allarme di "timeout movimento apre/chiude pinza" con il quale ci faccio quello che è più opportuno e cioè una semplice segnalazione al pannello HMI oppure un eventuale interblocco di altri movimenti o qualsiasi altra azione sia opportuno in considerazione della macchina.

Stesso discorso vale per una sequenza , se necessario monitoro il tempo di esecuzione di una sequenza .

Se la sequenza non avviene entro un tempo massimo stabilito al solito alzo un allarme e intraprendo le azione che in questo caso sono richieste dal processo di lavorazione che devo eseguire.

bigalex :blink:

Link al commento
Condividi su altri siti

Giuseppe Signorella

Matteo,

Siccome stiamo parlando in modo generico, e quindi non di una marca e/o dispositivo specifico non entro troppo in merito.

Un metodo che utilizzo spesso, quando il software non è particolarmente complesso, è quello gestire le ricette, creandomi da me delle maschere e memorizzando i dati negli array.

Quando l'utente seleziona (carica) una ricetta, memorizzo il nome della ricetta caricata e/o l'indice dell'array richiamato. Al successivo riavvio della macchina, tramite il bit si sistema di prima scansione richiamo un OB dove oltre le altre cose, vado a ricaricare i dati inerente a quell'indice dell'array.

Poi esistono anche altri metodi, ma tutto dipende da ciò che stai programmando e dall'hardware utilizzato.

Per quando riguarda la storicizzazione degli allarmi, anche questo dipende molto dal tuo programma e dall'hardware utilizzato. Se utilizzi un pannello operatore, questo lavoro puoi farlo fare direttamente a lui, come ad esempio le scalature ingegneristiche ed il controllo dei limiti delle valori immessi. Cosi non appesantisci il tuo software.

Per quanto riguarda il controllo sulle sicurezze, li è un discorso un tantino più complesso e laborioso da descrivere, ma le condizioni in cui la macchina deve lavorare e come, le definisco in un apposito OB (quindi come da te detto, es contatto porte chiuse, no allarmi ecc), da qui mi tiro fuori una serie di bit che poi mi permettono di controllare ed abilitare alcuni processi a secondo la circostanza.

Tanto per fare un esempio se quando accendo la macchina il pulsante di stop è premuto effettuo un reset, la macchina ovviamente non si avvia, oppure non viene abilitato sull'HMI il pulsante di abilitazione operatore. Ma se il pulsante di stop viene premuto quando la macchina è già avviata, non provoca l'immediato arresto della macchina ma richiama un altro OB che provvede ad effettuare la procedura del fermo macchina. (Ad esempio scaricare una tramoggia, oppure far terminare un processo di riempimento o saldatura ecc).

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Grazie a tutti per le dritte.

Più o meno questo è anche il mio modo di lavorare, anche se certe tecniche le devo ancora affinare.

Il discorso dei timeout lo eseguivo già, ma per esempio non per ogni movimento, ma solo per quelli che ritenevo 'pericolosi' per il normale funzionamento della macchina. Sto naturalmente parlando in un ottica di una macchina molto piccola, dove un solo operatore riesce a tenere sotto controllo l'intero processo senza particolari problemi. Certo se dovessi realizzare macchine molto complesse o dislocate in varie unità il discorso si complicherebbe e di molto.

Una cosa che non ho previsto, e della quale mi sono accorto solo leggendo il forum, è la discriminazione tra 'automatico' e 'manuale'. Cioè all'accensione della macchina, abilitati tutti gli assi e eseguiti tutti gli homing, l'operatore può avviare la macchina; premendo stop la macchina si ferma in posizione di attesa ma andando alla pagina manuali posso muovere gli assi(ad una velocità molto ridotta) senza abilitare nessun selettore. Forse qui ho sbagliato :(

Tornando al discorso dello start-up, come fate solitamente a discriminare nella fase di accensione se la macchina era stata fermata regolarmente oppure per esempio da una mancanza di tensione?

Per Giuseppe: parli di OB ma mi è venuto il dubbio che tu intendessi invece FC: è stata una svista oppure usi volutamente OB?

Link al commento
Condividi su altri siti

Ciao Matteo, mi aggiungo alla discussione sperando di poterti dare una mano.

Una cosa che non ho previsto, e della quale mi sono accorto solo leggendo il forum, è la discriminazione tra 'automatico' e 'manuale'. Cioè all'accensione della macchina, abilitati tutti gli assi e eseguiti tutti gli homing, l'operatore può avviare la macchina; premendo stop la macchina si ferma in posizione di attesa ma andando alla pagina manuali posso muovere gli assi(ad una velocità molto ridotta) senza abilitare nessun selettore. Forse qui ho sbagliato :(

Non è detto che sia un errore. La discriminante è: se l'operatore in manuale muove un asse in una certa posizione, quando poi la macchina riprende a girare in "automatico", c'è qualcosa che può andare a collidere o provocare qualche danno? Ti faccio un esempio: sulle macchine dei rossetti (di cui avevamo parlato tempo fa) se in manuale muovi qualche asse/cilindro e non lo riporti in condizione di "home", la macchina non ti permette di selezionare il funzionamento automatico perchè c'è il serio rischio di rompere qualcosa.

Tornando al discorso dello start-up, come fate solitamente a discriminare nella fase di accensione se la macchina era stata fermata regolarmente oppure per esempio da una mancanza di tensione?

Qui lascio la parola ai più esperti, ma l'idea che mi viene è di settare una variabile a ritenzione quando viene premuto il pulsante di stop. Se in fase di avvio questa variabile non è stata settata, la macchina sa che si è verificata un'interruzione di corrente.

Link al commento
Condividi su altri siti

Ciao Stefano, grazie per il tuo intervento ;)

Non ho previsto selettori auto/man, ma naturalmente in fase di avvio ciclo vado a verificare diverse condizioni, una di queste è che tutti gli attuatori siano in posizione di riposo.

E' quindi impossibile muovere manualmente l'asse e poi avviare il ciclo(anche perchè per sicurezza ho inserito diversi messaggi rivolti all'operatore...sai a volte l'operatore alle otto di mattina fa ancora tranquillamente le nanne... :roflmao: )

settare una variabile a ritenzione quando viene premuto il pulsante di stop. Se in fase di avvio questa variabile non è stata settata, la macchina sa che si è verificata un'interruzione di corrente

Questa potrebbe essere un'ottima soluzione. Naturalmente aspettiamo il parere di qualche altro utente ;)

Link al commento
Condividi su altri siti

Non ho previsto selettori auto/man, ma naturalmente in fase di avvio ciclo vado a verificare diverse condizioni, una di queste è che tutti gli attuatori siano in posizione di riposo.

E' quindi impossibile muovere manualmente l'asse e poi avviare il ciclo(anche perchè per sicurezza ho inserito diversi messaggi rivolti all'operatore...sai a volte l'operatore alle otto di mattina fa ancora tranquillamente le nanne... :roflmao: )

Allora se il problema è solo la mancanza del selettore "automatico/manuale", non mi formalizzerei più di tanto! Se ci sono dei controlli a prova di "sto dormendo in piedi" :superlol: potrebbe andar bene anche così!

Questa potrebbe essere un'ottima soluzione. Naturalmente aspettiamo il parere di qualche altro utente ;)

:thumb_yello::thumb_yello:

Ciao, Stefano

Link al commento
Condividi su altri siti

Giuseppe Signorella

No Matteo, quando parlavo di OB (Blocchi organizzativi) avendo generalizzato, mi riferivo in modo "generico" a blocchi di programma che venissero richiamati nel programma principale. Indifferentemente dal come. Ma ho compreso che il concetto non era comprensibile. (Scusa il gioco di parole). :smile:

Per discriminare la modalità di come sia stata fermata la macchina, settare una variabile in modo ritentivo va benissimo.

Personalmente per la commutazione tra automatico e manuale preferisco utilizzare un componente fisico elettromeccanico, con il quale a livello di cablaggio prendo il controllo di "della macchina".

Link al commento
Condividi su altri siti

  • 4 years later...

Mi riallaccio a questa discussione per chiedere un consiglio su come gestire i timeout delle movimentazioni. Ho un automatismo sequenziale che implementa in ladder un algoritmo descritto da un diagramma SFC. Una funzione gestisce l'evoluzione del sistema da uno passo al successivo mentre le uscite sono comandate in base al passo attivo. Pensavo di inserire la diagnostica sui movimenti nella funzione degli allarmi usando un timer che segnala un errore allo scadere del tempo. Supponendo che il timeout sia uguale per tutti i movimenti (ad esempio 5 secondi ), riesco a farlo con un solo timer, magari resettandolo quando il movimento termina? I TON Siemens non hanno un ingresso di reset ma c'è un'istruzione per farlo. C'è un modo più semplice/corretto/sensato? Meglio un timer diverso per ogni attuatore?

Link al commento
Condividi su altri siti

Come utente già "collaudato" dovresti sapere che il regolamento non permette accodamenti, specie per discussioni ferme da alcuni anni.

 

Devi sempre aprire una nuova discussione sull'argomento.

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...