Техническое зрение используется только в режимах, где для задания включена камера: для режимов «Полный функционал», «Инспектор со сканированием» и «Сканирование». Для режимов «Аппликатор» и «Инспектор» техническое зрение не используется.

Камера участвует в работе только если она включена в конфигурации линии и разрешена параметрами выбранного задания.

Техническое зрение

Общий принцип работы

Техническое зрение считывает код с продукции. Логика проверки зависит от выбранного режима, параметра Не проверять штрихкод и использования маркировки Честный знак.

Опция «Не проверять штрихкод» отключает сравнение считанного кода с ожидаемым, но не отключает саму камеру и попытку считывания кода.

Если камера не считала код, измерение считается ошибочным.

Во всех режимах, с весовым модулем и без весов, результат камеры обрабатывается вместе с записью измерения веса.

Если для товара включен Честный знак, при старте работы программа загружает из таблицы DMatrix уже успешно подтвержденные коды для текущих LineID + OrderId + Prod.

Если у товара одновременно включены Честный знак и Уникальный идентификатор, при загрузке продукта приоритет имеет Честный знак, а признак Уникальный идентификатор автоматически сбрасывается и отдельно не используется.

При загрузке учитываются только успешные и непустые коды. Участие вручную удаленных вложений в сравнении зависит от настройки «Не возвращать крипто коды в работу после удаления вложения». Если возврат кодов запрещен, удаленные записи продолжают участвовать в поиске дублей. Если возврат кодов разрешен, из сравнения исключаются записи, помеченные как удаленные и отвязанные от криптокода.

При поиске дублей программа не учитывает вес в коде. Поэтому она найдёт одинаковые коды ЧЗ и у продуктов с разным весом.

Ключ поиска дублей строится из стабильных идентифицирующих частей GS1-кода:

  • 01 — GTIN;
  • 21 — серийный номер;
  • 91, 92, 93 — криптографические части кода.

Весовые AI вида 310x не включаются в проверку. Проверка считает одинаковыми коды маркировки, которые различаются только весовой частью GS1-строки.

Это дает два практических эффекта:

  • дублирование определяется по самому коду маркировки, а не по изменившейся весовой части;
  • проверка выполняется быстрее и не требует линейного обхода большого списка ранее считанных кодов.

Если из считанной строки нельзя выделить устойчивые GS1-поля для ключа, неполное или повреждённое чтение само по себе не делает код дубликатом. Результат оценивается по остальным правилам режима: факту чтения, GTIN, сравнению с ожидаемым кодом и другим проверкам.

Отображение результата чтения

Результат чтения штрихкода выводится в области «Данные камеры» главного окна программы.

При успешном чтении в области данных камеры отображается считанный код чёрным цветом. При ошибке — сообщение об ошибке чтения красным цветом.

В режиме Полный функционал при успешном чтении возможны два варианта проверки:

  • если флаг Не проверять штрихкод выключен, считанный код сравнивается с ожидаемым напечатанным кодом;
  • если флаг Не проверять штрихкод включен, полный код с ожидаемым не сравнивается, но GTIN считанного кода обязан совпадать с GTIN выбранного продукта.

Если для товара используется Честный знак, после основной проверки программа вычисляет hash-ключ считанного кода и сравнивает его с набором ранее успешно подтверждённых кодов текущего задания.

При совпадении такого ключа продукт считается повторным и отбраковывается с ошибкой дублирования кода Честный знак.

Если измерение прошло успешно и не было отбраковки, новый код добавляется в оперативный список текущего запуска, а его hash-ключ сразу включается в набор для последующих сравнений. Поэтому поиск дублей учитывает коды из БД, а также коды, успешно обработанные в текущем запуске линии.

Запись результатов в БД

Выданный из БД код ЧЗ помечается в sCripto как использованный и зарезервированный (isUsed=1, isReserved=1). Зарезервированные коды повторно не выдаются. Резерв снимается после записи результата изделия, отбраковки или выданного коробочного кода, а также при возврате неиспользованного кода. Снятие резерва не означает разрешения повторного использования успешно обработанного кода. Требуется совместимая БД версии 5.39 с полем isReserved.

После обработки результата технического зрения программа записывает данные в таблицу DMatrix или sReject.

При успешной обработке результата камеры и отсутствии ошибок запись сохраняется в таблицу DMatrix.

При ошибке чтения, ошибке сравнения штрихкода, несоответствии GTIN, дублировании кода Честный знак или иной ошибке обработки запись сохраняется в таблицу sReject.

При успешной обработке в поле Code таблицы DMatrix записывается код, который считается подтвержденным для данного режима: считанный камерой код для режимов с камерой и напечатанный код для режима Аппликатор.

В режиме Полный функционал считанный код записывается в sReject.Code при ошибке самого штрихкода: дублировании, несоответствии GTIN, несовпадении DataMatrix или некорректном весе в штрихкоде. При ошибках взвешивания и прочих причинах отбраковки это поле остается пустым.

Разделитель GS считается штатной частью такого штрихкода и сохраняется в БД в виде управляющего символа 0x1d.

Для ошибки дублирования Честного знака в sReject сохраняются:

  • считанный код в поле Code;
  • код ошибки дублирования в поле ошибки записи отбраковки.

В таблицу DMatrix сохраняются два значения веса:

Для режима Инспектор со сканированием это означает: - Weight — вес, полученный от весов; - RealWeight — вес, считанный из штрихкода GS1, если в коде присутствует AI веса.

Для весовых режимов без отдельного веса на упаковке, таких как Полный функционал, Инспектор и Аппликатор, при успешной записи обычно сохраняется одинаковое значение в полях Weight и RealWeight.

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

  • Weight — реальный вес, полученный от весов;
  • RealWeight — вес для этикетки: фиксированный вес или вес после пересчета с учетом усушки.

Для режима Сканирование это означает: - если у товара задан фиксированный вес (FixWeight), он сохраняется в поле Weight; - если фиксированный вес не задан, в поле Weight сохраняется 0; - вес, считанный из GS1-кода, при его наличии сохраняется только в поле RealWeight.

Для накопительного веса задания и линии используется вес, который интерпретируется как вес упаковки: если поле RealWeight заполнено, в суммарный вес берется именно оно; если RealWeight равно 0, используется поле Weight.

В таблицу sReject записывается поле Weight, содержащее вес, связанный с записью отбраковки.

В таблицу DMatrix также сохраняется признак печати штучной этикетки.

Для напечатанных изделий в таблице DMatrix сохраняется идентификатор криптокода в поле Cripto.

Для непечатных режимов, включая Инспектор, Инспектор со сканированием и Сканирование, поле Cripto сохраняется как -1 и не используется как привязка к коду маркировки.

Экран камеры

На экране настройки камеры в главном окне видны изображение с камеры, текущая группа параметров и функции настройки.

Для камеры доступны функции настройки фокуса и перехода в режим калибровки. Подробнее о фокусировке и настройке камеры см. в разделе управления камерой.