Кроссплатформенный логгер ЭБУ

Разработка логгера началась ещё в октябре прошло года. Тогда я чётко понимал, что надо максимально абстрагироваться от конкретной системы и сделать что-то универсальное. Основные требования к логгеру были следующие:
— реализация на базе адаптера WiFi_K-line;
— кроссплатформенный интерфейс, позволяющий работать на разных ОС;
— возможность записи логов в память.
Если по программной части WiFi адаптеров особых вопросов не возникало, то по интерфейсу отображения их был вагон и малая тележка. Основной из них: "Какую платформу выбрать?". Мысли были разные, но больше всего под данную задачу подходил WEB-интерфейс. С программированием на JavaScript и вёрсткой html, css я не был знаком, поэтому нужен был человек, который сможет в этом помочь. И в один прекрасный момент я встретил своего старого друга, который профессионально занимается вёрсткой сайтов. Рассказал ему идею в создании кросплатформенного логгера, которая ему очень понравилась, и принялись за совместную работу. Основная работа моего товарища оставляла мало свободного времени для работы над проектом, поэтому спустя примерно 3 месяца удалось всего лишь слать запросы на подключение в адаптер и получать ответ диагностики. Спустя ещё 2 месяца получилось вывести параметры диагностики протокола Euro2 на индикаторы. И тут другу прилетает большой объём работы и он говорит, что не может больше заниматься логгером… Вот так на середине пути проект оказался "на грани". Но я не привык сдаваться и решил сам разобраться (в необходимой мере) с WEB программированием и довести проект до ума. Объём работы оказался большим. Необходимо было сделать вменяемый удобный интерфейс, разобраться с организацией асинхронных запросов на сервер, научиться принимать и разбирать ответы, разобрать протоколы диагностики, организовать чтение и сохранение настроек и много другое. В общем пришлось отложить всё в сторону и углубиться в JS, html, css. Благо информации по данным языкам навалом и JS оказался простым языком с Си- подобным синтаксисом.

Так, хватит лирики, переходим к делу.) Название для логгера решил выбрать следующее: WiFi ECU Logger


Обобщённая структура представлена на следующем рисунке:

image

Основные задачи для адаптера WiFi_K-line:
— установка связи с ЭБУ;
— приём пакета диагностики от ЭБУ;
— получение AFR с WiFi_LC-1;
— разбор протокола диагностики;
— запись AFR и диагностических параметров на microSD;
— отправка AFR и диагностических параметров по WiFi;
Основные задачи для WEB-страницы WiFi ECU Logger:
— чтение/отправка на адаптер WiFi_K-line настроек пользователя;
— отправка запроса для пакета диагностики;
— приём пакета диагностики;
— разбор протокола диагностики;
— отображение параметров на индикаторах.
Такая концепция позволяет разделить логгер на две части: первая на базе адаптера WiFi_K-line, которая позволяет автоматически подключиться к ЭБУ и писать логи на microSD; вторая на базе WEB-страницы, которая позволяет мониторить параметры диагностики на всех устройствах, где есть WiFi и WEB- браузер! Для реализации задуманного пришлось добавить настройки адаптера WiFi_LC-1, которые доступны по его адресу:

1 

Теперь есть возможность запуска адаптера сразу в режиме точки (актуально для тех, кто не пользуется WiFi_K-line). Настройки сохраняются в памяти устройства и считываются при запуске. При входе на WEB — страницу адаптера WiFi_K-line появляется три кнопки:

2

WiFi ECU Logger — запуск страницы логгера;

Fimware update — обновление прошивки адаптера;
Logger update — обновление логгера.
Страница логгера и прошивка адаптера записывается "по воздуху" в память ESP, никаких лишних манипуляций делать не надо. При нажатии на кнопку WiFi ECU Logger в браузере загружается страница логгера.

DSCN3986

Познакомится с работой интерфейса можно в следующем видео и по тексту ниже:  

Сверху страницы имеется 4 элемента:

1

1 — кнопка отображения/скрытия меню с выбором контролируемых параметров;
2 — строка состояния подключения к ЭБУ;
3 — строка состояния подключения ШДК;
4 — кнопка отображения/скрытия меню с настройками логгера.
Меню с настройками логгера имеет следующий вид:  

image

Автозапуск — автоматическое подключение к ЭБУ при подаче питания. Если неактивен, то подключение выполняется при загрузке WEB — страницы.
Диагностика в OLT — позволяет мониторить параметры диагностики в режиме ОНЛАЙН настройки ЭБУ.
Демонстрация работы в режиме ОНЛАЙН настройки в ИОН:

Запись на microSD — если активен, то выполняется запись логов в формате .csv на microSD.
Период запросов на ЭБУ — период отправки запросов диагностики.
Период запросов на индикаторы — период запросов пакета диагностики на WiFi_K-line для отображения в интерфейсе страницы (обновление интерфейса).
Размер флагов — размер индикаторов флагов (1-10).
Размере индикаторов — размер индикаторов параметров (1-10).
Протокол диагностики — выбор протокола диагностики.
В настоящий момент доступно 3 типа диагностики для kwp2000: Euro2, TRS, TRS Long.
Кнопки Применить и Сохранить.
Меню с выбором контролируемых параметров имеет следующий вид:

image image

В верхней строке отображается активный протокол диагностики, затем размещена кнопка "Выбрать все/очистить". После идут "Флаги режимов", а затем "Параметры". Первый параметр — Контроллер ШДК LC-1 AFR, затем идут параметры протокола диагностики. Меню динамично и его состав меняется в соответствии с выбранным протоколом диагностики. Активация чекбокса добавляет выбранный параметр в контейнер флагов или параметров. Флаги отображаются в "квадратных" индикаторах, цвет которых меняется от состояния. Параметры отображаются на стрелочных индикаторах, в которых отображается краткое название, значение и единица измерения.
Блоки индикаторов флагов и параметров динамичны и их размеры меняются в соответствии с количеством и размером индикаторов.
Пример отображения индикаторов параметров с размером 4 на телефоне Redmi 4x в вертикальном положении:

Screenshot-2019-06-20-20-16-29-554-com-android-chrome

При перевороте интерфейс автоматически подстраивается под размер экрана:

  Screenshot-2019-06-20-20-17-15-639-com-android-chrome

На ПК с разрешением 1920х1024 4 размер индикаторов параметров и флагов выглядит следующим образом:  


image

Пример отображения индикаторов параметров с размером 10 на телефоне Redmi 4x в вертикальном положении:  

Screenshot-2019-06-20-20-20-31-065-com-android-chrome

В горизонтальном:

Screenshot-2019-06-20-20-23-39-586-com-android-chrome


10 размер индикаторов параметров и флагов на ПК:

 10-2

С интерфейсом познакомились, теперь перейдём к записи логов. Для возможности записи на microSD необходим модуль CAN + microSD, о котором рассказал в прошлой статье. Адаптер способен работать с картами типа SD и SDHC до 16 Гб.
Интерфейс работы — SPI.
Файловая система- FAT16.
Формат записи логов — CSV.
При успешном подключении к ЭБУ адаптер WiFi_K-line выполняет попытку подключения к microSD и создаёт новый файл. У ESP нет на борту RTC, а синхронизацию времени через браузер посчитал глупостью, поэтому название логов решил сделать от типа диагностики, плюс порядковый номер. Пример названия для TRS Long представлен на рисунке:

image


Названия параметров в логах отображаются кириллицей, как и на WEB-странице. Пример записанного на столе, в течение часа, лога с периодическим "кручением" ручки потенциометра LC-1 и ДПДЗ в программе EcuEdit:

1

Приближая масштаб, можно увидеть переходный процесс "кручения":

2


Адаптер спокойно пережил стресс-тест в течение 3 часов. Дальше стало лень ждать. Размер файла лога при длинной диагностике ТРС был более 10 Мб.


Вывод.

Таким образом, для адаптера WiFi_K-Line разработан кросплатформенный логгер ЭБУ "WiFi ECU Logger", который позволяет:
— автоматически подключаться к ЭБУ при подаче питания;
— мониторить параметры при ОНЛАЙН настройке;
— записывать AFR с контроллера ШДК и параметры ЭБУ на microSD;
— отображать на любом устройстве с WiFi и WEB — браузером AFR и параметры ЭБУ, при этом одновременно подключенных устройств может быть несколько.
В настоящий момент доступно 3 типа диагностики для kwp2000: Euro2, TRS, TRS Long.

Отзывы (0)

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
   Плохо           Хорошо