Механизм работы с OPC из 1С
Технология OPC является одним из стандартов, который позволяет интегрировать различное промышленное оборудование в другие информационные системы. OPC предоставляет унифицированный интерфейс для доступа к данным.
В 1С нет встроенного средства для работы с OPC. Но иногда необходимо получать данные от различного оборудования (сканеры RFID, контроллеры, и т.п.).
Используя OPC-HTTP Gateway, вы можете очень просто прочитать данные из OPC в 1С. В 1С есть встроенные средства обращения к веб-страницам через протокол HTTP.
Выполняя HTTP запрос, в ответ можно получить значения из OPC сервера. Таким же образом осуществляется запись в OPC сервер.
При этом тип сервера, OPC DA или OPC UA, не имеет значения.
Формат запросов для обоих типов OPC серверов унифицирован.
/// Как получить страницу сайта через http-запрос
/// из 1с 8.3, 8.2
&НаКлиенте
Процедура КакПолучитьСтраницуСайтаЧерезHttpЗапросНаКлиенте()
// Подключаемся к сайту.
Соединение = Новый HTTPСоединение(
"192.168.1.3", // сервер (хост)
80, // порт, по умолчанию для http используется 80, для https 443
, // пользователь для доступа к серверу (если он есть)
, // пароль для доступа к серверу (если он есть)
, // здесь указывается прокси, если он есть
, // таймаут в секундах, 0 или пусто - не устанавливать
// защищенное соединение, если используется https
);
// Отправляем запрос на чтение OPC тега через GET-запрос.
Запрос = Новый HTTPЗапрос("/read.json?server=opcserversim.Instance.1&tag=Channel1.Device1.Tag1");
Результат = Соединение.Получить(Запрос);
Сообщить("Нам вернули код: " + Результат.КодСостояния);
// Что примерно означают коды результата запроса:
// [400, 499] - ошибка запроса
// [500, 599] - ошибка сервера
// в теле результата запроса - текст обычной html страницы
Сообщить("Тело результата: " + Результат.ПолучитьТелоКакСтроку());
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
КонецПроцедуры
OPC через WebSocket
Одним недостатком такого подхода является то, что нельзя оформить "подписку" и получать немедленные уведомления при изменении значения на сервере.
Но это проблема решается при использовании протокола WebSocket вместо HTTP.
Можно сказать, что WebSocket является наследником HTTP, поскольку механизм инициации соединения основан на протоколе HTTP.
В 1С, WebSocket клиент реализуется с помощью внешнего компонента. Для данного компонента существует подробная документация и примеры использования.
Получение данных OPC через базу данных
Не всегда требуется оперативное получение данных через.
Мы можем предложить наш продут OPC Data Logger, который считывает OPC данные, а затем сразу записывает их в базу данных, в указанную вами таблицу и колонку.
Также программа имеет множество настроек по предварительной фильтрации и обработке данных.
Вы также можете комбинировать OPC Data Logger и OPC-HTTP Gateway для обеспечения чтения данных, и периодической записи управляющих команд.