В надежде избавиться от ошибки CAN «нет сообщения», которую не могут/не хотят решить даже инженеры BMW в Мюнхене
На моём BMW F30 осталась одна постоянная информационная ошибка, от которой не избавляет даже обсессивно-компульсивное расстройство. Компания BMW также махнула на это рукой, как описано в бюллетене NHTSA: https://static.nhtsa.gov/odi/tsbs/2013/MC-10149299-9999.pdf
CDA904 Нет сообщения (статус, трейлер, 0x2E4), приёмник DME, передатчик AHM
Не могли бы вы подсказать мне, в каком направлении двигаться? Какой идентификатор сообщения CANBUS мне нужно отслеживать? Я зашёл в тупик.
Предыстория: К автомобилю никогда не подключался прицеп, поэтому модуль прицепа (AHM) отсутствует. Возможно, некоторое время назад я случайно запрограммировал некоторые или все блоки управления с помощью VO/FA (заказа на транспортное средство), содержащего код «3AC». Это добавляет в программное обеспечение автомобиля модуль прицепа. В некоторых блоках управления были изменены настройки, и они начали ожидать связи с модулем AHM (блоком управления прицепом).
Вкратце о проблеме: В памяти ошибок ЭБУ DME есть указанная выше ошибка. Похоже, это указывает на то, что DME (или другой ЭБУ, с которым взаимодействует DME) ожидает от AHM сообщения о том, что «я здесь, жив и т. д.». Очевидно, что физически AHM не может отправлять какие-либо сообщения по CAN-шине.
Автомобиль и его сеть CANBUS: BMW F30, 2012, 328i, двигатель N26. DME подключен к PT_CAN(1) и PT-CAN2 (резервный канал) с пропускной способностью 500 кбит/с. Он также подключен к FlexRay (кажется, 1 Мбит/с)
PT-CAN(1) шина соединяет DME с FEM (корпусом) и BKOMBI (кластером). FEM и KOMBI — это конечные узлы с сопротивлением 120 Ом каждый.
PT-CAN2 соединяет DME с EGS (трансмиссией) и GWS (переключателем выбора передач).
FlexRay связывает DME с DSC (системой динамической стабилизации), EPS (системой рулевого управления), ICM (шасси).
AHM (прицепной модуль, при наличии физических возможностей, будет подключаться к сети K-CAN2, которая связывает REM (задний электронный модуль) с некоторыми другими ECU.
Я думаю, что ZGM (шлюз ЭБУ) подключается ко всем ЭБУ через все сети.
Что я уже сделал, но это не сработало:
-
Когда я воспользовался программным обеспечением для диагностики BMW ISTA+ (которым пользуются все дилеры BMW) для устранения этой конкретной ошибки, мне предложили повторно инициализировать FlexRay. (и другие CAN-шины?)
-
Перекодировал все блоки управления с помощью заводского VO/FA, в котором никогда не было кода прицепа AHM 3AC, чтобы отключить все настройки, связанные с AHM.
-
Все ЭБУ (кроме NBT_HU) были обновлены до последней версии прошивки.
-
Исходный код ошибки был CF2501 «Нет сообщения (статус, трейлер, 0x2E4)», приёмник EGS, передатчик AHM. Но я использовал программу BMW TOOL32 для работы с EEPROM и сбросил все адаптации/связи в EGS (передача), а также функцию обучения CAN. Этот код ошибки исчез, но сразу же появился в DME с кодом CDA904 «Нет сообщения (статус, трейлер, 0x2E4)», приёмник DME, передатчик AHM.
-
Также сбросьте настройки DME. Для этого ЭБУ не было возможности сбросить настройки CAN-обучения (если оно было).
-
Судя по тому, что я прочитал, DME либо ищет ошибку каждые 8 секунд, либо каждые 1 минуту. Не могу подтвердить, что из этого верно. И если DME не получает сообщение «Я жив» от AHM (или от другого модуля, которому поручено считывать сообщения AHM), то DME выдаст ошибку.
-
Подключил модуль/программу для перехвата и анализа данных CANBUS напрямую к сетям PT-CAN(1), PT-CAN2 и K-CAN2 по отдельности. Специально не использовал порт OBDII, чтобы он не считывал данные из изолированного сегмента сети. Я искал шестнадцатеричный идентификатор 2E4 (из сообщения об ошибке), но он так и не появился. (Отличная программа на основе QT с использованием Arduino и дешевого модуля CANBUS для перехвата данных:) https://github.com/adamtheone/canDrive
Было бы очень полезно определить/подтвердить, какой идентификационный код CANBUS мне следует искать при анализе. Вот список соответствующих кодов CANBUS, которые могут быть вам полезны:
0xCD98 52632 PT-CAN, сообщение отсутствует (состояние прицепа, 2E4): функция диагностики отслеживает получение сообщения.
«0xCD98 Сообщение (Запрос крутящего момента DSC, B6)» // запрос крутящего момента
0x2E4 Прицеп (8) Прицепы (8) 0x71 AHM
0x4F1 Управление сетью 0x71 AHM
0x5F1 Dienste services 0x71 AHM
BO_ 740 Status_trailer: 8 AHM (740 в десятичной системе = 2E4 в шестнадцатеричной)
Двигатель-DME Motor Elec. Cd98: ошибка в сообщении, приёмник DME, передатчик AHM/DSC
Вот какие варианты я вижу, не считая решения самой проблемы:
-
Запретите DME искать/получать отсутствующее сообщение AHM
-
Автоматическое удаление ошибки DME с помощью команды CANBUS через регулярные промежутки времени (менее 8 секунд)
-
Отправьте поддельное сообщение AHM CANBUS о том, что AHM на месте и всё в порядке.
-
Установите физический модуль AHM (от 80 долларов) (если не можете их победить... присоединяйтесь к ним!)
Спасибо вам за любую помощь!
Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/93700/hoping-to-get-rid-of-no-message-can-error-that-even-bmw-engineers-in-munich-ca
В итоге я установил ЭБУ прицепного модуля, чтобы удовлетворить потребность ЭБУ DME и EGS в связи с модулем AHM (прицепным). Это не то решение, которое я себе представлял, но оно оказалось дешевле других.