Vai al contenuto
PLC Forum


Uso degli interrupt per leggere un segnale veloce


Italo Elettriko Musolino

Messaggi consigliati

Italo Elettriko Musolino

Buongiorno a tutti !!!

Leggendo una discussione di qualche mese fa che trattava di interrupt ed uscite a treno di impulsi , mi si è "accesa una lampadina".....

Nell'azienda dove lavoro , abbiamo dei sensori che rilevano il passaggio dei pezzi stampati dalle presse , che adempiono sia alla funzione di conteggio dei pezzi prodotti che al controllo dell'avvenuta espulsione del pezzo dallo stampo ;

Su certi stampi abbiamo però il problema che il pezzo espulso passa molto velocemente dal sensore , per cui siamo costretti a rallentarlo con espedienti meccanici altrimenti abbiamo dei falsi allarmi e la pressa si ferma malgrado non ci siano anomalie.

Potrei utilizzare gli interrupt per gestire il segnale dei sensori ?

E' una soluzione fattibile in modo semplice o sarebbe una inutile complicazione ?

 

Grazie anticipatamente , e tanti auguri di buone feste !!!!!!

 

 P.s. : Mi scuso con il Mod. e con voi tutti , avevo aggiunto questa domanda al post citato..... 

Link al commento
Condividi su altri siti


2 ore fa, Italo Elettriko Musolino scrisse:

il pezzo espulso passa molto velocemente dal sensore

 

Per prima cosa è da verificare se il sensore riesce a rilevarlo; se il sensore lo rivela si può usare un ingresso veloce legato ad interrupt

Link al commento
Condividi su altri siti

Italo Elettriko Musolino
59 minuti fa, roberto8303 scrisse:

certo che si può tramite ingressi dedicati al conteggio veloce. Quanti pezzi al secondo dovranno passare attraverso il sensore?

Non è tanto una questione di frequenza quanto di velocità vera e propria del pezzo da rilevare...

Ci sono stampi che "sputano" letteralmente il pezzo , che comunque viene rilevato dal sensore ma che di tanto in tanto il Plc sembra non vedere.
Ecco perchè leggendo il post in questione ho pensato che l'uso degli interrupt potesse essere la soluzione.

Comunque la velocità della pressa arriva massimo a 50 colpi al minuto.

Link al commento
Condividi su altri siti

Italo Elettriko Musolino
7 ore fa, Livio Orsini scrisse:

 

Per prima cosa è da verificare se il sensore riesce a rilevarlo; se il sensore lo rivela si può usare un ingresso veloce legato ad interrupt

Monitorando gli ingressi del plc "a vista" , ovvero guardando il led dell'ingresso , ho potuto notare che il led si accende per un istante ma la macchina si arresta ugualmente come se il pezzo non fosse stato rilevato.

Link al commento
Condividi su altri siti

48 minuti fa, Italo Elettriko Musolino scrisse:

Comunque la velocità della pressa arriva massimo a 50 colpi al minuto.

ciao

la  pressa è molto lenta (stampo per plastica o tranceria?) . Comunque ci sono sensori che posso allungare il segnale in uscita anche oltre il secondo , in questo modo se allunghi il segnale dovresti risolvere il problema.

Link al commento
Condividi su altri siti

Italo Elettriko Musolino
39 minuti fa, lelos scrisse:

ciao

la  pressa è molto lenta (stampo per plastica o tranceria?) . Comunque ci sono sensori che posso allungare il segnale in uscita anche oltre il secondo , in questo modo se allunghi il segnale dovresti risolvere il problema.

Presse progressive per lamiera , lavoro per una azienda del settore automotive che produce serrature per auto.
Non posso cambiare sensori perchè sono standardizzati , mentre posso intervenire senza problemi sul programma plc.

A questo punto devo studiarmi i manuali per capire come si utilizzano questi ingressi veloci , visto che a quanto pare potrebbero essere la soluzione al problema.

 

Link al commento
Condividi su altri siti

Giuseppe Signorella

50 impulsi al secondo non sono molti, ma se il segnale dato in pasto al PLC da parte del sensore, ha una "durata temporale" molto breve, è probabile che il PLC non lo legga.

Non conosco gli Omron, ma quasi tutti i PLC hanno un filtraggio (anti rimbalzo) settabile sugli ingressi.

 

Prova a vedere nella configurazione hardware se  trovi qualche cosa in merito.

Credo che la strada giusta da percorrere sia quella degli interrupt.

Associ un evento di interrupt di tipo hardware all'ingresso ove collegato il sensore.

Ciao

Link al commento
Condividi su altri siti

Se non si misura  il tempo dell'impulso in uscita dal sensore si fanno ipotesi basate sul nulla.

 

Per prima cosa bisogna accertersi che il sensore "veda" sempre il passaggio del pezzo, quindi misurare il tempo minimo di durata dell'impulso.

 

Se non si ragiona su dati certi si rischia di fare un lavoro che sembra funzionore, salvo impiantarsi casualmente.:smilie_nono:

Link al commento
Condividi su altri siti

Con 50 volte al secondo è palese che può arrivare un impulso ogni 20ms e se tale impulso dura una frazione di 20ms può essere pure che un impulso duri anche pochi millisecondi, 

puoi ben capire che se la scansione di programma dura anche pochi millisecondi è altamente probabile che un segnale del sensore possa arrivare anche in un tempo inferiore della scansione di programma e perciò il plc non riesca ad intercettarlo. In tali casi è ovvio che è necessario l'uso degli interrupt e tramite tale funzione intercettare in maniera sicura l'impulso che arriva.

Link al commento
Condividi su altri siti

13 ore fa, leleviola scrisse:

può essere pure che un impulso duri anche pochi millisecondi, 

 

Può anche essere che l'impulso duri meno di un ms. dipende dalla velocità con cui transita il pezzo davanti al sensore e dalla lunghezza del pezzo rilevata dal sensore.

Ad esempio con una velocità di uscita di 10 m/1", velocità nemmeno tanto elevata, se la lunghezza rilevata dal sensore fosse di 10 mm, l'impulso non potrebbe durare più di 1ms.

Noi non conosciamo niente di tutto questo, nemmeno il tipo di sensore impiegato, quindi qualsiasi ipotesi è basata sul nulla.

Link al commento
Condividi su altri siti

Italo Elettriko Musolino

Vedo di fare un pò di chiarezza ...

La pressa lavora tra i 30 ed i 50 colpi al minuto (non al secondo) , i pezzi possono essere lunghi da un paio di cm. fino a circa 15 cm , ma il problema si presenta sui pezzi più piccoli.

I sensori sono induttivi NPN , interfacciati al PLC con dei relè a stato solido.

Non ho dati precisi sulla velocità con cui il pezzo passa sul sensore , che oltretutto non è costante : il pezzo dopo essere stato tranciato cade su un piano inclinato sotto cui è posizionato il sensore , e non passa sempre nello stesso modo.
Quello che posso affermare con certezza è che guardando il PLC io vedo sempre il led dell'ingresso accendersi , a volte per più tempo , a volte solo per un attimo , ed è in quest'ultimo caso che saltuariamente la pressa si ferma dandomi l'errore relativo alla lettura del sensore.

Per questo ho pensato che il problema sia dovuto alla concomitanza tra la breve durata del segnale ed il momento in cui questo viene letto dal PLC.
Ora , se non ho capito male , associando l'ingresso ad un interrupt , questi dovrebbe interrompere la scansione in corso , leggere il segnale e far ripartire la scansione : giusto ?

Se è così , come faccio a mettere in pratica questo concetto ?

Con le funzioni MSKS ed MSKR ?

Non mi è ben chiaro..... :(

Link al commento
Condividi su altri siti

Da come descrivi le operazioni sembrerebbe che nel caso pessimo il tempo di durata dell'impulso sia al limite per la velocità di ciclo del PLC.

 

Puoi tentare, con otime proba bilità di rislovere il problema, facendo leggere in modo diretto i sensori più volte nel ciclo di programma, più o meno ad intervalli regolari.

 

Di norma all'inizio di un nuovo ciclo il sistema operativo legge gli ingressi Hw e li copia in una tabella immagine, esegue il ciclo programmato, poi copia la tabella immagine delle uscite nelle uscite fisiche.

Tutti i PLC hanno istruzioni per scrivere e leggere direttamente la perifieria Hw sia analogica che digitale.

 

Se tu inserisci nel programma alcune letture dirette dei sensori, aumenti la mvelocità con cui sono letti e non perdi l'impulso.

 

Cerco di chiarire con un esempio.

 

Immaginaniamo che il tuo programma giri, nel caso pessimo, in un tempo pari a 1ms.

Con questo tempo di ciclo puoi leggere, con sicurezza di non perdere nessun impulso, impulsi che abbiano durata >= 2ms.

Se tu esegui 4 letture dirette dell'ingresso, e distribuisci uniformemente le letture nel ciclo, puoi arrivare a leggere con sicurezza impulsi della durata di soli 0.5ms.

Link al commento
Condividi su altri siti

Ciao, per risolvere un problema analogo, (controllo passaggio sfrido espulso dalla pressa), ho montato un controllo sensori della Selet.

In pratica legge il sensore, impulso minimo 500 µs, e tiene alto il segnale per un tempo che puoi impostare tu. Va montato su barra Din ed occupa 2 moduli.

L'ho recuperato da un vecchio impianto su cui erano montati degli avvitatori, serviva per vedere il passaggio delle viti che venivano sparate attraverso un tubo per l'asservimento.

Ho visto che comunque da catalogo Selet c'è ancora, probabilmente ne trovi anche di altre marche.

 

Link al commento
Condividi su altri siti

Dunque, vedo che interfacci il sensore con un relè, anche se statico. Questo comporta dei problemi. Per esempio, guardando il datasheet dei G3RV Omron, questi hanno un tempo di attivazione di 6ms max, il che implica che segnali più brevi non sempre attiveranno il relè, e quindi tantomeno l'ingresso del PLC. Hanno poi un tempo di rilascio di max 60ms, ma questo sarebbe un vantaggio perché allungherebbe naturalmente l'impulso.

Ma il nostro (tuo) problema sono proprio gli impulsi brevi. Purtroppo non sono in grado di capire quanto dura il tuo impulso (pezzo davanti al sensore), poiché dici che il pezzo più piccolo è lungo circa 2cm ma non si sa la velocità. Comunque te dici che il led dell'ingresso si accende sempre, anche se brevemente, quindi per ora supponiamo che il relè faccia il suo lavoro.

Allora il problema potrebbe stare, come detto, nel fatto che l'accensione dell'ingresso non viene rilevata dal PLC.

Prima di tutto, come consigliato, abbassa o elimina l'eventuale filtro software sugli ingressi (come fare dipende dal PLC che non mi hai indicato).

Poi, una possibile soluzione è quella indicata da Livio, cioè la rilettura immediata dell'ingresso nel momento in cui il PLC la elabora. Nei PLC Omron questo lo si fa, una volta immesso il contatto, specificando la spunta su Aggiorn. Immediato nella finestra di Modifica Contatto Questo apparirà in ladder con un ! in mezzo, ad indicare che l'ingresso verrà riletto in quel momento e non si terrà conto di quanto presente nell'immagine degli I/O. Ma esiste sempre la possibilità che l'impulso accada subito dopo l'esecuzione del contatto, o che sia "finito" subito prima dell'esecuzione del contatto. In entrambi i casi, non verrà rilevato dal programma.

A parer mio, tali eventi vanno gestiti come interrupt. Non è difficile usarli, anzi, ma specifica il PLC per poterti dare ulteriori dritte.

PS: io il relè comunque lo leverei...

Link al commento
Condividi su altri siti

il 1/1/2018 at 10:28 , Italo Elettriko Musolino scrisse:

I sensori sono induttivi NPN , interfacciati al PLC con dei relè a stato solido.

ciao.

usi i relè per cambiare da NPN a PNP ? sembrerebbe l'unico motivo valido.

2 ore fa, beppo scrisse:

In pratica legge il sensore, impulso minimo 500 µs, e tiene alto il segnale per un tempo che puoi impostare tu. Va montato su barra Din ed occupa 2 moduli.

mi sembra la via più facile ,magari  puoi anche togliere i relè statici .

Link al commento
Condividi su altri siti

Italo Elettriko Musolino

Wow , siete fantastici !!!

 

La soluzione proposta da Beppo è interessante , ma per assurdo è quasi irrealizzabile....
Infatti nell'azienda in cui lavoro farsi acquistare un qualsiasi prodotto che non sia già gestito a magazzino è un'impresa titanica , burocraticamente parlando.
Preferisco quindi tentare prima tutte le soluzioni che mi permettano di ottenere il risultato utilizzando quel che già ho a disposizione.

Ctec , la cpu è una Omron CJ2M (non ricordo il modello preciso) .

lelos , hai indovinato.... i relè mi servono solo per convertire le uscite dei sensori da NPN a PNP

 

Grazie ancora a tutti voi !!
 

Link al commento
Condividi su altri siti

Il CJ2M non ha a bordo alcun ingresso o uscita. Dipende tutto dai moduli messi.

Se ci sono i moduli a sinistra della CPU, sono dotati di ingressi a interrupt e contatori veloci. Altrimenti se sono normali moduli ID montati a destra, non gestiscono gli interrupt, a meno di non usare un modulo speciale. Non ho la tua configurazione per cui non ti posso controllare.

Ma potresti intanto, supponendo che tu abbia moduli standard, prima di tutto controlla il filtro sugli ingressi: se vai in Impostazioni PLC, al tab Impostazioni Modulo, normalmente gli slot hanno come filtro di default 8ms. Questo vuol dire che segnali di durata inferiore non saranno "visti" dagli ingressi. Per ogni slot (scheda) puoi modificarlo e mettere quello del modulo dove entra il tuo sensore incriminato a 0.5ms che il più delle volte fa vedere praticamente tutto (anche perché il CJ2M è sufficientemente veloce da eseguire programmi anche estesi in meno o un paio si ms.

Se non basta, ci vogliono gli interrupt (o l'aggeggio di Beppo).

Poi leverei il relè che ti potrebbe dare problemi di durata. Il modo semplice per leggere con un ingresso PNP un segnale NPN (purché a collettore aperto, ma direi che tutti gli induttivi standard sono così) è di mettere una resistenza da 2700 ohm tra il +24V e il segnale del sensore. L'unica cosa è che la logica si "ribalta". Quando il sensore non legge, l'ingresso è a 24V, quindi ON, quando invece legge, va a 0V, quindi OFF.

Link al commento
Condividi su altri siti

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...