HBus
Добавлено: Вс авг 13, 2017 2:04 pm
HBus - сокращение от Home Bus. Я разрабатываю этот интерфейс уже в течении нескольких лет. Сейчас очередная итерация более-менее приблизилась к уровню, пригодному для повторения, поэтому я начинаю здесь его неспешно описывать.
HBus задуман как открытый интерфейс, сопоставимый по возможностям с EIB/KNX и C-Bus. Это проводной интерфейс, который по одному кабелю передает данные и питание для маломощных устройств. Скорость обмена невысокая, 25 кбит/сек (для сравнения: C-Bus - 5 кбит/сек, KNX - 9.6 кбит/сек). Низкая скорость выбрана сознательно для того, чтобы обеспечить работоспособность в сети с произвольной топологией прокладки кабеля. То есть, кабель можно класть как угодно, и "змейкой", и "звездой", и вообще как бог на душу положит. Терминатор шины один, он должен находиться примерно где-то в середине инсталляции.
Несколько большая, чем в KNX и C-Bus скорость обмена накладывает бОльшие ограничения на суммарную длину кабеля: если C-Bus и KNX позволяют укладывать до 1 км кабеля, то для HBus придется ограничить длину до 300 м. Для стадионов и заводских цехов это будет существенным ограничением, однако для обычных домовладений, я думаю, проблем не возникнет.
Кабель - стандартный Cat 5 или Cat 6. Одна витая пара используется для данных, одна - общий провод, одна - питание 12В, одна пара запасная. Суммарный ток питания в кабеле ограничен на уровне 1 А, чтобы обеспечить пожаробезопасность. Типично устройство HBus берет от кабеля порядка 10-20 мА питания,так что на шину можно навесить порядка сотни устройств.
На физическом уровне обмен ведется при помощи приемопередатчиков CAN. Однако контроллеры CAN, не используется, обмен ведется при помощи обычных UART. Первые устройства я сделал на основе микроконтроллеров PIC24F, в дальнейшем планирую перейти на 8-битные Ардуино. Вследствие отказа от контроллеров CAN, длина сообщений не ограничена 8-ю байтами, в HBus можно передавать достаточно длинные сообщения.
Обмен сделан по принципу CSMA/CA. Любое устройство вправе начать передавать сообщение, если шина свободна. Коллизии (т.е. столкновения передатчиков) обнаруживаются и разруливаются на программном уровне.
Аналогично KNX и C-Bus предусматривается два режима работы:
- Режим конфигурирования, когда РС адресует каждое устройство индивидуально и задает ему настройки.
- Режим нормальной работы, когда любое устройство, "имеющее что сказать", отправляет широковещательное сообщение на шину, а исполнительные устройства выбирают из потока сообщений нужные и отрабатывают их. Этот принцип работы называется "производитель - потребитель", и это именно тот трюк, который при низкой пропускной способности шины обеспечивает отличное время реакции на команды пользователя. Для упрощения согласования с верхними уровнями управления, в этом режиме используется протокол, максимально приближенный к MQTT-SN.
К настоящему моменту более-менее устоялись основные принципы, на которых строится HBus. Сделано и отлажено первое устройство - шлюз USB-HBus с гальванической развязкой. Программа для РС имеется, но пока что мало развита.
Следующим будет устройство управления группой светодиодных светильников: печатные платы заказаны, в течении пары месяцев планирую его собрать.
HBus задуман как открытый интерфейс, сопоставимый по возможностям с EIB/KNX и C-Bus. Это проводной интерфейс, который по одному кабелю передает данные и питание для маломощных устройств. Скорость обмена невысокая, 25 кбит/сек (для сравнения: C-Bus - 5 кбит/сек, KNX - 9.6 кбит/сек). Низкая скорость выбрана сознательно для того, чтобы обеспечить работоспособность в сети с произвольной топологией прокладки кабеля. То есть, кабель можно класть как угодно, и "змейкой", и "звездой", и вообще как бог на душу положит. Терминатор шины один, он должен находиться примерно где-то в середине инсталляции.
Несколько большая, чем в KNX и C-Bus скорость обмена накладывает бОльшие ограничения на суммарную длину кабеля: если C-Bus и KNX позволяют укладывать до 1 км кабеля, то для HBus придется ограничить длину до 300 м. Для стадионов и заводских цехов это будет существенным ограничением, однако для обычных домовладений, я думаю, проблем не возникнет.
Кабель - стандартный Cat 5 или Cat 6. Одна витая пара используется для данных, одна - общий провод, одна - питание 12В, одна пара запасная. Суммарный ток питания в кабеле ограничен на уровне 1 А, чтобы обеспечить пожаробезопасность. Типично устройство HBus берет от кабеля порядка 10-20 мА питания,так что на шину можно навесить порядка сотни устройств.
На физическом уровне обмен ведется при помощи приемопередатчиков CAN. Однако контроллеры CAN, не используется, обмен ведется при помощи обычных UART. Первые устройства я сделал на основе микроконтроллеров PIC24F, в дальнейшем планирую перейти на 8-битные Ардуино. Вследствие отказа от контроллеров CAN, длина сообщений не ограничена 8-ю байтами, в HBus можно передавать достаточно длинные сообщения.
Обмен сделан по принципу CSMA/CA. Любое устройство вправе начать передавать сообщение, если шина свободна. Коллизии (т.е. столкновения передатчиков) обнаруживаются и разруливаются на программном уровне.
Аналогично KNX и C-Bus предусматривается два режима работы:
- Режим конфигурирования, когда РС адресует каждое устройство индивидуально и задает ему настройки.
- Режим нормальной работы, когда любое устройство, "имеющее что сказать", отправляет широковещательное сообщение на шину, а исполнительные устройства выбирают из потока сообщений нужные и отрабатывают их. Этот принцип работы называется "производитель - потребитель", и это именно тот трюк, который при низкой пропускной способности шины обеспечивает отличное время реакции на команды пользователя. Для упрощения согласования с верхними уровнями управления, в этом режиме используется протокол, максимально приближенный к MQTT-SN.
К настоящему моменту более-менее устоялись основные принципы, на которых строится HBus. Сделано и отлажено первое устройство - шлюз USB-HBus с гальванической развязкой. Программа для РС имеется, но пока что мало развита.
Следующим будет устройство управления группой светодиодных светильников: печатные платы заказаны, в течении пары месяцев планирую его собрать.