Vai al contenuto
PLC Forum


Antirimbalzo Per Pulsanti - E se ho 50 pulsanti


Messaggi consigliati

Inserito:

da diverse nozioni apprese su libri , e nello stesso forum

sembra che si debba filtrare il segnale di un pulsante o interrutore ect

che "alimenta" un ingresso sui pin dei microcontrollori .

Generalmente si usa testare l'ingresso , far passare un certo di circa 30 ms e poi ritestare

A questo punto siamo sicuri che il segnale di ingresso non sia frutto di gnerazioni strane .

Bene di solito si vedono i classici DelayMs(30) che fanno questo lavoro .

Pero intanto cosa succede ?

che si "ferma tutto " cioe il programma sta li ad aspettare che passi il tempo e tutto il resto non viene eseguito

Se allora io ho 50 o 100 ingressi digitali nel mio sistema a microcontrollore cosa faccio ?

cioe arriva il primo segnale ed aspetto , nel frattempo arrivano altri segnali , come li processo

come eseguo il ciclo di scansione della mia automazione?

e poi se anche fosse un ingresso solo , tutto il resto lo faccio eseguire a chi , mia sorella?

E vero che in micro tipo Rabbit c'e' la possibilita di avviare diversi tasks con Costate

ma a parte che sia funzionale , cosa dovrei fare ? impestare tutto il programma di Costate ?

Magari un Costate per ogno ingresso ?

Volete delucidarmi in merito , la mia intenzione sarebbe quella di utilizzare i microcontrollori per applicazioni industriale o comunque di processo degli I/O .


Inserita:

puoi farti una mappa di tutti gli ingressi e ritestarli dopo il tempo prefissato , cosi fai un controllo solo per tutti.

Inserita:

Walter hai la memoria corta (spero sia corta solo quella :D ).

Per fare un anti rimbalzo o, comunque filtrare gli ingressi, fai una lettura degli ingressi a tempo costante, p.e. ogni 50ms magari con un timer legato ad interrupt (io faccio così); metti la letture dei tuoi ingressi in un registro/word, poi fai la seconda lettura e confronti con quella memorizzata; XOR dei due per vedere se ci sono variazioni. In questo modo discrimini sia le variazioni che la continuità di stato, se tieni in memoria anche le variazioni precedenti puoi verificare se c'è stabilità dopo una variazione. Certo che fatte in asm sono molto più veloci queste operazioni.

Inserita: (modificato)

anche se non conosco i micro il problema mi e' chiaro, ti dico cosa farei su un plc

hai bisogno di due timer ed un flag per ogni ingresso

quando l'ingresso diventa alto parte il timer 1, se diventa basso si resetta

quando l'ingresso diventa basso parte il timer 2, se diventa alto si resetta

quando il timer 1 ha contato set il flag

quando il timer 2 ha contato reset il flag

Modificato: da Piero Azzoni
Inserita:

condivido pienamente tutti i vs consigli

Piero i plc lo fanno gia da soli e mi sa che lo fanno propio come dicono i

fratelli dlgcom e livio sergio

comunque grazie a tutti

ciao

walter

Inserita:

Walter se usi ingressi standard di PLC, non importa la marca ed il tipo, c'è un filtro direttamente sull'ingresso. Il tempo di ritardo del filtro varia da PLC a PLC, ma è del'ordine dei 10ms. Se i tuoi rimbalzi stanno dentro questo tempo l'ingresso non li vede. Se i rimbalzi durano di più (però sarebbe un cantatto da schifo) allora può anche capitare di avere una falsa indicazione.

Ovviamente se usi ingressi veloci allora non hai filtraggio e devi farti i controlli da solo,

Inserita:
Il tempo di ritardo del filtro varia da PLC a PLC,
Inserita:
Ci sono anche PLC dove il filtro e' implementato anche via software.

Inserita:

bravi fratelli

se concludo venerdi vado in brasile (partirei martedi prox) a controllare i filtri

...per lavoro ovviamente

:D:D:D

  • 3 weeks later...
Inserita:

Nella fabbrica in cui lavoro, per togliere i rimbalzi dai pulsanti montiamo, in parallelo al pulsante, un condensatore da 10nF. Basta e avanza.

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