Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Модуль CAN обеспечивает наблюдение за сообщениями на CAN-шине, выделение интересующих CAN-параметров и отправку их в сенсорах.

Конфигурация модуля:

/can/can

Парсет, задает режим работы с CAN-шиной:

Parameter

Values

Comments

Mode

Off, Sensors, Listen, Test, Echo

Режим работы подсистемы CAN Тага. Off - выключено
Sensors - передача сенсоров canX
Listen – сохранение сообщений в журнале устройства (Events) Остальные - для отладки, не применять

Baud_Kbs

100..1000

Скорость шины CAN в килобит/с

Silent

on, off

При Mode=Sensors режим CAN-драйвера Silent (неподтверждение сообщений)

/can/canpar

Парсет-массив, задает фильтры для выделения CAN-параметров. Содержит 4 записи:

Parameter

Values

Comments

PGN

0..262143 (0..
0x3FFFF)

Фильтр по ExtendedId шины CAN
ParameterGroupNumber по стандарту FMS (SAE J1939/21). Соответствует битам 8..25 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

...

1. Убедиться, что режим отправки 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

Code Block
sens
[/sens/sens] Sensors:
    [ 0] Power        a  -1:    Send=Auto(Off Normal ) 
    [ 1] bar          a -10:    Send=Auto(Normal Normal ) 
    .....
    [27] truck        a  24:    Send=Auto(Off Off ) 
    [28] zone         a  25:    Send=Auto(Off Off ) 
    [29] cas2         a  26:    Send=Auto(Off Off ) 
    [30] can0         a   5:[0] Send=Auto(Off Off )   <<<!
    [31] can1         a   5:[1] Send=Auto(Off Off )   <<<! 
    [32] can2         a   5:[2] Send=Auto(Off Off )   <<<!
    [33] can3         a   5:[3] Send=Auto(Off Off )   <<<!
    [34] in1up        a   6:[1] Send=Auto(Off Off ) 
    [35] in2up        a   6:[2] Send=Auto(Off Off ) 
    [36] in3up        a   6:[3] Send=Auto(Off Off ) 
    [37] in4up        a   6:[4] Send=Auto(Off Off ) 
    [38] in5up        a   6:[5] Send=Auto(Off Off ) 
    39 total, 28 active

...

[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:

...

При необходимости изменить режим на Auto:

Code Block
sens can0 send=auto 
[/sens/sens] Sensors:

...


    [ 9]

...

 can0          a   5:[0] Send=Auto

2. Установить/проверить режим CAN и требуемую скорость:
can mode=sensors baud=250 Проверить:

Code Block
can
[/can/can] Can:

...


  Mode=Sensors Baud_Kbs=250 Silent= on 

...

Установить:

Code Block
can mode=sensors baud=250
[/can/can] Can:
  Mode=Sensors Baud_Kbs=250 Silent= on 

3. Выбрать CAN параметры для соответствующих CAN-сенсоров:

Добавление фильтра для канала 0:

Code Block
canpar add 0 pgn=0xfef1 highbit=52 lowbit=48
[/can/canpar] Can Parameter:

...


  [  0] PGN=65265(0x0FEF1) HighBit=52 LowBit=48

...

Проверка настроек фильтра:

Code Block
canpar

...


[/can/canpar] Can Parameter:

...


  [  0] PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)

...


  [  2] PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)

...


  2 total

Удаление фильтра для канала 2:

Code Block
canpar del 2

...


[/can/canpar] Can Parameter:
  deleted


Настройка через CoBench

На примере канала can0

  1. Убедиться, что режим отправки CAN-сенсоров Auto:
    Запрос: GET /sens can0
    Ответ: # i=can0 a 5:[0] Send=Auto

  2. При необходимости изменить режим на Auto:
    Запрос: PUT /sens can0#send=auto
    Ответ: 2.04(Changed): Changed

  3. Установить/проверить режим CAN и требуемую скорость:
    установка:
    Запрос: PUT /can/can#mode=sensors baud=250 silent=off
    Ответ: 2.04(Changed): Changed
    проверка:
    Запрос: GET /can/can
    Ответ: # Mode=Sensors Baud_Kbs=250 Silent=off

  4. Выбрать 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