Техническое зрение используется только в режимах, где для задания включена камера: для режимов «Полный функционал», «Инспектор со сканированием» и «Сканирование». Для режимов «Аппликатор» и «Инспектор» техническое зрение не используется.
Камера участвует в работе только если она включена в конфигурации линии и разрешена параметрами выбранного задания.
Общий принцип работы
Техническое зрение считывает код с продукции. Логика проверки зависит от выбранного режима, параметра Не проверять штрихкод и использования маркировки Честный знак.
Опция «Не проверять штрихкод» отключает сравнение считанного кода с ожидаемым, но не отключает саму камеру и попытку считывания кода.
Если камера не считала код, измерение считается ошибочным.
Во всех режимах, с весовым модулем и без весов, результат камеры обрабатывается вместе с записью измерения веса.
Если для товара включен Честный знак, при старте работы программа загружает из таблицы 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 и не используется как привязка к коду маркировки.
Экран камеры
На экране настройки камеры в главном окне видны изображение с камеры, текущая группа параметров и функции настройки.
Для камеры доступны функции настройки фокуса и перехода в режим калибровки. Подробнее о фокусировке и настройке камеры см. в разделе управления камерой.
