Автору приходилось разбирать складской софт на одном старом заводе. Там использовались терминаторы сбора данных (ТСД) образца 1995 года, и они умели читать только два формата: Code 39 и MSI. Пришлось срочно осваивать MSI, чтобы не менять оборудование.
MSI не так широко известен, как EAN или Code 128, но в нише складского учёта он долгое время был королём. Рассказываем, как с ним обращаться.
Устройство и структура MSI
MSI — это непрерывный, импульсный штрихкод с фиксированной длиной (обычно 4–14 цифр). Он состоит из последовательности чёрных и белых полос одинаковой толщины. Кодирование происходит за счёт того, что каждый цифровой символ представляется четырьмя полосами (две чёрные и две белые) в определённой комбинации.
Основные характеристики:
- Набор символов: только цифры 0–9.
- Контрольные суммы: может использовать одну или две контрольные цифры. Существует несколько алгоритмов: «модуль 10» (обычный), «модуль 11» и двойной модуль.
- Плотность: довольно низкая, код получается длинным по сравнению с Code 128.
- Стартовый и стоповый символы — «защитные» полосы по краям.
Особенности генерации MSI
Создать MSI программно несложно, но есть важные нюансы:
- Выбор алгоритма контрольной суммы. Это самый критичный момент. Если сканер ожидает одну контрольную цифру по модулю 10, а генератор посчитает по модулю 11 — код не прочитается. Лучший инструмент должен позволять выбирать из нескольких вариантов.
- Расчёт контрольной суммы: для модуля 10 используется алгоритм Лукна (Luhn) или упрощённый вариант с весами 2,1,2,1... Для модуля 11 — веса от 2 до 7.
- Размер тихой зоны: из-за низкой плотности MSI требует не менее 10 мм пустого поля слева и справа.
Где сегодня используется MSI
Активное применение MSI пришлось на 1980–1990-е годы. Сегодня он встречается в таких местах:
- Старые складские и инвентаризационные системы в производстве и розничной торговле.
- Учёт библиотечного фонда в некоторых европейских библиотеках.
- Маркировка медицинских образцов и пробирок в лабораториях, где оборудование не обновляли.
- Стеллажные этикетки на крупных складах автозапчастей.
В новых проектах MSI практически не выбирают из-за низкой плотности и ограниченного набора символов. Но поддержка его важна для совместимости с legacy-системами.
Типичные ошибки
При генерации и печати MSI чаще всего ошибаются в следующем:
- Неправильная контрольная сумма. Проверьте документацию ваших сканеров — они используют один из четырёх вариантов (mod 10 с разными весами или mod 11).
- Слишком маленький код. MSI имеет широкие полосы. Печатайте его не уже 2,5 см.
- Отсутствие чётких границ кода. Из-за низкой плотности сканеру труднее найти начало/конец. Сделайте тихую зону побольше.
Заключение
Коротко по делу:
- MSI — старый цифровой штрихкод, используемый в основном в складских legacy-системах.
- Главная сложность при генерации — выбор и расчёт контрольной суммы (mod 10 или mod 11, одна или две цифры).
- Низкая плотность и цифровой набор символов сделали его непопулярным в новых проектах, но знание MSI может выручить при работе с древним оборудованием.
Вопрос к ветеранам складского учёта: доводилось ли вам ещё встречать MSI на стеллажах? Как часто он отказывал и почему вы до сих пор его не заменили? Поделитесь историями.