Модуль CAN обеспечивает наблюдение за сообщениями на CAN-шине, выделение интересующих CAN-параметров и отправку их в сенсорах.
Конфигурация модуля:
Парсет, задает режим работы с CAN-шиной:
Parameter | Values | Comments |
Mode | Off, Sensors, Listen, Test, Echo | Режим работы подсистемы CAN Тага. Off - выключено |
Baud_Kbs | 100..1000 | Скорость шины CAN в килобит/с |
Silent | on, off | При Mode=Sensors режим CAN-драйвера Silent (неподтверждение сообщений) |
Парсет-массив, задает фильтры для выделения CAN-параметров. Содержит 4 записи:
Parameter | Values | Comments |
PGN | 0..262143 (0.. | Фильтр по ExtendedId шины CAN |
HighBit | 0..63 | Старший бит параметра |
LowBit | 0..63 | Младший бит параметра |
Каждая запись массива соответствует каналу CAN сенсора с таким же индексом. Если режим передачи канала CAN-сенсора /sens canN#Send=Auto, то передаются только каналы CAN-сенсора с индексами, соответствующими непустым записям в массиве, и только если /can/can#Mode=Sensors.
Сообщения CAN-шины фильтруются по PGN: ExtendedId биты 8..25 должны совпадать с PGN, остальные биты произвольные. Из сообщений, прошедших фильтр, выбираются биты с LowBit по HighBit, результат передается в канале CAN-сенсора в виде целого числа. Биты считаются по всему сообщению, с Data[0] по Data[7].
Если нужных сообщений на шине нет, в канале CAN-сенсора передается код ошибки:
-1 – параметр не обнаружен (или устарел, прошло более 1с момента приема)
-3 – конфигурация фильтра некорректна (нужных бит нет в сообщении)
Настройка через CLI
sens
[/sens/sens] Sensors:19 total, 11 activeУбедиться, что режим отправки CAN-сенсоров Auto:
[ | 0] | in1 | -12:[0] | Send=Off | |||||
[ | 1] | in2 | -12:[1] | Send=Off | |||||
[ | 2] | in3 | -12:[2] | Send=Off | |||||
[ | 3] | in4 | -12:[3] | Send=Off | |||||
[ | 4] | adc1 | -11:[0] | Send=Off | |||||
[ | 5] | adc2 | -11:[1] | Send=Off | |||||
[ | 6] | adc3 | -11:[2] | Send=Off | |||||
[ | 7] | adc4 | -11:[3] | Send=Off | |||||
[ | 8] | button | a | -5: | Send=Auto | ||||
[ | 9] | can0 | a | 5:[0] | Send=Auto | <<<! | |||
[10] | can1 | a | 5:[1] | Send=Auto | <<<! | ||||
[11] | can2 | a | 5:[2] | Send=Auto | <<<! | ||||
[12] | can3 | a | 5:[3] | Send=Auto | <<<! | ||||
[13] | gnss | a | -18: | Send=Auto | |||||
[14] | bar | a | -10: | Send=Auto | |||||
[15] | temp | -6: | Send=Normal | ||||||
[16] | singletag | a | -21: | Send=Auto | |||||
[17] | Rest | a | -4: | Send=Auto | |||||
[18] | Power | a | -1: | Send=Auto |
При необходимости изменить режим на Auto:
sens can0 send=auto [/sens/sens] Sensors:
[ 9] can0a5:[0] Send=Auto
Установить/проверить режим CAN и требуемую скорость:
can mode=sensors baud=250 [/can/can] Can:
Mode=Sensors Baud_Kbs=250
can
[/can/can] Can: Mode=Sensors Baud_Kbs=250
Выбрать CAN параметры для соответствующих CAN-сенсоров:
canpar add 0 pgn=0xfef1 highbit=52 lowbit=48 [/can/canpar] Can Parameter:
/0PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)
Проверка настроек фильтра:
canpar
[/can/canpar] Can Parameter:
/0PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)
/2PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)
2 total
Удаление фильтра для канала 2:
canpar del 2
[/can/canpar] Can Parameter: deleted
Настройка через CoBench
На примере канала can0
Убедиться, что режим отправки CAN-сенсоров Auto: Запрос: GET /sens can0
Ответ: # i=can0 a 5:[0] Send=Auto
При необходимости изменить режим на Auto: Запрос: PUT /sens can0#send=auto Ответ: 2.04(Changed): Changed
Установить/проверить режим CAN и требуемую скорость:
установка:
Запрос: PUT /can/can#mode=sensors baud=250 silent=off
Ответ: 2.04(Changed): Changed
проверка:
Запрос: GET /can/can
Ответ: # Mode=Sensors Baud_Kbs=250 Silent=off
Выбрать CAN параметры для соответствующих CAN-сенсоров:
включение/модификация канала can0:
Запрос: PUT /can/canpar 0#pgn=0xfef1 highbit=52 lowbit=48
Ответ: 2.04 Changed
проверка канала can0:
Запрос: GET /can/canpar 0
Ответ: # _idx=0 PGN=65265 HighBit=52 LowBit=48
отключение канала can0:
Запрос: PUT /can/canpar 0 del
Ответ: 2.04 Changed