ghibry Inserito: 8 ottobre 2003 Segnala Inserito: 8 ottobre 2003 Devo visualizzare su un display i numeri dei messaggidiagnostici presenti in un impianto.I messaggi sono circa un centinaio e sono stati appoggiati su MWIl mio problema è ricercare i bit che nelle varie MW che sono a 1, ed abbinarea questo in numero da passare poi al display.Faccio un esempio per chiarire meglio il concettoMW50 00000101 01000100MW52 00000000 00100100MW54MW56MW58ecc...nella MW50 ho ad 1 i bit che corrispondono ai messaggi 2-6-8-10nella MW52 ho ad 1 i bit che corrispondono ai messaggi 19-22Dovrei testare la MW50 vedere che il bit 2 è a "1"lanciare una FC che si occupa della visualizzazione con un parametro di input nel quale scrivo il numero del mesaaggio presente(2) e cosi via fino alla fine della word per poi passare alla word successivaOvviamente questo controllo potrei farlo bit a bit ma questo testdovei riperlo più di 100 volte.Grazie a tutti per l'aiuto
ifachsoftware Inserita: 8 ottobre 2003 Segnala Inserita: 8 ottobre 2003 Naturalmente hai questo problema perchè vuoi utilizzare un display invece di un pannellino o di un supervisore.Per fare cio' devi fare un bel loop in cui spulci i vari bit ed invii i messaggi.for WORD = 1 to MAX _WORD if WORD > 0 then bit = 1 while Bit <> 0xFF // Se ad 8 Bit oppure 0xFFFF se a 16 Bit if WORD and Bit then allarme endif bit = bit << 1; // Shift Left di 1 Bit next endifnext Personalmente ti consiglio di usare un pannellino con gestione degli allarmi oppure un supervisore.Ciao
ghibry Inserita: 8 ottobre 2003 Autore Segnala Inserita: 8 ottobre 2003 Quseto tipo di programmazione in STEP7 non è possibile non si possono fare cicli For o While.Nella domanda non avevo specificato il linguaggio di progtammazione.
Cristina Fantoni Inserita: 8 ottobre 2003 Segnala Inserita: 8 ottobre 2003 (modificato) Quseto tipo di programmazione in STEP7 non è possibile non si possono fare cicli For o WhilePero' puoi creare un loop che fa la stessa funzione, è un po' macchinoso, ma si riesce! Io l'ho fatto proprio con Step 7! Modificato: 8 ottobre 2003 da Cristina Fantoni
Dario Valeri Inserita: 8 ottobre 2003 Segnala Inserita: 8 ottobre 2003 (modificato) ciaosi che si possono fare i cicli forma le regole sono diverse da duelle del mondo pc.cioe' devi gestire tutto tu !!devi avere padronanza del metodo booleiano.!!nel mondo pc l'interprete o il compilatore fanno questo lavoro in questi linguaggi no!se scrivi qualcosa in assembler ti troverai nella stessa situazione!!!per quanto concerne il problema tuo .... devi usare uno shift register e controllare il bit che esce dallaword (il flag di carry) se esso e' a 1 il bit uscito era a uno ogni e volta che fai shiftare incrementi un contatore (lo incrementi di una unita')...nel contatore ci sara' il numero del messaggio e se il carrY e' a uno fai saltare il programma alla routin di visualizzazione del messaggio puntato dal famigerato contator.!ho usato decine di volte questo metodo e devo dire che e' di difficile debuggaggio.ciaodario Modificato: 8 ottobre 2003 da Dario Valeri
weather Inserita: 9 ottobre 2003 Segnala Inserita: 9 ottobre 2003 ho' avuto anche io la stessa esigenza di associare un numero di allarme partendo da una matrice di bit ; ho' utilizzato un indirizzamento indiretto di registro , poi e' necessario anche eseguire dei controlli sul conteggio e sulla sua abilitazione , in pratica ho' fatto cosi' :L MB10 //è la variabile che contiene il contatore di controlloLAR1 //utilizzo la MB10 come indirizzo di registroU [AR1,P#20.0] //eseguo il test del bit indirizzato da AR1 a partire da M20.0S M11.0 //set bit di allarme presentein pratica Mb10 è un contatore che incremento ad ogni test e blocco con M11.0 = 1 :con Mb10 = 0 viene eseguito il test su M20.0con Mb10 = 1 viene eseguito il test su M20.1con Mb10 = 7 viene eseguito il test su M20.7con Mb10 = 8 viene eseguito il test su M21.0 ..... e cosi via
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