Крис Гатлер (Chris Gurtler) SCADA Engine
BACnet web-сервисы: знать и уметь
Скорее всего, вы уже слышали о новом дополнении к стандарту BACnet web-сервисы, но подозреваю, что большинство все-таки не догадываются о том, что такое web-сервисы и для чего они предназначены.
Если же кому-то интересно больше узнать об их использовании в BACnet, эта статья для вас.
С помощью web-сервисов легко интегрировать данные в реальном режиме времени в практически любое приложение.
Итак, представим, что имеется BACnet-система и заказчик хочет получать определенную информацию на выходе из системы в реальном режиме времени. Например… температуру воздуха в главном холле здания, отображаемую на сайте локальной сети.
Существует много решений этой задачи, которые могут быть предложены производителями различного оборудования, и заказчику будет выставлен немалый счет за ее выполнение.
И некоторые из этих решений будут наверняка неплохими, но все-таки хотелось бы иметь общий, стандартный подход для решения такой задачи.
И такое решение уже есть.
И оно очень простое благодаря BACnet web-сервисам.
Начнем с приложения .Net, а в последующих статьях расскажем, как это сделать с помощью web-браузера, используя HTML и Java-script.
Установка web-сервисов
Первое, что необходимо сделать — установить web-сервисы. Если, конечно, их у вас еще нет. Скачайте демонстрационную версию web-сервиса от компании SCADA Engine
http://scadaengine/downloads.html
Следуйте инструкциям по ее установке, и увидите отображение web-сервиса, как показано на рис. 1. Если на компьютере уже установлен web-сервис, данные инструкции подходят для любого BACnet web-сервиса от любого разработчика.
Рис. 1
Прописывание путей (paths) web-сервиса
BACnet web-сервис использует применение путей для ссылки на значения. Имена путей немного похожи на имена файлов в компьютере. Разные компьютеры имеют разные файлы и разные имена файлов. То же самое справедливо и для BACnet web-сервиса — имена путей зависят от конкретной системы.
В web-сервисе от SCADA Engine путь строится от BACnet-адреса:
/[Network]/[Device]/[ObjectType]/[Instance]
Таким образом, путь к AV 0 (см. рис. 1) будет /2/11/2/0 и значение его будет равно 72. Чтобы сделать имя более удобное для прохождения пути, можно создать «ссылочный» путь (Reference path). Но давайте оставим этот вариант для следующей публикации.
Чтение данных
Для прочтения значений существует сервис, получивший название getValue, использующий путь как вход и возвращающий значение по этому пути. Если хотите узнать значение переменной AV 0, это будет выглядеть так: getValue(«», «/2/11/2/0»)
Создание приложения Visual Basic
Теперь у вас есть общее представление о BACnet web-сервисе и вы уже установили web-сервис на свой компьютер. Теперь начнем создавать собственное приложение. Будем считать, что аналоговое значение Analog Value 1 — это температура воздуха в главном холле здания, т.е. именно та информация, которую ваш клиент просит отображать на его web-сайте. Мы видим, что значение параметра равно 72 и его путь /2/11/2/0.
Рис. 2
Открывайте программу Visual Studio 2005, создайте новый проект (new Windows Application Project), который назовем bacnet. Далее жмем «OK».
Добавление web-ссылки (reference)
Теперь в BACnet-приложении надо добавить web-ссылку. Это очень похоже на добавление ссылки в COM/ActiveX объектах. Но после того как мы добавим ее, то получим доступ к XML web-сервису в BACnet web-сервисе.
Откройте Solution Explorer, кликните правой кнопкой мыши на References и далее Add Web Reference. Можно также выбрать меню Project и нажать Add Web Reference.
В окне добавления ссылки (Add Web Reference) в строке адреса печатаете:
C:Program FilesSCADA EngineBACnetWS Web Servicebacnet.wsdl.
Учтите, данная ссылка разделяет заглавные и прописные буквы, поэтому внести адрес необходимо именно так, как показано здесь.
Рис. 3
После того как введен URL и нажата клавиша Enter, BACnet web-сервис загружен и ваш экран будет выглядеть как на рис. 3, а кнопка Add Reference будет активизирована.
Нажмите ее, чтобы добавить web-ссылку в проект.
В окне Solution Explorer кликните Web Reference, чтобы увидеть ссылку на BACnetWS (web-сервис), который добавили.
Рис. 4
Добавьте Textbox в форму и назовите ее TextBox1.
Вставьте следующий код в раздел Code View формы.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
Dim a As BACnetWS.bacnet = New BACnetWS.bacnet()
TextBox1.Text = a.getValue(«», «/2/11/2/0»)
End Sub
End Class
Запуск приложения
Подготовительная работа с кодами нашего приложения завершена.
Теперь запустим приложение и проверим, возвращается ли значение таким же, каким оно было в BACnet-системе. Вы должны увидеть форму с текстовым окном (рис. 5).
Рис. 5
Мы предположили, что значение Analog Value 1 представляет температуру в главном холле здания, и именно ее заказчик хочет видеть отображаемой на своем сайте.
В окне формы мы можем наблюдать, что данное значение равно 72.
Надеюсь, теперь вы понимаете, насколько несложно внедрять BACnet web-сервисы в ваши приложения.
В следующей статье я предполагаю показать, как данные в реальном режиме времени могут быть отображены на web-сайте.