Немного о BACnet

В связи с повышенным интересом к теме умного дома хочу немного осветить тему BACnet -одного из свободных протоколов обмена. И поделиться проектом небольшого модуля на BACnet MS/TP.
UNDER CONSTRUCTION
BACnet это коммуникационный протокол, разработанный и принятый в качестве стандарта ASHRAE (В России его тоже подводят к стандарту), поддерживается всеми мажорными производителями BMS/HVAC оборудования такими как: JCI, Siemens, Honeywell, Trane, Carrier и т.п. www.bacnet.org/Gallery/index.html и он имеет все перспективы в ближайшем будущем стать основным протоколом для сферы автоматизации зданий и умных домов. В отличие от остальных широко распространенных свободных протоколов BACnet достаточно сложен и прожорлив до кода, по этой причине самостоятельное написание кода для его реализации достаточно сложно и еще BACnet это книга (которая денег стоит но можно найти в сети) и отсутствует стандартная свободная реализация протокола (есть платные стэки и чипы у Cimetrics, Polarsoft и т.п.). Но! Есть на свете Steve Karg — со своим свободным стэком BACnet и его портами на многие платформы sourceforge.net/projects/bacnet/ и этот момент добавляет оптимизма. Да еще данный протокол поддерживает несколько физических типов среды передачи данных, самые распространенные это BACnet IP и BACnet MS/TP (Master Slave Token Passing это сеть на RS-485) в качестве полевого уровня.
Когда пару лет назад я нашел этот стэк я был вне себя от счастья… но недолго, что-то ничего не собиралось… потом через год еще потыкал, но безуспешно. Данная итерация была удачной да и Steve сделал порт на STM32 правда на IAR и достаточно своеобразный, что создало определенные трудности при переносе в CoIDE т.к. очень много файлов в сорсах и не все они нужны.
Некоторое время тому назад я опубликовал проектец I/O модуля c Modbus на STM32F100C8T6 на его базе все и будет построено we.easyelectronics.ru/STM32/stm32-pervaya-osmyslennaya-konstrukciya-i-o-modul-na-modbus-modbus-chast-2.html
Поговорим немного о BACnet MS/TP- это мультимастерный протокол, в отличие от протоколов обмена типа Modbus RTU — все контроллеры на сети BACnet MS/TP в диапазоне MAC адресов 0-127 равноправны (кроме BACnet slave 128- 255 — но не о них речь) и могут напрямую P2P обмениваться сообщениями друг с другом (при наличии соответствующих сервисов). Как это происходит на BACnet MS/TP, ведь при мультимастерности неизбежны коллизии? BACnet MS/TP это решает передачей токена(метки) и только контроллер который ее имеет может в данный момент разговаривать с другими устройствами определенное количество раз, затем метка передается следующему. Плюс наличие механизма Auto Discovery который позволяет узнать какие сетевые точки храняться в устройстве (они автоматически показываются) и какие сервисы поддерживаются. Здесь подробнее написано ru.wikipedia.org/wiki/BACnet. При наличии кучи плюсов -как совместимости со многими устройствами и вендорами, удобства в работе с сетью, тем не менее BACnet MS/TP имеет два очевидных минуса. Первый я уже освещал — сложность реализации. Второй — относительно небольшая скорость при работе в стиле polling без механизма cov, что происходит из стиля работы — т.к. тратится время на передачу токена и каждая сетевая точка имеет много свойств которые периодически считываются.
Что делает мой проект? -это модуль ввода вывода с интерфейсом BACnet MS/TP на 4DI/4DO +хранение мак адреса и Device Instance в eeprom. AV-0 это MAC адрес, AV-1 -модификатор адреса устройства, он умнжается на 100000 и складывается с MAC см. картинку.

Так выглядит устройство в BACnet программе для настройки контроллеров (сразу скажу дать не могу), но есть много свободных или условно бесплатных программ для работы с BACnet — например BACnet Browser и на вскидку есть OPC сервер от SCADA Engine который работает в демо режиме.
Что сделал я спросите вы? Перенес порт на CoIDE попутно разобравшись в куче файлов которые нужны и не нужны данному проекту+ привязал реальные входы и выходы и если посмотрите оригинальный порт на STM32 то там всего 2BO и автомак(который струдом был прибит) + у меня на нем плохо работал автодисковери и при оптимизации -O2 ничего не работало вообще, сейчас нормально. Короче говоря это фактически законченное устройство, а это мне кажется немало.
Написал я все это т.к. ничего подобного не нашел в инете и решил заполнить пробел+ так сказать это мой посильный вклад в развитие BACnet.
Проект в CoIDE и плата приложены + у меня есть еще порт на Atmega128. Пока все.
зы Далеко не все программы работают с MS/TP напрямую — им нужен BACnet IP router
  • +1
  • 23 сентября 2011, 19:51
  • GYUR22
  • 1
Файлы в топике: bac_io_stm32_all.zip

Комментарии (20)

RSS свернуть / развернуть
А чем он лучше того же модбаса или CAN? Нафига было изобретать велосипеды?
0
Modbus — тупой мастер-слейв даже без объектной ориентации -в регистрах может лежать что угодно -как минимум BACnet — сам все покажет и расскажет + P2P, IP, сервисы итд итп
0
В ссылке на педивикию спряталась точка.
Есть расширение modbus+, которое разрешает «мультимастерность».
Мне кажется, что для домашнего применения/изготовления BACnet все-таки сложновата.
0
тока плюс проприетарный и вроде он на евернете?
Для дома бакнет не сильно нужен даже скорее на сегодняшний день не нужен т.к. сильно избыточен и сложен
… но все течет и меняется
+люди интересовались для умного дома
0
BACnet программе для настройки контроллеров (сразу скажу дать не могу)
А как называется-то хоть?
0
  • avatar
  • Vga
  • 23 сентября 2011, 21:50
Commpro BACnet
0
негусто
0
я не собирался делать обзор — просто выложил то чем хотел поделиться с минимальными пояснениями
0
я не собирался делать обзор — просто выложил то чем хотел поделиться с минимальными пояснениями
но UNDER CONSTRUCTION я не убрал может быть кое что допишу
0
А этот протокол можно через сеть 220 вольт пустить как X10?
0
напрямую нет но и не нужно тк есть BACnet IP — его можно куда угодно
0
Так нужен только физический уровень как я понял. А есть какие нибудь готовые варианты? С X10 то все вроде понятно.
0
если есть BACnet IP устройство -то сетевым адаптером в 220 вольт засунуть небольшая проблема
0
Просто давно ищу какое-нить готовое решение для передачи сигнала по электросети. Кроме X10 ничего не нашел, но его хаят за малую скорость. Соответственно данные там особо не погоняешь. Но мне известно что по электросети даже интернет гоняют вики.
0
я про это и говорю PLC адаптер для сети
зы BACnet MS/TP RS-485 слабо подходит для быстрой передачи больших потоков данных
0
BACnet это протокол который поддерживается всеми мажорными производителями оборудования JCI, Siemens, Honewell...

Honeywell
0
  • avatar
  • _YS_
  • 23 сентября 2011, 23:18
Спасибо, исправил
0
Да не за что. *beer*
0
Приходилось использовать BACnet на практике ~5 лет назад, как раз в проекте типа «Умный дом». Система кондиционирования Daikin: мультисплит, потолочные блоки, настенные пульты и огромные инверторные компрессоры на улице.
Все это соединялось проприэтарной двухпроводной сетью Daikin, в которую включался Daikin BACnet Gate с интерфейсом BACnet IP.
Gate представлял из себя одноплатный комп под управление VxWorks.
Вся система кондиционеров (~20 помещений) представлялась как одно BACnet устройство с огромным числом нодов: на каждый настенный пульт выделялся диапазон нодов.
Нужно включить конкретный кондиционер — посылаешь в BACnet «запись» в соответствующий бинарный нод. Так же ставится целевая и считывается текущая температура в помещение.
Всякие продвинутые фичи BACnet вроде событий и биндинга Daikin не реализовал, так что в этом плане мало чем отличается от Modbus.

Для отладки системы применялся www.chipkin.com/cas-bacnet-explorer
разумеется с кряком ;)

Стек BACnet под ПК был реализован с нуля за 2 недели, опираясь только на текст стандарта. То что выложено на sf.net оказалось узко заточено для применения на BACnet давайсе, и совершенно не вписывалось в софт для мониторинга и управления зданием с ПК.

Основная концепция BACnet — это возможность сопряжения разных систем инженером, не владеющим знаниями по протоколам обмена и программированием. Из-за этого BACnet очень перегружен мета-информацией. Зато воткнув в BACnet утилиту типа BACnet Explorer можно разобраться в устройстве смонтированной системы до последнего датчика не имея никакой документации. BACnet — это своего рода PnP для инженерных систем зданий.
0
Если в свободном доступе будут готовые (или полуфабрикаты полуготовые) решения, скажем стек для МК + для ПК что-нибудь + примеры применения с простыми (как на этом сайте принято) пояснениями — то думаю оно пойдет в народ. Да, и главное — это открытый код. А то народу нечего использовать (имхо): CAN слишком дорог, MODBUS кроме того что не поддерживает мультимастерность, тоже не народный протокол. Народными протоколами я считаю протоколы которые используются радиолюбителями, а не инсталяторами и разработчиками промышленного оборудования. Нужен конструктор: эту программку чуть-чуть подправим и зальем в МК, эту чуть модифицируем и поставим на ПК. Всё. Оно уже что-то делает, что-то передает… Заработало!
Искал простой (в домашнем применении) и надежный протокол для реализации сети домашней автоматики. Так сказать конструктор из кубиков. Так для себя ничего и не приметил. Думаю остановиться на Ethernet и TCP-IP. Благо сейчас много доступной информации, в том числе и на этом ресурсе.В данном случае подойдет, хотя это и не то что хотел.
0
  • avatar
  • Miro
  • 24 августа 2013, 19:14
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.