M-BUS, часть I

Как-то раз столкнулся с протоколом M-BUS (Meter-Bus). Задача — научится считывать данные с теплосчетчиков Minocal Minol...


Как оказалось, протокол M-Bus очень популярен в Европе. Используется в счетчиках электроэнергии, газа, воды, тепла и т.д.
В отличии от стандарта RS485, M-Bus использует другие уровни сигналов. Низкая скорость передачи данных (300 — 9600 бит), как следствие низкие требования к линии связи (достаточно стандартного телефонного провода). Стандарт тщательно оптимизирован для пониженного потребления и позволяет обходится без отдельного внешнего источника питания конечного устройства, используя внутреннюю батарею и питание от самой линии, так же отсутствует необходимость соблюдения полярности.


Как видно из иллюстрации, логическая «1» передаётся уровнем 36 В, потребление от линии до 1,5 мА. Логический «0» — напряжением 24 В. Для передачи ведомым устройством логического «0», ведомое устройство увеличивает ток потребления до 10-11 мА. Ток потребления и падение напряжения в линии — ведущее устройство определяет как логический «0». Физически протокол похож на 1-Wire (способом передачи данных и возможностью питания устройств от линии).
Схема была наскоро придумана и смакетирована. Питание +36 вольт получено от DC/DC MC34063 включенного по схеме Step Up, с одним Mosfet-ом.

Для усиления сигнала с R14 до стандартного уровня, пришлось задействовать ОУ.

Примерно так выглядит запрос-ответ (заснят с шунта непосредственно перед ОУ).
В запросе производится проверка по указанному адресу, представленному четырьмя байтами, в ответ возвращается ACK (0xE5)

Теоретически стандарт поддерживает до 250 устройств на одной линии, но физически без повторителей это не возможно (1,5 мА ток одного устройства).
Сам протокол достаточно сложен. Только служебные поля передаются в чистом виде, остальные данные закодированы по маскирующим битам.
Узнать тип данных, знак, размеренность и физическую величину (протокол изначально создан для метрики и типы данных выбираются из стандарта) можно проверив соответствующие биты в VIF-DIF байтах (Variable Data Blocks, Data Information Field).
Иными словами, перед каждым блоком данных, располагается блок информационный.


Для примера, мастер производит запрос Short Frame (Request Class 2)
Существует всего 4 типа сообщений (telegram) и каждый тип имеет свое место.
Master — 10 5b 40 9b 16
Slave — 68 56 56 68 08 40 72 43 60 52 00 77 04 14 03 CA 10 00 00 0C 78 76 03 01 10 0D 7C 08 44 49 20 2E 74 73 75 63 0A 30 30 30 30 30 30 30 30 30 30 04 6D 38 15 AA 19 02 7C 09 65 6D 69 74 20 2E 74 61 62 22 0C 04 13 C1 0E 00 00 04 93 7F 4E 01 00 00 44 13 5D 08 00 00 0F 01 00 1F DE 16


Задача не так проста, так как вариантов типов много, а поля могут состоять из разного количества байт. Об этом надеюсь написать немного позже.

Полезные ссылки:
Википедия
Интересный блог, несколько решений на Arduino
Официальный сайт M-Bus
  • +4
  • 11 июля 2015, 16:40
  • khomin

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

RSS свернуть / развернуть
Обычный квартирный теплосчетчик как на фото, способен работать до 8-ми лет на одной литиевой батарее
0
Да пиши уже просто «первыйнах!»)
-2
Спасибо. Полезное введение в извращенский протокол.
+1
Полезное введение в извращенский протокол.

протокол M-Bus очень популярен в Европе.
+1
от TI есть вариант M-Bus для беспроводных сетей, называется Wireless M Bus. И он тоже достаточно распространен.
0
в Европе очень популярны счётчики газа, воды и электричества с автоматическим считыванием, а не хмурые колдыри с блокнотами, ломящиеся в дом в самый неподходящий момент.
+1
А как линия передачи защищается от вмешательства в передаваемые данные?
0
скорей всего никак, в протоколе допустимы даже частичные потери передаваемых данных
0
Это странно, учитывая уязвимость линии к вмешательствам и заинтересованность владельца в оных вмешательствах.
0
Да наверное как и у нас, передавать показания раз в месяц какие угодно можно, только потом проверят реальные цифры и штраф выпишут.
0
Вроде, count_enable говорит, что как раз для избавления от прогулок с проверками эта система и придумана — у нас же тоже колдыри с блокнотами не ежемесячно ходят.
0
надо полагать, показания пишутся в БД, и имея статистику не сложно заметить скачек показаний или наоборот их неподвижность…
Вообще, насколько знаю, все эти системы монтируются за счет управляющих компании, сами жильцы ничего не платят. Последние освобождаются от необходимости стоять в очередях, заполнять квитанции, выписывать показания и т.д.
Рано или поздно, наступит срок поверки устройства, и тогда все всплывет )
0
Есть с централизованным сбором инфы, т.е. по проводам. Они в принципе не защищены, т.к. вероятность того что добропорядочный бюргер полезет в технологический канал и поставит высокотехнологичный имитатор счётчика, крайне мала, и такие случаи отлавливаются статистикой и логами. Тем более есть регулярные проверки счётчика.
Второе что я видел это счётчики мордами на улице с ИК-интерфейсом и проходящий мимо инспектор их считывает — по пару секунд на юнит. Понятно что корпуса опломбированы. Дёшево и сердито.
+1
Исправность оборудования в интересах жильцов. Забавно, но где в РФ подобные системы смонтированы, они исполняют декоративную функцию и показания считываются по старинке ))
0
вероятность того что добропорядочный бюргер полезет в технологический канал и поставит высокотехнологичный имитатор счётчика, крайне мала
Мала до тех пор, пока кто-нибудь не сделает микроплатку имитатора и не станет ее продавать по 3 рубля. А так да, маловероятно конечно
0
Сделать «левую» розетку еще проще, но почему-то популярностью они не особо пользуются, так как вычисляются на раз, а штрафы приходят нешуточные.
0
Я, наверное, живу в очень отсталой Европе.
В доме три счетчика (электро, вода и газ) и ни у одного нет возможности дистанционного считывания. За 16 лет (столько дому) был поменян лишь водяной счетчик. И только потому, что вода здесь максимально жесткая и на стенках труб и пр. откладывается известь. Электросчетчик еще тот, электромеханический.
А показания счетчиков мы сами раз в год записываем и отсылаем поставщику для перерасчета. При перерасчете устанавливается новая месячная ставка на следующий год. И всё. Конечно, при смене водяного счетчика нашу честность проверил «горводоканал».
0
Все может быть.
Но стандарт прижился в первую очередь в Европе, и думаю всем понятно почему.
РФ унаследовала огромный энергетический комплекс от союза, по этой причине электроэнергия с водой стоят довольно дешево
0
Унес в публичный. Следующие части тоже бы туда же.
0
В новых домах, во всяком случае у меня в городе, делают автоматический сбор данных со всех счётчиков (тепло, вода, электричество).
Поскольку управляющая компания определена ещё до застройки то под их пожелания и подгоняют.
А типовой и не шифрованый протокол обмена у нас редкость — а вдруг конкуренты своё оборудование будут делать под наши головные станции.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.