Что такое CAN-шина?

Как говорит нам Википедия, CAN (англ. Controller Area Network — сеть контроллеров) - стандарт промышленной сети, ориентированный прежде всего на объединения в единую сеть различных исполнительных устройств и датчиков. Режим передачи - последовательный, широковещательный, пакетный.

Непосредственно стандарт CAN компании Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно, например, радиоканалом или оптоволокном. Но на практике под CAN-сетью обычно подразумевается сеть топологии «шина» с физическим уровнем в виде дифференциальной пары, определённым в стандарте ISO 11898. Передача ведётся кадрами, которые принимаются всеми узлами сети. Для доступа к шине выпускаются специализированные микросхемы — драйверы CAN-шины. 

В рамках этой статьи я не буду подробно разбирать всю архитектуру CAN-шины, об этом можно почитать в той же Wiki, а акцентирую внимание на нашем проекте и о том, какую роль в нем играет CAN-шина.

 

Почему именно CAN-шина?

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

Это и послужило основной причиной заострить свое внимание на протоколе CAN.

Еще один плюс в ее пользу то, что при достаточно большой скорости передачи данных, длина шины может достигать 5 (пяти) километров, что является даже очень неплохим показателем. 

Зависимость скорости шины от ее длины
Скорость
передачи
данных
Предельная
длина сети
(м)
Примечание
1 1 Мбит/с 40 При длине шины более 150 метров рекомендуется ставить так называемые удлинители шины, которые через оптопару соединяют две и более фактически независимые шины.
Требование это связано с тем, что сигнал от любого контролера в сети должен должен дойти до всех точек за максимально короткое время.
2 500 Кбит/с 100
3 125 Кбит/с 500
4 50 Кбит/с 1000
5 10 Кбит/с 5000

 

Для среднестатистической квартиры длина шины вряд-ли превысит 200-300 метров, поэтому мы можем рассчитывать на обмен данными со скоростью до 125 Кбит/сек. Это даже больше, чем требуется, следовательно нагрузка на сеть будет небольшой и в стандартных режимах работы сеть не будет перегружена даже в пиковые моменты.

 

Схема реализация системы "Умный дом"

Воплощать в жизнь идею автоматизации дома планируется по следующей схеме:

Схема

На контроллер в сети возлагаются следующие роли:

  1. Мониторинг сети и контроль состояния
  2. Управление модулями по расписанию (управление сценариями)
  3. Система экстренного оповещения (сигнализация, различные датчики контроля безопасности)

Контроллер должен мониторить шину, проверять состояние модулей и при необходимости вести журнал логов.

Также, если присутствует модуль связи с сотовой связью, контроллер должен отправлять смс-сообщения на заранее определенные номера в случае каких либо сбоев в системе или наоборот - по входящим сообщениям должен переводить режим работы всей системы в заранее определенные режимы, запускать какие-либо сценарии.

Модуль сотовой связи задействуется в том случае, если нет связи с центральным сервером, либо для дублирования критических сообщений системы. В целях безопасности системы, контроллер шины не имеет выхода в интернет напрямую.

CAN-модули должны быть независимыми от контроллера шины. Они должны выполнять свои функции вне зависимости от того, есть ли контроллер в сети или нет. Это делается для того, чтобы в случае временного отключения контроллера от сети не нарушилась работа модулей комфорта, например не перестали работать выключатели света и не отключились все розетки. 

Отсутствие контроллера - это внештатная ситуация, но она не должна нарушать основной функционал.

Сервер выполняет роль связи между контроллером и конечными устройствами пользователей, такими как персональные компьютеры, смартфоны. Причем не важно, как осуществляется доступ - локально или через интернет. Соответственно должна быть должным образом настроена безопасность подключения.

Также на сервер ложится обязанность вести логирование всех состояний системы. Контроллер CAN-шины ведет логи только критических состояний и оповещений, но при наличие подключения к серверу, контроллер отдает всю информацию ему на обработку, пропуская мимо себя все, кроме критичной.

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

Интерфейсные устройства пользователя подключаются по WiFi к системе управления. Им доступен функционал управления системой, настройке сценариев, а также доступ к логам состояния.

Самое интересное, это конечные точки CAN-сети. Они могут работать как независимо от контроллера шины, так и под ее управлением.

Планируется изготовление нескольких типов универсальных модулей CAN-шины в разном исполнении, подключение к которым кончеными устройствами будет осуществляться через SPI, UART, I2C и т.п., а также с помощью так называемых "сухих контактов".

Планируется создание универсальной прошивки (или нескольких), конфигурирование модулей будет возможно через интерфейс системы. На сегодняшний момент тестируется первый прототип в исполнении под распаечную коробку или подрозетник. По факту окончания тестирования будет выложен материал на сайт в раздел "Решения".

Обновление прошивок модулей происходит через CAN-шину, каждый модуль прошивается отдельно. Контроль версий возлагается на сервер системы.

Множество конечных точек теоретически может достигать до 65 тысяч различных устройств, хотя на деле вряд-ли перевалит за две сотни. 

  

CAN-протокол

За основу CAN-протокола умного дома взят протокол высокого уровня CANopen, который немного доработан под требование нашей системы.

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