Матрица данных - Data Matrix

Пример кода Data Matrix, кодирующий текст: «Википедия, бесплатная энциклопедия»

Данная Матрица представляет собой двумерный код , состоящий из черных и белых «клеток» или точек , расположенных либо в квадратном или прямоугольном узоре, также известный как матрица . Кодируемая информация может быть текстовой или числовой. Обычный размер данных составляет от нескольких байтов до 1556 байтов . Длина закодированных данных зависит от количества ячеек в матрице. Коды исправления ошибок часто используются для повышения надежности: даже если одна или несколько ячеек повреждены и не читаются, сообщение все равно можно прочитать. Символ матрицы данных может содержать до 2335 буквенно-цифровых символов.

Символы матрицы данных имеют прямоугольную, обычно квадратную форму и состоят из квадратных «ячеек», которые представляют биты . В зависимости от используемого кодирования «светлая» ячейка представляет собой 0, а «темная» ячейка - 1, или наоборот. Каждая матрица данных состоит из двух сплошных смежных границ в форме буквы «L» (называемой «шаблоном поиска») и двух других границ, состоящих из чередующихся темных и светлых «ячеек» или модулей (называемых «шаблоном синхронизации»). Внутри этих границ находятся строки и столбцы ячеек, кодирующих информацию. Шаблон поиска используется для поиска и ориентации символа, в то время как шаблон синхронизации обеспечивает подсчет количества строк и столбцов в символе. Чем больше данных закодировано в символе, тем больше ячеек (строк и столбцов). Каждый код уникален. Размеры символов варьируются от 10 × 10 до 144 × 144 в новой версии ECC 200 и от 9 × 9 до 49 × 49 в старой версии ECC 000 - 140.

Приложения

Матрица данных на карте Mini PCI с кодировкой серийного номера 15C06E115AZC72983004

Самым популярным приложением для Data Matrix является маркировка мелких предметов из-за способности кода кодировать пятьдесят символов в символе, читаемом на расстоянии 2 или 3 мм 2 (0,003 или 0,005 кв. Дюйма), и того факта, что код можно прочитать с помощью всего 20% контрастности. Матрица данных масштабируема; существуют коммерческие приложения с изображениями размером от 300 микрометров (0,012 дюйма) (лазерное травление на кремниевом устройстве размером 600 микрометров (0,024 дюйма)) и размером с квадрат в 1 метр (3 фута) (нарисованный на крыше товарного вагона ) . Единственным ограничением является точность систем маркировки и чтения. Альянс электронной промышленности США (EIA) рекомендует использовать Data Matrix для маркировки небольших электронных компонентов.

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

Маркировка поверхностей

В целях промышленного проектирования коды Data Matrix могут быть нанесены непосредственно на компоненты, что гарантирует идентификацию только предполагаемого компонента с данными, закодированными в матрице данных. Коды могут быть нанесены на компоненты различными методами, но в аэрокосмической промышленности это обычно промышленная струйная печать, точечная маркировка, лазерная маркировка и электролитическое химическое травление (ECE). Эти методы оставляют постоянную отметку, которая может длиться до срока службы компонента.

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

Чтение кода Data Matrix с мобильного телефона ( проект Semacode )

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

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

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

Изобразительное искусство

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

Технические характеристики

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

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

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

ECC 200, более новая версия Data Matrix, использует коды Рида – Соломона для восстановления после ошибок и стирания. ECC 200 позволяет рутинную реконструкцию всей строки кодированных данных, когда символ подвергся 30% повреждению, при условии, что матрица все еще может быть точно расположена. Data Matrix имеет коэффициент ошибок менее 1 из 10 миллионов отсканированных символов.

Символы имеют четное количество строк и четное количество столбцов. Большинство символов имеют квадратную форму размером от 10 × 10 до 144 × 144. Однако некоторые символы имеют прямоугольную форму с размерами от 8 × 18 до 16 × 48 (только четные значения). Все символы, использующие коррекцию ошибок ECC 200, можно распознать по модулю в правом верхнем углу, который совпадает с цветом фона. (двоичный 0).

Дополнительные возможности, которые отличают символы ECC 200 от более ранних стандартов, включают:

  • Символы обратного чтения (светлые изображения на темном фоне)
  • Спецификация набора символов (через Extended Channel Interpretations )
  • Прямоугольные символы
  • Структурированное добавление (связывание до 16 символов для кодирования больших объемов данных)

Матрица данных ECC 000–140

Более старые версии 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, могут быть распознаны с помощью модуля в правом верхнем углу, который является обратным. цвета фона. (двоичная 1).

Согласно ISO / IEC 16022, «ECC 000–140 следует использовать только в закрытых приложениях, где одна сторона контролирует создание и считывание символов и отвечает за общую производительность системы».

Стандарты

Data Matrix была изобретена компанией International Data Matrix, Inc. (ID Matrix), которая была объединена с RVSI / Acuity CiMatrix , которые были приобретены Siemens AG в октябре 2005 года, и Microscan Systems в сентябре 2008 года. Сегодня Data Matrix рассматривается несколькими ISO / IEC. стандартов и является общественным достоянием для многих приложений, что означает, что его можно использовать без каких-либо лицензий или лицензионных отчислений.

  • ISO / IEC 16022: 2006 - Спецификация символики штрих-кода Data Matrix.
  • ISO / IEC 15415—2-D Стандарт качества печати
  • ISO / IEC 15418: 2016 - Семантика формата символьных данных (идентификаторы приложений GS1 и идентификаторы данных ASC MH10 и обслуживание)
  • ISO / IEC 15424: 2008 - Идентификаторы носителя данных (включая идентификаторы символики) [идентификаторы для различения различных типов штрих-кодов]
  • ISO / IEC 15434: 2006 - Синтаксис для носителей ADC большой емкости (формат данных, передаваемых со сканера в программное обеспечение и т. Д.)
  • ISO / IEC 15459 - Уникальные идентификаторы

Кодирование

Считыватели кода Industrial Data Matrix

Процесс кодирования описан в стандарте ISO / IEC 16022: 2006. Было опубликовано программное обеспечение с открытым исходным кодом для кодирования и декодирования варианта Data Matrix ECC-200.

На схемах ниже показано размещение данных сообщения внутри символа матрицы данных. Это сообщение называется «Википедия», и оно расположено в несколько сложном диагональном порядке, начиная с верхнего левого угла. Некоторые символы разделены на две части, например, начальная буква W, а третья буква «i» находится в «угловом шаблоне 2», а не в обычном L-образном расположении. Также показаны код конца сообщения (помеченный как End), байты заполнения (P) и исправления ошибок (E), а также четыре модуля неиспользуемого пространства (X).

Матрица данных Encoding.svg Datamatrixfilling.png

Для хранения различных типов сообщений используются несколько режимов кодирования. В режиме по умолчанию для каждого 8-битового кодового слова сохраняется один символ ASCII . Коды управления предназначены для переключения между режимами, как показано ниже.

Кодовое слово Интерпретация
0 Не используется
1–128 Данные ASCII (значение ASCII + 1)
129 Конец сообщения
130–229 Пары цифр 00-99
230 Начать кодирование C40
231 Начать кодирование Base 256
232 FNC1
233 Структурированное приложение. Позволяет разделить сообщение на несколько символов.
234 Читательское программирование
235 Установить старший бит следующего символа
236 05 Макро
237 06 Макро
238 Начать кодирование ANSI X12
239 Начать кодирование текста
240 Начать кодирование EDIFACT
241 Код интерпретации расширенного канала
242–255 Не используется

Текстовые режимы

Режимы C40, Text и X12 потенциально более компактны для хранения текстовых сообщений. Они похожи на DEC Radix-50 , используя коды символов в диапазоне 0–39, и три из этих кодов объединяются, чтобы получить число до 40 3 = 64000, которое упаковано в два байта (максимальное значение 65536) следующим образом :

V = C1 × 1600 + C2 × 40 + C3 + 1
B1 = пол (В / 256)
B2 = V мод 256

Результирующее значение B1 находится в диапазоне 0–250. Специальное значение 254 используется для возврата в режим кодирования ASCII.

Интерпретации кодов символов показаны в таблице ниже. Режимы C40 и Text имеют четыре отдельных набора. Набор 0 является значением по умолчанию и содержит коды, которые временно выбирают другой набор для следующего символа. Единственное отличие состоит в том, что они меняют местами прописные и строчные буквы. C40 - это в основном заглавные буквы, а в наборе 3 - строчные буквы; Текст - наоборот. Набор 1, содержащий управляющие коды ASCII, и набор 2, содержащий символы пунктуации, идентичны в C40 и текстовом режиме.

Код установить 0 набор 1 набор 2 набор 3 X12
C40 Текст C40 Текст
0 набор 1 NUL ! ` CR
1 набор 2 SOH " а А *
2 набор 3 STX # б B >
3 Космос ETX $ c C Космос
4 0 EOT % d D 0
5 1 ENQ & е E 1
6 2 ACK ' ж F 2
7 3 BEL ( грамм грамм 3
8 4 BS ) час ЧАС 4
9 5 HT * я я 5
10 6 LF + j J 6
11 7 VT , k K 7
12 8 FF - л L 8
13 9 CR . м M 9
14 А а ТАК / п N А
15 B б SI : о О B
16 C c DLE ; п п C
17 D d DC1 < q Q D
18 E е DC2 знак равно р р E
19 F ж DC3 > s S F
20 грамм грамм DC4 ? т Т грамм
21 год ЧАС час НАК @ ты U ЧАС
22 я я SYN [ v V я
23 J j ETB \ ш W J
24 K k ЖЕСТЯНАЯ БАНКА ] Икс Икс K
25 L л ЭМ ^ у Y L
26 год M м SUB _ z Z M
27 N п ESC FNC1 { N
28 год О о FS | О
29 п п GS } п
30 Q q RS гибит ~ Q
31 год р р нас DEL р
32 S s S
33 Т т Т
34 U ты U
35 год V v V
36 W ш W
37 Икс Икс Икс
38 Y у Y
39 Z z Z

Режим EDIFACT

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

Код Имея в виду
0–30 Коды ASCII 64–94
31 год Вернуться в режим ASCII
32–63 Коды ASCII 32–63

Базовый режим 256

Данные в режиме Base 256 начинаются с индикатора длины, за которым следует количество байтов данных. Длина от 1 до 249 кодируется как один байт, а более длинные значения хранятся как два байта.

L1 = пол (длина / 250) + 249, L2 = длина по модулю 250

Желательно избегать длинных строк нулей в закодированном сообщении, поскольку они становятся большими пустыми областями в символе матрицы данных, что может привести к потере синхронизации сканером. (По этой причине в кодировке ASCII по умолчанию не используется ноль.) Чтобы сделать это менее вероятным, длина и байты данных скрыты путем добавления псевдослучайного значения R (n), где n - позиция в потоке байтов.

R (n) = (149 × n) по модулю 255 + 1

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

До истечения срока действия патента США 5 612 524 в ноябре 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 году. Этот патент не цитируется в вышеупомянутых патентных заявках США и может сделать их недействительными.

Смотрите также

использованная литература

внешние ссылки