Namser Inserito: 11 dicembre 2014 Segnala Share Inserito: 11 dicembre 2014 Buongiorno, Da qualche giorno sto cercando di convertire tramite istruzione ladder, con rslogix 5000 v13.00, un dato rappresentato in int 64 in decimale, senza riuscirvi Per quanto riguarda la conversione da 32 a decimale del dato 036E(reg1)E800(reg2)0000(reg3)0000(reg4)applico la formula: [reg2+(reg1x65536)]/10^reg3 Ottenendo 57600000 Per quanto riguarda il numero 4093 (reg1)EC7A (reg2)E147 (reg3)AE10 (reg4) dal manuale di riferimento so che il risultato è 1275,12. Avete un testo di riferimento o manuale da consigliarmi? Grazie a tutti Link al commento Condividi su altri siti More sharing options...
bigalex Inserita: 11 dicembre 2014 Segnala Share Inserita: 11 dicembre 2014 Per quanto riguarda il numero 4093 (reg1)EC7A (reg2)E147 (reg3)AE10 (reg4) dal manuale di riferimento so che il risultato è 1275,12. Scusa ma un int64 non può essere in virgola mobile. bigalex Link al commento Condividi su altri siti More sharing options...
Namser Inserita: 7 febbraio 2015 Autore Segnala Share Inserita: 7 febbraio 2015 Infatti!! allego il link del manuale http://www.integra.co.it/tmod/manuale_T-Mod.pdf pagina 9/22 Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 8 febbraio 2015 Segnala Share Inserita: 8 febbraio 2015 Essendo che non si possono visualizzare e gestire numeri Interi a 64bits facilmente dovresti innanzi tutto creare alcune istruzioni, per poter gestire questi numeri a 64Bits. In Pratica ti crei un Add-On cosi si chiamano queste istruzione costruite. ed esegui li le operazioni basilari : Insert64 => Inserzione di Un numero da Real a 64Int {Dint0 e Dint1} View64 => Da un Int64 {Dint0 e Dint1} to Real Add64 => Somma tra {Dint0 e Dint2} + {Dint2 e Dint3} = {Dint4 e Dint5} Sub64 => Sottrazione tra {Dint0 e Dint2} - {Dint2 e Dint3} = {Dint4 e Dint5} Mul64 => Multiplicazione tra {Dint0 e Dint2} * {Dint2 e Dint3} = {Dint4 e Dint5} Div64 => Divisione tra {Dint0 e Dint2} / {Dint2 e Dint3} = {Dint4 e Dint5} In pratica tramite confronti e opportuni scelte ti costruisci queste istruzioni. Basta che prendi spunto in internet, ci sono molti esempio di come funzione l'aritmetica a 64bits. Il Problema e' come rappresentare in Real tutte le cifre significative, perche' i Floatpoint Real usati su questo plc sono a singola precisione. quindi perdi ua parte del valore, in mantissa. Quindi una volta fatte le tue istruzioni devi sempre trattare i tui numeri a 64bits come insieme di 2Dints, e usare solamente le istruzioni fatte, e non cercare mai di passare in visione su Real se poi devi ancora in futuro riprendere il tuo risultato per fare ulteriori operazioni in seguito. Potresti convertire il tuo 64Bits Int64 in BCD e' visualizzare su 3Dints. questi li puoi visualizzare bene anche a video, perche' li metti uno in seguito al altro. Cosi potrebbe essere una soluzione comoda per visualizzare ed imputare questi numeri, senza mai perdere nianche la piu' piccola cifra. Quindi io aggiungerei anche le istruzioni : ViewBCD64 => Visualizza in BCD da Int64 {Dint0 e Dint1} >> BCD{Dint2,Dint3,Dint4} InsertBCD64 => Inserisce da BCD{Dint2,Dint3,Dint4} a Int64 {Dint0 e Dint1}. Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 8 febbraio 2015 Segnala Share Inserita: 8 febbraio 2015 Poi se devi crearti anche dei FloatPoint a 64bits cioe' a doppia precisione, anche li devi farti delle istruzioni tue. ed in pratica implementare l'aritmetica Floatpoint a doppia precisione. Ti consiglio di trovarti in internet : http://en.wikipedia.org/wiki/Double-precision_floating-point_format, http://en.wikipedia.org/wiki/Floating_point ci cono diversi modi di trattare i Float-point con diversi standard se vuoi passare a rappresentare un Real in DINT o viceversa da DINT a Real e fare la conversione come avevi fatto vedere devi usare l-istruzione COP o CPS : vedi qnche questo link http://www.prosoft-technology.com/kb/article.php?id=449 In pratica se devi inviare un valore Real in una comunicazione in cui devi per forsa usare solamente Dint o Int, devi fare uso del metodo, qui sopra descritto. Quando poi ricevi il dato in Dint fai poi l'operazione opposta, e ti riptrovi il dato originale il Float-Point. Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 9 febbraio 2015 Segnala Share Inserita: 9 febbraio 2015 Guarda questo video : e questo Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 9 febbraio 2015 Segnala Share Inserita: 9 febbraio 2015 Ecco un altro bel Pdf, in italiano che ti mostra come vengono fatte le operazioni elementari in Binario, in una CPU nella ALU, e registri interni di calcolo. http://www.dsi.unive.it/~arcb/AA00-01/SLIDES/lezione4-due.pdf Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 9 febbraio 2015 Segnala Share Inserita: 9 febbraio 2015 http://www.binaryconvert.com/result_double.html?decimal=049050046052 Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 9 febbraio 2015 Segnala Share Inserita: 9 febbraio 2015 Ti aggiungo come e' fatta una FPU http://www.ece.usu.edu/ece_store/spec/8087.pdf pensa che una volta questi FPU o coprocessore matematici, erono montati a lato della normale CPU, per eseguire tutte le operazioni matematiche sia pe Interi, che per numeri a virgola mobile, poi ultimamante gia dal intel486 veniva integrata nella CPU. {questo per il mondo Intel} Posso eseguire anche operazioni con Precisione estesa a 80 bits, {le operazioni basilari di somma, sottrazione,multiplicazione,divisione, piu' Radice,trigonometria, log} Oggi di sicuro sono integrate nelle CPU dei PLC, e sicuramente sanno fare benissimo le operazione anche a 80bits. Solo che nessuno ha sviluppato le istruzioni su Firmware PLC per gestire queste estensioni per la virgola mobile. Penso che a volte avere almeno la precisione Double o addirittura Extended, possa evitare errori di approssimazioni, specialmente in alcuni campi di applicazioni. Normalmente pero' nell'automazione a nessuno importa di questa precisione, per questo molte volte si delega calcoli speciali e molto precisi, magari ad un PC interfacciato al PLC. Io penso che per fare ad esempio interpolazione degli assi, internamente il firmware del ControlLogix fa uso di queste precisioni, ma per il povero utente {Programmatore Software siano precluse} http://flint.cs.yale.edu/cs422/doc/art-of-asm/pdf/CH14.PDF Nessuno ti spiega mai che a volte ti serve anche riuscire a scrivere e leggere questi numeri anche a 80bits, infatti servono delle funzioni oppure librerie che ti permettono di far cio'. Magari usando delle stringhe per inserire e visualizzare questi numero: https://courses.engr.illinois.edu/ece390/books/artofasm/CH14/CH14-2.html#HEADING2-55 come per le librarie printf e printff . Link al commento Condividi su altri siti More sharing options...
Namser Inserita: 9 febbraio 2015 Autore Segnala Share Inserita: 9 febbraio 2015 Grazie per la risposta mi è stata molto utile 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