Apa Yang Terjadi Jika Dua Segmen ID Node Apakah Sama?

Apr 04, 2018 Tinggalkan pesan

Apa yang terjadi jika dua segmen ID node sama?




Jaringan CAN-bus tidak memungkinkan dua node memiliki segmen ID yang sama pada prinsipnya, tetapi apa yang terjadi jika dua segmen ID node adalah sama?

Sebelum percobaan, kita harus memiliki pemahaman yang jelas tentang struktur pesan CAN dan prinsip arbitrase.


Pertama, BISA struktur pesan

Standar jaringan CAN-bus yang paling banyak digunakan adalah versi V2.0. Standar ini dibagi lagi menjadi bagian A dan B. Perbedaan utama mereka adalah panjang kode ID di area arbitrase. Di antara mereka CAN2.0A (bingkai standar) adalah 11 bit ID, CAN2.0B (memperluas bingkai) adalah ID 29 bit. Tabel 1 di bawah ini menunjukkan struktur pesan BISA:

Tabel 1 BISA struktur pesan

Nama Fase Fase panjang / bit Deskripsi
SOF 1 berarti fase data mulai, dan make up oleh bit dominan tunggal
Abtrition Phase Bingkai standar 12 Menunjukkan prioritas frame, dibuat oleh 11 alamat ID dan 1 RTR
bingkai diperpanjang 32 Menunjukkan prioritas frame, membuat hingga 29 alamat ID, 1 bit SRR, IDE diperpanjang dan RTR
Fase Kontrol 6 berarti kode grup dan cadangan bit data panjang dari segmen data
Fase Data 0 ~ 8 isi data, kontrol fase mengontrol panjang data
CRC 16 periksa frame transimission erro, dari SOF ke fase data, semua isi, kecuali mengisi bit
ACK 2 node lain mengkonfirmasi frame ini untuk diterima dengan benar
Akhir Bingkai 7 berarti ujung bingkai


Kedua, prinsip arbitrase

BISA bus arbitrase didasarkan pada "garis dan prinsip", seperti yang ditunjukkan pada Gambar 1. Ketika transceiver memancarkan sinyal dari berbagai tingkat pada saat yang sama, tingkat resesif selalu ditutupi oleh tingkat dominan. Saat mengirim pesan, pengontrol CAN akan memantau apakah status bus sama dengan yang dikirim sendiri. Jika inkonsistensi terjadi di segmen ID, arbitrase akan terjadi. Jika terjadi di area lain, kesalahan terkait akan dipicu.

Berikut ini adalah titik kunci. Bagaimana jika dua segmen ID node sama? Kami memulai eksperimen dengan dua kartu BISA dan satu CANScope. Kartu BISA mensimulasikan node BISA standar untuk mengirim dan menerima pesan, dan CANScope melakukan pemantauan komunikasi, seperti yang ditunjukkan pada Gambar 2.

                                                           

1.jpg

Gbr.2 Konstruksi Platform Percobaan


Ketiga, bereksperimen satu "Segmen ID sama tetapi datanya berbeda"

Kartu BISA digunakan untuk mengirim bingkai BISA dengan data ID 000H ke 01020304050607H dan kartu BISA lainnya untuk mengirim bingkai BISA dengan data 000H ke 02020304050607H. Data yang CANScope dengarkan ditunjukkan pada Gambar. 3. Dapat diamati bahwa ada banyak kesalahan pengisian data lapangan.


2.jpg

Gbr.3 Bidang data isi erro

Kenapa ini begitu? Kami pertama kali mendapatkan bentuk gelombang yang sesuai dengan dua pesan transmisi kartu BISA, seperti yang ditunjukkan pada Gambar 4. Karena pesan dua-pin adalah bingkai data standar dan setiap frame berisi 8 byte data, bentuk gelombang yang sesuai dengan dua frame paket adalah persis sama di segmen ID, RTR, IDE, R0, dan segmen DLC. Oleh karena itu, peran arbitrase tidak efektif dan kedua node menganggap diri mereka sebagai prioritas dan terus mengirim data.

3.jpg

Sekarang kami fokus pada segmen data, data byte pertama adalah sama, adalah 00H; data byte kedua berbeda, masing-masing 01H, 02H. Panah pada Gambar 5 menunjukkan bahwa logika bit yang sesuai adalah 0 dan 1 masing-masing. Sebelumnya kami menyebutkan bahwa node CAN akan mendeteksi apakah level bus sama dengan level yang dikirim saat mengirim pesan. Jika ketidakkonsistenan terjadi di area non-arbitrase, kesalahan terkait dipicu, jadi jika dua frame dikirim ke bus pada saat yang sama, kesalahan Bit harus terjadi. Karena kesalahan pengiriman bit akan menyebabkan node mengirim 6 bit dominan yang melanggar aturan pengisian (kesalahan aktif merusak data frame), kesalahan pengisian data lapangan terjadi, seperti yang ditunjukkan pada Gbr. 3


4.jpg

Gbr.5 Bidang Data Konflik


Keempat, bereksperimen dua "data yang sama dengan ID yang sama"

Pada saat yang sama, gunakan dua kartu BISA untuk mengirim frame CAN yang ID-nya adalah data 000H ke 01020304050607H, dan CANScope melakukan pemantauan komunikasi. Pertama-tama, kami tidak memeriksa opsi "bus response" untuk membuat CANScope berfungsi dalam mode hanya-mendengarkan. Hasil eksperimen ditunjukkan pada Gambar 6, dan respons delimiter dalam format yang salah.

5.jpg

Gbr.6 Pemecahan format delimiter respons


Mengapa ini terjadi? Node yang mengirim pesan akan mengirim dua bit resesif di segmen ACK. Jika level dominan diterima selama bit pertama, frame dianggap diterima dengan benar. Karena kedua arbiter berpikir bahwa mereka telah memperoleh hak arbitrase ketika mereka memiliki segmen arbitrase yang sama, mereka menunggu tanggapan di segmen ACK, tetapi hanya ada dua node dalam jaringan. Oleh karena itu, tidak ada respon yang dapat diterima di segmen ACK, dan kesalahan delimiter respons terjadi. Secara sederhana, situasi ini mirip dengan fakta bahwa hanya satu simpul di bus yang tidak dapat mengirim data. Gambar 7 menunjukkan perbandingan bentuk gelombang ketika tidak ada respon di segmen ACK.

6.jpg

Gbr.7 Balasan ACK


Kami memeriksa respon bus dan memulai percobaan lagi (saat ini ada 3 node di bus). Pada saat ini, seperti yang ditunjukkan dalam Gbr. 8, data bus ditransmisikan dan diterima secara normal.

7.jpg

Gbr.8 Mulai BUS Balas


Ringkasan: Ketika dua node mengirim paket dengan ID dan data yang sama pada saat yang sama, terjadi kesalahan padding field data. Ketika dua node mengirim paket dengan ID yang sama dan data yang sama, tidak ada kesalahan yang terjadi jika node lain merespons. Node lainnya merespons dengan kesalahan respons. Oleh karena itu, kita harus menghindari situasi yang sama di segmen ID saat merancang bus BISA.


Kirim permintaan

whatsapp

Telepon

Email

Permintaan