Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Gestione Sequenza Dopo Stop Macchina


Messaggi consigliati

Inserito:

Ciao a tutti,

una domanda che forse per alcuni può sembrare banale ma su cui al momento ho diversi dubbi.

Sto programmando un PLC Siemens in linguaggio strutturato (ma questo non importa, può anche essere AWL che la domanda non cambia), e in genere quando vado a gestire il software di una macchina in sequenze, faccio in modo che se la macchina è in automatico e l'operatore preme sul quadro il pulsante di STOP (no di emergenza), la macchina si ferma temporaneamente e attende che l'operatore riprema il pulsante di START per ripartire. In tal caso la macchina riparte dal medesimo punto in cui si è fermata.

Se invece l'operatore preme STOP e supera le protezioni della macchina per intervenire (magari perchè un prodotto si è incastrato), allora l'emergenza cade. In tal caso, prima di ripartire, io obbligo l'operatore a fare un RESET: in tal modo gli assi si riportano in posizione e la macchina può ricominciare a lavorare.

Ora un cliente mi chiede invece di fare in modo di poter il più possibile far ripartire la macchina senza dover necessariamente resettare la macchina perchè in tal modo deve far ripartire il ciclo, mentre il cliente vorrebbe che la macchina ripartisse dall'istante in cui si è fermata perchè alcune sue macchine si comportano così.

Ok, bene. Ma se la macchina si è fermata durante una lavorazione perchè magari il pezzo è messo male, l'operatore entra nella stazione, muove qualche asse per sbloccare il pezzo e quindi perdo la quota attuale dell'asse, magari un sensore che prima leggeva poi non legge più, come posso essere sicuro che appena l'operatore ripreme start io riesca a ripartire esattamente dalla posizione in cui mi ero fermato? Al massimo potrei far ripartire da zero l'ultima sequenza che stavo facendo. Ma non è pericoloso questo? Inoltre, in genere, se fermo la macchina e l'operatore entra perchè deve sbloccare dei pezzi, nella maggior parte dei casi deve mettere in manuale per poter muovere gli assi manualmente. Se però mette in manuale, io nel programma resetto le sequenze di ciclo automatico e quindi sono poi obbligato ad effettuare un reset della macchina.

Voi come fate in questi casi? Ripristinate o fate ripartire la macchina dal punto esatto in cui si è fermata?


Inserita: (modificato)
Ma non è pericoloso questo? I

Non necessariamente.

Per prima cosa si deve effettuare un'analisi dei rischi della macchina, da questa analisi si può capire se la monovra può o meno essere pericolosa per la macchina e/o per gli operatori.

Le normative, e le leggi, obbligano a determinate precauzioni che fanno intervenire le emergenze in caso di superamento di ripari o altro, però per la ripartenza le normative esigono solo che sia un atto volontario.

Se lo stop è avvenuto premendo l'apposito fungo questo deve essere resettato, ovvero riportato nella posizione normale. Se lo stop avviene per intervento delle sicurezze il riarmo deve avvenire con un apposito comando. Ovviamente anche la sequenza di riarmo deve avvenire o con componentistica elettromeccanica o con PLC certificato per le sequenze di emergenza.

Modificato: da Livio Orsini
Inserita:

ciao

Ora un cliente mi chiede invece di fare in modo di poter il più possibile far ripartire la macchina senza dover necessariamente resettare la macchina....perchè alcune sue macchine si comportano così.

la richiesta del cliente è più che legittima.

le altre macchine che si comportano come vuole il cliente sono come la tua? hanno gli assi ? quando apri i ripari gli assi sono in sicurezza e il motore non è in tensione?

il jog in teoria è fattibile se fatto in bassissima velocità e diminuendo la coppia applicata al mootore(sempre dopo l'analisi dei rischi) perché un diminuzione di velocità e di coppia abbassa molto il livello di rischio.

muove qualche asse per sbloccare il pezzo e quindi perdo la quota attuale dell'asse,...

come comandi gli assi?

a treno d'impulsi? con comando assoluto o relativo? il plc sà dove si trova l'asse anche quando lo sposti a mano?

Inserita:

Ciao,

secondo me le prime domande da porsi è: se cadono le protezioni principali, sei costretto a riazzerare tutti gli assi che usi e, soprattutto, per farlo, devi resettare anche altri eventuali attuatori ? Devi far eseguire un'operazione di carico all'operatore al termine dell'azzeramento ? L'automazione è attrezzata per non "perdere" eventuali pezzi caricati senza aria e/o quello che cade con le protezioni aperte ?

Se la risposta è sì, allora non vedo come si possa fare: il gioco non vale la candela.

Altrimenti, devi capire cosa puo' fare l'operatore manualmente, quindi intervenire per ovviare all'azionamento e rimettere il ciclo in condizione di ripartire da dove si era fermato.

Non tutto si puo' fare tramite software; esempio: per una macchina da spedire in Messico (in una zona dove mancava spesso corrente), abbiamo montato delle pinze particolare che si bloccano meccanicamente in posizione "chiuso", abbiamo fatto in modo che i movimenti verticali non "cadessero" verso il basso senz'aaria (alcuni addirittura con blocchi meccanici, altri con le solite valvole di blocco ad aria), abbiamo inserito dei sensori di "presenza pezzo corretto" e via software è stato gestito il ciclo in modo che, al riavvio, l'operatore resetta le protezioni, riavvia il ciclo, poi tocca al software azzerare i due assi presenti (mettendo in condizione anche i cilindri di effettuare l'operazione), riportare dove si trovavano tutti i cilindri e far ripartire il ciclo dove si era fermato; ti assicura che il tutto funziona bene ancora adesso.

La questione è che tutta l'automazione è stata progettata "per", e non solo il software ...

Inserita:

Ciao a tutti.

Scusate se rispondo ora.

Allora, la mia macchina esegue un'automazione differente rispetto a quelle che ci sono dal cliente, ma non è questo il problema. Come dice giustamente Livio, occorre fare una analisi dei rischi e questa è stata fatta, valutando la pericolosità degli assi in movimento.

La macchina non è tanto grande e ha solo 4 assi in configurazione Gantry (fate finta di immaginare uno Scara dove abbiamo due assi Y, un asse X e uno Z). La macchina non fa altro che eseguire un assemblamento di pezzi.

La macchina è chiusa da protezioni (delle porte) che se si aprono in condizioni di automatico fanno cadere l'emergenza. E' anche possibile secondo 13849-1 far avanzare gli assi ad una velocità ridotta se l'operatore preme il Joystick di "Uomo morto" e apre le porte. In Tal modo gli assi non cadono. In tal caso (e solo in tal caso) siccome non cade l'emergenza allora posso sistemare il pezzo e far ripartire la macchina dal punto in cui si è fermata.

Se però l'operatore mi muove anche gli assi del gantry la cosa mi si complica un pò perchè devo fare in modo di ricaricare la quota precedente.

C'è da dire però che il mio STOP macchina fa finire la sequenza (io faccio sequenze corte e quindi lo stop è praticamente immediato), e quindi non è uno stop immediato come è invece il fungo di emergenza, ed è per quello che via software mi è più semplice con un banale stop far ripartire la macchina dal punto in cui si è fermata. Per informazione gli assi Y e X hanno encoder assoluto, mentre l'asse Z incrementale.

Però, se per qualche ragione, premo l'emergenza, il cliente NON necessariamente vorrebbe fare un ripristino della macchina e ricominciare dall'inizio, ma vorrebbe ripartire dalla situazione attuale.

Ora, uno STOP DI EMERGENZA, ferma immediatamente la macchina in qualunque posizione della sequenza software io sia. L'operatore apre le porte, muove gli assi (quindi mi cambia posizione), muove il pezzo e quindi il sensore che centrava il pezzo non legge più correttamente, più altre cavolate varie.

Riarmo il fungo, ripristino le emergenze e premo star. Che fa la macchina? Se ogni qual volta io premo il fungo riazzero comunque lo stato della sequenza (ovvero il CASE della sequenza ritorna nello STEP 0), non è detto però che in quella sequenza io effettui tutti i controlli che magari avevo fatto nella sequenza precedente.

Mi spiego, supponiamo che nella sequenza CONTROLLO PEZZO, io controlli con una coppia di telecamere e un sensore se il pezzo è centrato. Se tutto è corretto la sequenza termina e mi dà lo start per iniziare quella successiva che chiameremo per esempio ASSEMBLAGGIO PEZZO 1.

Se io, dopo una emergenza, riazzero solo questa sequenza, ma per qualche motivo il pezzo non è più centrato perchè è stato mosso dall'operatore, io continuo l'assemblaggio senza più controllare se tutto è centrato, perchè tale controllo l'ho fatto nella sequenza precedente.

Stessa cosa vale per gli assi. Se gli assi si muovo devo fare in modo di ricaricare la quota precedente dal punto in cui si è fermato l'asse stesso.

Inserita:

Mi spiego, supponiamo che nella sequenza CONTROLLO PEZZO, io controlli con una coppia di telecamere e un sensore se il pezzo è centrato. Se tutto è corretto la sequenza termina e mi dà lo start per iniziare quella successiva che chiameremo per esempio ASSEMBLAGGIO PEZZO 1.

Se io, dopo una emergenza, riazzero solo questa sequenza, ma per qualche motivo il pezzo non è più centrato perchè è stato mosso dall'operatore, io continuo l'assemblaggio senza più controllare se tutto è centrato, perchè tale controllo l'ho fatto nella sequenza precedente.

Se hai strutturato l'applicativo in questo modo, non puoi, in caso di emergenza con ciclo iniziato e invece di farlo ripartire esattamente nel punto dove si era fermato, farlo ripartire dal CONTROLLO PEZZO invece che da ASSEMBLAGGIO PEZZO 1 ?

Al limite spieghi al cliente il motivo per cui lo fai, e cioè assicurarti che, quando riparte il ciclo, il pezzo sia sempre controllato e a posto, e quindi lo ricontrolli nuovamente: non credo che abbia molto da obbiettare.

Inserita:

Se hai strutturato l'applicativo in questo modo, non puoi, in caso di emergenza con ciclo iniziato e invece di farlo ripartire esattamente nel punto dove si era fermato, farlo ripartire dal CONTROLLO PEZZO invece che da ASSEMBLAGGIO PEZZO 1 ?

Si certo, nessun problema, però a questo punto io dovrei valutare diverse casistiche ogni volta che l'operatore preme l'emergenza. Cioè, voglio dire , in qualunque situazione l'operatore vada a premere il pulsante di emergenza, io dovrò valutare il modo di far ricominciare correttamente la sequenza. In soldoni dovrò valutare caso per caso (nel limite del possibile).

Io mi occupo di progettazione hardware e programmazione software, sicuramente pecco nel software in quanto sono specializzato nell'hardware, però questo modo di operare in sequenze non mi ha fino ad ora destato particolari problemi. Però di fronte a questa problematica molto probabilmente devo concludere che non è un buon metodo di programmazione perchè non mi dà un modo semplice di procedere di fronte a questa domanda del cliente che vedo che per voi è banale. Rivedrò quindi il mio modo di programmare e per sta volta, per soddisfare la richiesta del cliente, andrò a valutare diverse casistiche di stop macchina per poterla poi ripristinare senza dover necessariamente ripartire da zero.

Edge

Inserita:

Molti azionamenti assi gestiscono diversamente la fermata di emergenza da quella per apertura ripari, con circuiti di ingresso differenti dedicati, ma non conosco i tuoi. Quando si entra per disincastrare un pezzo non è scontato l'arresto di emergenza . Esiste anche l'arresto controllato, con richiesta, stop controllato, sblocco serratura e ingresso, il tutto, come giustamente ti è stato già detto, in base all'analisi dei rischi. A volte in base alla pericolosità viene accettato un determinato rischio residuo prendendo ad esempio come precauzione l'installazione di funghi d'emergenza negli stessi punti (anche interni ai ripari) dove l'operatore è solito intervenire.

Inserita:

In soldoni dovrò valutare caso per caso (nel limite del possibile).

...

Però di fronte a questa problematica molto probabilmente devo concludere che non è un buon metodo di programmazione perchè non mi dà un modo semplice di procedere di fronte a questa domanda del cliente che vedo che per voi è banale.

In pratica sì, non vedo altro modo: si tratta di modificare l'avanzamento del ciclo e "forzare" l'esecuzione di un blocco, valutando caso per caso.

Non so per gli altri, ma per me il modo di programmazione migliore consiste nel fatto di avere la massima leggibilità e duttibilità dell'applicativo; questo significa che il programma è strutturato in modo che, una modifica del genere, consiste nell'inserzione di una funzione che mi effettua la "forzatura" dell'avanzamento dl ciclo; da quello che scrivi, mi sembra che il tuo sia strutturato in questo modo; non credo che esista un modo per evitare di scrivere questa funzione in più.

Inserita:

ciao

probabilmente tutto il tuo problema stà che (se non ho capito male) usi assi a treno d'impulsi e il plc non ha in entrata l'encoder dell'asse.

Se è così e una limitazione dell'uso dei sistemi a treno senza retrozione nel plc.

Uso assi ( in rete) molto spesso e queste problematiche non esistono, fermi ,muovi ,apri i ripari mentre si muovono , premi emergenza mentre si muovono , spegni la macchina mentre si muovono , li muovi a macchina spenta e ritornano sempre in posizione e il plc sà sempre la quota reale dell'asse.

Inserita:

Non so per gli altri, ma per me il modo di programmazione migliore consiste nel fatto di avere la massima leggibilità e duttibilità dell'applicativo; questo significa che il programma è strutturato in modo che, una modifica del genere, consiste nell'inserzione di una funzione che mi effettua la "forzatura" dell'avanzamento dl ciclo; da quello che scrivi, mi sembra che il tuo sia strutturato in questo modo; non credo che esista un modo per evitare di scrivere questa funzione in più.

Si ok, è quello che pensavo. Infatti io stesso cerco sempre di garantire una certa leggibilità e portabilità del codice (io utilizzo Codesys V.3.5 con pacchetto softmotion per il controllo assi). Sulla base dell'analisi dei rischi andrò, nel limite del possibile, a valutare caso per caso.

probabilmente tutto il tuo problema stà che (se non ho capito male) usi assi a treno d'impulsi e il plc non ha in entrata l'encoder dell'asse.

Se è così e una limitazione dell'uso dei sistemi a treno senza retrozione nel plc.

Uso assi ( in rete) molto spesso e queste problematiche non esistono, fermi ,muovi ,apri i ripari mentre si muovono , premi emergenza mentre si muovono , spegni la macchina mentre si muovono , li muovi a macchina spenta e ritornano sempre in posizione e il plc sà sempre la quota reale dell'asse.

No, io la quota reale la conosco, riesco ad averla dall'azionamento tramite SDO (io utilizzo codesys che gira su un PC interfacciato via Ethercat agli azionamenti). Il problema che qui si pone è la condizione in cui mi trovo al momento dell'arresto. Da qui come riparto se l'operatore con le sue manine delicate mi muove gli assi, il pezzo e altro e poi vuole far ripartire il tutto senza ricominciare da capo? Avendo io gestito una programmazione in sequenze, dovrò andare a valutare caso per caso a questo punto. Questo è quello che mi viene da pensare.

Edge

Inserita:

ciao

il motion è gestito dal pc e la macchina da un plc s7-300 che sono tra loro comunicanti?

per favore descrivimi come è strutturata.

Adelino Rossi
Inserita:

se l'operatore con le sue manine delicate mi muove gli assi, il pezzo e altro e poi vuole far ripartire il tutto senza ricominciare da capo?

effettivamente senza la magia di sapere cosa ha fatto l'operatore con le mani penso sia un po difficile sapere elettronicamente la situazione.

ho lavorato su macchine decisamente complesse e costose in fatto di posizionamento assi, tutte avevano una sequenza di preset dopo gli interventi manuali,

in modo da far sapere all'elettronica lo status della macchina e se necessario riposizionare gli assi secondo uno schema conosciuto.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...