RAVRAV Inserito: 7 settembre 2015 Segnala Inserito: 7 settembre 2015 Buongiorno,devo utilizzare un modulo seriale RS232 S7-1200 per interfaccarmi con un alimentatore. Volevo sapere se è possibile realizzare la comunicazione con un cotrollo crc.grazie in aticipo. Saluti
Massimo Bocca Inserita: 17 settembre 2015 Segnala Inserita: 17 settembre 2015 Con il 1200 non mi è mai capitato, comunque non dipende dall HW, quando hai pronto la stringa prima di inviarla deve calcolare il CRC, di CRC ce ne sono vari CRC4 CRC 16... con il 200 si faceva fare il calcolo con una sub (nel sito SIEMENS supporto 200 c'era il documento con tutti i passaggi, basta affinarla al 1200 e secondo me funziona).da WIKIPEDIA....Il CRC prevede la generazione di una stringa di bit di controllo che viene normalmente trasmessa assieme ai dati e il calcolo è basato sull'aritmetica modulare. Un codice CRC è definito dal suo polinomio generatore: ad esempio il codice CRC-16-CCITT, molto usato in ambito di telecomunicazioni, è definito dal polinomio generatore .Il calcolo del CRC inizia con il messaggio che viene associato a un polinomio di grado pari al numero di bit del messaggio meno uno, grado che indicheremo con .Per esempio, il messaggio 10011010 () produce il polinomioSupponendo che il CRC abbia un polinomio di grado , si "trasla" a sinistra il polinomio di posizioni, ottenendo il polinomio di grado ().Nell'esempio, supponendo un grado si ottiene:Si esegue ora la divisione ottenendo un quoziente e un resto . Tale divisione viene svolta con la lunga divisione dell'aritmetica modulo 2, ovvero non si fanno riporti: ricordiamo che nell'aritmetica modulo 2 la somma e la sottrazione sono eseguibili utilizzando la funzione logica XOR. Il messaggio inviato lungo il canale è formato dall'unione del messaggio meno il resto della divisione .Visto che è il resto di una divisione che usa come divisore , questo resto ha un grado strettamente inferiore a quello di ; ricordando inoltre che è ottenuto prendendo il messaggio da inviare e traslandolo di g posizioni cioè del grado del polinomio , si ottiene che i polinomi e , quando vengono sommati, non si sovrappongono nei termini di ugual grado e si può quindi assumere che il messaggio viene inviato "inalterato". è definibile anche comeCioè il polinomio è uguale al quoziente per il divisore più il resto. Sostituendo questa descrizione nella formula precedente otteniamo che diventa:Per le leggi dell'algebra sui campi finiti, sottraendo un polinomio a se stesso, si ottiene un polinomio nullo, pertanto diviene:Si nota che il messaggio è quindi divisibile per il polinomio generatore con resto nullo. La rilevazione degli errori usa questa proprietà, difatti il ricevitore riceve e lo divide per il polinomio che è definito precedentemente. Se il messaggio è stato ricevuto inalterato la divisione non produce resto mentre se si sono verificati errori di trasmissione la divisione produrrà un resto. La presenza di errori multipli potrebbe produrre comunque una divisione senza resto in un messaggio errato. La probabilità che questo accada dipende dal polinomio e dal suo grado e statisticamente si dimostra che questo accade raramente.Nel caso il messaggio dia resto nullo basta traslare a destra di un grado g per ottenere il messaggio di partenza
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