Bacnet 2.0. Новая версия самого популярного Bacnet OPC сервера в России

Bacnet 2.0. Новая версия самого популярного Bacnet OPC сервера в России

Протокол BACnet — это основной протокол систем управления жизнеобеспечения зданий, обеспечивающий сетевое взаимодействие между различными программируемыми контроллерами, шлюзами, локальными панелями, SCADA системами.

BACnet имеет широкие коммуникационные функции – функции поиска устройства, определения списка тегов и их параметров, возможность работы через различные физические уровни (Ethernet, Wi-Fi, RS-485, LonTalk) в режимах простого опроса или подписки. Серьезным преимуществом протокола является использование объектного подхода, т.е. опрашиваемый канал представляет собой объект с набором свойств, что позволяет легко получить его описание, единицы измерения, активность, достоверность измерения, что существенно упрощает обработку данных. Все это обеспечило широкое применение протокола BACnet в системах АСУЗ.

Чтобы обеспечить легкое подключение BACnet устройств к различным SCADA системам, наша компания разработала BACnet OPC сервер. За 4 года OPC сервер показал стабильную работу, и был успешно внедрен в нескольких сотнях проектов. Однако все чаще, перед разработчиками систем управления встают новые задачи и мы решили дополнить OPC сервер новыми функциями, а также полностью переработать утилиту импорта тегов. В статье будет сделан обзор новых функций.

Нововведения коснулись как драйвера опроса, так и утилиты импорта.

Помимо простых объектов (текущих аналоговых и дискретных значений) BACnet имеет перечень сложных, структурируемых объектов. В частности, в нем есть объект Shedule – объект предназначен для настройки расписаний в контроллерах (времени включения и выключения вентиляционных установок, параметров климат-контроля, систем безопасности и т.д.). Объект имеет два основных атрибута: Weekly Schedule – основное, недельное расписание и Exception Schedule – исключения из расписания (праздничные дни, дни инвентаризации и т.д.), оба эти атрибута теперь доступны в теге OPC на чтение и на запись:

06.08-1.png

Однако данные свойства имеют достаточно сложную структуру – необходимо передавать время начала каждого действия и значение передаваемого действия, и так для каждого дня недели, а у объекта исключений – еще и по диапазонам или отдельным дням. Для этого используется входная строка специального формата.

Чтобы просто и эффективно работать с таким типом объекта, мы сделали также соответствующий функционал и в MasterSCADA – добавили специальный ВФБ «BACnet расписание». Он находится в разделе Управление палитры ФБ:

06.08-2.png

После добавления ФБ в дерево объектов, на вкладке Настройки можно создать расписание. При этом добавляются входы и выходы, которые связываются с соответствующими переменными в ОРС сервере.

06.08-3.png

ВФБ добавляется на мнемосхему, и в режиме исполнения появляется возможность управления расписанием (как недельным, так и исключениями).

06.08-4.png

Новый функционал OPC сервера и SCADA системы уже был успешно внедрен на одном из объектов Министерства обороны.

Но, пожалуй, главное обновление в OPC сервере – это новая утилита импорта, она была переписана полностью.

Утилита импорта в старой версии имела ряд существенных недостатков. Во-первых, при запуске она производила поиск всех доступных устройств и начинала считывание с них всех тегов. При большом количестве устройств в сети, это могло занимать много времени. Во-вторых, на этапе выбора тегов для импорта не было возможности посмотреть значения свойств объекта – единиц измерения, текущего значения, комментария. Все это усложняло идентификацию параметра. В-третьих, утилита хорошо находила «чистые» Bacnet IP устройства, но если BACnet устройство представляло собой шлюз, за которым были другие BACnet устройства (например шлюз BACnet – LonWorks), то утилита не находила такие устройства или находила только одно из них. Мы тщательно проанализировали все проблемы, и в новой версии утилиты сделали все чтобы их устранить.

Теперь импорт тегов разделен на два отдельных этапа - сначала вызывается поиск устройств, а затем (когда устройство найдено и выбрано) можно запускать импорт тегов. Для запуска поиска устройств, на уровень устройства добавлена новая настройка:

06.08-5.png

При нажатии появляется окно.

06.08-6.png

Поиск устройств, как и в старой версии утилиты, поддерживает три режима поиска – автопоиск (всех устройств, во всех сетях), поиск по диапазону (устройства с определенным BACnet адресом) и поиск по IP. При этом автопоиск и поиск по IP имеют разные механизмы обращения к сетям, что позволяет эффективнее находить устройства – если устройство не нашлось автопоиском (например, широковещательный запрос не проходит по сети), то адресный запрос по IP может решить проблему.

Найденные устройства выводятся в панель устройств. Для удобства идентификации устройство имеет комментарий в виде IP и адреса. При щелчке на устройство происходит считывание дополнительных параметров – модель контроллера, комментарий, производитель контроллера, расположение, что также упрощает идентификацию контроллера.

06.08-7.png

Выбрав нужный контроллер, нужно нажать на кнопку Выбрать устройство. Утилита поиска закроется, и пропишет параметры устройства в ОРС:

06.08-8.png

Теперь, когда устройство определено, можно приступать к импорту тегов. Для этого нужно вызвать пункт контекстное меню устройства - Добавить Теги протокола (импорт). Запустится утилита импорта. Теперь она имеет совершенно иной интерфейс:
06.08-9.png

Главное нововведение – теперь теги представлены в виде древовидной таблицы. Данный способ отображения – наиболее информативный для сложных иерархических данных. С одной стороны, сохраняется удобство навигации по дереву, с другой – значения параметров сразу же видны в таблице.

Чтобы считать теги из устройства, нужно нажать на кнопку «Получить теги устройства». Утилита выполнит подключение к устройству (исходя из настроек, заданных в ОРС), и считает все поддерживаемые теги. Статус считывания выводится в специальную панель в нижней части окна.

06.08-10.png

Помимо считывания состава тегов, сразу же происходит и считывание поддерживаемых свойств. При этом свойство Description, не добавляется отдельным тегом (как было ранее), а присваивается всем свойствам объекта как комментарий, и потом будет также импортировано в ОРС – это позволяет быстро идентифицировать объект, как на этапе импорта, так и в OPC сервере и в SCADA системе. Кроме того, считываются все текущие значения свойств объектов, и выводится в таблицу отдельным столбцов, что также существенно упрощает идентификацию объекта.

Выделение тегов производится традиционно с использованием мыши – щелчок по элементу дерева, включает/снимает флаг, а если объект имеет вложенные переменные – включая и вложенные. Также в панели меню есть кнопки Отметить и Снять, которые позволяют включать/снимать флаги у всех выделенных тегов в таблице, что существенно ускоряет выбор нужных тегов.

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

06.08-11.png

Реализован в утилите и механизм фильтрации – как по BACnet объектам, так и по его свойствам. Для этого нужно нажать на кнопку Фильтр. Например, нужно оставить в дереве только объекты AnalogInput и свойства PresentValue – указываем данные параметры в таблице фильтра:
06.08-12.png

И жмем применить:

06.08-13.png

Дерево будет отфильтровано. При этом установленные флаги не сбрасываются – т.е. можно отметить нужные вам объекты включая все его свойства, а потом уже оставить только те свойства, которые нужны.

После считывания теги складываются группы, согласно названию объектов (OBJECTS_ANALOG_INPUT, OBJECTS_DISRETE_INPUT и т.д.), а каждый BACnet объект – согласно его имени. Аналогичная структура будет и при импорте в ОРС. В ряде случаев такая иерархия и названия могут не подходить для задачи. В этом случае можно поступить двумя способами.

Первый – импортировать теги, а далее средствами самого ОРС сервера, используя контекстное менюВырезать несколько, перенести теги по нужным группам, тем самым сделав нужную иерархию.

Второй – модифицировать теги используя Excel и импортировать уже готовую структуру. Для этого в утилите импорта в разделе Файл Excel находятся две кнопки – Сохранить и Открыть. Отметьте нужные вам теги в таблице, нажмите Сохранить, и укажите путь сохранения файла. Затем вы можете отредактировать этот файл используя весь функционал Excel – исправить имена объектов, изменить иерархию, исправить комментарии и т.д. Сохраните файл и затем в утилите импорта нажмите кнопку Открыть и выберите файл – будет загружена обновленная структура тегов. При этом возможность считываний текущих значений тегов в утилите не теряется.

После того как отмечены нужные объекты и свойства, нажмите на кнопку Импорт тегов – утилита импорта закроется, и теги будут добавлены в ОРС.

Импорт завершен, и сервер можно запускать режим исполнения:

06.08-14.png

Допускается вызвать утилиту импорта вновь – можно добавлять новые теги, а также менять свойства уже добавленных (если не менялось имя) - например, скорректировать комментарий тега, или исправить номер объекта.

Новая утилита импорта, а также функционал управления расписанием доступен в текущей Demo версии OPC сервера. Стоимость и лицензионная политика ОРС сервера не изменилась.

Подробнее про BACnet OPC сервер можно узнать на станице продукта:

/products/?category=1630

Скачать Multi-Protocol MasterOPC сервер с обновленным драйвером протокола BACnet можно со страницы:

/products/?category=1666