Можно ли запросить все нужные идентификаторы ODB II через файл.dbc?
То, что я хочу сделать, это запросить все необходимые PID через файл.dbc, созданный в Vector db Editor++.
Я достаточно разбираюсь в связи по CAN, чтобы иметь возможность делать это с 1 или 2 PID, потому что DLC допускает до 8 байтов данных на одно сообщение CAN. Я также знаком с этим ресурсом по запросам и ответам PID https://en.wikipedia.org/wiki/OBD-II_PIDs
У меня возникают проблемы с пониманием того, как диагностические инструменты могут запрашивать каждый PID, который производитель определенного автомобиля решает сделать доступным, поэтому я чувствую, что это возможно. Тем не менее, если я использую идентификатор запроса в размере $7DF, я могу использовать только этот идентификатор сообщения для своих запросов, поэтому я в настоящее время могу разместить только два PID (сигнала) в этом сообщении CAN.
2 ответа
Как диагностические инструменты могут запрашивать каждый PID, который производитель конкретного автомобиля решает сделать доступным?
Вы не можете запрашивать все, что вы хотите от ECU (по крайней мере, в обычном порядке!). Вы можете запросить только соответствующие PID OBD. Все PID OBD II и их определения, масштабирование и т. Д. Доступны в ISO 15031, часть 5. Это означает, что все PID предопределены. Поэтому любой регистратор сначала запросит mode 01 pid 00
чтобы получить все доступные PID для этого транспортного средства, а затем начинает сканировать его.
если я использую идентификатор запроса в размере $7DF, я могу использовать только этот идентификатор сообщения для своих запросов.
Это неправильная причина 0x7DF
не имеет ничего общего с DLC и содержанием сообщения. Это только заголовок сообщения, чтобы сообщить ECU, от кого у вас есть этот запрос. 0x7DF
это запросы OBD и даже вы можете напрямую запрашивать у разных контроллеров свои доступные данные.
Каждое сообщение может иметь длину 8 байт. Первый байт - это режим запроса. Второй байт сообщает ECU количество входящих байтов, а затем у вас есть 6 байтов для отправки. Из-за этого они говорят, что вы можете запросить до 6 PID одновременно. Ваша проблема может быть в получении нескольких данных из OBD, что может быть немного сложно, используя сообщения Flow Control и First Frame. Здесь вы можете найти некоторую информацию о том, как получить сообщение, если оно длиннее 8 байт.
С уважением,
Если я правильно понимаю ваш вопрос, здесь применимы две части:
Шаг 1. Сначала вам необходимо определить, какие PID поддерживаются.
Эта компания под названием CanEdge предоставляет файл DBC, который поддерживает все запросы Службы 1, «поддерживаемые PIDS»: https://www.csselectronics.com/pages/can-dbc-file-database-intro .
https://en.wikipedia.org/wiki/OBD-II_PIDs#Service_01_-_Show_current_data
Используйте как обычную, так и расширенную версии.
С некоторыми искажениями я могу получить такой результат (очевидно, это специфично для моего автомобиля)
Supported pids
--------------
PID num (hex) | PID num (int) | PID Name
0x01 | 1d | Monitor status since DTCs cleared. (Includes malfunction indicator lamp (MIL), status and number of DTCs, components tests, DTC readiness checks)
0x03 | 3d | Fuel system status
0x04 | 4d | Calculated engine load
0x05 | 5d | Engine coolant temperature
0x06 | 6d | Short term fuel trim—Bank 1
0x07 | 7d | Long term fuel trim—Bank 1
0x0c | 12d | Engine speed
0x0d | 13d | Vehicle speed
0x0e | 14d | Timing advance
0x0f | 15d | Intake air temperature
0x10 | 16d | Mass air flow sensor (MAF) air flow rate
0x11 | 17d | Throttle position
0x13 | 19d | Oxygen sensors present (in 2 banks)
0x15 | 21d | Oxygen Sensor 2 A: Voltage B: Short term fuel trim
0x1c | 28d | OBD standards this vehicle conforms to
0x1f | 31d | Run time since engine start
0x20 | 32d | PIDs supported [$21 - $40]
0x21 | 33d | Distance traveled with malfunction indicator lamp (MIL) on
0x24 | 36d | Oxygen Sensor 1 AB: Air-Fuel Equivalence Ratio (lambda,λ) CD: Voltage
0x2e | 46d | Commanded evaporative purge
0x2f | 47d | Fuel Tank Level Input
0x30 | 48d | Warm-ups since codes cleared
0x31 | 49d | Distance traveled since codes cleared
0x32 | 50d | Evap. System Vapor Pressure
0x33 | 51d | Absolute Barometric Pressure
0x3c | 60d | Catalyst Temperature: Bank 1, Sensor 1
0x40 | 64d | PIDs supported [$41 - $60]
0x41 | 65d | Monitor status this drive cycle
0x42 | 66d | Control module voltage
0x43 | 67d | Absolute load value
0x44 | 68d | Commanded Air-Fuel Equivalence Ratio (lambda,λ)
0x45 | 69d | Relative throttle position
0x46 | 70d | Ambient air temperature
0x47 | 71d | Absolute throttle position B
0x49 | 73d | Accelerator pedal position D
0x4a | 74d | Accelerator pedal position E
0x4c | 76d | Commanded throttle actuator
0x4d | 77d | Time run with MIL on
0x51 | 81d | Fuel Type
Теперь, когда вы знаете, какие PID поддерживаются (это также касается только Сервиса 1, поэтому вам придется сделать это для Сервиса 5 и Сервиса 9), вы можете создать файл DBC, который декодирует эти сигналы. В файле CanEdge DBC уже включены все PID службы 01.
Если ваш вопрос касается попытки отправить только одно сообщение и получить ответ, состоящий изn
Ответы PID, AFAIK, это невозможно, вы можете получить только один ответ за раз.