1. Введение
В технической литературе и на сайтах есть много информации об интерфейсе CAN, однако я не встретил ни одного примера его использования в системе «Умный дом». В данной статье мною сделана попытка создать алгоритм обмена данными в системе «Умный дом» с возможностью работы каждого члена сети автономно по обработке «событий» согласно заложенной ранее программы.
Используемый протокол CAN должен соответствовать стандарту:
ГОСТ Р ИСО 11 898–1 -2015. Канальный уровень и передача сигналов.
Основная идея заложенная в протокол CAN: событие выставляется в интерфейс и обрабатывают его только устройства подписанные на него (п.6.4 стандарта).
В системе не должно быть два устройства с одним идентификатором события передачи данных(п. 10.8.8 стандарта).
Максимальный размер передаваемых данных 8 байт.
2. Идентификатор события
Идентификатор события состоит из базовой части(11 битов) и расширенной (18 битов).
Базовая часть служит для деления устройств по типам функциональности, а расширенная содержит серийный номер устройства.
2.1 Базовый вариант идентификатора содержит 11 битов (всего кодов 2048).
Все устройства входящие в состав умного дома разбиваются по типам функциональности, объединенные в группы внутри кодового пространства. Для этого выделено 1024 адресов кодового пространства. Всего существует 32 группы датчиков и 32 группы исполнительных устройств, итого 64 группы по 16 разновидностей.
Код 0×000 зарезервирован за информационным сервисом каждого контроллера сети.
Каждый контроллер сети может иметь тип функциональности один или более.
Кодовое пространство 0х 400...0х 7FF, это кодовое пространство изменения параметров события, образуется из идентификатора типа функции с добавлением «1» в старший разряд.
2.2 При создании системы идентификации события использовать расширенный идентификатор где расширение — старший разряд это признак события чтения/записи (0 запись, 1 чтение) + присваемый номер изделия в сети.
2.3 Право передавать данные от устройств принадлежит следующим идентификаторам события:
базовый вариант идентификатора типа устройства, содержит 11 битов + расширенный идентификатор — присваемый номер изделия в сети и признак чтения(1). Этот вариант служит для опубликования события от устройства в сети.
базовый вариант идентификатора изменения параметров события (тип устройства с добавлением «1» в старший разряд), содержит 11 битов + расширенный идентификатор, где расширение — признак чтения(1 в старшем разряде) + присваемый номер изделия в сети. Этот вариант служит для чтения данных профиля устройства.
2.4 Право передавать данные для записи в устройства принадлежит следующим идентификаторам события:
базовый вариант идентификатора изменения параметров события (тип устройства с добавлением «1» в старший разряд), содержит 11 битов + расширенный идентификатор, где расширение — признак записи(0 в старшем разряде) + присваемый номер изделия в сети.
2.5 Таким образом, каждое устройство имеет три значения идентификатора для передачи данных из общего кодового пространства идентификаторов, а контроллер «мастер» имеет четверть значений из общего пространства идентификаторов.
3. Порядок работы
3.1 Состав
Система «Умный дом», объединенная шиной обмена информации CAN состоит из:
устройство «мастер», которое подключается через роутер к серверу. Оно производит настройку сценариев работы периферийных устройств сети и контролирует работу этих устройств прослушивая обмен информации в сети;
контроллеры периферийных устройств (датчики и исполнительные устройства). Получают сценарии работы по обработке событий в сети от «мастера». А также организуют работу в автономном режиме по событиям согласно заложенному сценарию.
Возможно непосредственное управление работой от «мастера».
3.2 Начало работы
3.2.1 Контроллеры периферийных устройств программируются в соответствии с заданными функциями. При этом каждый контроллер получает индивидуальный заводской серийный номер, присваемый номер изделия в сети(задается с помощью перемычек или программно) и коды типов функциональности, согласно выполняемой функции см. п.2 данного документа.
При этом устройство автоматически подписано на событие настройки заданного типа (или типов) функциональности заданным идентификатором события (базовая часть идентификатора).
3.2.3 При начальном запуске системы контроллер «мастер» определяет подключенные к сети устройства. Это реализуется с помощью групповой рассылки по сети кадра данных, содержащий серийный номер устройства «мастер», с базовым идентификатором 0×400.
Все контроллеры сети (априори) подписаны на событие с этим идентификатором и в порядке взаимодействия с разделением по времени каждое подключенное к сети устройство посылает кадр данных контроллеру «мастер», содержащий идентификатор: базовый вариант идентификатора изменения параметров события 0×400 и расширенный идентификатор, где расширение — признак записи(0 в старшем разряде) + присваемый номер изделия в сети. В качестве данных передается присваемый номер периферийного контроллера в сети.
В ответ, контроллер «мастер» считывает из информационного сервиса устройства коды типов функциональности, а затем последовательно по 8 байт заносит в ответивший периферийный контроллер информацию о характеристиках и сценариях по каждому функциональному типу.
В ходе данного цикла опроса сети контроллер «мастер» получает информацию о наличие подключенных в сеть устройств, а периферийные устройства получают от «мастера» данные профиля.
ПРИМЕЧАНИЕ
1. При реализации одновременного опроса всех устройств сети одним базовым идентификатором с последующим арбитражем передаваемых сообщений от подключенных в сеть устройств происходит неустойчивая работа обмена. Для исключения этого необходимо использовать разделение по времени откликов устройств в сети (согласно п.9.2 ГОСТ Р ИСО 11 898–1).
Предлагаются два метода реализации этого способа разделения по времени автоматического определения подключенных к сети CAN устройств:
номер устройства в сети задаваемый перемычками(переключателями);
номер устройства в сети задается программно, при программировании профиля или по беспроводному интерфейсу (например: BLE, WiFi).
Максимальное число устройств в сети CAN — 64 шт.
2 Считая длительность кадра данных/запроса(120) + меж кадровый интервал(40) равным 160 тактов, получаем следующую длительность процедур:
при цикле опроса сети, считая максимальным число периферийных устройств 64 шт., длительность ожидания ответов составит: 160 х 64=10 240 тактов. На частоте обмена 100 кГц — 100мс, на частоте обмена 50 кГц — 200 мс, на частоте обмена 20 кГц — 500 мс;
запись максимального количества данных (256 байт) в 32 периферийных контроллера — 164 000 тактов (256/8×160×32), (при частоте 100 кГц = 1,64 с);
3.2.4 Дальнейшая работа системы может содержать несколько режимов работы:
— управление периферийными устройствами через проводной интерфейс CAN удаленно:
<= центральное устройство (мастер) <= роутер <= интернет<= сервер<= приложение на планшет (сотовый телефон);
— управление периферийными устройствами через проводной интерфейс CAN локально:
<= центральное устройство (мастер) <= приложение на планшет (сотовый телефон);
— управление работой периферийных устройств через проводной интерфейс CAN автономно по записанным в память контроллеров сценариям без участия центрального устройства (мастера). Устройство мастер, если оно работоспособно, только слушает пересылаемые по интерфейсу сообщения периферийных устройств.
ПРИМЕЧАНИЕ
1. Возможно считывание данных о событии сгенерированным устройством по кадру удаленного запроса.
2. Для дальнейшего расширения функциональных возможностей предусмотреть периодическую посылку нулевого кадра данных от «мастера», что сигнализирует о работоспособности контроллера «мастер» в сети CAN.
При отсутствии данного кадра данных в заданный период, инициализируется процедура выбора нового «мастера» на основе арбитража сети CAN (но уже подключаемого к серверу по беспроводной линии связи, WiFi).
4. Структура данных контроллера
4.1 Каждый контроллер содержит в области памяти профиль, состоящий из сервисов:
— информационный сервис, содержащий в виде характеристик:
характеристика № 1, номер контроллера в данной сети CAN (номер кадра данных при передаче по сети для подчиненного устройства — 1);
характеристика № 2, серийный номер контроллера(5 символов шестнадцатеричного кода) (номер кадра данных при передаче по сети для подчиненного устройства — 2);
характеристика № 3, подчиненность — master/slave_(6 байт) (номер кадра данных при передаче по сети для подчиненного устройства — 3);
характеристика № 4, наименование контроллера (max 14 байт); (два кадра данных) (номера кадров данных при передаче по сети для подчиненного устройства — 4, 5)
характеристика № 5, присвоенное имя пользователем (max 14 байт) территориально;(два кадра данных) (номера кадров данных при передаче по сети для подчиненного устройства — 6, 7)
характеристика № 6, версия программы (номер кадра данных при передаче по сети для подчиненного устройства — 8);
характеристика № 7, перечисление функциональных типов, заложенных в данное устройство (3 байта на код типа) + наличие/отсутствие признака окончания характеристик(1 байт #) (номера кадров данных при передаче по сети для подчиненного устройства — начиная с 9).
Максимальное число функциональных типов на один контроллер — 8.
ПРИМЕЧАНИЕ — В связи с особенностью передачи данных по сети CAN в виде кадров по 8 байт, характеристики могут передаваться за один или два кадра. Причем старший байт в кадре отводится на нумерацию характеристики (для контроля передачи).
— сервис(ы) типа, по одному на каждое подключенное к контроллеру функциональному типу устройства (датчик, исполнительное устройство).
4.2 Каждый сервис функционального типа содержит характеристики и сценарии.
Причем:
характеристика № 1, наименование типа (max 14 байт); (два кадра данных, номера 1, 2)
характеристика № 2, присвоенное имя пользователем, уточнение (max 14 байт); (два кадра данных, номера 3, 4)
характеристика № 3, это наименование параметра (7 байт) (номер кадра данных — 5);
характеристика № 4, это значение вышеназванного параметра (2 байт) + наличие/отсутствие признака окончания характеристик(1 байт #) (номер кадра данных — 6).
Всего может быть 8 параметров.
Данные сценария построены следующим образом.
а) Для исполнительных устройств:
данные события (7 байт): код расширенного идентификатора события, которое может произойти в сети CAN (4 байта) + дескриптор (3 байта данных). Дескриптор представляет собой: номер параметра устройства выставившего кадр данных (1 байт) + величина этого параметра (2 байта);
данные исполнения (3 байт): номер параметра (1 байт) + значение вышеназванного параметра(2 байт).
Сценарии по сети CAN передаются в виде строки, где номера кадров данных при передаче по сети для подчиненного устройства — начиная с 21.
Всего возможно записать 16 сценариев.
ПРИМЕЧАНИЕ — Общая область данных зарезервированных в памяти (100×8) 800 байт.
б) В случае датчиков устройство выставляет в сеть кадр данных, содержащий: код расширенного идентификатора события (код типа + лок.адрес устройства), данные — номер параметра (1 байт) + величина этого параметра (2 байта).
4.3 Обращение к сервисам происходит следующим образом.
Запись данных. Контроллер «мастер» формирует кадр данных содержащий:
идентификатор события изменение параметров определенного устройства, запись: Базовый вариант идентификатора содержит 11 битов + расширенный идентификатор, где расширение — признак записи(0 в старшем разряде) + локальный номер изделия;
старший байт в поле данных содержит порядковый номер кадра, согласно вышесказанному;
младшие байты в поле данных содержат значения характеристики.
Чтение данных. Контроллер «мастер» формирует кадр удаленного запроса содержащий:
идентификатор изменение параметров события устройства, чтение: Базовый вариант идентификатора содержит 11 битов + расширенный идентификатор, где расширение — признак чтения (1 в старшем разряде) + локальный номер изделия.
В ответ, подчиненный контроллер формирует последовательно несколько кадров данных с характеристиками запрашиваемого сервиса, содержащих:
идентификатор изменение параметров события устройства, чтение: Базовый вариант идентификатора содержит 11 битов + расширенный идентификатор, где расширение — признак чтения (1 в старшем разряде) + локальный номер изделия;
поле данных где старший байт содержит порядковый номер кадра данных.