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

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

/can/can

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

Parameter

Values

Comments

Mode
версия >= 3.16.0

Off,
ParsBE, 
ParsLE,
Mpn,
Listen,
Test,
Echo

Режим работы подсистемы CAN устройства (TG8V). 
Off - выключено
ParsBE, ParsLE – опрос параметров с шины CAN (байты старшим вперед, младшим вперед)
Mpn – работа с устройством МПН, см. МПН Гексан

Listen – сохранение сообщений в журнале устройства (Events)
Остальные - для отладки, не применять

Mode
версия > 3.12.0

Off,
ParsBigEnd,
ParsLittleEnd,

Listen,
Test,
Echo

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

Mode
версия <= 3.12.0

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-параметров. 

версия > 3.7.0 :

Parameter

Values

Comments

ExtId

on, off

Формат идентификатора (Id) на шине CAN: 0 - Id, 1 - ExtendedId

Id

4 байта

Id кадра на шине, используются младшие биты количеством в соответствии с ExtId (11 или 29)

Mask

4 байта

Маска Id кадра на шине, определяет значащие биты Id при фильтрации кадров

StartBit

0..63

Номер начального бита параметра

LenBits

0..63

Количество бит параметра (если >1 байта, то младшим вперед)

Сообщения CAN-шины фильтруются по Идентификатору с учетом Маски: биты 1 в Маске выбирают биты в Идентификаторе, которые должны совпадать с заданным; остальные биты в Идентификаторе произвольные. Из сообщений, прошедших фильтр, выбираются биты со StartBit длиной LenBits , результат передается в канале CAN-сенсора в виде целого числа. Биты считаются по всему сообщению, с Data[0] по Data[7].

версия <= 3.7.0 :

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-шины фильтруются по PGN: ExtendedId биты 8..25 должны совпадать с PGN, остальные биты произвольные. Из сообщений, прошедших фильтр, выбираются биты с LowBit по HighBit, результат передается в канале CAN-сенсора в виде целого числа. Биты считаются по всему сообщению, с Data[0] по Data[7].

Каждая запись массива соответствует каналу CAN сенсора с таким же индексом (см. Коды сенсоров ULUN код 5). Если режим передачи канала CAN-сенсора /sens canN#Send=Auto, то передаются только каналы CAN-сенсора с индексами, соответствующими непустым записям в массиве, и только если /can/can#Mode=Sensors.

Если нужных сообщений на шине нет, в канале CAN-сенсора передается код ошибки:
-1 – параметр не обнаружен (или устарел, прошло более 1с момента приема)
-3 – конфигурация фильтра некорректна (нужных бит нет в сообщении)

/can/canspeed

версия > 3.7.0

Парсет, выбирает параметр скорости транспортного средства для Динамических зон (см. CAS модуль | Динамические зоны ). 

Parameter

Values

Comments

CanPar

-1, 0..3

Номер параметра из таблицы /can/canpar , который передает скорость
-1 - выбор скорости отключен

Div

int >0

Делитель параметра скорости для получения скорости в км/ч

Пример настройки на скорость с CAN:

  • /can/can#Mode=Sensors Baud_Kbs=250 Silent= on
    включение опроса шины CAN, режим Sensors обязателен
  • /can/canpar 0#ExtId= on Id=00-FE-F1-00 Mask=03-FF-FF-00 StartBit= 8 LenBits=16
    прием (и отправка в сенсоре can0) параметра с шины CAN (выбран Truck FMS-Standard parameter Cruise Control/Vehicle Speed 1) 
  • /can/canspeed#CanPar=0 Div=256
    выбор вышеприведенного параметра 0 для считывания скорости, значение параметра делится на 256 для получения км/ч

  • cas/speed#... 
    настроить Динамические зоны CAS (см CAS модуль|Динамические зоны )
  • /cas/speed#Data=can
    включение в CAS Динамических зон с источником скорости CAN-шина

Для проверки работы можно смотреть сенсор 5 и через CoBench DebugString_11:

GET /s 11
11: CAS: Speed 17 (2): zR=17.0/50.0 zY=27.0/60.0

Показана текущая скорость в км/ч (<0, если не найдена), источник скорости (2) – CAN, и размеры зон – текущие/максимальные.

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

1. Убедиться, что режим отправки CAN-сенсоров Auto:

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

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

sens can0 send=auto 
[/sens/sens] Sensors:
    [ 9] can0          a   5:[0] Send=Auto


2. Установить/проверить режим CAN и требуемую скорость шины:
Проверить:

can
[/can/can] Can:
  Mode=ParsBigEnd Baud_Kbs=250 Silent= on 

Установить:

can mode=ParsBigEnd baud=250
[/can/can] Can:
  Mode=ParsBigEnd Baud_Kbs=250 Silent= on 


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

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

canpar add 0 extid=1 id=fef100 mask=ffff00 startbit=8 lenbits=16
[/can/canpar] Can Parameter:
  [  0] ExtId= on Id=00-FE-F1-00 Mask=00-FF-FF-00 StartBit= 8 LenBits=16 (Set 0*)

Проверка:

canpar
[/can/canpar] Can Parameter:
  [  0] ExtId= on Id=00-FE-F1-00 Mask=00-FF-FF-00 StartBit= 8 LenBits=16 (Set 0*)
  [  1] ExtId=off Id=00-00-03-DE Mask=00-00-07-FF StartBit=32 LenBits= 8 

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

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=ParsBigEnd baud=250 silent=off
    Ответ: 2.04(Changed): Changed
    проверка:
    Запрос: GET /can/can
    Ответ: # Mode=ParsBigEnd Baud_Kbs=250 Silent=on

  4. Выбрать CAN параметры для соответствующих CAN-сенсоров:
    включение/модификация канала can0:
    Запрос: PUT /can/canpar 0#ExtId=on Id=00-FE-F1-00 Mask=00-FF-FF-00 StartBit=8 LenBits=16
    Ответ: 2.04 Changed
    проверка канала can0:
    Запрос: GET /can/canpar 0
    Ответ: # [idx]=0 ExtId=on Id=00-FE-F1-00 Mask=00-FF-FF-00 StartBit=8 LenBits=16
    отключение канала can0:
    Запрос: PUT /can/canpar 0 del
    Ответ: 2.04 Changed

  • No labels