Введение

Двумерный матричный штрих-код

Data Matrix – это двумерный код, состоящий из черно-белых "ячеек" или точек, расположенных в квадратном или прямоугольном рисунке, также известном как матрица. Информация, подлежащая кодированию, может быть представлена текстом или числовыми данными. Типичный размер данных варьируется от нескольких байт до 1556 байт. Длина кодируемых данных зависит от количества ячеек в матрице. Для повышения надежности часто используются коды коррекции ошибок: даже если одна или несколько ячеек повреждены и становятся нечитаемыми, сообщение все равно можно прочитать. Символ Data Matrix может хранить до 2335 буквенно-цифровых символов. Символы Data Matrix имеют прямоугольную форму, обычно квадратную, и состоят из квадратных "ячеек", представляющих биты. В зависимости от используемого кодирования, "светлая" ячейка представляет 0, а "темная" – 1, или наоборот. Каждый Data Matrix состоит из двух сплошных смежных границ в форме буквы "L" (называемых "паттерном поиска") и двух других границ, состоящих из чередующихся темных и светлых "ячеек" или модулей (называемых "паттерном синхронизации"). Внутри этих границ расположены строки и столбцы ячеек, кодирующих информацию. Паттерн поиска используется для определения местоположения и ориентации символа, а паттерн синхронизации обеспечивает подсчет количества строк и столбцов в символе. По мере увеличения объема кодируемых данных увеличивается количество ячеек (строк и столбцов). Каждый код уникален. Размеры символов варьируются от 10×10 до 144×144 в новой версии ECC 200 и от 9×9 до 49×49 в старой версии ECC 000–140.

Приложения

Наиболее популярным применением Data Matrix является маркировка мелких изделий благодаря способности кода кодировать пятьдесят символов в символе, который считывается на расстоянии, и тому факту, что код может быть прочитан даже при контрастности всего 20%. Data Matrix масштабируем: существуют коммерческие приложения с изображениями размером от (лазерной гравировки на кремниевом устройстве) до 1 метра (3 фута) в квадрате (нанесенные на крышу грузового вагона). Единственным ограничением является точность систем маркировки и считывания. Американский альянс электронной промышленности (EIA) рекомендует использовать Data Matrix для маркировки небольших электронных компонентов. Коды Data Matrix становятся все более распространенными на печатных носителях, таких как этикетки и письма. Код может быть быстро считан сканером штрих-кодов, что позволяет отслеживать носитель, например, когда посылка отправлена получателю. Для целей промышленной инженерии коды Data Matrix могут наноситься непосредственно на компоненты, обеспечивая идентификацию только предназначенного компонента с данными, закодированными в Data Matrix. Коды могут наноситься на компоненты различными способами, но в аэрокосмической промышленности обычно используются промышленная струйная печать, точечная маркировка, лазерная маркировка и электрохимическая травление (ECE). Эти методы обеспечивают постоянную маркировку, которая может сохраняться на протяжении всего срока службы компонента. Коды Data Matrix обычно проверяются с помощью специализированного камерного оборудования и программного обеспечения. Эта проверка гарантирует соответствие кода соответствующим стандартам и обеспечивает его читаемость на протяжении всего срока службы компонента. После ввода компонента в эксплуатацию код Data Matrix может быть считан считывающей камерой, которая декодирует данные Data Matrix, которые затем могут быть использованы для различных целей, таких как отслеживание перемещения или проверка складских запасов. Коды Data Matrix, наряду с другими кодами с открытым исходным кодом, такими как 1D штрих-коды, также могут быть прочитаны с помощью мобильных телефонов путем загрузки специализированных мобильных приложений. Хотя многие мобильные устройства способны считывать 2D-коды, включая Data Matrix, лишь немногие расширяют декодирование для обеспечения мобильного доступа и взаимодействия, что позволяет использовать коды безопасно и в различных областях, например, в системах отслеживания и прослеживаемости, борьбе с контрафактом, электронном правительстве и банковских решениях.

Продовольственная промышленность

Коды Data Matrix используются в пищевой промышленности в системах автоматической кодировки для предотвращения ошибочной упаковки и маркировки пищевых продуктов. Коды хранятся во внутренней базе данных производителя и связаны с каждым уникальным продуктом, например, с различными вариантами ингредиентов. Для каждой производственной партии уникальный код передается принтеру. Дизайн этикетки должен обеспечивать возможность оптимального позиционирования 2D-кода Data Matrix для сканирования. Для кодов черного цвета на белом фоне тестирование не требуется, если нет проблем с качеством печати, но все цветовые варианты необходимо протестировать перед началом производства, чтобы гарантировать их читаемость.

Искусство

В мае 2006 года немецкий программист Бернд Хопфенгартнер создал большую матрицу данных в пшеничном поле (подобно тому, как создаются круги на полях). Сообщение гласило: "Hello, World!". В июне 2011 года парижский тату-мастер K. A. R. L., в рамках рекламной кампании шотландского виски Ballantine's, создал первую в мире анимированную татуировку, использующую код Data Matrix в процессе совместной работы, транслировавшейся в прямом эфире на Facebook.

Технические спецификации

Символы Data Matrix состоят из модулей, расположенных внутри периметрального маркера и временной шкалы. Они могут кодировать до 3116 символов из полного набора символов ASCII (с расширениями). Символ состоит из областей данных, содержащих модули, расположенные в виде регулярной сетки. Большие символы содержат несколько областей. Каждая область данных ограничена маркером, который со всех четырех сторон окружен полем защиты (отступом). (Примечание: модули могут быть круглыми или квадратными, стандарт не определяет конкретную форму. Например, ячейки, выполненные точечной травкой, обычно круглые.)

Матрица данных ECC 000140

Старые версии Data Matrix включают ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. В отличие от использования кодов Рида-Соломона, таких как ECC 200, ECC 000–140 используют коррекцию ошибок, основанную на свёртке. Каждый из них обеспечивает разный уровень коррекции ошибок: ECC 000 не обеспечивает никакой коррекции, а ECC 140 – максимальный уровень. Для обнаружения ошибок при декодировании, даже в случае ECC 000, каждая из этих версий также кодирует циклическую проверку избыточности (CRC) для битового рисунка. В качестве дополнительной меры, положение каждого бита в коде определяется таблицами размещения битов, содержащимися в спецификации. Эти старые версии всегда имеют нечётное количество модулей и могут быть созданы в размерах от 9 × 9 до 49 × 49. Все символы, использующие коррекцию ошибок ECC 000–140, можно распознать по модулю в правом верхнем углу, который имеет инвертированный цвет по отношению к фону (единичный бит). Согласно ISO/IEC 16022, "ECC 000–140 следует использовать только в закрытых приложениях, где одна и та же сторона контролирует как создание, так и считывание символов и несёт ответственность за общую производительность системы".

Исправление ошибок

Коды Data Matrix используют коррекцию ошибок Рида — Соломона над конечным полем (или GF(2^(8))), элементы которого кодируются как 8-битные байты; байт со стандартным числовым значением кодирует элемент поля, где α считается примитивным элементом, удовлетворяющим условию α^256 = 1. Примитивный полином равен x^8 + x^4 + x^3 + x + 1, что соответствует многочленному числу 301, с начальным корнем, равным 1. Код Рида — Соломона использует один из 37 различных многочленов над GF(2^(8)), со степенями от 7 до 68, в зависимости от количества байтов, добавляемых для коррекции ошибок.

Кодирование

Процесс кодирования описан в стандарте ISO/IEC 16022:2006. Опубликовано программное обеспечение с открытым исходным кодом для кодирования и декодирования варианта ECC 200 Data Matrix. На диаграммах ниже показано расположение данных сообщения в символе Data Matrix. Сообщение – "Wikipedia", и оно расположено в несколько сложной диагональной схеме, начиная с верхнего левого угла. Некоторые символы разделены на две части, например, начальная буква W, а третья 'i' находится в "угловом рисунке 2" вместо обычной L-образной компоновки. Также показаны код конца сообщения (отмеченный как End), заполнение (P) и байты коррекции ошибок (E), а также четыре модуля неиспользованного пространства (X). Для хранения различных типов сообщений используются несколько режимов кодирования. Режим по умолчанию хранит один символ ASCII на каждое 8-битное кодовое слово. Для переключения между режимами предусмотрены управляющие коды, как показано ниже.

Кодовое слово Шестнадцатеричное представление кодового слова Интерпретация
0 0 Не используется
1–128 1 80 Данные ASCII (ASCII-значение + 1)
129 81 Конец сообщения
130–229 82 e5 Числовые пары 00–99
230 e6 Начало кодирования C40
231 e7 Начало кодирования Base 256
232 e8 FNC1
233 e9 Структурированное добавление. Позволяет разделить сообщение на несколько символов.
234 ea Программирование устройства чтения
235 eb Установка старшего бита следующего символа
236 ec Макрос 05
237 ed Макрос 06
238 ee Начало кодирования ANSI X12
239 ef Начало кодирования текста
240 f0 Начало кодирования EDIFACT
241 f1 Код расширенной интерпретации канала
242–255 f2 ff Не используется

Патентные вопросы

До истечения срока действия патента в ноябре 2007 года компания Acacia Technologies заявила, что Data Matrix частично попадает под его действие. Как владелец патента, Acacia предположительно связалась с пользователями Data Matrix, требуя лицензионные отчисления, связанные с патентом. Cognex Corporation, крупный производитель устройств для считывания 2D-штрихкодов, 13 марта 2006 года подала исковое заявление о признании патента недействительным, получив информацию о том, что Acacia связалась с ее клиентами, требуя лицензионные сборы. 19 мая 2008 года судья Джоан Н. Эриксен из окружного суда США по Миннесоте вынесла решение в пользу Cognex. В решении было установлено, что патент № 524, который претендовал на охват системы захвата и чтения 2D-символических кодов, является недействительным и не подлежит исполнению в связи с недобросовестным поведением ответчиков при получении патента. Хотя решение было вынесено после истечения срока действия патента, оно исключило возможность предъявления претензий о нарушении, связанных с использованием Data Matrix до ноября 2007 года. Немецкая патентная заявка DE 4107020 была подана в 1991 году и опубликована в 1992 году. Этот патент не упоминается в вышеуказанных заявках на патенты США и может служить основанием для признания их недействительными.