Автозаполнение CRC

Что такое CRC

CRC (Циклический избыточный код) - это техника, используемая для обнаружения ошибок в цифровых данных. Как тип контрольной суммы, CRC создает набор данных фиксированной длины на основе построения файла или большего набора данных. В плане его использования, CRC является хеш-функцией, которая обнаруживает случайные изменения в сырых данных компьютера, обычно используемых в цифровых телекоммуникационных сетях и устройствах хранения, таких как жесткие диски.
Эта техника была изобретена Уэсли Питерсоном в 1961 году и дальше разработана ККИТТ (Консультативным комитетом по телеграфии и телефонии). Циклические избыточные коды довольно просты для реализации в аппаратуре и могут быть легко проанализированы математически. CRC является одним из лучших методов, которые обычно используются для обнаружения типичных ошибок передачи данных.
CRC основан на двоичном делении и также называется "контрольной суммой полинома".

Значение CRC в передаче данных

Приемник может определить, согласуются ли проверочные биты с данными, чтобы с определенной степенью вероятности определить, произошла ли ошибка при передаче. Если произошла ошибка, приемник отправляет «отрицательное подтверждение» (NAK) отправителю с запросом повторной передачи сообщения.

Автозаполнение/Автозавершение CRC в SerialTool

Когда вы отправляете ручные команды через последовательный порт, возможно, вам потребуется вычислить CRC, чтобы обеспечить правильную коммуникацию, в противном случае приемник может ее не принять.
Вычисление CRC для каждого отдельного пакета - это большая потеря времени и требует точного копирования и вставки данных, что приводит к более длительным и неточным задачам.
SerialTool может автоматически вычислять выбранный тип CRC из широкого спектра доступных типов CRC во время передачи.
Если опция CRC включена, выбранные байты CRC будут автоматически добавлены в конец отправленного пакета.

Инвертированные байты в SerialTool

Некоторые системы требуют инвертированных байтов CRC, чтобы соответствовать порядку байтов (endianness).
SerialTool позволяет отправлять инвертированные байты, если это необходимо для системы-получателя.

Автозаполнение/Автозавершение CRC Modbus в SerialTool

Modbus - это тип CRC, обычно используемый в протоколах промышленной связи.
Modbus - это протокол запрос-ответ, реализованный с использованием отношения мастер-рабочий. В отношении мастер-рабочий обмен всегда происходит парами - устройство должно инициировать запрос, а затем ожидать ответа - и инициирующее устройство (мастер) отвечает за инициирование каждого взаимодействия. Обычно мастером является интерфейс человека и машины (ИЧМ) или система сбора и передачи данных (SCADA), а рабочим устройством является датчик, программируемый логический контроллер (ПЛК) или программируемый контроллер автоматизации (ПКА). Содержание этих запросов и ответов и уровни сети, по которым эти сообщения отправляются, определяются различными уровнями протокола.
SerialTool поддерживает его, так же как и множество других вычислений CRC.
Пример отправки и получения:
ЗАПРОС ОТПРАВКИ: Modbus ASCII 3A 30 32 30 31 30 30 32 30 30 30 30 43 44 31 0D 0A + CRC
ЧТЕНИЕ ОТВЕТА: Modbus ASCII 3A 30 32 30 31 30 32 38 30 30 32 37 39 0D 0A + CRC

Отправка и чтение Modbus.

Типы CRC в 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 DECTR
  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