По логике вещей канальный уровень содержит в своих данных протоколы более высокого уровня. В I/K-bus так и происходит, только в нем нет протоколов сетевого и транспортного уровней на подобие TCP/IP. В кадре нигде нет информации об адресе сети, но межсетевое взаимодействие возможно. Выполняется оно посредством шлюза, который выполнен в блоке комбинации приборов. Суть работы шлюза проста — он знает в какой сети расположен тот или иной блок, в соответствии с этим пересылает кадр в другую сеть, если отправитель и получатель находятся в разных. Таким образом обеспечивается межсетевое взаимодействие на канальном уровне будто это единый сегмент сети. Рисунок ниже иллюстрирует подключение сетей в общей системе взаимодействия блоков управления.
Следует уточнить, что левая схема справедлива для кузовов e38 и e39, e53 с блоком комбинации приборов повышенной функциональности (IKE high). В e39, e53 с базовым блоком комбинации приборов (KOMBI), а также в e46 шины I-bus и K-bus физически объединены в одну.
D-bus — это диагностическая шина (k-line). По ней подключается диагностическое оборудование. Эта шина не имеет физического подключения ко всем блокам управления, но через шлюз в IKE/KOMBI задача взаимодействия обеспечивается в полной мере. Для примера блок навигации подключён только к I-bus, но с помощью сервисного/диагностического оборудования мы можем считывать сервисную информацию, ошибки и производить кодирование.
То что содержится в полезной нагрузке кадра I/K-bus, я буду называть протоколом прикладного уровня. В основе своей он состоит из двух частей. MSG ID — идентификатор сообщения, занимает один символ. MSG DATA — информация дополняющая сообщение, может отсутствовать вовсе или занимать до 32 символов. На следующем рисунке показано, как это выглядит:
Так как символ состоит из 8 бит, получается возможных вариаций команд (CMD ID) 256. Немало, наверное даже с запасом, и мне известны далеко не все. Но на некоторых ключевых я остановлю внимание.
Сообщение с идентификатором MSG ID = 01 — запрос состояния устройства. Прежде чем взаимодействовать с каким-либо устройством, необходимо убедиться в его наличии и исправности. Эта команда отправляется устройству, в состоянии которого необходимо убедиться. При этом поле MSG DATA не заполняется. Чтобы информация о состоянии устройств была актуальна все время, команда повторяется переодически. Рассмотрим этот вид сообщения на примере кадра 68 03 18 01 72 (здесь и далее содержимое кадра обозначаться будет цифрами в шестнадцатеричном исчислении). Кадр отправляется от радиоприёмника (идентификатор устройства 68) к CD чейнджеру (18) с запросом о состоянии (идентификатор сообщения MSG ID = 01). CD чейнджер, если он есть и исправен, отвечает сообщением, подтверждающем статус готовности (MSG ID = 02). Полный фрагмент ответного кадра 18 04 FF 02 00 E1. Ответ вещается всем в локальную сеть, так как адрес получателя FF. Здесь помимо идентификатора сообщения передаются дополнительные данные — MSG DATA = 00. Если значение данных равно 01, то это означает что устройство только включилось и это его первое сообщение о готовности. Такой вариант диалога наблюдается между многими блоками управления.
Управление воспроизведением музыкальных треков, радиостанций или изменение уровня громкости возможно как с рулевого колеса так и с центральной консоли. Эти органы управления передают информацию на радиоприёмник по той же I-bus. Сообщения регулировки уровня громкости идентифицируется номером 32, а в данных содержится управляющая информация. Ниже приведена структура этого сообщения.
Данные состоят из одного байта, в котором синий бит отвечает за направление изменения уровня: 0 — убавить, 1 — добавить. А зелёные биты показывают силу относительного изменения от 1 до 15 дискретных уровней. Например кадр, отправляемый при нажатии клавиши «+» на рулевом колесе, выглядит так 50 04 68 32 11 1F. Это сообщение заставляет радиоприёмник увеличить громкость на 1 дискретный уровень. Если резко крутонуть барашку управления громкости на центральной консоли по часовой стрелке, то в шину будет отправлен кадр C0 04 68 32 91 0F. Здесь мультиинформационный дисплей сообщает о требовании увеличить громкость на 9 дискретных уровней.
Для кнопочного управления характерны три вида сообщения: кнопка нажата, кнопка удерживается длительное время и кнопка отпущена. В данных сообщения, кроме состояния кнопки, передаётся её идентификатор. Например сообщение с MSG ID = 3B означает, что передаётся информация об изменении состояния кнопок на рулевом колесе, отвечающих за управление радиоприёмником и телефоном. MSG DATA состоит из одного символа и содержит информацию о кнопке, подвергшейся воздействию.
В битах синего цвета обозначается кнопка. Если это 0-й бит, то было воздействие на кнопку «поиск вверх». Если 1-й бит, то кнопка «R/T». Если 3-й бит, то кнопка «поиск вниз». В битовой области зелёного цвета обозначается состояние кнопки. Если все биты равны 0, то это значит что кнопка нажата. Если 4-й бит равен 1, то было длительное удержание кнопки. Если 5-бит равен 1, то кнопка была отпущена. Рассмотрим ситуацию, когда мы переключаем музыкальный трек на следующий при нажатии кнопки на руле. В шину будет послано с небольшим интервалом два кадра: 50 04 68 3B 01 06 и 50 04 68 3B 21 26. Первый кадр сообщает, что была нажата кнопка «поиск вверх». Второй сообщает, что была отпущена кнопка «поиск вверх».
Для кнопочного управления на центральной консоли, будь то мультиинформационный дисплей или бортовой монитор, подход тот же — передаётся информация об идентификаторе кнопки и её состоянии. Но структура сообщения построена по иному.
Теперь рассмотрим в общем как устроена информационно-развлекательная система на автомобилях e38, e39, e53. А именно та её часть, отвечающая за воспроизведение музыки и радио. На рисунке ниже я представил схематично устройство этой части системы.
Центральную роль тут занимает радиоприёмник (RAD). Дело в том, что помимо функций приёма эфирных станций, этот блок выполняет функции усилителя. Если автомобиль не оборудован бортовым монитором, то в корпусе радиоприёмника располагается кассетный или CD проигрыватель. В таком варианте он располагается в центральной консоли. Если же автомобиль укомплектован бортовым монитором, то радиоприёмник располагается в багажном отделении и дооборудован аудио входом для кассетного проигрывателя. Кассетный проигрыватель вмонтирован в бортовой монитор.
Акустическая система может быть в трёх исполнениях: простая стереосистема, Hi-Fi или Top Hi-Fi. В первом случае радиоприёмник напрямую подключён к динамикам. В Hi-Fi акустической системе динамиков больше и они подключены к радиоприёмнику через дополнительный усилитель. Такой усилитель помимо повышения мощности аудио сигнала выполняет функции активной эквализации под автомобильную акустику и разделяет звук на диапазоны для соответствующих динамиков. Система top Hi-Fi ещё круче. В ней помимо всего выше перечисленного присутствует сабвуфер, а силитель выполняет эквализацию в зависимости от скорости автомобиля, тем самым компенсируется шумность салона. Так же система дополнена эффектом объёмного звучания.
Отображение информации о выбранном источнике воспроизведения, номере трека, частоте радиостанции и прочее, а также управление выполняется на центральной консоли посредством бортового монитора или мультиинформационного дисплея или чего-то ещё. Чтобы не отвлекаться от управления автомобилем, управление воспроизведением аудио может быть выполнено на многофункциональном рулевом колесе (MFL), о котором упоминалось выше.
CD-чейнджер (CDC) выполнен как дополнение к радиоприёмнику. Обмен управляющими командами и ответами производится только между радиоприёмником и CD-чейнджером. Делается это по I-bus, как вино на схеме. Аудио сигнал в аналоговой форме передаётся на линейный вход радиоприёмника, где усиливается и поступает далее на акустическую систему. Если акустическая система top Hi-Fi, то сигнал от CDC подаётся напрямую к усилителю в цифровой форме.
Теперь рассмотрим подробнее непосредственно сам диалог CD-чейнджера и радиоприёмника по шине I/K-bus. Как было описано ранее, радиоприёмник переодически отсылает запросы о статусе CD-чейнджера. Если такой присутствует в автомобиле и он исправен, то незамедлительно в шину будет отослан ответ о присутствии. Получив ответ, радиоприёмник формирует в меню на центральной консоли дополнительный режим воспроизведения, в котором источником является CD-чейнджер. Водителю остаётся только нажать соответствующую кнопку, чтобы радиоприёмник запустил воспроизведение с CD-чейнджера, получил информацию о загруженном компакт диске, номере трека и отобразил эту информацию на центральной консоли.
Управление воспроизведением CD-чейндра выполняется сообщением с идентификатором MSG ID = 38. Структура сообщения следующая:
Как видно, сообщение простое по структуре и содержит два ключевых параметра: CMD и ARG. В CMD передаётся код требуемого режима воспроизведения, а в ARG дополнительные данные. Для наглядности и простоты понимания, ниже представлена таблица, в которую сведены мне известные команды:
Таким образом выполняется управление CD-чейнджером, а тот в свою очередь поддерживает обратную связь сообщениями с идентификатором 39:
В данном сообщении передаётся состояние CD-чейнджера и его режим воспроизведения. Более подробно о каждом символе сообщения в следующей таблице:
Следует отметить, что есть команды управления от радиоприёмника, на которые CD-чейнджер должен отсылать незамедлительный ответ, как подтверждение принятия команды, иначе команды будут отправляться по таймауту 500 мс повторно. К таким командам относятся: «начать воспроизведение», «остановить воспроизведение», «перемотка», «режим случайного выбора треков» и «режим сканирования треков». Получив команду с соответствующим идентификатором CMD, CD-чейнджер на требуемый запрос изменяет индикатор состояния и отсылает сообщение радиоприёмнику. В случае команды «перемотка» индикатор остаётся в режиме простого проигрывания, только меняется статус на «FAST FORWARD» или «REWIND». Радиоприемник успокаивается, что команда принята успешно и перестаёт бомбить повторными сообщениями.
Далее хочу привести лог трафика I/K-bus, где к шине подключены три устройства: мультиинформационный дисплей, радиоприемник и программный эмулятор CD-чейнджера. Эту простую сеть я собрал у себя на столе, чтобы проводить анализ работы взаимодействия блоков управления и отлаживать программный CD-чейнджер.
Цветом здесь выделены сообщения управления CD-чейнджером и ответы на них.
- Желтый — это переключение на предыдущий трек.
- Зеленый — включение и выключение перемотки
- Синий — включение и выключение режима произведения треков в случайном порядке.
Подводя итог, хочу сказать, что применив данный протокол на простейшем программно-аппаратном решении, можно «легально» вклиниться в штатную информационно-развлекательную систему автомобиля. Как самый простой пример создать свой функциональный по современным меркам медиа проигрыватель, который будет получать управляющие команды с рулевого колеса, центральной консоли и издавать звучание по штатной акустической системе.
Испльзованные источники:
- Bus System Troubleshooting, 2001
- I-BUS Inside, Franck Touanen, 2002
Комментарии (9)
gryberg
14.06.2016 15:38Недавно занимался ревер-инжинерингом протокола P-Bus от того же Pioneer и даже «вклинился» в штатную систему. Протокол очень похожий, кстати, да и на некоторых e38 ставились именно P-Bus changer-ы
kvova
14.06.2016 18:08Про P-Bus changer-ы не слышал. В BMW WDS документации P-Bus называется «Переферийная шина», используется на кузовах e38, e39, e53. С помошью нее осуществляется коммуникация основного модуля (его функциональной части ZKE) с модулями памяти положения сидений, подъемно-сдвижной крыши, двери водителя, двери пассажира.
gryberg
14.06.2016 18:13Я сейчас вряд ли найду ссылку, про p-bus от BMW я тоже читал и «I-BUS Inside, Franck Touanen, 2002» тоже.
В общем там утверждалось что на e38 есть два типа CD-Changer-ов. Один Pioneer-P второй Pioneer-PI, вот какой-то из них полностью совпадал по протоколу с тем, что я эмулировал и туда даже M30 можно поставить, который стоит на Renault Espace.
ну вообще P-Bus этот эказался обычным three-wire SPI с некоторыми костылями. Его AVR-ка вполне читает штатным SPI устройством.
alex_kag
14.06.2016 18:09А эта статья справедлива только для BMW, или для французов (ситроен) она то-же справедлива? А так-же интересует, каким адаптером можно подключиться к тем разъемам?
kvova
14.06.2016 18:24Про ситроен не могу ничего сказать, наверняка существует сеть коммуникаций ЭБУ и там, но на другом стандарте. I-bus, K-bus, k-line, LIN-bus на физическом уровне совместимы, поэтому можно использовать один и тот же трансивер во всех случаях. Первое время я использовал USB адаптер K-L-линии BM9213, когда просто снифил трафик. Сей час для raspberry собрал трансивер на tja1020, работает без нареканий.
DAT540
В радиомодуле BM54 появилось расширение данного протокола, при подключении CDC 7го и выше годов, умеющего играть MP3 диски, данное расширение обеспечивает передачу данных о MP3 тэгах. Вот хотелось бы найти информацию об этом расширении. Ну или хотя бы машину старше 7го года и помониторить шину на предмет протоколирования этого протокола. Ни у кого нет инфы?
kvova
Мне никогда не попадались такие CDC, только китайские эмуляторы, которые воспроизводят MP3 c USB носителя. Но они шлют тэги от имени телефонного аппарата на приборную панель.
DAT540
Если поискать, можно найти на разборках, но барыги знают про них и цену ломят совершенно не гуманную. Либо ebay, но там они тоже не дешевы.