ПРИЛОЖЕНИЕ А
(справочное)
Циклический избыточный код CRC 16
Проверка ошибки передачи с использованием циклического избыточного кода CRC в каждой структуре была выбрана как наиболее эффективная, в отличие от простой проверки бита четности.
Структуры содержат максимум 128 байтов, и прогнозируемая доля ошибок оказывается менее 10. Благодаря своему полиноминальному генератору (CRC 16), 16-битный CRC может обнаружить одиночные, двойные и тройные ошибки в структуре со 128 байтами и все ошибки в 16-битных пакетах. 8-битный CRC не был бы так эффективен для обнаружения ошибок в структурах размера, рассматриваемого в этом протоколе. Вероятность необнаружения пакетных ошибок длины (16) равна =2.
Используемый физический канал позволяет ожидать вероятности появления ошибки порядка 10(один неправильный бит на 10 переданных). В этом случае при максимальной длине структуры 128 байтов (128х8 = 1024 бита) вычисления показывают, что приблизительно 10000 структур можно передавать без ошибки. Вероятность ошибки 10 дает в среднем 100 безошибочных 128-байтных структур.
Вообще, в противоположном варианте протокола, определенного в настоящем стандарте, структуры достаточно редко будут достигать максимальной длины в 128 байтов; поэтому при той же вероятности ошибки эффективность передачи будет больше, чем упомянуто выше.
Используемый 16-позиционный полиномиальный генератор кода (CRC 16) представляет собой
(по модулю 2).
Реализация
Передача происходит следующим образом.
В представленном CRC "исключающее ИЛИ" (XOR) относится к слову А0 01, соответствующему (MSB/LSB) коэффициентам полиноминального генератора (кроме наибольшего значимого бита).
Выборочные результаты
Cooбщение | CRC | ||||||||
01 | 20 | 01 | 80(Н) | 00 | А0(Н) | ||||
80 | А0 | 01 | 80(Н) | А0 | 01(Н) |