Saya biasanya bukan 'orang mobil', jadi semoga saya bisa menjelaskan ini dengan cukup baik untuk mendapatkan bantuan di sini:
Saat mengirim pesan ke perangkat OBD-II, saya menerima satu respons di sebagian besar mobil yang telah saya uji. Namun, dengan mobil yang ternyata memiliki lebih dari satu chip ECU, saya mendapat respons dari masing-masing. Misalnya, jika saya mengirim 01 0C
perintah PID ke kendaraan dengan 3 chip ECU, saya menerima 3 respons yang umumnya sangat mirip tetapi masih berbeda.
Sebuah 01 00
perintah seharusnya mengembalikan 4 byte yang menyatakan PID didukung kendaraan, tapi ini juga kembali 4 byte untuk setiap ECU - salah satu yang sepenuhnya fleshed 4 bytes dengan beberapa bendera dan mematikan, sementara yang lain tampaknya hanya memiliki beberapa bendera dihidupkan (bendera-bendera ini sejauh ini tampaknya selalu menjadi bendera yang termasuk dalam respons 'utama', tapi saya tidak yakin apakah ini selalu terjadi).
Contoh:
SENT: 01 00
RECEIVED:
00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here
Dua baris terakhir terdiri dari flag yang juga ditandai di dalam baris pertama, tetapi baris 3 memiliki satu flag tambahan yang baris 2 tidak.
Sepertinya saya bahwa mungkin ada ECU tunggal yang memenuhi syarat sebagai chip 'primer' yang harus saya dengarkan ketika saya mengirim perintah, dan (saya pikir) saya mengerti bahwa saya bisa menggunakan masker / filter CAN ID untuk hanya memperhatikan yang saya butuhkan.
Pertanyaannya adalah: Apakah benar-benar ada 'ECU primer' yang harus saya perhatikan, atau apakah semua tanggapan ini sama pentingnya? Jika ada yang utama yang perlu saya targetkan, apakah ada perintah yang dapat saya kirim untuk menentukan mana yang 'paling signifikan'?
Kendaraan diuji pada:
2011 Chevy Cruze [2 ECUs]
2015 BMW M5 [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]
Jawaban:
Jika kendaraan Anda 2008 atau lebih baru menggunakan protokol kaleng, Anda dapat menggunakan perintah AT CR untuk memilih ECU mana yang ingin Anda dengar.
Begini caranya:
kirim
ini akan mengaktifkan header untuk melihat alamat ECU.
Kirim
ini adalah perintah OBD untuk menunjukkan pid dari 1-20 yang didukung.
respons Anda harus seperti:
ini menunjukkan bahwa Anda memiliki 2 ECU 7E8 (mesin) 7E9 (transmisi),
saya telah melihat 5 ECU dikembalikan: 7E8,7E9,7EA, 7EB, 7EC.
Untuk mendengar hanya dari satu ECU Anda mengeluarkan AT CRA xxx di mana xxx adalah alamat ECU.
kirim yang berikut ini
kemudian
akan kembali:
Kirim
untuk mematikan tajuk lalu kirim:
dan Anda akan kembali dengan adil
Jika kendaraan Anda 29 bit, maka respons 0100 akan terlihat seperti:
ini menunjukkan 2 ECU 18DAF118 (transmisi) dan 18DAF110 (mesin).
Kirim
untuk mendengar hanya dari mesin.
sumber
BISA tidak bekerja seperti yang Anda pikirkan.
BISA bukan berbasis modul, itu berbasis pesan. Tidak ada modul yang berbicara langsung dengan modul lainnya. Dalam CAN modul menghasilkan pesan dengan alamat, alamat itu mengidentifikasi data yang akan terkandung dalam pesan. Alamat itu juga memberi arti penting pesan. Semakin rendah alamat semakin tinggi prioritas.
Misalnya ABS akan mengirimkan kecepatan kendaraan. Setiap modul lain yang membutuhkan data akan membacanya.
Tidak ada modul yang lebih penting dari yang lain, itu prioritas pesan yang penting.
sumber