Titolo: Calcolo del checksum per il protocollo MODBUS
Categoria: Codice |
|
Ultimo Aggiornamento: 19/09/05 |
Ecco un metodo utilizzabile per calcolare il CRC per il protocollo industriale MODBUS.
Il CRC è un valore di 16 bit calcolato in base a tutti i byte che compongono il pacchetto (il parametro che riceve il metodo), a partire dal byte alto ed esclusi i byte del CRC. Se il CRC non è corretto la macchina slave ignora il pacchetto.
La procedura usa due array, arrHi e arrLow, dove sono memorizzati i valori necessari al calcolo del CRC.
Viene inoltre utilizzato il metodo u_EsadecimaleToDec il cui testo si trova nella faq
Conversione da esadecimale a decimale.
$reg_Hi:=0x00FF
$reg_Low:=0x00FF
$test:=$1
C_STRING(80;$1;$0)
For ($i;1;Length($test);2)
C_LONGINT($index)
$deci:=u_EsadecimaleToDec ($test[[$i]]+$test[[$i+1]])
$index:=$reg_Hi ^| $deci
$reg_Hi:=$reg_Low ^| arrHi{$index+1}
$reg_Low:=arrLow{$index+1}
End for $risultatoA:=$reg_Hi << 8
$risultato:=$risultatoA ^| $reg_Low
$0:=Substring(String($risultato;"&x");3)
Il metodo di calcolo è utilizzabile anche per il calcolo del CRC del protocollo J-Bus.
Inviato da: PierPaolo Sichera |
|
Visite: 16658 |
Se accedi con utente e password, puoi aggiungere dei commenti.