Как реализовать получение данных с весов (COM-интерфейс) по сети Wi-Fi в 1С

Программист 1С v8.3 (Управляемые формы) Управленческий учет Промышленность, строительство и АПК
← На главную

В промышленной автоматизации часто возникает ситуация, когда весовой терминал находится на значительном удалении от учетного компьютера, а прокладка кабеля RS-232 невозможна или нецелесообразна. Рассмотрим подробно, как организовать стабильную передачу данных с весов из удаленной "Весовой" точки в центральный офис, используя существующую Wi-Fi сеть и платформу 1С.

Аппаратное решение №1: Использование специализированных конвертеров RS-232 в Wi-Fi

Если на весовой точке отсутствует компьютер, самым надежным и профессиональным решением будет установка промышленного преобразователя интерфейсов. Проанализируем работу таких устройств, как Moxa NPort W или USR-W610.

Эти устройства работают по следующему принципу: весы подключаются физическим кабелем к порту RS-232 конвертера. Конвертер подключается к вашей Wi-Fi сети как клиент. На компьютере в офисе устанавливается специальный драйвер Virtual COM Port, который создает в системе виртуальный порт (например, COM10). Программа 1С "думает", что весы подключены локально, хотя данные передаются через Wi-Fi.

Разберем по шагам настройку такого решения:

  1. Подключаем весы к RS-232 порту конвертера.
  2. Настраиваем Wi-Fi параметры конвертера (SSID, пароль, статический IP-адрес) через его веб-интерфейс.
  3. В офисном компьютере устанавливаем утилиту (например, HW VSP3 или проприетарный софт от производителя конвертера).
  4. Создаем виртуальный COM-порт, указав IP-адрес конвертера и TCP-порт (обычно 4001 или 8899).
  5. В 1С подключаем оборудование, выбирая созданный виртуальный порт.

Аппаратное решение №2: Использование мини-ПК (Orange Pi или Raspberry Pi)

В ситуациях, когда бюджет ограничен или требуется предварительная обработка данных, рассмотрим вариант с использованием мини-компьютеров типа Orange Pi Zero. Это решение может оказаться дешевле промышленных конвертеров и гибче в настройке.

Проанализируем схему работы через мини-ПК:

  1. Мини-ПК устанавливается непосредственно в весовой и подключается к весам через переходник USB-to-RS232.
  2. На мини-ПК под управлением Linux (Debian/Armbian) запускается служба ser2net или socat. Эти утилиты транслируют поток данных из последовательного порта в TCP-сокет.
  3. В центральном офисе 1С подключается к IP-адресу мини-ПК.

Пример настройки трансляции порта на Linux (файл конфигурации /etc/ser2net.conf):


# Трансляция порта /dev/ttyUSB0 на сетевой порт 4000
4000:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT

Программная интеграция на стороне 1С: Стандартный драйвер

Посмотрим на ситуацию со стороны конфигурации 1С. Если мы используем виртуальный COM-порт, то интеграция ничем не отличается от обычного подключения. Однако важно учитывать особенности работы через беспроводную сеть.

Разберем основные настройки в 1С:

Использование "Сервера торгового оборудования"

Рассмотрим еще один эффективный метод, упомянутый специалистами: использование распределенной архитектуры драйверов 1С. Если на весовой точке все же есть какой-либо компьютер с Windows, можно задействовать "Сервер торгового оборудования".

Алгоритм действий будет следующим:

  1. На компьютере в весовой устанавливается драйвер весов и запускается служба сервера оборудования.
  2. В базе 1С в центральном офисе при настройке подключаемого оборудования указывается, что устройство подключено к удаленному рабочему месту.
  3. 1С будет обращаться по сети напрямую к экземпляру драйвера на удаленном ПК.

Прямое чтение TCP-сокета в 1С (без виртуальных портов)

Для продвинутых разработчиков проанализируем способ получения данных без использования виртуальных COM-портов. Это повышает стабильность, так как исключает лишнее звено в виде системных драйверов. Мы можем считывать данные напрямую из IP-адреса конвертера.

Посмотрим на пример логики, которую можно реализовать в обработке 1С (используя объект ЧтениеДанных или внешние компоненты):


// Пример логики подключения к TCP-сокету конвертера
АдресКонвертера = "192.168.1.50";
ПортКонвертера = 4001;

// Использование объекта для работы с TCP (зависит от версии платформы и доступных ВК)
Соединение = Новый TCPСоединение(АдресКонвертера, ПортКонвертера);
Поток = Соединение.ПолучитьПоток();
Чтение = Новый ЧтениеДанных(Поток);

// Читаем данные из потока весов
Пока Истина Цикл
    СтрокаВеса = Чтение.ПрочитатьСтроку();
    Если ЗначениеЗаполнено(СтрокаВеса) Тогда
        // Парсим полученную строку согласно протоколу весов
        Вес = ИзвлечьЧислоВеса(СтрокаВеса);
        Прервать;
    КонецЕсли;
КонецЦикла;

Борьба с нестабильностью Wi-Fi соединения

Выясним причины возможных ошибок при работе по радиоканалу. Главная проблема — кратковременные разрывы связи и накопление данных в буфере. Если связь прервалась, а весы продолжают слать данные, то при восстановлении соединения 1С может получить "пачку" старых значений веса.

Для решения этой проблемы рекомендуем:

  1. Очистка буфера: Перед каждым запросом веса программно открывать и закрывать порт или очищать входящий буфер.
  2. Проверка стабильности: Реализовать в 1С алгоритм, который отбрасывает значения, если они не меняются или если "возраст" пакета данных вызывает сомнения.
  3. Направленные антенны: Для стабильной связи между объектами (офис и весовая) используйте Wi-Fi мосты типа Ubiquiti NanoStation. Это обеспечит надежный канал даже при наличии помех и металлических конструкций.

Подводя итог, наиболее надежным решением для промышленной эксплуатации является использование аппаратного конвертера RS-232 to Wi-Fi в режиме TCP Server в сочетании с увеличенными тайм-аутами в драйвере 1С. Это минимизирует количество промежуточного ПО и обеспечивает прозрачную работу для пользователя.

← На главную