Библиотека OwenVendorProtocols для CODESYS V3.5 - АиП

Библиотека OwenVendorProtocols для CODESYS V3.5

Контроллеры ОВЕН ПЛК210/ПЛК200 и СПК1хх широко применяются в системах диспетчеризации – в том числе для опроса технологического оборудования по нестандартным протоколам обмена. Библиотека OwenVendorProtocols для среды CODESYS V3.5 предоставляет разработчику готовые функциональные блоки для различных устройств, позволяя снизить затраты времени на создание проекта.

Большинство устройств, применяемых в системах промышленной автоматизации, поддерживает один или несколько стандартных протоколов обмена – таких как Modbus, Profinet, OPC UA и т.д.

Совсем иначе обстоит дело с измерительным оборудованием (электро- и теплосчетчиками, газоанализаторами, расходомерами и т.д.) – значительное число производителей до сих пор выпускает приборы, которые поддерживают только собственные протоколы обмена. Настройка обмена с такими устройствами, как правило, является нетривиальной задачей – программист должен разобраться, как формировать запросы нужного формата, и как получить ответы на них. Часто это осложняется отсутствием сопроводительной документации от производителя.

Чтобы упростить пользователям решение этой задачи, компания ОВЕН разработала библиотеку OwenVendorProtocols для среды CODESYS V3.5, которая включает в себя блоки опроса наиболее востребованных устройств.

Поддерживаемые устройства

На момент публикации статьи в библиотеке поддерживаются следующие приборы:

  • электросчетчики «Меркурий» с двумя протоколами обмена – для однофазных «Mеркурий 2xx» и трехфазных счетчиков «Меркурий 23x»;
  • электросчетчики «Энергомера» с протоколами CE и IEC 61107;
  • электросчетчики СЭТ-4ТМ и другие счетчики с СЭТ-подобным протоколом (ПСЧ и т.д.);
  • теплосчетчики ВКТ-5 и ВКТ-7;
  • теплосчетчики ТЭМ-104 и ТЭМ-106;
  • счетчики импульсов «Пульсар» и другие устройства с протоколом «Пульсар-М».

 Обзор библиотеки

Все функциональные блоки библиотеки имеют унифицированный интерфейс, что упрощает их использование. В таблице перечислены типы входов и выходов и их описание.

Таблица. Типы входов и выходов функциональных блоков библиотеки

Название Тип Описание
Входы
xExecute BOOL По переднему фронту выполняется однократная отправка запроса
tTimeOut TIME Таймаут ожидания ответа на запрос
usiRetry USINT Число переповторов в случае отсутствия ответа
hCom OVP.CAA.HANDLE Дескриптор COM-порта, полученный от ФБ COM_CONTROL (блок открытия COM-порта)
eParam Перечисление (индивидуальное для каждого устройства) Отправляемая команда
pRequestData OVP.CAA.PVOID Указатель на буфер данных запроса
szRequestData OPV.CAA.SIZE Размер буфера запроса в байтах
pResponseData OVP.CAA.PVOID Указатель на буфер ответа
szResponseData OPV.CAA.SIZE Размер буфера ответа в байтах
DeviceAddr Зависит от устройства Адрес устройства
Выходы
xDone BOOL TRUE – получен корректный ответ
xBusy BOOL TRUE – блок находится в работе
xError BOOL TRUE – флаг ошибки
eError OVP.ERROR Код ошибки

Перечисление eParam описывает команду, которая будет отправлена устройству – например, чтение измеренных значений, запись системного времени и т.д. Функциональный блок для опроса электросчетчиков «Меркурий 23x» показан на рис. 1, и соответствующее ему перечисление MERCURY23x_PARAMS – на рис. 2. В описании перечисления для каждой команды указаны типы данных, которые должны быть размещены под указателями pRequestData (буфер запроса) и pResponseData (буфер ответа). В буфере запроса указываются дополнительные аргументы команды (например, для команды записи системного времени таким аргументом является значение системного времени), в буфере ответа размещаются полученные от прибора данные.  Для некоторых команд один или даже оба этих входа не используются. Например, команда перезапуска счетчика не требует дополнительных аргументов, а ответ на нее не содержит никаких данных.

Функциональный блок для опроса электросчетчиков «Меркурий 23x»
Рисунок 1 - Функциональный блок для опроса электросчетчиков «Меркурий 23x»

Так как протоколы счетчиков могут включать в себя десятки или даже сотни команд, то поддержать их в полном объеме является чрезвычайно сложной задачей. Поэтому в библиотеке поддерживаются только основные, наиболее часто используемые команды. Но при необходимости пользователь может отправить любую команду – для этого в перечислении команд всегда есть специальное значение USER_DEFINED (пользовательская команда). Аргументы этой команды размещаются в буфере по указателю pRequestData и/или задаются с помощью специальных входов блока. Разбор ответа на такую команду пользователь должен реализовать самостоятельно, ориентируясь на спецификацию протокола.

 Описание перечисления для каждой команды MERCURY23x_PARAMS и типы данных
Рисунок 2 - Описание перечисления для каждой команды MERCURY23x_PARAMS и типы данных

Помимо унифицированных входов/выходов, у каждого блока есть и специфические, требуемые для реализации конкретного протокола. Например, для блока опроса электросчетчиков «Меркурий 23x» (рис. 1) такими входами являются пароль счетчика, уровень доступа, номер массива энергий, месяц и тариф (используются в запросе значения накопленной энергии) и т.д.

Опрос неподдерживаемых устройств

В библиотеке поддерживаются 9 типов счетчиков, наиболее широко используемых клиентами ОВЕН, но, разумеется, на рынке автоматизации представлено значительно больше устройств с нестандартными протоколами, и создать блок опроса для каждого такого прибора попросту невозможно. Но и в этом случае разработчику не придется «начинать с нуля» – он может воспользоваться библиотекой OwenCommunication, которая включает в себя блоки для отправки произвольных данных через COM-порт или TCP/UDP-сокет. Таким образом, «коммуникационная» часть задачи будет сразу решена – программисту останется только написать код для формирования запросов и разбора ответов.

Документация и примеры

Документация и примеры использования библиотеки доступны на официальном сайте ОВЕН в разделе CODESYS V3.5. Задать вопросы по работе с библиотекой можно на форуме ОВЕН в разделе ПЛК (среда программирования CODESYS V3.5) в теме Библиотека OwenVendorProtocols.