Как установить биты состояния DTC в диагностическом запросе в CAPL? - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь прочитать код неисправности из сценария CAPL. Я использую службу протокола "(0x19) ReadDtcInformation - Сообщить о снимке кода DTC по номеру кода DTC". Мой код DTC 0x062003. Я могу правильно установить номер DTC. Но я не могу установить биты статуса DTC.

1. diagRequest FR_Diagnostic.FaultMemory_ReadEnvironmentData PWM_Status; // 0x19 0x94
2. diagSetParameter(PWM_Status,"DTC",0x062003);  // 0x06 0x20 0x03
3. diagSetParameter(PWM_Status,"DtcSnapshotRecordNumber",0xFF); 
4. DiagSendRequest(PWM_Status);

Строка № 3 не совсем устанавливает DtcSnapshotRecordNumber в 0xFF. Я вижу это поле как 0x00 в след.

Вопрос: 1. Использую ли я правильный API в строке № 3? Как мне установить DtcSnapshotRecordNumber для чтения для всех битов состояния? (есть 8 битов состояния для мониторинга, поэтому он должен быть установлен в 0xFF).

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Отвечая себе:

  1. Да, я использовал правильный API.
  2. Не удалось установить должным образом, потому что тип данных, используемый в файлах базы данных (.cdd), был неверным.

Я мог бы преобразовать файл .cdd в шаблон и отредактировать шаблон и работать с обновленным файлом .cdd, но я решил использовать его, используя свежую копию шаблона.

0 голосов
/ 21 мая 2018

Обычно вы вызываете службу 0x19 (диагностика), затем вызываете подфункцию, а затем вы предоставляете битовую маску, которая содержит информацию о том, что вы ищете.

Итак, все, что вам нужно, определено в стандарте ISO 14229 «Транспорт дорожный».

Большинство услуг, связанных с кодами DTC и OBD, одинаковы для всех OEM-производителей. Каждый OEM-производитель обычно имеет Дополнение к Спецификации диагностики, в котором описываются специальные диагностические услуги для OEM и т. Д.

В CAPL обычно есть простой способ считывания кодов неисправности. Вам не нужно делать это вручную, как это предусмотрено CDD-файлом. Вы можете увидеть это в Обозревателе объектов CAPL Brower с правой стороны.

Так что для вашего случая для яйца. получить количество кодов DTC, соответствующих вашей маске:

Отчет о подфункции DTCByStatusMask 0x02

0x1902

Маска, которая является вашим поисковым фильтром, будет построена следующим образом:

бит # шестнадцатеричное описание состояния 0 0x01 testFailed DTC не выполнен во время запроса 1 0x02 testFailedThisOperationCycle DTC не удалось выполнить в текущем цикле работы 2 0x04 pendingDTC Сбой DTC в текущем или предыдущем рабочем цикле 3 0x08 подтверждается DTC DTC подтверждается на момент запроса 4 0x10 testNotCompletedSinceLastClear DTC тест не завершен, так как последний код ясно 5 0x20 testFailedSinceLastClear DTC-тест не пройден хотя бы один раз с момента последней очистки кода 6 0x40 testNotCompletedThisOperationCycle Тест DTC не завершен в этом цикле операций 7 0x80 warningIndicatorRequested Сервер запрашивает предупреждениеIndicator для активации

Так что, если вы просто хотите прочитать DTC, которые подтверждены (сохранены), чем вы отправляете:

0x190208

Если вы получите положительный ответ, коды неисправности будут получены в шестнадцатеричном формате. Вам понадобится конвертер HEX-> SAE, который преобразует извлеченные коды DTC в обычный известный формат. В любом случае вы можете проверить это через диагностическую консоль.

...