luca1979 Inserito: 15 febbraio 2006 Segnala Inserito: 15 febbraio 2006 ciao a tutti ho il seguente problema..ho 4 finecorsa di 4 utenze diverse. all'arrivo di uno qualsiasi devo far aprire una certa elettrovalvola e un compressore per la sua pulizia...il problema è che mentre sto usando il compressore per la pulizia di una elettrovalvola non posso gestire un altro arrivo di un finecorsa quindi devo ritenenere il suo arrivo e gestirlo non appena il compressore ha finito il lavoro...però potrei anche avere 3 finecorsa assieme in attesa della lavorazione...il problema è che deve gestire l'arrivo dei finecorsa in modo da andare a servire per primo il primo che è arrivato e cosi via.....qualche suggerimento?? mi sono venute in mente solo idee molto complicate...grazie
accacca Inserita: 15 febbraio 2006 Segnala Inserita: 15 febbraio 2006 (modificato) Potresti fare cosìUtilizza du e variabiliInIn1Prima di ogni lettura ingressi faiIn1 = InIn = nuova lettura ingressiA questo punto applichi la logicaFrontUp = (In1 xor In) and In(prima lo xor poi and)in FrontUp hai i bit a 1 di tutti gli ingressi cambiati ( valore 0-->1) tra le due letture.A questo punto puoi ordinare gli arrivi. Se Tra due letture cmbaino due ingressi stabilisci una priorità interna (es. dal bit meno significativo al più significativo).Se ti serve il fornte di discesa fai FrontDn (In1 xor In) and In1 hai i bit a 1 di tutti gli ingressi cambiati 1-->0 tra le due letture Modificato: 15 febbraio 2006 da accacca
Piero Azzoni Inserita: 15 febbraio 2006 Segnala Inserita: 15 febbraio 2006 quanto e' critica la discriminazione temporale in rapporto allo scan time ?
prog_jlaw Inserita: 16 febbraio 2006 Segnala Inserita: 16 febbraio 2006 personalmente userei il blocco FIFO con lunghezza 4 visto che hai 4 diverse chiamate ....il blocco gestisce in automatico le chiamate che arrivano e restituisce( in base alla tua programm. la sequenza delle chiamate nell'ordine in cui sono arrivate)...
irpick Inserita: 16 febbraio 2006 Segnala Inserita: 16 febbraio 2006 però potrei anche avere 3 finecorsa assieme in attesa della lavorazione...il problema è che deve gestire l'arrivo dei finecorsa in modo da andare a servire per primo il primo che è arrivato e cosi via.....qualche suggerimento?? mi sono venute in mente solo idee molto complicate...grazieQuanto è grande il buffer eventi da gestire? Potresti crearti un array di dati (interi) circolare a cui assegnare 1-2-3-4-in funzione del Fn attivato..
luca1979 Inserita: 17 febbraio 2006 Autore Segnala Inserita: 17 febbraio 2006 ragazzi la soluzione che ho adottato è la seguente...ogni volta che mi arriva un certo finecorsa mi fa partire il relativo timer e pooi con un confronto sui tempi decido chi è il primo ad essere arrivato e poi gestisco le varie partenze.....grazie comunque per i consigli
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora