paolopap Inserito: 30 marzo 2011 Segnala Share Inserito: 30 marzo 2011 Salve a tutti.Quando un dato viene letto, via modbus, come intero a 32 bit dalla combinazione di due registri adiacenti, tipicamente io seguo questa regola:valore = (REGISTRO1 << 16) + REGISTRO2dove REGISTRO1 è quello dall'offset minore.Alcuni dispositivi, tuttavia, considerano quest'altra regola:valore = (REGISTRO2 << 16) + REGISTRO1Mi chiedo a questo punto:c'è una regola che _dovrebbe_ essere seguita e che determina quale dei due registri va shiftato, oppure ogni costruttore può regolarsi a modo proprio?grazie Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 30 marzo 2011 Segnala Share Inserita: 30 marzo 2011 Non c'è nessuna regola o specifica al riguardo.Tieni presente che il protocollo modbus si basa su registri 16bit e non contempla registri a 32bit. Link al commento Condividi su altri siti More sharing options...
AVC_Veronica Inserita: 31 marzo 2011 Segnala Share Inserita: 31 marzo 2011 non hai una regola generale , sicuramente puoi leggere il dato dai due registri attigui, meglio sarebbe se pi riesci a gestirne la "formattazione"...curiosità vuoi per caso leggere da un driver CT? Link al commento Condividi su altri siti More sharing options...
max.riservo Inserita: 31 marzo 2011 Segnala Share Inserita: 31 marzo 2011 (modificato) Non ho la certezza assoluta, ma credo che la regola sia data dal tipo di CPU (Intel vs Motorola) vedi questo link Modificato: 31 marzo 2011 da max.riservo Link al commento Condividi su altri siti More sharing options...
Tommaso Uva Inserita: 31 marzo 2011 Segnala Share Inserita: 31 marzo 2011 Se avete bisogno di una spiegazione big-endian vs little-endian la cosa non è difficilisima da capire,sono due diversi tipi di rappresentazione, quello big-endian identifica il bit più significativo a sinistra cioè all'inizio, mentre little-endiam tutto il contrario.I processore IA32, cioè queli Intel per capirci, sono little-endian, quindi se devi leggere da un indirzzo di memoria tipo 0x12345678, il bit più significativo sarà quello a destra, quindi lo leggerai in queto modo 78563412.Per i processori Spark e Motorola, si usa la notazione big-endian, quindi come li trovi cosi te li prendi, in fila.Attenzione però, io non ne capisco di Protocollo Modbus, però conosco bene il protocollo TCP/IP e in quest ultimo proprio per unificare l'eterogeneità dei sistemi, si effettuano conversioni per uniformare la rappresentazione in big-endian.Se qualcosa non è chiaro chiedi pure.Saluti Link al commento Condividi su altri siti More sharing options...
batman1970 Inserita: 7 marzo 2012 Segnala Share Inserita: 7 marzo 2012 Carissimo Tommaso,il tuo post capita direi a fagiolo,mi sono fatto con VbExpress tutta la conversione da Big to Little e viceversa e con qualche problema pur di leggere dei real a 32 bit sul plc schneider,e credimi ho faticato,tuttavia c'è ancora qualche problemino e la devo affinare,la rete naturalmente è ethernet con protocollo MDBus che va su di una porta del plc attraverso dei drive contenuti nel web server integrato,le 2 function sono parecchio lunghe,naturalmente con una leggo i 2 registri a 16 bit e con quell'altra li scrivo,ma santo cielo non c'è un modo per fare la stessa cosa senza morirci dietro così tanto? non sai consigliarmi?anche perchè poi dovro leggere e scrivere circa 2000 variabili ed insomma richiamare le 2 function tutte le volte.... Ciao Link al commento Condividi su altri siti More sharing options...
mariasam Inserita: 31 luglio 2013 Segnala Share Inserita: 31 luglio 2013 Se la distanza è 100 mt ti consiglio una ricevente "CAME",con un antennino esterno va anche oltre se c'è visibilità. Certo il costo è diverso da quello che hai preso tu ma la qualità è assicurata. 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