Dekripsi data dalam CAN bus sedan VW Polo

Hari ini kita akan berbicara tentang metode untuk mendekripsi data bus CAN menggunakan contoh mobil VW Polo Sedan 2019. Di Internet, artikel seperti itu sering disebut CAN Bus Hacks, tetapi saya tidak suka nama ini.

Artikel ini menjelaskan metode menemukan data yang diperlukan di bus CAN mobil, contoh penerapan teknik ini pada VW Polo Sedan. Vega MTX digunakan sebagai peralatan untuk menghubungkan ke bus CAN. Mari kita bicara sedikit tentang telematika. Di bawah potongan banyak gambar pada topik, beberapa gif dan video.

Beberapa kata tentang dirimu.

Nama saya Alexey Fokin, saat ini saya bekerja untuk Vega Absolutevega_absolute. Kantor pusat di Novosibirsk, tapi saya bekerja di Moskow. Salah satu arahan kami adalah telematika. Kami membuat peralatan untuk melacak kendaraan komersial, berbagi mobil, taksi, dll. Pekerjaan saya adalah saya mengumpulkan data dari mobil dan mengubahnya menjadi pengaturan untuk peralatan kami.

Sekarang ke mobil.

Koneksi ke bus CAN dilakukan di dua tempat: di belakang dashboard (bus 500 Kbit / s) dan di belakang radio (100 Kbit / s). Ada juga satu koneksi redundan - menghubungkan ke konektor OBDII langsung pada konektor (500 Kbit / s).

Dari alat yang digunakan: Unit pemantauan kendaraan Vega MTX dilengkapi dengan pemindai CAN. Untuk mengkonfigurasinya pada PC, program Configurator 1.27.14.

Informasi lebih lanjut tentang menghubungkan ke mobil dan MTX dapat ditemukan di video di akhir artikel.

Ketika terhubung ke semua bus CAN, kita akan melihat gambar berikut:



Dalam aliran data ini, Anda perlu menemukan bit dan byte yang bertanggung jawab atas parameter yang kita butuhkan.

Tangkapan layar di bawah ini menunjukkan berapa banyak sensor yang saat ini terdaftar di blok telematika, dan ini bukan daftar lengkap. Anda bisa masuk lebih dalam dan mencari lebih banyak sensor. Beberapa sensor ini secara real time mengirimkan bacaan ke server, yang memungkinkan Anda melihat status mobil Anda kapan saja.

Telematika adalah topik untuk artikel terpisah, jadi kami tidak akan membahasnya secara rinci di sini.



Pertanyaan segera muncul - mengapa saya perlu mencari data dalam aliran jika saya bisa melihatnya melalui ELM327 atau perangkat diagnostik lainnya?

Pertanyaannya di sini adalah mengapa kita membutuhkan data ini. Dalam kasus kami, kami membutuhkan data untuk telematika, dan agar tidak mengganggu bus CAN dan tidak mengirim data apa pun ke dalamnya, kami mencarinya di arus. Vega MTX memiliki mode khusus untuk bekerja dengan bus CAN - mode "mendengarkan". Mode berbicara sendiri, peralatan hanya mendengarkan bus dan tidak mengirim apa-apa padanya, sehingga meminimalkan dampak pada sistem mobil biasa.

Misalnya, sensor untuk membuka pintu. Jika kita memintanya permintaan, maka kita hanya bisa melakukan ini dengan kunci kontak menyala. Setelah kunci kontak dimatikan dan bus CAN dapat tertidur, sensor ini tidak akan tersedia untuk kita. Jika kita menemukan sensor ini dalam aliran CAN, maka kita akan melihatnya sepanjang waktu ketika bus CAN bekerja. Dan, ketika Anda membuka pintu, BISA akan bangun secara otomatis.

Juga harus dipahami bahwa semua contoh di bawah ini hanya relevan untuk sambungan Polo Sedan. Di tempat lain, peralatan mungkin tidak memiliki sensor yang terdaftar, tetapi untuk merek dan model mobil lainnya data akan berada dalam ID yang sama sekali berbeda.

Saya menarik perhatian Anda pada fakta bahwa secara default di Configurator ada tampilan nilai dalam format HEX. Di masa mendatang, kita harus menerjemahkan data dari format HEX ke nilai desimal lebih dari sekali. Cara termudah untuk melakukan ini adalah dengan menggunakan aplikasi Kalkulator bawaan Windows 10. Kami menerjemahkannya ke mode "programmer" dan kami memiliki pilihan di mana sistem angka untuk memasukkan data, dan mereka digandakan dalam sistem angka lainnya.

Dengan metode pencarian, saya membagi semua sensor di mobil menjadi beberapa jenis:

  1. Sensor biner.
  2. Sensor berubah dengan cepat.
  3. Sensor suhu.
  4. Jarak tempuh mobil.
  5. Sensor level.
  6. Sensor indikasi
  7. Sensor dengan permintaan.

Sekarang mari kita beralih ke metode yang Anda dapat menemukan masing-masing jenis sensor.

1. Sensor biner


Mari kita mulai dengan sensor biner yang paling sederhana.

Sensor-sensor ini termasuk sensor pintu, sabuk pengaman, rem (apakah lampu rem menyala), rem tangan, tombol ditekan, dll. Nilai mereka ditempatkan dalam 1 bit, yaitu, dapat 0 (pintu ditutup) atau 1 (pintu terbuka).

Menemukan mereka itu sederhana, tetapi membutuhkan perawatan. Untuk mencari pintu pengemudi, buka / tutup pintu dan lihat apa perubahan di bus CAN.

Configurator menyoroti merah data-data yang telah ada perubahan dalam beberapa detik terakhir.



Dalam kasus kami, pintu pengemudi bertanggung jawab atas bit nol byte pertama dari pesan dengan ID 470.
Dalam byte yang sama adalah sensor dari semua pintu lainnya + sensor trunk.

2. Sensor berubah dengan cepat


Sensor yang berubah dengan cepat mirip dengan sensor biner, hanya nilainya lebih dari 1 bit. Kita dapat bertindak berdasarkan sensor-sensor ini dan segera melihat perubahan pada bus CAN.
Sensor-sensor ini mencakup sebagian besar sensor posisi: posisi pedal gas, posisi gelas, posisi transmisi otomatis, posisi kunci kontak. Selain itu, ini adalah sensor kecepatan, putaran, sensor percepatan setir, percepatan pedal gas, dll.

Untuk memulainya, kita akan berurusan dengan sensor posisi menggunakan contoh sensor posisi pedal gas.

Untuk melakukan ini, kita mematikan mobil, menyalakan kunci kontak dan, tanpa menyalakan mesin, tekan pedal gas dan memantau perubahan di bus CAN.

Sebagai aturan, ketika pedal gas dilepaskan, nilai sensor ini adalah 0, dan, saat Anda menekan pedal gas, pedal itu meningkat ke beberapa nilai. Kita melihat parameter seperti itu di CAN pertama di ID 280. Byte kelima berubah dari 0 (pedal dilepaskan) ke FA (pedal ditekan "ke lantai").



Jika kita mentransfer FA dari HEX ke DEC, maka kita mendapatkan angka 250. Oleh karena itu, untuk mendapatkan pedal akselerator ditekan dalam persen (dari 0 hingga 100), kita perlu melipatgandakan nilai kita dengan 0,4.

Sekarang mari kita beralih ke sensor yang tidak masuk ke dalam satu byte, misalnya, ke putaran mesin. Kami secara bertahap meningkatkan dan mengurangi kecepatan engine, sambil menonton apa yang berubah di bus CAN. Putaran mesin berada dalam ID yang sama dengan pedal gas.



Setelah bekerja dengan pedal gas, Anda dapat memahami bahwa data di sini berada dalam urutan terbalik. Yaitu, bagian tertua ada di byte ke 3 (hitung byte dari nol), dan yang termuda di byte kedua.

Selanjutnya, Anda perlu mentransfer data dari HEX ke DEC.



Selanjutnya, kita perlu mengevaluasi revolusi nyata dengan takometer, atau dengan instrumen diagnostik. Dalam kasus saya, jarum berada di sekitar 1600 rpm pada tachometer.

Selanjutnya, kita membagi data dari CAN dalam format desimal (6508) dengan kecepatan mesin dari tachometer (1600), kita dapatkan 4,0675. Mengingat kesalahan dalam menentukan revolusi dengan mata, bulatkan pembagi menjadi 4. Setelah ini, Anda perlu memeriksa bacaan di beberapa titik. Untuk melakukan ini, atur kecepatan engine pada kecepatan yang berbeda dan periksa dengan data dari bus CAN.

Di konfigurator, Anda dapat mengganti semua koefisien dalam pengaturan sensor dan menonton perubahan kecepatan secara real time.

Dengan demikian, sejumlah besar sensor dicari: gaya rem, posisi roda kemudi, akselerasi roda kemudi, kecepatan kendaraan, dll.

3. Sensor suhu


Sangat sulit untuk menemukan suhu di Polo Sedan. Untuk mulai dengan, byte ditemukan, yang perlahan-lahan berubah ke atas ketika mobil dipanaskan. Setelah itu, pencarian koefisien yang diperlukan dimulai.

Kami menghubungkan diagnostik, memilih suhu mesin, dan membandingkan pembacaan bus CAN dan data dari diagnostik. Kami membangun tabel korespondensi dan memilih koefisien.
Sebagai hasil dari pemilihan koefisien, formula untuk menghitung suhu muncul.

XX * 0.75 - 48 di
mana XX adalah nilai 1 byte dari ID 288 di DEC.



Menurut rumus, dapat dihitung bahwa tangkapan layar memiliki suhu

179 * 0,75 - 48 = 86,25 ° C.

di mana 179 adalah angka desimal B3 dari byte pertama ID 288.

Tetapi ini adalah kasus yang sulit, di banyak mobil suhunya jauh lebih mudah ditemukan.

Karena sulit untuk mengirimkan angka negatif di bus, pabrikan menerima nilai -40 ° C, -48 ° C atau -58 ° C sebagai 0 pengukuran. Oleh karena itu, kami menghubungkan diagnostik dan melihat suhu saat ini. Tambahkan 40 (48 atau 58) ke ini, dan terjemahkan ke HEX. Kami sedang mencari nomor yang dihasilkan di sungai. Kami sedang menunggu suhu mesin berubah satu derajat dan memeriksa dengan nilai yang ditemukan. Jika nilainya juga meningkat sebesar 1, maka ini adalah sensor yang kita butuhkan.

Penting untuk tidak membingungkan nilai-nilai dari bus CAN dengan nilai-nilai permintaan diagnostik. Jika Anda secara bersamaan mencari bacaan di bus dan alat diagnostik terhubung, maka jawaban untuk permintaan diagnostik juga akan muncul di bus. Mereka dapat diidentifikasi dengan ID. Biasanya yang melebihi 700 ID adalah permintaan dan jawaban diagnostik.

Juga, suhu cairan pendingin selalu dapat diminta, tentang metode ini akan dijelaskan di bawah ini pada bagian sensor dengan permintaan.

Anda dapat menggunakan metode lain untuk mencari suhu: secara fisik kami menemukan sensor suhu cairan pendingin (DTOZH) pada mesin, mematikannya, dan menghubungkan resistor variabel ke kabel mobil. Kemudian, memutar resistor dan mengikuti CAN bus sesuai dengan metode mencari data yang berubah dengan cepat, Anda dapat menemukan pembacaan suhu mesin.

Dalam praktiknya, saya tidak menggunakan metode ini, karena ALT selalu ada di arus, atau mereka meminta mesin untuk meminta.

4. Jarak tempuh mobil


Salah satu parameter terpenting untuk telematika.

Pertama, Anda perlu mengevaluasi ukuran apa yang kami cari nomornya. Jika Anda mengambil 2 byte (16 bit) data, maka jumlah maksimum FF FF = 65.535 akan masuk ke dalamnya. Mobil dapat dengan jelas menempuh lebih dari 65 ribu, yang berarti bahwa kendaraan harus memiliki panjang minimum 24 bit. Sudah akan muat 16 juta km., Yang jelas cukup untuk berlari.

Tetapi sekali lagi, di mobil yang berbeda dengan cara yang berbeda. Di Polo Sedan, jarak tempuh ditulis dalam km, dalam beberapa bahasa Prancis ditransmisikan dengan akurasi 100 meter. maka jumlahnya bisa menempati 32 bit dan lebih banyak.

Selanjutnya untuk pencarian Anda harus mengambil jarak tempuh dari dashboard mobil dan mentransfernya ke HEX.



Dalam kasus kami, ini adalah 5.732 km. Kami menerjemahkannya ke HEX dan mendapatkan 16 64. Selanjutnya, cari Anda perlu menemukan garis di mana kombinasi ini akan terjadi. Anda perlu mencari dengan satu byte, yaitu, pertama mencari 16, kemudian dalam opsi yang ditemukan, lihat apakah ada juga angka 64 di sebelah nomor 16. Angka 64 dapat berupa ke kiri atau ke kanan nomor 16. Karena jarak tempuh di mobil ini tidak besar, maka kemungkinan besar, di sebelah angka 64 itu juga akan menjadi 00. Di Configurator ada pencarian yang mudah (CTRL + F), jika Anda menggunakan alat lain, Anda harus mencari data ini secara manual.

Dalam kasus kami, jarak tempuh ditemukan di 520 ID



00 16 64 = 5732 km.

Untuk memeriksa, disarankan untuk berkendara beberapa kilometer lagi dan periksa nilai sensor yang ditemukan.

Dengan cara yang sama jarak tempuh dicari sebelum mengisi bahan bakar. Di mobil ini, dasbor tidak mentransfer jarak tempuh ke pompa bensin ke ban, jadi dibuat berdasarkan permintaan.

6. Sensor level


Sensor terpenting kedua untuk telematika adalah sensor level bahan bakar. Anda dapat menemukannya di aliran, yang lebih disukai, atau dengan permintaan (kurang disukai, tetapi di beberapa mobil tidak akan bekerja secara berbeda).

Pertama, Anda perlu menemukan pembacaan tingkat bahan bakar di alat diagnostik. Level bahan bakar saya ditemukan di instrument cluster (17 blok). Dalam kelompok instrumen, pembacaan dari sensor level dalam liter.

Sekarang mobil memiliki bahan bakar 21 liter.



Kami menerjemahkan 21 dari DEC ke HEX dan mendapatkan nomor 15. Dengan mencari, kami mencoba menemukannya. Streaming berisi angka yang diberikan dalam ID 320. Jika nomor itu tidak ditemukan, maka Anda harus mencoba mencari nilai satu atau lebih. Di beberapa mobil, bahan bakar hadir dengan akurasi setengah liter, jadi Anda perlu mencari nilai 2 kali lebih besar.



Setelah tingkat bahan bakar ditemukan, perlu untuk menuangkan beberapa liter bahan bakar ke dalam mobil dan lihat hasilnya.

Anda juga dapat membongkar tangki bensin, mengeluarkan FLS dari tangki dan memindahkannya, mengikuti pembacaan bus CAN. Atau lepaskan konektor dari FLS dan hubungkan resistor variabel di sana. Memutarnya dan mengikuti perubahannya Anda dapat menemukan sensor level bahan bakar. Jika Anda memutuskan untuk membongkar, maka level bahan bakar harus dicari dengan metode mencari sensor yang berubah dengan cepat.

Juga, saat mencari, data dengan ID lebih dari 700 tidak boleh diperhitungkan. Ini adalah pertanyaan diagnostik. Setelah melepaskan peralatan diagnostik, data ini akan hilang. Kami akan menangani permintaan secara lebih rinci di bawah ini.

Misalnya, jawaban atas pertanyaan peralatan diagnostik tingkat bahan bakar dari dasbor terlihat seperti ini.



Juga, tingkat bahan bakar (dalam persen) dapat ditemukan dalam permintaan standar OBDII, tetapi pada grup VAG, mereka tidak selalu menunjukkan data yang benar. Pada Skoda Rapid dan Skoda Oktavia dengan tangki penuh, diagnostik menunjukkan tingkat bahan bakar 85%.



6. Indikasi sensor


Indikasi sensor sangat mirip dengan sensor biner, dan mereka harus dicari dengan metode yang sama. Sensor-sensor ini mencakup beragam ikon di dasbor. Misalnya, status ikon Mesin Periksa ada di byte pertama ID 480. Saat kunci kontak dihidupkan di sensor 2C ini.



Setelah memulai, ketika ikon Periksa Mesin (CE) keluar, akan ada 00 di sensor ini.



Sekarang pertanyaannya tetap, bit mana yang bertanggung jawab atas ikon CE. Kami menerjemahkan 2C ke BIN dan mendapatkan nomor 0010 1100.

Selanjutnya, salin seluruh 480 ID, ubah byte pertama menjadi 2C (0010 1100) dan coba kirim paket ini ke mobil.

Perhatian!, mengirim data ke mobil tidak selalu aman, Anda dapat merusak sesuatu, atau mengakhiri jarak tempuh. Perlu menggunakan metode ini hanya jika sensor tidak dapat ditemukan dengan mencari sensor biner.

Dalam kasus saya, saya mengirim ke mobil bekas (yang tidak disarankan) dan ikon CE dan EPC saya berkedip rapi.



Kemudian kami mengirim bukannya 2C (0010 1100) 08 (0000 1000). Pada CE rapi berkedip. Oleh karena itu, 3 bit bertanggung jawab atas ikon ini.



Jika Anda mengirim 04 (0000 0100), ikon EPC akan berkedip.

7. Sensor dengan permintaan


Tidak semua data dapat ditemukan di arus. Misalnya, dalam diesel VW Transporter T4 tidak ada suhu mesin di sungai. Dia tidak rapi. Karena itu, Anda harus bertanya pada mobil tentang parameter ini. Hal yang sama berlaku untuk level bahan bakar di Rio \ Solaris.

Dalam contoh ini, mari kita coba menanyakan tingkat bahan bakar Polo Sedan. Kami pergi ke blok 17, seperti yang kami lakukan pada paragraf tentang pencarian tingkat bahan bakar, dan bertanya pada dasbor. Setelah menganalisa permintaan, kita melihat bahwa diagnosis meminta tingkat bahan bakar dengan perintah berikut:



Dan sebagai tanggapan datang kepadanya:



Selanjutnya, salin ID 714, matikan alat diagnostik dan coba kirim permintaan ke mobil. Jika ID 77E menerima jawaban yang sama seperti ketika diagnostik terhubung, maka kami menerima paket dengan tingkat bahan bakar (4 byte. HEX 15 = DEC 21) 21 liter.

Vega MTX memiliki alat bawaan untuk bekerja dengan sensor dengan pertanyaan. Di sana Anda dapat mengonfigurasi bahwa permintaan akan dikirim setelah kunci kontak dihidupkan pada interval tertentu atau dalam kondisi tertentu.

Ini diakhiri dengan metodologi untuk mencari data di bus CAN. Jika ada orang lain yang tahu metode apa untuk menemukan data yang diperlukan di bus CAN atau berbagi pengalaman mereka, maka saya akan mendengarkan mereka dengan senang hati.

Sebelum menulis artikel ini, saya membuat video tentang topik ini. Video tersebut berisi informasi lebih lanjut tentang menghubungkan ke bus CAN kendaraan, bekerja dengan Configurator dan server file


Tautan ke Configurator

Server memiliki pengaturan untuk beberapa mobil, truk dan mesin pertanian. Semua file dienkripsi, Anda dapat melihat sensor mana yang terlihat di CAN kendaraan. Saat terhubung, nilai sensor akan terlihat, tetapi tidak akan berfungsi untuk melihat alamat.

Bersambung.

All Articles