NoNickName Inserita: 7 gennaio 2012 Segnala Share Inserita: 7 gennaio 2012 0xA001 sono due byte = 1010 0000 0000 0001 Link al commento Condividi su altri siti More sharing options...
Yurigas Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 0xA001 sono due byte = 1010 0000 0000 00012 byte = 16 bit ergo puoi farmi vedere i passaggi della divisione000000000010101000000001000000000000000 / 1010 0000 0000 0001 ? Link al commento Condividi su altri siti More sharing options...
NoNickName Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 Non puoi dividere 2A01 / A001, perchè il dividendo è maggiore del divisore.Comunque facciamo un esempio con un altro numero, per esempio FB06 / A001.Si cerca la prima parte del dividendo che sia maggiore del divisore. Il dividendo è (0xFB 06 = 1111101100000110). Essendo entrambi numeri di 16 bit, si prende tutto il numero. Se il dividendo fosse stato di ad es.: 24bit, si prendevano i primi 16 bit (da sinistra) se maggiori del divisore, altrimenti se ne prendevano 17.1111101100000110 / 1010000000000001, e dobbiamo scrivere 1 al quoziente, calcolando il resto come differenza 1111101100000110 - 101000000000000. Si ottiene 101 1011 0000 0101.Il divisore sta nel dividendo una volta e con resto di 15 bit, che non è più divisibile per 16bit.Facciamo un altro esempioA02A01 = 101000000010101000000001 (3 byte, 24bit) divisoreA001 = 1010000000000001 (2 byte, 16bit) dividendo.1010 0000 0010 1010 0000 0001 / 1010 0000 0000 0001 = 100000000 1010 0000 0010 1010 101 0011 1010 0110 non ci sta aggiungo uno zero al quoziente e calo un bit 1 0100 1100 non ci sta aggiungo uno zero al quoziente e calo un bit 10 1001 1000 non ci sta aggiungo uno zero al quoziente e calo un bit 101 0011 0000 non ci sta aggiungo uno zero al quoziente e calo un bit 1010 0110 0000 non ci sta aggiungo uno zero al quoziente e calo un bit 1 0100 1100 0000 non ci sta aggiungo uno zero al quoziente e calo un bit 10 1001 1000 0000 non ci sta aggiungo uno zero al quoziente e calo un bit 101 0011 0000 0001 non ci sta aggiungo uno zero al quoziente e non ho più bit da calare. Questo è il resto della divisione Link al commento Condividi su altri siti More sharing options...
Yurigas Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 Grazie mille, puoi spiegarmi un' ultima cosase vedi in questo sitohttp://www.lammertbies.nl/comm/info/crc-calculation.htmlselezionando Hex come Input type, il calcolo del CRC con 002A01 viene fatto e peraltro è quello che viene accettato anche dal azionamento che comado io ( CRC-16 (Modbus) è quello che mi interessa )è possibile che vengano invertiti i primi 2 byte ? per non avere 00 come primo valore? comunque vedo che viene calcolato il CRC anche per 2A01 anche se non torna il valore che serve a me. Link al commento Condividi su altri siti More sharing options...
NoNickName Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 Nel CRC-16, come puoi vedere, 002A01 e 2A01 da lo stesso risultato.Nel Modbus, la trasmissione dati avviene little endian, cioè il byte più basso per prima Link al commento Condividi su altri siti More sharing options...
Yurigas Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 La chiave di volta.Perciò in modbus 002A01 diventa 012A00?Oppure 2A0001?NoNickName io ti ringrazio ancora, anche per la pazienza. Link al commento Condividi su altri siti More sharing options...
NoNickName Inserita: 8 gennaio 2012 Segnala Share Inserita: 8 gennaio 2012 Allora, non sono sicuro secondo me devi considerare una word, cioè 2 byte (16 bit) non 3 byte, quindi il tuo numero sarebbe 2A 01.In modbus devi calcolare 01 2A.00 2A 01 è sbagliato, perchè c'è un byte di troppo. 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