Autocompletamento CRC

Cos'è il CRC

CRC (Cyclic Redundancy Check) è una tecnica utilizzata per rilevare errori nei dati digitali. Come tipo di checksum, il CRC produce un insieme di dati di lunghezza fissa basato sulla costruzione di un file o di un insieme di dati più grandi. In termini di utilizzo, il CRC è una funzione hash che rileva modifiche accidentali ai dati informatici grezzi, comunemente utilizzata nelle reti di telecomunicazioni digitali e nei dispositivi di memorizzazione come i dischi rigidi.
Questa tecnica è stata inventata da W. Wesley Peterson nel 1961 e successivamente sviluppata dal CCITT (Comité Consultatif International Telegraphique et Telephonique). I controlli di ridondanza ciclica sono piuttosto semplici da implementare in hardware e possono essere facilmente analizzati matematicamente. Il CRC è una delle migliori tecniche comunemente utilizzate per rilevare gli errori di trasmissione comuni.
Il CRC è basato sulla divisione binaria ed è anche chiamato "checksum del codice polinomiale".

Importanza del CRC nella comunicazione dati.

Il destinatario può determinare se i bit di controllo corrispondono ai dati, per accertarsi con un certo grado di probabilità se si è verificato un errore nella trasmissione. Se si è verificato un errore, il destinatario invia un "acknowledgement negativo" (NAK) al mittente, richiedendo che il messaggio venga ritrasmesso.

Autocompletamento CRC di SerialTool.

Quando si inviano comandi manuali tramite la porta seriale, potrebbe essere necessario calcolare il CRC per garantire una comunicazione corretta, altrimenti il ricevitore potrebbe non accettarlo.
Calcolare il CRC su ogni singolo pacchetto comporta una grande perdita di tempo e richiede di copiare e incollare con precisione i dati, il che porta a compiti più lunghi e non privi di errori.
SerialTool può calcolare automaticamente il CRC scelto tra la vasta gamma di tipi CRC disponibili durante la trasmissione.
Se l'opzione CRC è abilitata, i byte CRC scelti saranno aggiunti automaticamente alla fine del pacchetto inviato.

Byte invertiti di SerialTool.

Alcuni sistemi hanno bisogno di avere byte CRC invertiti per ottemperare all'endianess dei byte.
SerialTool consente di inviare in ordine inverso se necessario per il sistema di ricezione.

Autocompletamento CRC Modbus di SerialTool

Modbus è un tipo di CRC comunemente utilizzato nei protocolli di comunicazione industriali.
Modbus è un protocollo di richiesta-risposta implementato utilizzando una relazione master-slave. In una relazione master-slave, la comunicazione avviene sempre in coppia: un dispositivo deve iniziare una richiesta e poi attendere una risposta, ed il dispositivo iniziatore (il master) è responsabile di avviare ogni interazione. Tipicamente, il master è un'interfaccia uomo-macchina (HMI) o un sistema di controllo e acquisizione dati (SCADA), mentre lo slave è un sensore, un controllore logico programmabile (PLC) o un controllore di automazione programmabile (PAC). Il contenuto di queste richieste e risposte e gli strati di rete attraverso cui vengono inviate queste comunicazioni sono definiti dai diversi livelli del protocollo.
SerialTool lo supporta, così come molti altri calcoli CRC.
Esempio di invio e ricezione:
RICHIESTA INVIO: Modbus ASCII 3A 30 32 30 31 30 30 32 30 30 30 30 43 44 31 0D 0A + CRC
RISPOSTA LETTURA: Modbus ASCII 3A 30 32 30 31 30 32 38 30 30 32 37 39 0D 0A + CRC

Invio e lettura di Modbus.

Tipi di CRC supportati da SerialTool

CRC-8

  1. CRC 8
  2. CRC 8 EBU
  3. CRC 8 HDLC
  4. CRC 8 MAXIM
  5. CRC 8 WCDMA
  6. CRC 8 LTE
CRC-16
  1. CRC 16 ARC
  2. CRC 16 BUYPASS
  3. CRC 16 CCITTFALSE
  4. CRC 16 MCRF4XX
  5. CRC 16 CDMA2000
  6. CRC 16 CMS
  7. CRC 16 DE CTR
  8. CRC 16 DECTX
  9. CRC 16 DNP
  10. CRC 16 GENIBUS
  11. CRC 16 KERMIT
  12. CRC 16 MAXIM
  13. CRC 16 MODBUS
  14. CRC 16 T10DIF
  15. CRC 16 USB
  16. CRC 16 X25
  17. CRC 16 XMODEM
CRC-24
  1. CRC 24
  2. CRC 24 FLEXRAYA
  3. CRC 24 FLEXRAYB
  4. CRC 24 LTEA
  5. CRC 24 LTEB
  6. CRC 24 NRC
CRC-32
  1. CRC 32
  2. CRC 32 BZIP2
  3. CRC 32 C
  4. CRC 32 MPEG2
  5. CRC 32 POSIX
  6. CRC 32 Q