barbato giuseppe Inserito: 8 aprile 2008 Segnala Share Inserito: 8 aprile 2008 salve!dovrei modificare un quadro senza troppo stravisarlo .su un byte di ingresso ho due selettori a 4 posizioni (uno per una linea e l'altro per un'altra linea),parliiamo di un solo selettore.il selettore mi dava la possibilità di gestire una linea in 4 modalità diverse scegliendo ad uno aud uno gli ingressi.le cose sono cambiate e dovrei dare la possibilità alla linea di lavorare in 8-9 modalità diverse.i colleghi hanno comprato dei selettori a codifica BCD .posso montare 2 selettori BCD su un byte di ingresso e come faccio da programma a scegliere i quattro bit che mi servono per ogni linea? l'istruzione l eb 0 itb t mb 100 è errata ?anche perchè dovrei fare dei confronti vi ringrazio in aticipo Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 8 aprile 2008 Segnala Share Inserita: 8 aprile 2008 fai la conversione dell'intera word e poi prendi solo il byte che ti serve Link al commento Condividi su altri siti More sharing options...
barbato giuseppe Inserita: 8 aprile 2008 Autore Segnala Share Inserita: 8 aprile 2008 a me servono 4 bit alla volta per ogni byte di ingresso Link al commento Condividi su altri siti More sharing options...
kamikaze Inserita: 8 aprile 2008 Segnala Share Inserita: 8 aprile 2008 Ciao Peppe, prova questo: L EW 1 // Legge lo stato della input word 1 (input byte 1 + input byte 2) L 2#1111 //Carica il valore bianrio con TRUE solo nei primi 4 bit del primo byte UW //Esegue l'and tra la word ingresso ed il valore binario T MW 10 //Trasferisce il risultato dell'operazione nella word 10 L EW 1 // Legge lo stato della input word 1 (input byte 1 + input byte 2) L 2#11110000 //Carica il valore bianrio con TRUE solo gli ultim 4 bit del primo byte UW //Esegue l'and tra la word ingresso ed il valore binario T MW 12 //Trasferisce il risultato dell'operazione nella word 12Dovrebbe funzionare così , lo stato del primo bite della word ingressi canale 1 , mascherato (solo lo stato dei primi 4 bit) si trova nella MW10 lo stato del primo bite della word ingressi canale 1 , mascherato (solo lo stato degli ultimi 4 bit) si trova nella MW12.CiaoIvan Link al commento Condividi su altri siti More sharing options...
barbato giuseppe Inserita: 8 aprile 2008 Autore Segnala Share Inserita: 8 aprile 2008 forse non mi sono spiegato o non mi sono fatto capiredevo codificare su 8 ingressi 4 bit in bcd per una linea e altri 4 bit in bcd per l'altra linea Link al commento Condividi su altri siti More sharing options...
kamikaze Inserita: 8 aprile 2008 Segnala Share Inserita: 8 aprile 2008 (modificato) Ciao Peppe , m i sembra che tu ti sia spiegato bene, alla tua domanda:a me servono 4 bit alla volta per ogni byte di ingressoIl codice che ti ho postato, esegue la mascheratura a 4 bit della word (perche le operazioni logiche a bit del 300 sono solo a word).Poi prendi il valore contenuto nella MW10 o MW 12 ed esegui la conversione da BCD ad intero.L MW12 //carica il valore della MW10 ITB //converte da BCD ad intero TMW12 //scrive il risultato della conversione in MW10Nella word 12 troverai il risultato convertito in intero del codice BCD degli ultimii 4 BIT del primo byte della input word 1 che ti dato di esempio.CiaoIvan Modificato: 8 aprile 2008 da kamikaze Link al commento Condividi su altri siti More sharing options...
batta Inserita: 8 aprile 2008 Segnala Share Inserita: 8 aprile 2008 Supponiamo che tu abbia cablato i tuoi ingressi come segue:- prima cifra BCD su ingressi E0.0-E0.1-E0.2-E0.3- seconda cifra BCD su ingressi E0.4-E0.5-E0.6-E0.7Potresti risolvere il problema nel seguente modo:Per poter convertire da BCD a INT il valore codificato negli ingressi da E0.0 a E0.3 devi mascherare gli ingressi da E0.4 a E0.7.Per fare ciò esegui un AND tra il byte EB0 ed il valore esadecimale "F", che in binario è "0000 1111".Poi converti da BCD a INT. Il risultato, da 0 a 9, lo puoi scrivere in un solo byte. L EB 0 //Carica byte ingressi EB0 L B#16#F //Maschera per eliminare ingressi da E0.4 a E0.7 UW BTI //Converte da BCD a INT T MB 100 //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.0 ad E0.3 Per poter convertire da BCD a INT il valore codificato negli ingressi da E4.0 a E0.7 devi eliminare gli ingressi da E0.0 a E0.3. Per fare ciò esegui uno shift a destra di 4 bit. I 4 bit meno significativi andranno persi, ed al loro posto ti troverai lo stato degli ingressi da E0.4 a E0.7 Poi converti da BCD a INT. Il risultato, da 0 a 9, lo puoi scrivere in un solo byte. L EB 0 //Carica byte ingressi EB0 SRW 4 //Shift a dx di 4 bit. Da E0.0 a E0.3 vanno persi e rimangono da E0.4 a E0.7 BTI //Converte da BCD a INT T MB 101 //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.4 ad E0.7 Link al commento Condividi su altri siti More sharing options...
barbato giuseppe Inserita: 9 aprile 2008 Autore Segnala Share Inserita: 9 aprile 2008 salve l'ultimo esempio di Batta funziona ma io nel frattempo avevo provato cosìallego fileditemi se va bene anche così Link al commento Condividi su altri siti More sharing options...
batta Inserita: 9 aprile 2008 Segnala Share Inserita: 9 aprile 2008 Il tuo metodo funziona, ma direi che si può migliorare.Se proprio vuoi costruire la codifica dei 4 ingressi, potresti fare così: L 0 UN E 0.0 SPB _001 + 1 _001: UN E 0.1 SPB _002 + 2 _002: UN E 0.2 SPB _003 + 4 _003: UN E 0.3 SPB _004 + 8 _004: T MB 200 In questo modo con poche e semplici istruzioni converti i 4 ingressi in esadecimale, con valore da 0Hex a FHex (0-15 in decimale). Altro metodo: U E 0.0 = M 200.0 U E 0.1 = M 200.1 U E 0.2 = M 200.2 U E 0.3 = M 200.3Alla fine in MB200 trovi un valore da 0 a 15 (in decimale). Ovviamente i merker M200.4-M200.5-M200.6-M200.7 non li puoi usare per altri scopi, e devono tassativamente essere a zero. Link al commento Condividi su altri siti More sharing options...
barbato giuseppe Inserita: 9 aprile 2008 Autore Segnala Share Inserita: 9 aprile 2008 ok ti ringrazio Battaalla prossima Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 9 aprile 2008 Segnala Share Inserita: 9 aprile 2008 L EB 0 //Carica byte ingressi EB0 L B#16#F //Maschera per eliminare ingressi da E0.4 a E0.7 UW BTI //Converte da BCD a INT T MB 100 //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.0 ad E0.3 L EB 0 //Carica byte ingressi EB0 SRW 4 //Shift a dx di 4 bit. Da E0.0 a E0.3 vanno persi e rimangono da E0.4 a E0.7 BTI //Converte da BCD a INT T MB 101 //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.4 ad E0.7Puoi anche togliere le istruzioni BTI perchè su soli 4 bit la codifica BCD e binaria si equivalgono. Link al commento Condividi su altri siti More sharing options...
dalblu Inserita: 3 luglio 2009 Segnala Share Inserita: 3 luglio 2009 Ciao a tutti... ho comprato da un negozio che chiudeva una certa quantita' di placche , deviatori e prese della serie Delta della Siemens.Non riesco a trovare i supporti..mi hanno detto che ormai e' una serie fuori produzione..Vorrei saperne di piu' e se almeno le placche si possono utilizzare per qualche altra serie di altra marca.Vi ringrazio in anticipo..Ciao Link al commento Condividi su altri siti More sharing options...
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