Linux opc da client

Шлюзы промышленных протоколов обмена на Linux. Собери сам

Я занимаюсь разработкой, внедрением и эксплуатацией систем автоматического управления технологическими процессами (АСУ ТП). Поначалу работал со SCADA-системами. Потом довольно быстро переключился на работу с протоколами обмена промышленных устройств. Как самостоятельное написание драйверов, так и настройка систем сбора данных. В настоящий момент моя работа проходит атмосфере Modbus-ов, МЭКов-101/104-х, ОРС и прочих протоколов.


Рис. 1. Многообразие протоколов обмена, используемых в АСУ ТП

Кратко о том, как устроена типичная система сбора данных (Немного упрощенно).


Рис. 2. Система сбора данных

Специальное ПО, называемое OPC-сервером ведёт опрос устройств, подключенных к интерфейсу RS-485. OPC-сервер является своего рода прослойкой между SCADA-системой и устройствами, переводя язык на котором общаются устройства в язык, понятный SCADA-системе. Преобразователь Ethernet/RS-485 служит для преобразования TCP/IP-пакетов в пакеты, которые ходят по физической среде RS-485.

Эта схема имеет ряд недостатков:

  1. Установим, например, в ОРС-сервере таймаут ожидания ответа 200 мс. В идеальном случае, когда пакеты в Ethernet ходят без задержек, обмен с устройствами идёт с хорошей скоростью (интенсивностью). Но если пакет, содержащий ответ, задерживается, например, на 300 мс (это больше таймаута ожидания ответа 200 мс), то ОРС-сервер считает, что ответ на запрос не пришел и отправляет следующий запрос. В это время приходит ответ на предыдущий запрос, но ОРС-сервер думает, что это пришел ответ на текущий запрос и передаёт неправильные данные наверх. Как результат данные на АРМе «скачут». Чтобы уйти от таких ситуаций установим таймаут больше. Возьмём с запасом — 3000 мс. Если ответ приходит раньше 3000 мс, то оставшееся время не ждём, переходим к следующему запросу. Пока всё идёт хорошо, но стоит нескольким устройствам перестать отвечать, как образуются задержки по 3000 мс на каждое устройство. Время опроса увеличивается.
  2. Большинство протоколов, используемых в АСУ ТП (Modbus, счетчики э/э) основываются на последовательном опросе одних и тех же параметров. Учитывая, что большую часть времени значения параметров остаются неизменными, сеть передачи данных используется для передачи одного и того же. Это нерационально, если среда передачи GPRS, и трафик стоит денег. Кроме того, в среде передачи GPRS задержки прохождения пакетов могут достигать нескольких секунд. Зачем тратить время и ресурсы для передачи одного и того же?

Для вышеперечисленных ситуаций более подходит протокол, в котором данные передаются наверх по изменению (спорадически) и сгруппированными по несколько значений в один TCP-пакет. Такими протоколами являются МЭК-60870-5-104 и OPC UA. Подойдёт и ModBus-TCP, в нём нет передачи по изменению, но зато, если данных немного, их можно упаковать в один пакет. Хорошо бы иметь какой-нибудь контроллер, который можно повесить на DIN-рейку, подключить к нему устройства по RS-485 и передавать данные по Ethernet в SCADA-систему.

В общем какие-то аппаратные шлюзы есть и в немалом количестве. Но в виде готовых неделимых решений. Всё в одном. И это мне не особо нравится. Понадобился мне когда-то шлюз, преобразующий протоколы счетчиков СЭТ-4ТМ в OPC UA с шестью портами RS-485 и двумя Ethernet. У одного производителя есть шлюз с поддержкой нужных протоколов обмена, но мало портов RS-485, у другого есть нужное количество портов RS-485, но нет двух портов Ethernet. У третьего есть два порта Ethernet, но нет всех протоколов обмена. У четвёртого есть почти всё, но нет OPC UA, имеющиеся на борту МЭК-60870-5-104 или ModBus-TCP требуют ОРС-сервера для этих протоколов.

Читайте также:  Создать точку доступа linux mint

А как бы было замечательно: купить контроллер или мини-ПК с ОС у одного производителя. Купить ПО для контроллера у другого. Если одного производителя ПО не поддерживает что-то, докупить что-то из ПО у другого, объединить между собой компоненты ПО через стандартный программный интерфейс. Казалось бы, вот оно светлое будущее!

Вот поэтому шлюзы протоколов применяются реже чем связка «ОРС-сервер и «Преобразователь Ethernet в RS-485»» — из-за их неделимости на компоненты.

Одна из причин, почему мало развиты SCADA для Linux: SCADA есть, протоколов обмена в ней поддержано мало, а ОРС-серверов для связи с оборудованием нет. SCADA оставляет интегратора один на один с железом.

Читатель уже может задавать вопрос: Что можете предложить? Что уже есть? Есть OPC UA серверы для Linux для следующих протоколов:

  • МЭК 60870-5-104;
  • МЭК 60870-5-101;
  • Счетчики Меркурий 230, 231, 233, 234, 236;
  • Счетчики СЭТ-4ТМ, ПСЧ-3ТМ, ПСЧ-4ТМ;
  • Счетчики Энергомера;
  • SNMP;
  • MQTT;
  • Счетчики Меркурий 200.

Чтобы на верхний уровень можно было передавать данные не только по протоколу OPC UA, создан «Преобразователь OPC UA в Modbus и МЭК 60870-5-104». Помимо функции передачи данных по этим протоколам, «Преобразователь» имеет встроенный web-сервер. С помощью специального редактора можно нарисовать схему, на неё вывести значения тэгов, а потом открыть её в браузере. Получается мини-SCADA непосредственно в контроллере. Как работает оживление схемы я уже писал здесь, про редактор здесь. В будущем планируется «Преобразователь OPC UA в MQTT».

OPC UA серверы и преобразователь работают на архитектурах x64, ARMv7 и AARCH64.
Таким образом, для аппаратной части можно использовать как проверенные временем решения на базе мини промышленных компьютеров, так и всевозможные «raspberry pi совместимые» ARM миникомпьютеры. Как производится установка и настройка ПО с примерами можно почитать здесь или здесь.

В общем виде структура комплекса выглядит так:

Система обладает масштабируемостью. Используются компоненты необходимые только для решения текущей задачи.

С использованием OPC UA сервера наша схема преобразуется:

У нас получилось следующее:

  • OPC UA сервер собирает данные с устройств по RS-485 без больших задержек между запросами;
  • Данные в SCADA выдаются по нескольку штук в одном TCP-пакете по изменению;
  • К OPC UA серверу можно подключить несколько одинаково настроенных АРМов. Пригодится, если нужно дублирование.

Таким образом, вместо связки ОРС-сервер и «Преобразователь Ethernet в RS-485» у нас получается одно устройство, объединяющее в себе их функциональность. Мне такая схема нравится больше. А Вам?

Источник

OPC-DA DCOM compatible linux application? | Classic OPC: DA, A&E, HDA, XML-DA, etc. | Forum

I have a situation where I need to gather data from a OPC DA server running on a windows 8 machine to an application running on a linux (Ubuntu 18.04) machine on the same network.

Читайте также:  Remote play ps4 windows download

My understanding so far is that DCOM is incompatible with linux. We’ve had to run up an application called Cogent on the windows machine to gather data from the server, and also be a TCP server for the application on the linux machine to connect to. The app on linux is NiFi by the way.

Is the DCOM incompatibility still the case? Is it possible for an app on linux to gather data directly from the OPC DA server?

While direct ports of DCOM to Linux do exist I don’t have any information on current availability or reliability.

I recommend that you look at developing an OPC UA client on Linux and installing a OPC UA to COM DA gateway on the Windows machine.

Many vendors offer off-the-shelf OPC UA to COM DA gateways.

You can download a free linux OPC UA client here:

Currently using Cogent. too. I like it and I figured out how to backup links. 700,000 tags available. Cogent is like using a tool to port all DA to anywhere. OPCDA is so complicated and brings up security questions having to make changes to DCOM just to get it to work. Cogent support is very good at stepping you through the DCOM work.

However, with all of the updates to Windows it interferes with reliability of HMI and connections.

It is nice to run Ubuntu or other Linux systems, for Data Flow with Cyber secure Non-Routability.

The Opto22 Groov EPIC is awesome. You can use the Inductive Automation Ignition interface on Linux and HMI. The driver talks to most PLCs and does not require OPC DA. It is already package with OPC UA for Linux. It is a full function controller as well.

Downloaded the Ignition software for free, Like Cogent. They run for an hour or 2 so you can decide on purchase options.

Communications on steroids.

Currently testing the Ignition on a stand alone Linux Ubuntu 18.04 with good success.

The Linux Based systems are more industrial and more simple.

Opto22 also provides the software for Groov you can run independent.

No Windows PCs are required. For HMI Data Concentration SCADA etc. I am pleased.

Источник

OPC DA клиент

Подключение удалённого OPC DA сервера к Облачной СКАДА возможно осуществить при помощи специализированной утилиты DispSky OPC DA клиент. Утилита устанавливается на локальный компьютер (сервер) и обеспечивает автоматическое соединение и обмен данными, между работающими на этом устройстве OPC DA серверами и комплексом DispSky.

При этом, для шлюза локальной сети не требуются статический глобальный IP адрес или организация тоннелей.

В облачном комплексе DispSky, при таком варианте подключения, будут доступны для опроса все устройства подключенные к OPC DA серверу.

Вы можете одновременно подключить несколько OPC DA серверов при помощи одной утилиты.

В качестве примера рассматривается подключение к комплексу DispSky модуля ОВЕН МУ110-16Р через MasterOPC Universal Modbus Server, аналогичные действия предпринимаются при подключении других приборов и OPC DA серверов.

Читайте также:  Linux distribution windows installer

Для подключения к комплексу DispSky с помощью утилиты OPC DA клиент необходимо:

В OPC DA сервере:

Организуйте канал связи, произведите настройку опроса и запустите сервер в работу:

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

Также для некоторых OPC DA серверов возможно появление ошибки вида:

В таком случае необходимо закрыть OPC DA сервер и запускать его в автоматическом режиме посредством старта утилиты OPC DA клиент.

В утилите OPC DA клиент:

Загрузите утилиту и запустите её на компьютерe с OPC DA сервером:

Укажите параметры подключения:

  1. Введите адрес сервера (s1.dispsky.ru)
  2. Укажите порт (5020)
  3. Придумайте и укажите уникальный код, состоящий из ASCII символов (можете воспользоваться случайным, сгенерированным при запуске)
  4. Сохраните настройки

.

При первом запуске, в папке утилиты создаётся файл с её конфигурацией:

В личном кабинете DispSky:

Перейдите в раздел «Конфигурация» (1) -> «Устройства» (2), добавьте (3) новый узел связи (4) (Для этого нажмите правой кнопкой мыши на свободной области поля «устройства»):

Во всплывающем окне введите параметры узла связи:

  1. Придумайте название
  2. Выберите режим настройки — OPC DA
  3. Введите код, который вы указали в утилите OPC DA клиент

.

В дальнейшей работе вы можете загружать утилиту OPC DA клиент непосредственно из своего личного кабинета:

Нажмите правой кнопкой мыши на узел связи, добавьте устройство;

Во всплывающем окне введите параметры устройства:

  1. Придумайте название
  2. Выберите режим синхронизации

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

Сохраните настройки устройства.

Зайдите в настройки устройства, для этого выберите устройство и нажмите кнопку «Редактировать», после установки связи между утилитой OPC DA и сервером DispSky появится возможность выбора OPC DA сервера;

  1. Выберите необходимый OPC DA сервер из списка (утилита автоматически формирует список OPC DA серверов доступных на локальном компьютере)
  2. Установите активность устройства

.

Перейдите в раздел «Теги»:

Нажмите кнопку «Обновить теги с сервера» (1), во всплывающем окне выберите необходимые для опроса переменные (2):

Обратите внимание, что по умолчанию создаются теги имеющие переменную типа float 4б (1), для корректной работы некоторых из исполнительных устройств необходимо его изменение, для этого нажмите на иконку «Редактировать» (2) и выберите необходимый (3):

Текущие значения опрашиваемых тегов отображаются в таблице, переменная StatusDevice обозначает полное время цикла опроса устройства в миллисекундах:

Для удобного и наглядного контроля за параметрами программы Вы можете сделать мнемосхему и видеть все показатели в ОнЛайн режиме в личном кабинете из любой точки в мире.

Документация:

Программное обеспечение:

Техническая поддержка

При возникновении дополнительных вопросов по работе сервиса DispSky вы можете обратиться в службу технической поддержки по телефонам, указанным на нашем сайте, а так же по e-mail support@dispsky.ru или по телефону +7 (921) 432-68-48.

193318, Санкт-Петербург, ул. Ворошилова, д. 2, БЦ «Охта»

Время приема: с 9.00 до 18.00 (время московское)

Источник

Оцените статью