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.
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.

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.
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

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.
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.
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.
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.





