background image

 

 

    Doc. AHIT101A0510.doc                                                10/02/2011                                                                      P.  8 / 18 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 
 
 

Algoritmo di calcolo del CRC 

CRC calculation algorithm 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CALCOLO DEL CRC (CHECKSUM per RTU) 

Esempio di calcolo: 
Frame = 0207h 
 

Inizializzazione 

CRC  1111 1111 1111 1111 

Carica primo byte  

 

 

0000  0010 

Esegue xor con il primo  1111  1111  1111  1101 
Byte della frame 
Esegue primo shift a dx  0111  1111  1111  1110  

Carry=1,carica 

polinomio 1010 0000 0000 0001 

Esegue xor con il 

1101  1111  1111  1111 

polinomio 
Esegue secondo shift  dx  0110  1111  1111  1111  

Carry=1,carica  polinomio  1010  0000  0000  0001 
Esegue xor con il 

1100  1111  1111  1110  

 

polinomio 
Esegue terzo shift 

0110  0111  1111  1111  

Esegue quarto shift 

0011  0011  1111  1111  

Carry=1, carica polinomio  1010  0000  0000  0001 

  

Esegue xor con il 

1001  0011  1111  1110 

Polinomio 
Esegue quinto shift dx 

0100  1001  1111  1111  

Esegue sesto shift dx 

0010  0100  1111  1111  

Carry=1, carica polinomio  1010  0000  0000  0001 
Esegue xor con polinomio 1000  0100  1111  1110  

 

 
Esegue settimo shift dx  0100  0010  0111  1111  

Esegue ottavo shift dx 

0010  0001  0011  1111  

Carry=1, carica polinomio  1010  0000  0000  0001 

 
Carica secondo byte 

 

 

0000  0111 

della frame 
Esegue xor con il 

1000  0001  0011  1001 

Secondo byte della frame 
Esegue primo shift dx 

0100  0000  1001  1100  

Carry=1, carica polinomio  1010  0000  0000  0001 
Esegue xor con il  

1110  0000  1001  1101 

polinomio 
 Esegue secondo shift dx  0111  0000  0100  1110  

Carry=1, carica polinomio  1010  0000  0000  0001 
Esegue xor con il 

1101  0000  0100  1111  

 

polinomio 
Esegue terzo shift dx 

0110  1000  0010  0111  

Carry=1, carica polinomio  1010  0000  0000  0001 

  

Esegue xor con il 

1100  1000  0010  0110 

polinomio 
Esegue quarto shift dx 

0110  0100  0001  0011  

Esegue quinto shift dx 

0010  0100  0000  1001  

Carry=1, carica polinomio  1010  0000  0000  0001 
Esegue xor con il 

1001  0010  0000  1000  

 

polinomio 
Esegue sesto shift dx 

0100  1001  0000  0100  

Esegue settimo shift dx  0010  0100  1000  0010  

Esegue ottavo shift dx 

0001  0010  0100  0001  

Risultato CRC 

0001 

0010 

 

                   0100 

0001 

                                        12h         41h 
 

Nota:

 Il byte 41h viene spedito per primo (anche se 

          e’ il LSB), poi viene trasmesso 12h. 

 
 
CALCOLO LRC (CHECKSUM per  ASCII) 

 

Esempio di calcolo: 

 
Indirizzo  

01     

00000001 

Funzione 04 

 

 

00000100 

Start address hi. 

00     

00000000 

Start address lo. 

00       

00000000 

Numero registri 

08     

00001000 

                              

  Somma 

00001101 

                       Complemento a 1   

11110010 

  

 

   + 1 

00000001 

                       Complemento a 2   

11110101 

 
Risultato 

LRC 

 

    

    

F5 

 

CRC CALCULATION (CHECKSUM for RTU) 

Example of CRC calculation: 
Frame = 0207h 
 

CRC 

initialization 

1111 1111 1111 1111 

Load the first byte  

 

 

0000  0010 

Execute xor with the first  1111  1111  1111  1101 
Byte of the frame 
Execute 1st right shift 

0111  1111  1111  1110  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1101  1111  1111  1111 

polynomial 
Execute 2

nd

 right shift 

0110  1111  1111  1111  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1100  1111  1111  1110  

 

polynomial 
Execute 3

rd 

right 

shift 

0110 0111 1111 1111 

 

Execute 4

th

 right shift 

0011  0011  1111  1111  

Carry=1,load 

polynomial 1010 0000 0000 0001 

  

Execute xor with the 

1001  0011  1111  1110 

polynomial 
Execute 5

th

 right shift 

0100  1001  1111  1111  

Execute 6

th

 right shift 

0010  0100  1111  1111  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1000  0100  1111  1110  

 

polynomial 
Execute 7

th 

right 

shift 

0100 0010 0111 1111 

 

Execute 8

th 

right 

shift 

0010 0001 0011 1111 

 

Carry=1,load 

polynomial 1010 0000 0000 0001 

 
Load the second byte 

 

 

0000  0111 

of the frame 
Execute xor with the 

1000  0001  0011  1001 

Second byte of the frame 
Execute 1st right shift 

0100  0000  1001  1100  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1110  0000  1001  1101 

polynomial 
 Execute 2

nd

 right shift 

0111  0000  0100  1110  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1101  0000  0100  1111  

 

polynomial 
Execute 3

rd

 right shift 

0110  1000  0010  0111  

Carry=1,load 

polynomial 1010 0000 0000 0001 

  

Execute xor with the 

1100  1000  0010  0110 

polynomial 
Execute 4

th

 right shift 

0110  0100  0001  0011  

Execute 5

th

 right shift 

0010  0100  0000  1001  

Carry=1,load 

polynomial 1010 0000 0000 0001 

Execute xor with the 

1001  0010  0000  1000  

 

polynomial 
Execute 6

th

 right shift 

0100  1001  0000  0100  

Execute 7

th

 right shift 

0010  0100  1000  0010  

Execute 8

th

 right shift 

0001  0010  0100  0001  

CRC Result 

0001 

0010 

 0100 

0001 

                                         12h         41h 
 

Note:

 The byte 41h is sent first(even if it is the  

                LSB), then12h is sent. 

 
 

LRC CALCULATION (CHECKSUM for ASCII) 

 

Example of LRC calculation: 

 
Address    

01     

00000001 

Function 04 

 

 

00000100 

Start address hi. 

00     

00000000 

Start address lo. 

00       

00000000 

Number of registers 

08     

00001000 

                              

 

Sum 

00001101

 

                       

1.  complement     

11110010 

 

 

  + 1 

00000001 

                       2.  complement     

11110101 

 
LRC result   

 

   

 

   F5 

 

CRC xor BYTE = CRC

n = 0

CRC right shift

carry over

CRC xor POLY = CRC

n = n + 1

next BYTE

end message

End

n > 7

Hex  FFFF = CRC

no

no

yes

yes

Содержание DME CD

Страница 1: ...Doc AHIT101A0510 doc 10 02 2011 P 1 18 DME CD DME CD Concentratore dati Data concentrator PROTOCOLLO DI COMUNICAZIONE MODBUS COMMUNICATION PROTOCOL MODBUS I334 I GB 0211 ...

Страница 2: ...Default P07 n 06 Indirizzo IP 000 000 000 000 255 255 255 255 000 000 000 000 P07 n 07 Subnet MASK 000 000 000 000 255 255 255 255 000 000 000 000 P07 n 08 TCP IP Port 0 9999 1001 MODBUS PROTOCOL The data concentrator DME_CD supports the communication protocols Modbus RTU Modbus ASCII and Modbus TCP The data concentrator DME_CD supports the communication protocols on the expansion modules EXM 10 1...

Страница 3: ...ione di lettura locazione 00 FF indirizzo della locazione diminuito di un unità contenete il valore del contatore totale 1 00 02 numero di registri da leggere a partire dall indirizzo 22 41 FB checksum CRC MODBUS RTU PROTOCOL If one selects the Modbus RTU protocol the communication message has the following structure T1 T2 T3 Address 8 bit Function 8 bit Data N x 8 bit CRC 16 bit T1 T2 T3 The Addr...

Страница 4: ...pre dall indirizzo dello slave dalla funzione richiesta dal Master e dai dati dei registri richiesti La risposta termina sempre con il valore di checksum CRC The DME_CD answer is the following 01 04 04 00 00 7C C4 DA D7 Where 01 DME_CD address Slave 01 04 Function requested by the master 04 Number of bytes sent by the DME_CD 00 00 7C C4 Hex value of the total counter 1 31940 319 40 DA D7 CRC check...

Страница 5: ...3 4 5 6 7 FUNZIONE 17 REPORT SLAVE ID Questa funzione permette di identificare il tipo di multimetro Richiesta Master Indirizzo slave 08h Funzione 11h MSB CRC C6h LSB CRC 7Ch FUNCTION 06 PRESET SINGLE REGISTER This function allows to write in the registers It can be used only with registers with address higher than 1000 Hex For instance it is possible to change setup parameters If the value is not...

Страница 6: ...LSB CRC 3Eh Risposta Slave Indirizzo slave 08h Funzione 10h MSB Indirizzo registro 20h LSB Indirizzo registro 01h MSB Numero byte 00h LSB Numero byte 02h MSB CRC 1Bh LSB CRC 51h Slave response Slave address 08h Function 11h Byte count 04 h Data 01 Type C8h Data 02 Sw revision 04h Data 03 Hardware revision 00h Data 04 Parameter revision 01h MSB CRC h LSB CRC h ERRORS In case the slave receives an i...

Страница 7: ... 04 numero di byte inviati dallo slave 00 00 07 30 valore esadecimale del contatore totale 2 1840 18 40 9B checksum LRC CRLF ASCII 0Dh 0Ah delimitatore fine messaggio MODBUS ASCII PROTOCOL The Modbus ASCII protocol is normally used in application that require to communicate through a couple of modems The functions and addresses available are the same as for the RTU version but the transmitted char...

Страница 8: ...0010 1 00000001 Complemento a 2 11110101 Risultato LRC F5 CRC CALCULATION CHECKSUM for RTU Example of CRC calculation Frame 0207h CRC initialization 1111 1111 1111 1111 Load the first byte 0000 0010 Execute xor with the first 1111 1111 1111 1101 Byte of the frame Execute 1st right shift 0111 1111 1111 1110 1 Carry 1 load polynomial 1010 0000 0000 0001 Execute xor with the 1101 1111 1111 1111 polyn...

Страница 9: ...rziale 6 Partial counter 6 UM 100 signed long 014CH 2 Contatore parziale 7 Partial counter 7 UM 100 signed long 014EH 2 Contatore parziale 8 Partial counter 8 UM 100 signed long 0150H 2 Contatore parziale 9 Partial counter 9 UM 100 signed long 0152H 2 Contatore parziale 10 Partial counter 10 UM 100 signed long 0154H 2 Contatore parziale 11 Partial counter 11 UM 100 signed long 0156H 2 Contatore pa...

Страница 10: ... 12 Mathematics 12 UM 100 signed long long 0330H 4 Matematico 13 Mathematics 13 UM 100 signed long long 0324H 4 Matematico 14 Mathematics 14 UM 100 signed long long 0338H 4 Matematico 15 Mathematics 15 UM 100 signed long long 033CH 4 Matematico 16 Mathematics 16 UM 100 signed long long 2810H 1 Flag divisione per zero del MAT01 Flag division by zero of MAT01 bool Unsigned int 2811H 1 Flag divisione...

Страница 11: ... signed long 0444H 2 Contatore parziale 3 Partial counter 3 n signed long 0446H 2 Contatore parziale 4 Partial counter 4 n signed long 0448H 2 Contatore parziale 5 Partial counter 5 n signed long 044AH 2 Contatore parziale 6 Partial counter 6 n signed long 044CH 2 Contatore parziale 7 Partial counter 7 n signed long 044EH 2 Contatore parziale 8 Partial counter 8 n signed long 0450H 2 Contatore par...

Страница 12: ...08 1 Ingresso 8 Input 8 bool Unsigned int 2150H 1 Ingresso 9 Input 9 bool Unsigned int 2151 1 Ingresso 10 Input 10 bool Unsigned int 2152 1 Ingresso 11 Input 11 bool Unsigned int 2153 1 Ingresso 12 Input 12 bool Unsigned int 2154 1 Ingresso 13 Input 13 bool Unsigned int 2155 1 Ingresso 14 Input 14 bool Unsigned int 2156 1 Ingresso 15 Input 15 bool Unsigned int 2157 1 Ingresso 16 Input 16 bool Unsi...

Страница 13: ...0 the meaning of the bits of the response is shown in the table below pATTENTION This function is enabled only if none of the inputs is set with the tariff function TAR A and TAR B INDIRIZZO ADDRESS WORDS COMANDO COMMAND VALORE VALUE FORMATO FORMAT 2FF0H 1 Azzera contatori parziali Reset partial counters 0 Unsigned int 2FF0H 1 Azzera contaore parziale Reset partial hour 1 Unsigned int 2FF0H 1 Azze...

Страница 14: ...erivative multiplier 1 1000 60 1 n5048H n 1 80H P01 n 16 Divisore derivata Derivative divider 1 1000 1 1 n504AH n 1 80H P01 n 17 Unità di misura derivata Derivative unit of measure kW 3 n504CH n 1 80H M02 Utilità Utility P02 01 Lingua Language 0 4 0 1 5800H P02 02 Contrasto LCD Display contrast 0 50 100 1 5802H P02 03 Intensità retroilluminazione display alta High backlight level 10 100 100 1 5804...

Страница 15: ...ld 9999 9999 0 1 n628AH n 1 80H P07 n 07 Moltiplicatore Multiplier 0 6 2 1 n628CH n 1 80H P07 n 08 Ritardo Delay 0 6000 0 1 n628EH n 1 80H P07 n 09 Stato di riposo Normal status 0 1 0 1 n6290H n 1 80H P07 n 10 Memoria Latch 0 1 0 1 n6292H n 1 80H M08 Allarmi Alarms P08 n 01 Sorgente allarme Alarm source 0 3 0 1 n6680H n 1 80H P08 n 02 Numero canale x Channel number x 1 8 1 1 n6682H n 1 80H P08 n 0...

Страница 16: ...gresso Input function 0 5 0 1 n 6E80H n 1 80H P10 n 02 Stato a riposo Normal status 0 1 0 1 n 6E82H n 1 80H P10 n 03 Ritardo ON ON delay 0 60000 5 2 n 6E84H n 1 80H P10 n 04 Ritardo OFF OFF delay 0 60000 5 2 n 6E86H n 1 80H M11 Uscite Outputs P11 n 01 Funzione uscita Output function 0 7 0 1 n 7680H n 1 80H P11 n 02 Numero canale x Channel number x 1 8 1 1 n 7682H n 1 80H P11 n 03 Stato a riposo Id...

Страница 17: ...s DMECD EXM 10 11 RS 232 EXM 10 12 RS485 EXM 10 11 DEVICE 1 30 L MAX 1200mt DEVICE 31 60 L MAX 1200mt EXM10 SET AS REPEATER EIA 232 EIA 485 422 TR B TR A SG CH2 A B SG CH1 PX1 SG TR B A EXM10 A1 A1 A2 A2 EXM10 SG TR A B EXM10 EIA 232 A1 A1 A2 A2 PC RS232 RS232 RS485 CONV EIA 485 422 CH1 B A TR CH2 SG B TR A SG PX1 51C4 CABLE DMECD n 31 DMECD n 1 PX1 ...

Страница 18: ...Doc AHIT101A0510 doc 10 02 2011 P 18 18 EXP 10 11 RS 232 EXP 10 12 RS 485 RS232 PC Cable 51C2 RJ6 6 TR A B SG EXP10 12 n 1 EXP10 12 n 31 SG TR B A RS485 TR B A SG RS485 PX1 A TR B SG PC ...

Отзывы: