Что такое 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 Кбит/сек. Это даже больше, чем требуется, следовательно нагрузка на сеть будет небольшой и в стандартных режимах работы сеть не будет перегружена даже в пиковые моменты.
Схема реализация системы "Умный дом"
Воплощать в жизнь идею автоматизации дома планируется по следующей схеме:
На контроллер в сети возлагаются следующие роли:
- Мониторинг сети и контроль состояния
- Управление модулями по расписанию (управление сценариями)
- Система экстренного оповещения (сигнализация, различные датчики контроля безопасности)
Контроллер должен мониторить шину, проверять состояние модулей и при необходимости вести журнал логов.
Также, если присутствует модуль связи с сотовой связью, контроллер должен отправлять смс-сообщения на заранее определенные номера в случае каких либо сбоев в системе или наоборот - по входящим сообщениям должен переводить режим работы всей системы в заранее определенные режимы, запускать какие-либо сценарии.
Модуль сотовой связи задействуется в том случае, если нет связи с центральным сервером, либо для дублирования критических сообщений системы. В целях безопасности системы, контроллер шины не имеет выхода в интернет напрямую.
CAN-модули должны быть независимыми от контроллера шины. Они должны выполнять свои функции вне зависимости от того, есть ли контроллер в сети или нет. Это делается для того, чтобы в случае временного отключения контроллера от сети не нарушилась работа модулей комфорта, например не перестали работать выключатели света и не отключились все розетки.
Отсутствие контроллера - это внештатная ситуация, но она не должна нарушать основной функционал.
Сервер выполняет роль связи между контроллером и конечными устройствами пользователей, такими как персональные компьютеры, смартфоны. Причем не важно, как осуществляется доступ - локально или через интернет. Соответственно должна быть должным образом настроена безопасность подключения.
Также на сервер ложится обязанность вести логирование всех состояний системы. Контроллер CAN-шины ведет логи только критических состояний и оповещений, но при наличие подключения к серверу, контроллер отдает всю информацию ему на обработку, пропуская мимо себя все, кроме критичной.
В будущем планируется создать механизм "самообучения" системы. Суть этого заключается в том, чтобы анализирую поведение пользователей, система подстраивалась под нас, автоматически создавая сценарии поведения и делать наше пребывание в доме еще более комфортным. Этот функционал также ляжет на плечи сервера.
Интерфейсные устройства пользователя подключаются по WiFi к системе управления. Им доступен функционал управления системой, настройке сценариев, а также доступ к логам состояния.
Самое интересное, это конечные точки CAN-сети. Они могут работать как независимо от контроллера шины, так и под ее управлением.
Планируется изготовление нескольких типов универсальных модулей CAN-шины в разном исполнении, подключение к которым кончеными устройствами будет осуществляться через SPI, UART, I2C и т.п., а также с помощью так называемых "сухих контактов".
Планируется создание универсальной прошивки (или нескольких), конфигурирование модулей будет возможно через интерфейс системы. На сегодняшний момент тестируется первый прототип в исполнении под распаечную коробку или подрозетник. По факту окончания тестирования будет выложен материал на сайт в раздел "Решения".
Обновление прошивок модулей происходит через CAN-шину, каждый модуль прошивается отдельно. Контроль версий возлагается на сервер системы.
Множество конечных точек теоретически может достигать до 65 тысяч различных устройств, хотя на деле вряд-ли перевалит за две сотни.
CAN-протокол
За основу CAN-протокола умного дома взят протокол высокого уровня CANopen, который немного доработан под требование нашей системы.
Сейчас ведется работа по русификации документации. Позднее будет выложена отдельная статья с описанием и готовыми файлами с программным кодом для встраивания в проекты.