Модуль CAN обеспечивает наблюдение за сообщениями на CAN-шине, выделение интересующих 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/canpar
Парсет-массив, задает фильтры для выделения 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
[ |
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 |
|
sens can0 send=auto [/sens/sens] Sensors:
[ 9] can0a5:[0] Send=Auto
can mode=sensors baud=250 [/can/can] Can:
Mode=Sensors Baud_Kbs=250
can
[/can/can] Can: Mode=Sensors Baud_Kbs=250
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
Ответ: # i=can0 a 5:[0] Send=Auto
установка:
Запрос: PUT /can/can#mode=sensors baud=250 silent=off
Ответ: 2.04(Changed): Changed
проверка:
Запрос: GET /can/can
Ответ: # Mode=Sensors Baud_Kbs=250 Silent=off
включение/модификация канала 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