Работа с CAN-шиной автомобиля Volvo FH
Недавно мы столкнулись с интересной задачей при подключении CAN-шины на автомобиле VOLVO FH 2018 года.

В целом, эта задача достаточно тривиальная, но в этот раз пришлось действительно повозиться, проявить смекалку, мастерство и весь наш 15-летний опыт, чтобы дать клиенту то, что он хочет.

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

Ну а здесь про сам кейс.
ДАНО

Клиент с автомобилем Volvo FH 2018 года выпуска, который очень хочет получить данные по топливу, не устанавливая врезной датчик уровня топлива в бак.

Трекер производителя Navtelecom Smart версии 2435.
РЕШЕНИЕ

Поиск расхода топлива CAN


Приступим к поиску необходимого нам расхода топлива.

Важный момент: при анализе потока данных и поиска параметров двигатель автомобиля должен быть заведен!

Обратимся все к FMS-документации и найдем группу параметров, в которой должен располагаться расход топлива.

В документации есть две группы (PGN), которые отвечают за расход топлива:

  • Fuel Consumption (PGN FEE9) - суммарное количество топлива, израсходованного во время эксплуатации автомобиля.

  • High Resolution Fuel Consumption (PGN FD09) - суммарное израсходованное топливо с высоким разрешением.
Ищем указанные идентификаторы в шине CAN при помощи CAN Spy.

Запустим трассировку сообщений:
Как видно на скрине выше, идентификатор с номером PGN FEE9 вообще отсутствует в потоке данных CAN.

О чем это говорит?

Это говорит о том, что в данной точке подключения (витой паре) параметр расхода топлива с номером PGN FEE9 не передается.

Основная причина - отсутствие FMS-шлюза на этом автомобиле.

Это важный блок, который аккумулирует в себе все описанные в FMS документации параметры. А наличие этого блока позволяет получить полный пул параметров CAN.

Попробуем поискать расход топлива в другом идентификаторе PGN FD09 при помощи той же трассировки сообщений:
Нашли идентификатор 18FD0900.

Это уже радует.

Но обратите внимание, что передается в байтах этого кадра c D0 по D7?

Везде FF, FF, FF, FF, FF, FF, FF, FF.

Это говорит о том, что данные о расходе топлива отсутствуют и в этом кадре.


Вот мы и нашли причину, почему конфигурационный файл производителя GPS-оборудования (которым изначально пытался воспользоваться мастер) не может считать расход топлива. Показания суммарного расхода топлива просто отсутствует в CAN-шине автомобиля.

Собственно, именно поэтому задача и попала в категорию нестандартных кейсов :)

Что же нам делать дальше?

Клиенту ведь необходимо решение с расходом топлива CAN для отображения в сводных отчетах Walon. А сдаваться не в наших правилах!

Пробуем другие варианты

Мы потратили некоторое время на изучение всех возможных параметров в FMS-документации, и нас заинтересовал PGN со значением FEF2 (Fuel Rate) - количество топлива, потребляемого двигателем в единицу времени (л/час).
Ищем указанный идентификатор (FEF2) в шине CAN при помощи CAN Spy.

Заводим двигатель автомобиля и запускаем трассировку сообщений:

Нашли такой идентификатор 18FEF200.

Запускаем в CAN Spy анализатор сообщения. Далее применяем указанный в FMS-документации коэффициент 0,05. Через маску данных мы фильтруем лишние, не нужные нам байты данных и оставляем для анализа только 1 и 2 байт (M0 и M1 в конфигураторе CAN Spy).
На скрине выше видна динамика расход топлива в л/час.

Параметр расхода топлива в л/ч присутствует в CAN-шине автомобиля, а значит, мы можем его использовать для расчета суммарного расхода топлива.

Но как из л/ч сделать суммарный расход топлива в литрах?
Без математики никуда

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

Вот здесь нам и пригодиться функция Complex Events производителя Navtelecom, которая позволит нам самим написать нужные нам формулы и задать логику работы GPS-устройства.

Формула будет иметь следующий вид:

Fuel Rate*0,05 / 3600 = литры

  • Fuel Rate - это переменная, которая будет обращаться к идентификатору 18FEF200.

  • 0,05 - коэффициент, который необходим для конвертации значения переменной в единицу измерения л/ч.

  • 3600 сек - количество секунд в 1 часе.

Программа будет работать циклично, с периодом ровно 1 сек.

Используя эту формулу, мы сможем рассчитать количество топлива, потребляемое двигателем за 1 секунду времени.

Далее, подсчитанное значение мы складируем в новую переменную, где будет считаться общий расход топлива с накоплением. Скрипт будет выполнять такую операцию ровно каждую секунду.

Таким образом, накопленное значение расхода топлива будет передаваться в систему мониторинга Wialon по заданному в конфигураторе периоду времени.

Пример блок-схемы функции Complex Events на скрине ниже:
Вот собственно, и всё :)

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

Далее мы обрабатываем этот параметр в Wialon, создаём на его основе соответствующий датчик, и клиент в отчёте видит всё, что он и хотел.
ИТОГО

Благодаря возможностям современных GPS-устройств и умению специалистов компании Wialon Operator работать с технологиями CAN, клиент получил в отчетах необходимый ему суммарный, накапливаемый расход топлива (как если бы он изначально был в CAN-шине автомобиля).

Считывание данных с CAN-шины автомобиля в режиме реального времени с помощью специального GPS-оборудования и системы мониторинга Wialon, позволяет удаленно отслеживать всю необходимую информацию с любых штатных датчиков, формировать отчеты, выводить на экран диспетчера аналитику, получать оповещения по различным информационным каналам (SMS, email, telegram).

Клиент также получил актуальную информацию о пробеге, температуре двигателя, использовании водителем педали тормоза и акселератора, круиз-контроля. Фиксируются факты перегрева двигателя и небрежной эксплуатации автомобиля.