Как интегрировать камеру машинного зрения с 1С для сканирования кодов на конвейере

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

Интеграция систем машинного зрения (Machine Vision) с 1С — это сложная инженерная задача, которая выходит за рамки обычного подключения торгового оборудования. Когда речь идет о конвейерной ленте со скоростью 0.5 м/с и необходимости обработки кодов маркировки («Честный Знак»), стандартные драйверы сканеров штрихкодов часто оказываются бессильны. В этой статье мы подробно разберем, как построить надежную архитектуру взаимодействия 1С с промышленными камерами, какие протоколы использовать и как избежать типичных ошибок при автоматизации складских линий.

Анализ аппаратных требований: почему обычная камера не подойдет

Проанализируем условия задачи. Скорость 0.5 м/с означает, что объект проходит 50 сантиметров за одну секунду. Обычная IP-камера или веб-камера с типом затвора Rolling Shutter (построчное сканирование) создаст эффект «желе» или смазывания изображения, что сделает чтение DataMatrix невозможным.

Для решения подобных задач мы должны ориентироваться на специализированное оборудование:

  1. Камеры с Global Shutter: такие камеры экспонируют весь кадр одновременно, что критически важно для движущихся объектов.
  2. Smart-камеры: устройства со встроенным процессором, которые сами распознают код и передают в 1С уже готовую строку. Это избавляет сервер от необходимости обрабатывать тяжелый видеопоток.
  3. Импульсная подсветка: освещение должно работать синхронно с затвором камеры, чтобы обеспечить максимальный контраст кода на поверхности (особенно на бутылях с водой, где возможны блики).

Вариант 1: Использование промежуточного сервиса (Middleware)

Разберем наиболее гибкий и стабильный способ интеграции — создание микросервиса-прослойки. Рассмотрим ситуацию, когда камера передает «сырое» изображение, которое нужно распознать и отправить в 1С. Для быстрого проектирования и развертывания API приема таких данных на стороне 1С можно использовать конструктор API для интеграции по JSON.

Выясним причину, по которой не стоит подключать камеру напрямую к 1С. Платформа 1С не предназначена для высокопотоковой обработки видео в реальном времени. Правильнее будет использовать скрипт на Python или сервис на C++ / Go, который будет выполнять роль моста. Логика работы выглядит так:

  1. Сервис захватывает кадр с камеры через библиотеки производителя (например, Basler Pylon) или OpenCV.
  2. Библиотека (например, ZBar или PyZBar) распознает DataMatrix.
  3. Сервис отправляет результат в 1С.

Для передачи данных в 1С можно использовать HTTP-сервисы или MQTT-брокер. Рассмотрим пример кода на стороне 1С для приема данных через HTTP-сервис:


// Метод HTTP-сервиса (POST) для приема кода от камеры
Функция ПринятьКодМаркировки(Запрос)
    
    ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
    СтруктураДанных = ПрочитатьJSON(ТелоЗапроса); // Допустим, пришел JSON с кодом и временем
    
    КодКМ = СтруктураДанных.code;
    
    // Выполняем поиск в базе или проверку пересорта
    РезультатПроверки = ПроверитьМаркуВБазе(КодКМ);
    
    Если Не РезультатПроверки Тогда
        Возврат Новый HTTPСервисОтвет(400); // Сигнал об ошибке (пересорт)
    КонецЕсли;

    Возврат Новый HTTPСервисОтвет(200); // Все ок
    
КонецФункции

Вариант 2: Прямая передача данных по протоколу TCP/IP

Многие промышленные камеры (Smart-камеры) поддерживают прямую передачу данных по протоколам TCP/IP или UDP. В этом случае камера выступает в роли TCP-сервера или клиента. Рассмотрим, как реализовать прием данных в 1С с помощью внешней компоненты, так как штатные средства 1С для работы с сокетами ограничены.

Проанализируем алгоритм настройки:

  1. Настраиваем камеру на отправку строки кода в TCP-порт сразу после успешного считывания.
  2. В 1С подключаем внешнюю компоненту (например, предназначенную для работы с COM-портами или специализированную Native API компоненту для TCP).
  3. Обрабатываем событие ВнешнееСобытие в модуле управляемого приложения или формы.

Пример обработки события в 1С:


&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    Если Источник = "MachineVisionCamera" Тогда
        // "Данные" содержат считанный код маркировки
        ОбработатьСчитанныйКод(Данные);
    КонецЕсли;
    
КонецПроцедуры

Архитектурный вопрос: кто должен останавливать конвейер?

Это важнейший момент интеграции. Рассмотрим подробнее: если 1С обнаруживает пересорт, она должна дать команду на остановку линии. Однако задержки в сети или время отклика 1С (особенно если база занята тяжелым запросом) могут составить 100-500 мс. При скорости 0.5 м/с объект за это время проедет до 25 сантиметров.

Рекомендуемое решение:

Разделим уровни управления. Логика «Свой-Чужой» (проверка на вхождение кода в допустимый список) должна работать максимально близко к «железу» — на уровне микросервиса или ПЛК (Программируемого логического контроллера).

  1. 1С выгружает в локальную базу сервиса или в память камеры список разрешенных КМ (белый список).
  2. Камера считывает код.
  3. Микросервис мгновенно сравнивает код со списком.
  4. Если кода нет в списке, микросервис подает сигнал на GPIO порта камеры или через ПЛК останавливает двигатель.
  5. 1С получает информацию о событии постфактум для регистрации в учете.

Интеграция с «Честным Знаком»

При работе с упакованной водой необходимо проверять статус кодов в ГИС МТ. Посмотрим на этот процесс. Выполнять запрос к серверам «Честного Знака» в реальном времени для каждой бутылки на конвейере невозможно из-за лимитов и скорости ответов API. Для ускорения запуска системы полезно использовать утилиту для инициализации и проверки локального модуля «Честный Знак».

Правильный подход: предварительная загрузка данных. Рассмотрим по шагам:

  1. При поступлении партии товара 1С заранее запрашивает статусы всех КМ и помечает их в своей базе как «валидные».
  2. Во время работы конвейера сверка идет только с локальной базой 1С (или кэшем микросервиса).
  3. После завершения сессии сканирования 1С формирует итоговый документ (например, «Приемка товаров ИС МП») и отправляет данные в систему маркировки.

Использование готовых библиотек

Если вы решили использовать обычную камеру и писать распознавание самостоятельно, обратите внимание на специализированные библиотеки. Например, Simple UI предлагает готовые решения для интеграции видеопотока с учетными системами. Также стоит изучить возможности работы через Native API 1С, что позволит создать внешнюю компоненту на языке C++ или C#, которая будет генерировать внешние события для 1С, имитируя работу обычного сканера штрихкодов.

В этом случае 1С будет воспринимать камеру как стандартное торговое оборудование, работающее через Библиотеку подключаемого оборудования (БПО). Это значительно упростит поддержку конфигурации в будущем.

Подведем итог: для успешной интеграции камеры машинного зрения и 1С необходимо обеспечить высокую скорость захвата изображения (Global Shutter), использовать промежуточное ПО для обработки данных и разделять логику реального времени (остановка линии) и логику учета (запись в базу 1С).

← На главную