BACnet имеет широкие коммуникационные функции – функции поиска устройства, определения списка тегов и их параметров, возможность работы через различные физические уровни (Ethernet, Wi-Fi, RS-485, LonTalk) в режимах простого опроса или подписки. Серьезным преимуществом протокола является использование объектного подхода, т.е. опрашиваемый канал представляет собой объект с набором свойств, что позволяет легко получить его описание, единицы измерения, активность, достоверность измерения, что существенно упрощает обработку данных. Все это обеспечило широкое применение протокола BACnet в системах АСУЗ.
Чтобы обеспечить легкое подключение BACnet устройств к различным SCADA системам, наша компания разработала BACnet OPC сервер. За 4 года OPC сервер показал стабильную работу, и был успешно внедрен в нескольких сотнях проектов. Однако все чаще, перед разработчиками систем управления встают новые задачи и мы решили дополнить OPC сервер новыми функциями, а также полностью переработать утилиту импорта тегов. В статье будет сделан обзор новых функций.[spoiler]
Нововведения коснулись как драйвера опроса, так и утилиты импорта.
Помимо простых объектов (текущих аналоговых и дискретных значений) BACnet имеет перечень сложных, структурируемых объектов. В частности, в нем есть объект Shedule – объект предназначен для настройки расписаний в контроллерах (времени включения и выключения вентиляционных установок, параметров климат-контроля, систем безопасности и т.д.). Объект имеет два основных атрибута: Weekly Schedule – основное, недельное расписание и Exception Schedule – исключения из расписания (праздничные дни, дни инвентаризации и т.д.), оба эти атрибута теперь доступны в теге OPC на чтение и на запись:
Однако данные свойства имеют достаточно сложную структуру – необходимо передавать время начала каждого действия и значение передаваемого действия, и так для каждого дня недели, а у объекта исключений – еще и по диапазонам или отдельным дням. Для этого используется входная строка специального формата.
Чтобы просто и эффективно работать с таким типом объекта, мы сделали также соответствующий функционал и в MasterSCADA – добавили специальный ВФБ «BACnet расписание». Он находится в разделе Управление палитры ФБ:
После добавления ФБ в дерево объектов, на вкладке Настройки можно создать расписание. При этом добавляются входы и выходы, которые связываются с соответствующими переменными в ОРС сервере.
ВФБ добавляется на мнемосхему, и в режиме исполнения появляется возможность управления расписанием (как недельным, так и исключениями).
Новый функционал OPC сервера и SCADA системы уже был успешно внедрен на одном из объектов Министерства обороны.
Но, пожалуй, главное обновление в OPC сервере – это новая утилита импорта, она была переписана полностью.
Утилита импорта в старой версии имела ряд существенных недостатков. Во-первых, при запуске она производила поиск всех доступных устройств и начинала считывание с них всех тегов. При большом количестве устройств в сети, это могло занимать много времени. Во-вторых, на этапе выбора тегов для импорта не было возможности посмотреть значения свойств объекта – единиц измерения, текущего значения, комментария. Все это усложняло идентификацию параметра. В-третьих, утилита хорошо находила «чистые» Bacnet IP устройства, но если BACnet устройство представляло собой шлюз, за которым были другие BACnet устройства (например шлюз BACnet – LonWorks), то утилита не находила такие устройства или находила только одно из них. Мы тщательно проанализировали все проблемы, и в новой версии утилиты сделали все чтобы их устранить.
Теперь импорт тегов разделен на два отдельных этапа - сначала вызывается поиск устройств, а затем (когда устройство найдено и выбрано) можно запускать импорт тегов. Для запуска поиска устройств, на уровень устройства добавлена новая настройка:
При нажатии появляется окно.
Поиск устройств, как и в старой версии утилиты, поддерживает три режима поиска – автопоиск (всех устройств, во всех сетях), поиск по диапазону (устройства с определенным BACnet адресом) и поиск по IP. При этом автопоиск и поиск по IP имеют разные механизмы обращения к сетям, что позволяет эффективнее находить устройства – если устройство не нашлось автопоиском (например, широковещательный запрос не проходит по сети), то адресный запрос по IP может решить проблему.
Найденные устройства выводятся в панель устройств. Для удобства идентификации устройство имеет комментарий в виде IP и адреса. При щелчке на устройство происходит считывание дополнительных параметров – модель контроллера, комментарий, производитель контроллера, расположение, что также упрощает идентификацию контроллера.
Выбрав нужный контроллер, нужно нажать на кнопку Выбрать устройство. Утилита поиска закроется, и пропишет параметры устройства в ОРС:
Теперь, когда устройство определено, можно приступать к импорту тегов. Для этого нужно вызвать пункт контекстное меню устройства - Добавить – Теги протокола (импорт). Запустится утилита импорта. Теперь она имеет совершенно иной интерфейс:
Главное нововведение – теперь теги представлены в виде древовидной таблицы. Данный способ отображения – наиболее информативный для сложных иерархических данных. С одной стороны, сохраняется удобство навигации по дереву, с другой – значения параметров сразу же видны в таблице.
Чтобы считать теги из устройства, нужно нажать на кнопку «Получить теги устройства». Утилита выполнит подключение к устройству (исходя из настроек, заданных в ОРС), и считает все поддерживаемые теги. Статус считывания выводится в специальную панель в нижней части окна.
Помимо считывания состава тегов, сразу же происходит и считывание поддерживаемых свойств. При этом свойство Description, не добавляется отдельным тегом (как было ранее), а присваивается всем свойствам объекта как комментарий, и потом будет также импортировано в ОРС – это позволяет быстро идентифицировать объект, как на этапе импорта, так и в OPC сервере и в SCADA системе. Кроме того, считываются все текущие значения свойств объектов, и выводится в таблицу отдельным столбцов, что также существенно упрощает идентификацию объекта.
Выделение тегов производится традиционно с использованием мыши – щелчок по элементу дерева, включает/снимает флаг, а если объект имеет вложенные переменные – включая и вложенные. Также в панели меню есть кнопки Отметить и Снять, которые позволяют включать/снимать флаги у всех выделенных тегов в таблице, что существенно ускоряет выбор нужных тегов.
У отмеченных тегов можно повторно опросить текущие значения свойств – для этого предназначена кнопка Считать выбранные теги. Например, возникли сомнения в принадлежности того или иного объекта у нужного параметра (не всегда производитель делает понятные комментарии), можно выполнить несколько чтений данного параметра и сравнить с реальными показаниями на приборе и идентифицировать параметр.
Реализован в утилите и механизм фильтрации – как по BACnet объектам, так и по его свойствам. Для этого нужно нажать на кнопку Фильтр. Например, нужно оставить в дереве только объекты AnalogInput и свойства PresentValue – указываем данные параметры в таблице фильтра:
И жмем применить:
Дерево будет отфильтровано. При этом установленные флаги не сбрасываются – т.е. можно отметить нужные вам объекты включая все его свойства, а потом уже оставить только те свойства, которые нужны.
После считывания теги складываются группы, согласно названию объектов (OBJECTS_ANALOG_INPUT, OBJECTS_DISRETE_INPUT и т.д.), а каждый BACnet объект – согласно его имени. Аналогичная структура будет и при импорте в ОРС. В ряде случаев такая иерархия и названия могут не подходить для задачи. В этом случае можно поступить двумя способами.
Первый – импортировать теги, а далее средствами самого ОРС сервера, используя контекстное меню – Вырезать несколько, перенести теги по нужным группам, тем самым сделав нужную иерархию.
Второй – модифицировать теги используя Excel и импортировать уже готовую структуру. Для этого в утилите импорта в разделе Файл Excel находятся две кнопки – Сохранить и Открыть. Отметьте нужные вам теги в таблице, нажмите Сохранить, и укажите путь сохранения файла. Затем вы можете отредактировать этот файл используя весь функционал Excel – исправить имена объектов, изменить иерархию, исправить комментарии и т.д. Сохраните файл и затем в утилите импорта нажмите кнопку Открыть и выберите файл – будет загружена обновленная структура тегов. При этом возможность считываний текущих значений тегов в утилите не теряется.
После того как отмечены нужные объекты и свойства, нажмите на кнопку Импорт тегов – утилита импорта закроется, и теги будут добавлены в ОРС.
Импорт завершен, и сервер можно запускать режим исполнения:
Допускается вызвать утилиту импорта вновь – можно добавлять новые теги, а также менять свойства уже добавленных (если не менялось имя) - например, скорректировать комментарий тега, или исправить номер объекта.
Новая утилита импорта, а также функционал управления расписанием доступен в текущей Demo версии OPC сервера. Стоимость и лицензионная политика ОРС сервера не изменилась.
Подробнее про BACnet OPC сервер можно узнать на станице продукта:
Скачать Multi-Protocol MasterOPC сервер с обновленным драйвером протокола BACnet можно со страницы: