barbato giuseppe Inserito: 8 aprile 2008 Segnala 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
rddiego Inserita: 8 aprile 2008 Segnala Inserita: 8 aprile 2008 fai la conversione dell'intera word e poi prendi solo il byte che ti serve
barbato giuseppe Inserita: 8 aprile 2008 Autore Segnala Inserita: 8 aprile 2008 a me servono 4 bit alla volta per ogni byte di ingresso
kamikaze Inserita: 8 aprile 2008 Segnala 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
barbato giuseppe Inserita: 8 aprile 2008 Autore Segnala 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
kamikaze Inserita: 8 aprile 2008 Segnala 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
batta Inserita: 8 aprile 2008 Segnala 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
barbato giuseppe Inserita: 9 aprile 2008 Autore Segnala 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ì
batta Inserita: 9 aprile 2008 Segnala 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.
barbato giuseppe Inserita: 9 aprile 2008 Autore Segnala Inserita: 9 aprile 2008 ok ti ringrazio Battaalla prossima
JumpMan Inserita: 9 aprile 2008 Segnala 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.
dalblu Inserita: 3 luglio 2009 Segnala 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
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