Модуль CAN обеспечивает наблюдение за сообщениями на CAN-шине, выделение интересующих CAN-параметров и отправку их в сенсорах.
Конфигурация модуля:
/can/can
Парсет, задает режим работы с CAN-шиной:
Parameter | Values | Comments |
Mode | Off, | Режим работы подсистемы CAN устройства (TG8V). |
Mode | Off, | Режим работы подсистемы CAN Тага. |
Mode | Off, Sensors, Listen, Test, Echo | Режим работы подсистемы CAN Тага. Off - выключено |
Baud_Kbs | 100..1000 | Скорость шины CAN в килобит/с |
Silent | on, off | При Mode=Sensors режим CAN-драйвера Silent (неподтверждение сообщений) |
/can/canpar
Парсет-массив, задает фильтры для выделения CAN-параметров. Содержит 4 записи
версия > 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 | |
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 сенсора с таким же индексом (см. Коды сенсоров ULUN код 5). Если режим передачи канала CAN-сенсора /sens canN#Send=Auto, то передаются только каналы CAN-сенсора с индексами, соответствующими непустым записям в массиве, и только если /can/can#Mode=Sensors.
Если нужных сообщений на шине нет, в канале CAN-сенсора передается код ошибки:
-1 – параметр не обнаружен (или устарел, прошло более 1с момента приема)
-3 – конфигурация фильтра некорректна (нужных бит нет в сообщении)
/can/canspeed
версия > 3.7.0
Парсет, выбирает параметр скорости транспортного средства для Динамических зон (см. CAS модуль | Динамические зоны )
Настройка через CLI
sens
[/sens/sens] Sensors:19 total, 11 activeУбедиться, что режим отправки CAN-сенсоров Auto:
...
[
...
0]
...
in1
...
-12:[0]
...
Send=Off
...
[
...
1]
...
in2
...
-12:[1]
...
Send=Off
.
Parameter | Values | Comments |
CanPar | -1, 0..3 | Номер параметра из таблицы |
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 CruiseControl/VehicleSpeed 1)/can/canspeed#CanPar=0 Div=256
выбор вышеприведенного параметра 0 для считывания скорости, значение параметра делится на 256 для получения км/чcas/speed#...
настроить Динамические зоны CAS (см CAS модуль|Динамические зоны )/cas/speed#Data=can
включение в CAS Динамических зон с источником скорости CAN-шина
Для проверки работы можно смотреть сенсор 5 и через CoBench DebugString_11:
| Code Block |
|---|
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:
| 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 |
...
[
...
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:
...
При необходимости изменить режим на Auto:
| Code Block |
|---|
sens can0 send=auto [/sens/sens] Sensors: |
...
[ 9] |
...
can0 a 5:[0] Send=Auto |
2. Установить/проверить режим CAN и требуемую скорость шины:
Проверить:
| Code Block |
|---|
can |
...
[/can/can] Can: |
...
Mode= |
...
ParsBigEnd Baud_Kbs=250 Silent= on |
...
Установить:
| Code Block |
|---|
can mode=ParsBigEnd baud=250 [/can/can] Can: Mode= |
...
ParsBigEnd Baud_Kbs=250 Silent= on |
3. Выбрать CAN параметры для соответствующих CAN-сенсоров:
Добавление фильтра для канала 0:
| Code Block |
|---|
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*) |
Проверка настроек фильтра:
| Code Block |
|---|
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 |
Parameter:
/0PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)
/2PGN=65265(0x0FEF1) HighBit=52 LowBit=48 (Set 0*)
2 total
Удаление фильтра для канала 2:
| Code Block |
|---|
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=
...
ParsBigEnd baud=250 silent=off
Ответ:2.04(Changed): Changed
проверка:
Запрос:GET /can/can
Ответ:# Mode=
...
ParsBigEnd Baud_Kbs=250 Silent=
...
onВыбрать 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