Кроссплатформенный логгер ЭБУ
Разработка логгера началась ещё в октябре прошло года. Тогда я чётко понимал, что надо
максимально абстрагироваться от конкретной системы и сделать что-то универсальное.
Основные требования к логгеру были следующие:
— реализация на базе адаптера WiFi_K-line;
—
кроссплатформенный интерфейс, позволяющий работать на разных ОС;
— возможность записи логов в память.
Если по программной части WiFi адаптеров особых вопросов не возникало, то по интерфейсу
отображения их был вагон и малая тележка. Основной из них: "Какую платформу выбрать?". Мысли были разные, но
больше всего под данную задачу подходил WEB-интерфейс. С программированием на JavaScript и вёрсткой html,
css я не был знаком, поэтому нужен был человек, который сможет в этом помочь. И в один прекрасный момент я
встретил своего старого друга, который профессионально занимается вёрсткой сайтов. Рассказал ему идею в
создании кросплатформенного логгера, которая ему очень понравилась, и принялись за совместную работу.
Основная работа моего товарища оставляла мало свободного времени для работы над проектом, поэтому спустя
примерно 3 месяца удалось всего лишь слать запросы на подключение в адаптер и получать ответ диагностики.
Спустя ещё 2 месяца получилось вывести параметры диагностики протокола Euro2 на индикаторы. И тут другу
прилетает большой объём работы и он говорит, что не может больше заниматься логгером… Вот так на середине
пути проект оказался "на грани". Но я не привык сдаваться и решил сам разобраться (в необходимой мере) с WEB
программированием и довести проект до ума. Объём работы оказался большим. Необходимо было сделать вменяемый
удобный интерфейс, разобраться с организацией асинхронных запросов на сервер, научиться принимать и
разбирать ответы, разобрать протоколы диагностики, организовать чтение и сохранение настроек и много другое.
В общем пришлось отложить всё в сторону и углубиться в JS, html, css. Благо информации по данным языкам
навалом и JS оказался простым языком с Си- подобным синтаксисом.
Так, хватит лирики, переходим к делу.) Название для логгера решил выбрать следующее: WiFi ECU Logger
Обобщённая структура представлена на следующем
рисунке:
Основные задачи для адаптера 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, которые доступны
по его адресу:
Теперь есть возможность запуска адаптера сразу в режиме точки (актуально для тех, кто не пользуется WiFi_K-line). Настройки сохраняются в памяти устройства и считываются при запуске. При входе на WEB — страницу адаптера WiFi_K-line появляется три кнопки:
WiFi ECU Logger — запуск страницы логгера;
Fimware
update — обновление прошивки адаптера;
Logger
update — обновление логгера.
Страница логгера и прошивка адаптера записывается "по воздуху" в память ESP, никаких лишних
манипуляций делать не надо.
При нажатии на кнопку WiFi ECU Logger в браузере загружается страница логгера.
Познакомится с работой интерфейса можно в следующем видео и по тексту ниже:
Сверху страницы имеется 4 элемента:
1 — кнопка отображения/скрытия меню с выбором контролируемых
параметров;
2 —
строка состояния подключения к ЭБУ;
3 —
строка состояния подключения ШДК;
4 —
кнопка отображения/скрытия меню с настройками логгера.
Меню с настройками логгера имеет следующий вид:
Автозапуск — автоматическое подключение к ЭБУ при подаче питания. Если неактивен, то
подключение выполняется при загрузке WEB — страницы.
Диагностика в OLT — позволяет мониторить параметры диагностики в режиме ОНЛАЙН настройки
ЭБУ.
Демонстрация работы в режиме
ОНЛАЙН настройки в ИОН:
Запись на
microSD — если активен, то выполняется запись логов в формате
.csv на microSD.
Период запросов на ЭБУ — период отправки запросов диагностики.
Период
запросов на индикаторы — период запросов пакета диагностики на
WiFi_K-line для отображения в интерфейсе страницы (обновление интерфейса).
Размер
флагов — размер индикаторов флагов (1-10).
Размере
индикаторов — размер индикаторов параметров (1-10).
Протокол
диагностики — выбор протокола диагностики.
В настоящий момент доступно 3 типа диагностики
для kwp2000: Euro2, TRS, TRS Long.
Кнопки Применить и Сохранить.
Меню с выбором контролируемых параметров имеет следующий вид:
В верхней строке отображается активный протокол диагностики, затем
размещена кнопка "Выбрать все/очистить". После идут "Флаги режимов", а затем "Параметры". Первый параметр —
Контроллер ШДК LC-1 AFR, затем идут параметры протокола диагностики. Меню динамично и его состав меняется в
соответствии с выбранным протоколом диагностики. Активация чекбокса добавляет выбранный параметр в контейнер
флагов или параметров. Флаги отображаются в "квадратных" индикаторах, цвет которых меняется от состояния.
Параметры отображаются на стрелочных индикаторах, в которых отображается краткое название, значение и
единица измерения.
Блоки индикаторов
флагов и параметров динамичны и их размеры меняются в соответствии с количеством и размером
индикаторов.
Пример отображения индикаторов параметров с
размером 4 на телефоне Redmi 4x в вертикальном положении:
При перевороте интерфейс автоматически подстраивается под размер экрана:
На ПК с разрешением 1920х1024 4 размер индикаторов параметров и флагов выглядит следующим образом:
Пример отображения индикаторов параметров с размером 10 на телефоне Redmi 4x в вертикальном положении:
В горизонтальном:
10 размер индикаторов параметров и флагов на ПК:
С интерфейсом познакомились, теперь перейдём к записи логов.
Для возможности записи на microSD необходим модуль CAN + microSD, о котором рассказал в
прошлой статье.
Адаптер способен работать с картами типа SD и SDHC до 16
Гб.
Интерфейс работы — SPI.
Файловая система- FAT16.
Формат записи логов — CSV.
При успешном подключении к ЭБУ адаптер WiFi_K-line выполняет попытку подключения к microSD и
создаёт новый файл. У ESP нет на борту RTC, а синхронизацию времени через браузер посчитал глупостью,
поэтому название логов решил сделать от типа диагностики, плюс порядковый номер. Пример названия для TRS
Long представлен на рисунке:
Названия параметров в логах отображаются кириллицей, как и на WEB-странице. Пример записанного на столе, в течение часа, лога с периодическим "кручением" ручки потенциометра LC-1 и ДПДЗ в программе EcuEdit:
Приближая масштаб, можно увидеть переходный процесс "кручения":
Адаптер спокойно пережил стресс-тест в течение 3 часов. Дальше стало лень ждать. Размер файла
лога при длинной диагностике ТРС был более 10 Мб.
Вывод.
Таким образом, для адаптера WiFi_K-Line разработан
кросплатформенный логгер ЭБУ "WiFi ECU Logger", который позволяет:
— автоматически подключаться к ЭБУ при
подаче питания;
— мониторить
параметры при ОНЛАЙН настройке;
—
записывать AFR с контроллера ШДК и параметры ЭБУ на microSD;
— отображать на любом устройстве с WiFi и
WEB — браузером AFR и параметры ЭБУ, при этом одновременно подключенных устройств может быть
несколько.
В настоящий момент доступно 3 типа диагностики для kwp2000: Euro2, TRS, TRS Long.