Code 39 mod 43
Code 39 mod 43 — это разновидность штрихового кода Code 39 (также известного как «3 из 9»), дополненная контрольным символом (check digit), вычисляемым по модулю 43. Code 39 является линейным (одномерным) дискретным штрихкодом с переменной длиной, способным кодировать цифры, буквы латинского алфавита и несколько специальных символов. Версия с модулем 43 обеспечивает повышенную надёжность считывания за счёт автоматической проверки целостности данных, что критически важно в промышленности, логистике и оборонной сфере, где цена ошибки высока.
История
Code 39 был разработан в 1974 году компанией Intermec (США) для цепей автоматической идентификации. Он быстро стал индустриальным стандартом благодаря простоте печати и возможности кодирования буквенно-цифровых данных без использования сложного оборудования. В середине 1970-х годов в некоторых отраслях, особенно в аэрокосмической и автомобильной промышленности, стали применять контрольную сумму для минимизации ошибок. Стандарт ISO/IEC 16388 (2007 год) описывает Code 39, включая опциональное использование контрольного символа mod 43. В России Code 39 (в том числе с mod 43) применяется в системах воинского учёта, на складах предприятий ОПК и в логистике ряда государственных учреждений.
Структура и кодирование
Code 39 кодирует 43 символа: 10 цифр (0–9), 26 прописных букв (A–Z), знак минус (-), точка (.), пробел, знак доллара ($), косая черта (/), плюс (+) и процент (%). Каждый символ представляется девятью элементами (пятью штрихами и четырьмя пробелами), из которых три элемента являются широкими (двоичная единица) и шесть — узкими (двоичный ноль). Ширина широкого элемента кратна узкому, обычно в 2–3 раза.
Формат строки:
- Стартовый символ (*) — обязательно.
- Последовательность символов данных.
- Дополнительный контрольный символ (вычисляется).
- Стоповый символ (*) — обязательно.
Вычисление контрольного символа mod 43
Контрольный символ вычисляется по алгоритму на основе суммирования числовых эквивалентов всех символов в строке данных (кроме стартового и стопового), затем взятия остатка деления на 43, и сопоставления полученного числа с таблицей символов Code 39.
Порядок шагов:
- Каждому символу из кодируемых 43 присваивается числовое значение от 0 до 42 (например, ‘0’ = 0, ‘1’ = 1, …, ‘9’ = 9, ‘A’ = 10, ‘B’ = 11, …, ‘Z’ = 35, ‘-’ = 36, ‘.’ = 37, пробел = 38, ‘$’ = 39, ‘/’ = 40, ‘+’ = 41, ‘%’ = 42).
- Суммируются числовые значения всех символов данных (включая буквы, цифры и специальные знаки).
- Вычисляется остаток от деления суммы на 43.
- Остаток (0–42) преобразуется обратно в символ по той же таблице. Этот символ добавляется в конец строки перед стоповым символом.
Пример: для строки «TEST» числовые значения: T=29, E=14, S=28, T=29. Сумма = 29+14+28+29=100. 100 mod 43 = 14. 14 соответствует символу ‘E’. Таким образом, полная закодированная строка будет «TESTE».
Особенности и преимущества
- Повышенная надёжность: ошибка при считывании одного символа из-за неверной суммы будет обнаружена, что снижает вероятность неправильного распознавания.
- Совместимость: оборудование, поддерживающее Code 39 без контрольного символа, обычно игнорирует дополнительный символ, поэтому метки с mod 43 читаются и старыми сканерами (хотя проверка суммы не производится).
- Стандартизация: алгоритм описан в ISO/IEC 16388, что гарантирует единообразное вычисление разными производителями.
- Простота реализации: расчёт суммы выполняется очень быстро, не требуя сложных процессоров.
Применение
Code 39 mod 43 используется там, где критически важна точность идентификации:
- Оборонная промышленность: нанесение на боеприпасы, вооружение и военную технику для автоматизации учёта и контроля жизненного цикла (по стандартам системы НАТО, распространённым также в вооружённых силах России).
- Автомобилестроение: маркировка деталей и узлов для отслеживания партий поставок (например, на конвейерах ГАЗ, АвтоВАЗа, КамАЗа).
- Медицина: подписи на флаконах с лекарственными средствами и медицинских изделиях (требования Росздравнадзора для некоторых групп товаров).
- Логистика и складской учёт: наклейки на товары, паллеты и транспортные единицы (особенно на автоматизированных складах, где считывание происходит при скорости движения конвейера).
- Оборудование для печати штрихкодов: принтеры этикеток (Zebra, Honeywell, TSC) поддерживают расчёт mod 43 как опцию драйвера или через команды ZPL.
Ограничения
- Низкая плотность данных: Code 39 является одним из наименее плотных линейных кодов — на символ требуется значительная длина по сравнению с Code 128 или Data Matrix.
- Ограниченный набор символов: не кодирует строчные буквы, кириллицу и большинство знаков препинания (кроме перечисленных). Для русского алфавита часто применяют Code 128 или Data Matrix.
- Обязательность контрольного символа: не все системы поддерживают его — при подключении старого оборудования возможна потеря последнего знака. В современных решениях это проблем не создаёт.
Отличие от других версий Code 39
- Code 39 (базовый): без контрольного символа.
- Code 39 Full ASCII: расширенная версия, кодирующая полный набор ASCII (00–127) с использованием пар комбинаций. В ней также может присутствовать mod 43, хотя реже.
- Code 39 mod 10: альтернативный метод вычисления, где контрольный символ считается по модулю 10 для повышения точности, но он почти не распространён и не стандартизирован международно.
Пример считывания
На практике штрихкод Code 39 mod 43 на этикетке обычно выглядит как последовательность штрихов, которые сканер интерпретирует в строку, содержащую звёздочку, данные, контрольный символ и снова звёздочку. Пример:
- Original DATA: «ABC123»
- Сумма: 10+11+12+1+2+3 = 39. 39 mod 43 = 39. Символ 39 — это ‘$’.
- Полный код: «ABC123$»
Сканер после считывания вычисляет сумму по данным (без контрольного символа) и сравнивает её с полученной. Если совпадают — данные корректны.
Источники
- ISO/IEC 16388:2007 «Information technology — Automatic identification and data capture techniques — Code 39 bar code symbology specification».
- Справочник «Штриховые коды в промышленности: от ГОСТ до международных стандартов» (М., 2019).
- Техническая документация принтеров Zebra (серия ZPL Programming Guide, раздел Code 39).
- Патент US 3 723 794 A, 1973 (первое описание Code 39).
- Учебное пособие «Системы автоматизированной идентификации» (М.: МГТУ им. Баумана, 2020).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →