Для CAN используется расширенный формат кадра данных.
4 байта - идентификатор, 8 байт - данные.
Первый байт кадра CAN может быть максимум 1F

Битовый формат идентификатора:

xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
---- ---- ---- 0000 |--- ---- |--- ----
     ----+----      |---+---- |---+----
         |          |   |     |   |
         |          |   |     |   +--------- Расширение комманды ( код функции 2 )
         |          |   |     |              Максимум кодов = 127 ( 7F )
         |          |   |     |
         |          |   |     +------------- Если 1, то ответ от устройства.
         |          |   |                      Используется для исключения "зацикливания"
         |          |   |                      и при обработке широковещательных запросов
         |          |   |
         |          |   +------------------- Комманда. ( код функции )
         |          |                          1 - установка значений
         |          |                          2 - чтение значений
         |          |                        Максимум кодов = 127 ( 7F )
         |          |                       
         |          +----------------------- Если 1, то Контроллер вернул состояние ошибки
         |                            
         +---------------------------------- Адрес, или номер CAN. Максимум 255. 
                                             Реально 100 устройств ( ограничения физической реализации )

Устройство всегда отвечает на пакеты ему адресованные. Это является подтверждением получения пакета.
Адрес = 0 - широковещательная рассылка.

Примеры (Linux):

can0    400200  [8] 00 00 00 00 00 00 00 00 - Запрос данных устройству с номером 4
can0    400280  [8] 07 00 00 00 00 00 00 00 - Ответ устройства номер 4

can0    400100  [8] 07 00 00 00 00 00 00 00 - Передача данных устройству с номером 4
can0    400180  [8] 07 00 00 00 00 00 00 00 - Ответ устройства номер 4 (текущее состояние )

can0    100200  [1] 00                      - Запрос данных устройству с номером 1 ( один байт )
can0    100280  [8] 00 00 00 00 00 00 00 00 - Ответ устройства номер 1

can0    100100  [1] FF                      - Передача данных устройству с номером 1 ( один байт )
can0    100180  [8] FF 00 00 00 00 00 00 00 - Ответ устройства номер 1 (текущее состояние )

can0    100F00  [1] 00                      - Передача данных устройству с номером 1
can0    180F80  [8] 00 00 00 00 00 00 00 00 - Ответ устройства номер 1 ( ошибка, неверная команда )


Каждое устройство имеет уникальный серийный номер Sn (4 байта)
и идентификатор Id, или тип устройства (4 байта)

Команды широковещательной рассылки (адрес = 0):
------------------------------------------------------------------------------
C1:C2
C1 - Комманда ( код функции )
C2 - Расширение комманды ( код функции 2 )
------------------------------------------------------------------------------
2:x - запрос данных
2:0 - дать серийный номер; устройство вернет в первых 4-х байтах Sn
      в следующих 4-х байтах код (идентфикатор) устройства
2:1 - дать номер CAN; в первых 4-х байтах Sn, кому адресовано

1:x - установка значений
1:1 - не откликаться на широковещательный запрос серийного номера.
      в первых 4-х байтах Sn, кому адресовано
1:2 - присвоить номер CAN.
      в первых 4-х байтах Sn, кому адресовано
      5-й байт номер CAN
