Прием данных по протоколу МЭК 61850-8-1
В данной статье описывается использование функций клиента МЭК 61850-8-1 MMS в составе SCADA-системы, а также в контроллерах с исполнительной системой ENLOGIC.
Постановка задачи: осуществить прием данных по протоколу МЭК 61850-8-1 от оборудования, поддерживающего данный протокол обмена. В качестве источника данных в настоящей статье используется прибор ЭНИП-2, с настройкой коммуникации в стандарте МЭК 61850-8-1 по умолчанию (заводская).
Внимание: для чтения данной статьи требуется понимание базовых принципов протокола МЭК 61850-8-1.
Для начала, для более глубоко понимания, проведем некоторые исследования, для чего воспользуемся триальной версией программы IEDScout. Также можно использовать бесплатную программу IEDExplorer – она также умеет подключаться к приборам по протоколу МЭК 61850-8-1, вычитывать дерево узлов и объектов, и также использовать готовый файл CID для эмуляции работы прибора.
Прочитаем дерево узлов и объектов МЭК 61850-8-1 из прибора ЭНИП-2 с помощью программы IEDScout, и сохраним его в файл:
На сайте производителя прибора ЭНИП-2 также можно скачать готовый CID-файл enip2.cid. Мы возьмем этот файл, чтобы средствами программы IEDScout запустить симулятор прибора ЭНИП-2 по протоколу МЭК 61850-8-1 – симулятор позволит нам более детально изучить формирование и передачу значений по этому протоколу.
Симуляция ЭНИП-2 в IEDScout:
Функции клиента МЭК 61850-8-1 реализуются в составе исполнительной системы ENLOGIC. На момент написания данной статьи они были предусмотрены в составе следующих реализаций:
· Исполнительная система для платформы Windows
· Исполнительная система для платформы Linux х86 (Ubuntu и т.п.)
· Исполнительная система для контроллера ЭНТЕК E2R2(G) (Linux ARM)
В статье мы рассмотрим использование клиента в исполнительной система для платформы Windows, для остальных вариантов процедура полностью аналогична.
Исполнительная система ENLOGIC для платформы Windows представляет собой виртуальный контроллер (SoftLogic-контроллер), располагается в каталоге Bin\EnLogicPLC установленной SCADA-системы, и представлена двумя версиями исполняемых файлов:
· EmulatorForPLClib.exe – визуальное приложение-эмулятор контроллера, удобное для целей тестирования и отладки проектов SCADA, не подходит для использования в промышленной эксплуатации.
· EnLogicSvcForPLClib.exe – не визуальное приложение, устанавливаемое как служба Windows, используется для промышленной эксплуатации SoftLogic-контроллера ENLOGIC, требует лицензирования.
Мы будем использовать визуальное приложение-эмулятор, запускаем его:
При первом запуске в эмуляторе нет загруженной конфигурации, лог загрузки короткий.
Последующие промежуточные шаги стандартны при формировании конфигурации ENLOGIC:
1. Создаем новый проект SCADA, или открываем существующий.
2. Запускаем модуль среду разработки ENLOGIC IDE – модуль Контроллеры.
3. Добавляем новый узел ENLOGIC – контроллер типа None-target, задаем у него IP-адрес 127.0.0.1 и порт связи 30292.
4. В контроллер в Каналы ввода-вывода добавляем протокол МЭК 61850-8-1 клиент из группы Универсальные.
5. В протокол МЭК 61850-8-1 клиент добавляем из группы Универсальные модуль УСО Ячейка КРУ.
6. В модуле Ячейка КРУ добавляем нужные нам каналы (теги), которые мы хотим получить от прибора ЭНИП-2.
7. Для модуля Ячейка КРУ задаем параметры связи с источником данных по протоколу МЭК 61850-8-1.
8. Для тегов модуля Ячейка КРУ формируем корректные MMS-адреса переменных.
9. Загружаем полученную конфигурацию в виртуальный контроллер.
Рассмотрим созданную конфигурацию.
Настройки контроллера:
Настройки протокола МЭК 61850-8-1 клиент:
Настройки связи модуля и дерево созданных тегов:
Рассмотрим настройки модуля более детально. Посмотрим на окно эмулятора нашего устройства:
Физическое устройство (IED) имеет имя ENIP2, а логическое устройство (LD) имеет имя BAYCTRL. Чтобы в MMS-адресах тегов не указывать для каждого тега имя логического узла BAYCTRL, мы в настройке IED Name нашего модуля вписываем полное название ENIP2BAYCTRL/ (вместе с завершающей косой чертой). Далее для каждого тега мы можем уже использовать относительный адрес внутри LD, например для параметра Ia это будет строка MMXU1.A.phsA.cVal.mag.f[MX]. Клиент МЭК 61850-8-1 в ENLOGIC сам сложит две эти строки, и получит полный MMS-адрес тега: ENIP2BAYCTRL/MMXU1.A.phsA.cVal.mag.f[MX].
Общий принцип: полный MMS-адрес тега складывается из поля IED Name модуля и поля Адрес тега каждого тега путем простой «склейки» строк.
Настройка адреса тега:
Этот параметр в окне сервера 61850-8-1:
Всплывающая подсказка показывает полный MMS-адрес данного параметра.
Замечание: для клиента МЭК 61850-8-1 в ENLOGIC принято указывать функциональное ограничение параметра в квадратных скобках в конце тега – она является частью полного MMS-адреса тега.
Клиент МЭК 61850-8-1 в ENLOGIC позволяет получать данные одновременно периодическим опросом, и подпиской на отчеты. Алгоритм работы драйвера протокола реализует автоматический поиск параметров в отчетах устройства, если отчеты определены в настройках клиента, и на них удается подписаться. Те параметры, которые не удается найти в отчетах – начинают автоматически опрашиваться с заданным периодом, период опроса задается настройкой модуля Частота опроса, в нашем примере мы поставили довольно большое значение 10 сек – специально для эксперимента.
Группа настроек модуля Report 1 и Report 2 задают клиенту МЭК 61850-8-1 в ENLOGIC настойки для подписки на отчеты.
Наш прибор ЭНИП-2 в свое конфигурации имеет два отчета.
Отчет brcbST01 с функцией буферизации значений для набора данных (DataSet) MainST, содержащий некоторое кол-во дискретных параметров из логического узла GGIO1:
Отчет urcbMX01 без буферизации значений для набора данных (DataSet) MainMX, содержащий некоторое кол-во аналоговых параметров из логического узла MMXU1 (узел трехфазных измерений):
В настройках клиента МЭК 61850-8-1 в ENLOGIC в группе Report 1 задаем настройки для подписки на отчет brcbST01:
· Идентификатор: LLN0$BR$brcbST01
· Набор данных: LLN0$MainST
В группе Report 2 задаем настройки для подписки на отчет urcbMX01:
· Идентификатор: LLN0$RP$urcbMX01
· Набор данных: LLN0$MainMX
По аналогии с MMS-адресами тегов – здесь в полях Идентификатор и Набор данных прописываем относительный адрес, а для получения полного адреса клиент МЭК 61850-8-1 сам добавит к нему в начало префикс, который мы прописали в настройке IED Name – строку ENIP2BAYCTRL/ (вместе с завершающей косой чертой).
Замечания по формированию дерева тегов в системе ENLOGIC:
1. Нет никакой зависимости между названиями тегов в дереве ENLOGIC и их расположению в этом дереве и MMS-адресом тега в источнике данных – сервере МЭК 61850-8-1. Представление устройства в виде тегов в дереве ENLOGIC, а значит далее и в SCADA, зависит только от нашего собственного инженерного видения. Мы (инженеры, а не разработчики SCADA) вполне можем сформировать дерево тегов так, что оно будет очень близко копировать структуру адресации в сервере МЭК 61850-8-1, но далеко не факт, что такое представление будет удобно для последующего использования в HMI SCADA.
2. В данной статье рассматривается настройка клиента МЭК 61850-8-1 с применением готовых шаблонов из файла iec61850-none-vendor.io: шаблон Ячейка КРУ содержит типовой набор сигналов ТС/ТУ/ТИ по автоматизации ячейки подстанции 6/10 к, шаблон Модуль ТС содержит универсальный набор из телесигналов, шаблон Точка измерений похож на шаблон Ячейка КРУ, но содержит только блок параметров измерений. При необходимости в процессе работы эти шаблоны можно легко расширять самостоятельно – добавлять необходимые параметры, или же сделать совсем новый шаблон для своих задач. Файл iec61850-none-vendor.io имеет структуру XML, внутри устроен очень просто, и его легко редактировать редактором типа Notepad++ (с подсветкой синтаксиса XML).
3. Кроме механизма шаблонов также можно конфигурировать клиент МЭК 61850-8-1 и формировать дерево тегов ENLOGIC используя таблицы EXCEL. Но данный вариант стоит рассматривать для тех случаев, когда источник данных – сервер МЭК 61850-8-1 имеет большое адресное пространство, и конфигурации отдельных серверов индивидуальны, и поэтому нет никакого смысла для одноразового использования делать для такого сервера шаблон в файле IO.
4. В будущей версии клиента МЭК 61850-8-1 в ENLOGIC будет добавлена возможность формирования переменных из CID-файла.
Кроме тегов из реального прибора клиент МЭК 61850-8-1 также имеет служебные теги:
Тег Связь для соблюдения единой идеологии работы объектов HMI SCADA находится в корне модуля, и показывает наличие связи с сервером МЭК 61850-8-1.
В группе DIAG_TAGS дополнительные информационные теги:
· CONNECTION_TIME_IN_SEC – длительность связи с сервером MMS
· RECEIVED_IO_COUNT – кол-во принятых значений
· SENDED_COMMANDS_COUNT – кол-во посланных команд управления
· ACTIVATED_REPORTS_COUNT – кол-во активированных отчетов
· PERIODICAL_READS_COUNT – кол-во значений, запрашиваемых опросом (не отчетами)
Значения для этих тегов клиент МЭК 61850-8-1 в ENLOGIC формирует самостоятельно.
Итак, конфигурация для контроллера ENLOGIC готова, загружаем ее в эмулятор контроллера, эмулятор автоматически перезагружается, и через несколько секунд в окне ENLOGIC видны данные от сервера МЭК 61850-8-1:
Теги в корневой группе модуля – измерения, берутся из сервера МЭК 61850-8-1 из логического узла MMXU1 – трехфазные измерения.
Теги в группе ТС берутся из разных логических узлов:
· ТС1-ТС8 это сигналы логического узла GGIO1 – Ind9-Ind16, в модуле ЭНИП-2 эти сигналы отображаются на 8 входов модуля
· У тега Выключатель MMS-адрес тега мы задали как CSWI1.Pos.stVal[ST] – это значит что сигнал положения выключателя (и идеологии ENLOGIC и SCADA) мы берем из логического узла CSWI1 - класс логического узла оперативное управление коммутационным аппаратом
Также в группе ТУ сигнал управления Вкл/Откл также берется из этого же узла CSWI1 – адрес тега CSWI1.Pos.Oper.ctlVal[CO].
В эмуляторе сервера 61850-8-1 в программе IEDScout можно менять значения переменных.
Неопределенное состояние коммутационного аппарата (DP=00):
Ошибочное состояние коммутационного аппарата (DP=11):
Также эмулятор IEDScout умеет имитировать работу функционального блока в части отработки команд телеуправления, изменяя состояние выходного сигнала CSWI1.Pos.stVal[ST], поэтому подавая команды в тег Вкл/Откл мы автоматически видим изменение состояния тега Выключатель.
Включение:
Отключение:
Лог формирования команд управления в эмуляторе контроллера ENLOGIC:
Отметим, что приход сигнала CSWI1.Pos.stVal[ST] происходит не сразу, а с задержкой несколько секунд. Это происходит по причине того, что этот сигнал в текущей конфигурации модели 61850 в ЭНИП-2 не находится в наборе данных, используемом для отсылки информации по изменению – сейчас там лежат только сигналы логического узла GGIO1. Поэтому сигнал CSWI1.Pos.stVal[ST] опрашивается периодическим опросом, который в нашей текущей конфигурации происходит с периодом 10 сек.
Ну и наконец изменим IP-адрес сервера 61850 в нашей конфигурации на адрес реального прибора ЭНИП-2, и загрузим конфигурацию в эмулятор контроллера:
Для прибора ЭНИП-2 также была немного скорректирована конфигурация в части списка объектов в наборах данных, поэтому теперь служебный тег PERIODICAL_READS_COUNT показывает значение 0, что означает, что все параметры успешно запрашиваются через механизм отчетов.