Рассматриваются общепринятые методы интеграции устройств в OPC совместимые SCADA и проблемы, возникающие при их реализации. Предлагается нетрадиционный вариант подключения к SCADA GENESIS32 устройств с нестандартным протоколом.
Одной из основных задач системного интегратора при создании АСУ ТП является организация информационного взаимодействия системы с технологическими объектами. Устройствами сопряжения с объектами контроля и управления (УСО) являются чаще всего контроллеры, имеющие стандартный интерфейс связи с верхним уровнем. Как правило, разработчик системы старается выбрать в качестве УСО контроллеры со стандартным протоколом. Это особенно актуально в том случае, когда ядром проектируемой АСУ ТП является SCADA-система, базирующаяся на технологии OPC, которая позволяет каждому OPC совместимому клиентскому приложению получать доступ к любому устройству управления, у которого есть OPC совместимый сервер. В этом случае интеграция УСО в АСУ ТП сводится к применению OPC-сервера, поддерживающего используемый контроллером протокол.
Практически для всех широко распространённых протоколов, признанных стандартными, имеются OPC-серверы различных производителей. Разработкой OPC-серверов для разнообразных устройств заняты несколько сотен фирм, входящих в состав организации OPC Foundation, а также немалое количество компаний, не являющихся её членами.
В то же время продолжают разрабатываться устройства с уникальными протоколами, для которых нет OPC-серверов. Иногда создаётся впечатление, что некоторые разработчики приборов умышленно не используют стандартные протоколы в расчёте на самостоятельную разработку OPC-сервера для своих устройств с целью их опциональной поставки в комплекте со своими изделиями. К сожалению, далеко не всем из них удаётся создать качественный продукт, обеспечивающий все преимущества, которые даёт использование OPC-технологий. Более того, иногда такие OPC-серверы показывают неустойчивую работу и плохую совместимость с некоторыми широко распространёнными SCADA-системами известных компаний.
Это объясняется тем, что создание OPC-сервера не является тривиальной задачей. OPC-сервер – это достаточно сложный в реализации программный продукт, требующий от разработчиков высокого уровня квалификации. Поэтому самостоятельная разработка OPC-серверов – скорее удел организаций, специализирующихся на разработке такого рода продуктов и имеющих достаточный опыт в этом. Если же работы по созданию OPC-сервера – редкий эпизод в деятельности компании, то кажущаяся простота решения проблемы на деле оборачивается для неё дополнительными затратами и потерей репутации.
К сожалению, невозможно заполучить OPC-сервер с полностью открытыми исходными кодами. Полные спецификации с описанием интерфейсов доступны только членам организации OPC Foundation, а само членство стоит дорого (от нескольких тысяч долларов). Неудивительно поэтому стремительное насыщение рынка программных продуктов инструментальными пакетами, упрощающими процесс создания OPC-сервера. На рынке достаточно широко представлены комплекты разработчика, так называемые конструкторы OPC, с помощью которых, как из кубиков, можно собрать нужный вам сервер, не прибегая к изучению OPC-технологии. Если вы готовы выложить от нескольких тысяч до десятков тысяч евро за один из таких инструментов и намерены создать, по крайней мере, несколько OPC-серверов для различных устройств, то этот путь, вероятно, оптимальный. Понятно, что и в этом случае, если конечной целью является создание единственного OPC-сервера, затраты могут оказаться неоправданно высокими.
Имеется также возможность создания OPC-сервера с помощью программ-заготовок, к числу которых относятся, например, UniOPC Server фирмы FASTWEL или MasterOPC Server (разработчик ЗАО «ИнСАТ»).
В обоих случаях при сравнительно небольших затратах (около 500 у. е.) вы получаете продукт, реализующий функции OPC-сервера, совместимого со спецификацией OPC DA 2.0, к которому необходимо самостоятельно написать лишь драйвер конкретного протокола связи. Однако следует иметь в виду, что лицензионные соглашения на такого рода полуфабрикаты предусматривают создание только одного экземпляра конечного продукта. Так что, если требуется несколько экземпляров одного и того же OPC-сервера, общие расходы могут превысить стоимость конструктора, с помощью которого можно создавать неограниченное число OPC-серверов.
Все рассмотренные варианты имеют целью реализовать доступ к данным OPC стандартным способом, то есть добиться, чтобы для устройств всех типов (точнее, для всех разновидностей протоколов) имелись соответствующие OPC-серверы (рис. 1).
Между тем, у разработчиков АСУ ТП, сделавших выбор в пользу SCADA GENESIS32 компании ICONICS, имеется ещё один метод решения проблемы интеграции в систему нестандартных устройств, практически не требующий затрат.
Благодаря наличию в составе семейства продуктов GENESIS32 компонента DataWorX32, представляющего собой, по сути, универсальный OPC-сервер с открытым процедурным интерфейсом, имеется возможность подключения к системе внешних, независимо разработанных компонентов. Поставленная в своё время перед одним из авторов статьи задача создания такого внешнего компонента для связи с УСО опиралась на следующие предпосылки:
OPC-сервер для устройства, в том числе встроенный, содержит скан-программу, осуществляющую непрерывно повторяющийся опрос (поллинг) текущего состояния элементов информационного поля, – необходимо выполнить сравнение очередных значений этих элементов с их предыдущими значениями и передать потребителям информации только те данные, которые изменились на заранее регламентированную величину;
OPC-сервер DataWorX32 обеспечивает возможность свободного конфигурирования дерева тегов, каждый из которых может быть доступен для записи со стороны OPC-клиента.
Естественным решением, вытекающим из этих положений, было создание такого OPC-клиента, который, с одной стороны, должен выполнять функции, специфичные для интегрируемого устройства, то есть осуществлять считывание и запись данных в соответствии с протоколом (скан-программа), а с другой стороны, будучи клиентом DataWorX32, производить периодическое обновление массивов значений тегов сервера, который, в свою очередь, обеспечит публикацию этих тегов, открывая их для доступа со стороны остальных OPC-клиентов SCADA-системы (рис. 2).
Дополнительным требованием к созданию такого OPC-клиента являлось использование среды разработки, не поддерживающей OPC Custom-интерфейс.
Возможность применения таких инструментов для получения доступа к OPC-серверам с поддержкой спецификации OPC DA 2.0 предусмотрена разработчиками стандарта OPC с помощью так называемой «обёртки» (в виде библиотеки DLL), преобразующей OPC Custom-интерфейс в интерфейс OLE-автоматизации (последняя версия – OPC DA Auto Wrapper 2.05а; версия 2.02 доступна для бесплатного скачивания с Интернет-ресурсов Graybox без каких-либо ограничений на использование данного продукта). Использование «обёртки» позволило создать необходимый OPC-клиент средствами VB6. При этом от программиста требовался лишь опыт работ с OLE-автоматизацией, что существенно сократило сроки разработки проекта.
Архитектура OPC-клиента представлена на рис. 3.
Программа имеет модульную структуру и состоит из следующих основных узлов:
интерфейсный модуль;
модуль обработки команд;
очередь запросов;
таймер;
модуль визуализации;
модуль конфигурации;
модуль OPC.
Первые пять модулей реализованы в виде компонентов ActiveX Control, выполняемых в отдельных программных потоках. Таким образом, приложение в целом является многопоточным. Библиотека OPC-автоматизации («обёртка») импортирована в основной поток программы.
Модуль конфигурации представляет собой процедуру основного потока, считывающую конфигурационную информацию из внешнего файла при старте приложения. Основное содержание файла конфигурации – таблица соответствия тегов DataWorX32 и данных, которыми приложение обменивается с интегрируемым устройством.
Интерфейсный модуль осуществляет низкоуровневую проверку на корректность входного потока данных, после чего передаёт их в модуль обработки команд и, наоборот, получая данные от модуля обработки команд, выдаёт их в линию связи в формате, определяемом настройками интерфейса. Модуль обработки команд является контейнером интерфейсного модуля, разгружая тем самым основной поток от необходимости выступать в качестве посредника «диалога» между этими компонентами.
Модуль обработки команд выполняет контроль протокольного уровня входных данных и формирование выходных пакетов в соответствии со спецификацией протокола. Принятые данные с помощью события, генерируемого модулем, передаются в виде массива основному потоку приложения, где в процедуре обработки события осуществляется асинхронная запись в соответствующую OPC-группу. Принятые данные предварительно округляются до значений, определяемых точностными характеристиками интегрируемого устройства, благодаря чему исключаются лишние обновления значений тегов OPC-сервера и, следовательно, рассылка OPC-сервером незначащих изменений другим OPC-клиентам.
Завершив обработку ответа на запрос, модуль обработки команд считывает очередную команду из очереди запросов.
Очередь запросов представляет собой кольцевую структуру, состоящую в общем случае из регулярных (непрерывно повторяющихся) команд, с помощью которых выполняется сканирование текущих данных. После удачного выполнения каждой команды (приёма или передачи данных) указатель перемещается на следующую команду. Особенностью очереди является возможность вставки в неё нерегулярных команд в произвольную позицию, определяемую приоритетом команды, с последующим её удалением после успешного завершения. Нерегулярные команды формируются в результате взаимодействия с пользователем SCADA посредством его воздействия на теги специальной OPC-группы, на которые данное приложение подписано как обычный OPC-клиент.
Таймер служит для добавления в очередь запросов, повторяющихся с некоторой периодичностью (раз в час, раз в смену, раз в сутки). Естественно, такие запросы удаляются из очереди после их завершения так же, как и нерегулярные.
Модуль визуализации не является обязательным, но чрезвычайно полезен в процессе эксплуатации для визуальной диагностики состояния как самого OPC-клиента, так и интегрируемого устройства, а также для возможности изменения на лету параметров настройки устройства, если это позволяет протокол. Основной поток приложения не имеет средств интерактивного взаимодействия.
Модуль OPC, строго говоря, модулем не является, а представляет собой набор интерфейсных функций, предоставляемых библиотекой OPC-автоматизации («обёрткой»), размещённых в основном потоке программы.
OPC-клиент, созданный в соответствии с описанной структурой для интеграции контроллеров SupeRTU-1 производства ЗАО «СовТИГаз», показал устойчивую работу в течение нескольких лет на одном из технологических объектов ООО «Газпром трансгаз Саратов», не требуя каких-либо доработок. Более того, разработанный для использования совместно с GENESIS32 v6.1, он благополучно продолжает функционировать в составе SCADA 9-й версии, а благодаря новой функциональности – OPC-туннелингу – может быть размещён на любом узле сети. Скорость обновления данных, полученных таким способом, определяется в основном возможностями интегрируемого устройства и линии связи с ним.
К ограничению данного метода можно отнести проблему управления свойством «качество» OPC-тегов DataWorX32 со стороны OPC-клиента, так как в соответствии со спецификацией OPC DA 2.0 это свойство имеет статус read-only. Для преодоления этого ограничения потребовалось использование в паре с тегом, содержащим значение, дополнительного тега качества. Следует заметить, что одной из последних доступных спецификаций стандарта OPC DA является версия 3.0 (GENESIS32 v9.x её поддерживает), основным отличием которой от версии 2.0 является возможность записи в OPC-сервер не только значений параметров, но и признаков качества, однако авторы не располагают информацией о существовании «обёртки» для этой версии.
В заключение авторы выражают надежду, что описанная концепция окажется полезной разработчикам систем управления на базе SCADA GENESIS32, обеспечивая альтернативный метод интеграции устройств, не требующий лишних затрат и чрезмерных усилий. ●
E-mail: Yva23@mail.ru
Контроллер, программируемый с помощью условий
Возможно ли создать алгоритм для задач автоматизации технологического процесса, не используя язык программирования? Предлагается описание системы создания алгоритма работы ПЛК для устройств малой автоматизации без использования специальных языков программирования. 01.09.2024 СТА №3/2024 334 0 0Как биометрия и искусственный интеллект помогают быстро и безопасно обслужить пассажиров в аэропортах
В условиях современных аэропортов идентификация пассажиров является одной из самых важных функций быстрого и безопасного обслуживания. Передовая биометрия помогает в этом, надёжно контролируя все этапы и существенно повышая пропускную способность транспортных узлов. 28.07.2024 СТА №3/2024 511 0 0Граничные вычисления: революция в обработке данных
В последние годы мы наблюдаем стремительный рост объёмов данных, генерируемых устройствами Интернета вещей (IoT) и различными приложениями. Традиционные облачные вычисления, при которых данные передаются в централизованные дата-центры для обработки, становятся менее эффективными в таких условиях. Именно здесь на сцену выходят граничные вычисления (Edge Computing) – новая парадигма, призванная решить эти проблемы. 28.07.2024 СТА №3/2024 568 0 0Специальные решения по бесперебойному питанию от POWERCOM
В настоящее время в связи с тотальной цифровизацией актуальность обеспечения надёжным, бесперебойным питанием постоянно возрастает. В этой статье мы расскажем об одном из интересных решений по обеспечению бесперебойного питания от компании POWERCOM. 28.07.2024 СТА №3/2024 429 0 0