Apa itu CAN (Controller Area Network) protocol ?
Protokol CAN (Controller Area Network)
CAN merupakan singkatan dari Controller Area Network protocol. Protokol ini dikembangkan oleh Robert Bosch sekitar tahun 1986. Protokol CAN merupakan standar yang dirancang untuk memungkinkan mikrokontroler dan perangkat lain berkomunikasi satu sama lain tanpa komputer induk. Fitur yang membuat protokol CAN unik di antara protokol komunikasi lainnya adalah jenis bus siaran. Di sini, siaran berarti bahwa informasi dikirimkan ke semua node. Node dapat berupa sensor, mikrokontroler, atau gateway yang memungkinkan komputer berkomunikasi melalui jaringan melalui kabel USB atau port ethernet. CAN merupakan protokol berbasis pesan, yang berarti bahwa pesan membawa pengenal pesan, dan berdasarkan pengenal tersebut, prioritas diputuskan. Tidak diperlukan identifikasi node dalam jaringan CAN, sehingga menjadi sangat mudah untuk memasukkan atau menghapusnya dari jaringan. Ini merupakan protokol komunikasi tipe serial half-duplex dan asinkron. CAN merupakan protokol komunikasi dua kabel karena jaringan CAN dihubungkan melalui bus dua kabel. Kabel tersebut merupakan pasangan terpilin yang memiliki impedansi karakteristik 120Ω yang dihubungkan di setiap ujungnya. Awalnya, alat ini terutama dirancang untuk komunikasi di dalam kendaraan, tetapi sekarang digunakan dalam banyak konteks lain. Seperti UDS dan KWP 2000, CAN juga dapat digunakan untuk diagnostik di dalam kendaraan.
Kenapa bisa?
Kebutuhan akan protokol komunikasi standar yang tersentralisasi muncul karena peningkatan jumlah perangkat elektronik. Misalnya, dapat terdapat lebih dari 7 TCU untuk berbagai subsistem seperti dasbor, kontrol transmisi, unit kontrol mesin, dan masih banyak lagi dalam kendaraan modern. Jika semua node dihubungkan satu-ke-satu, maka kecepatan komunikasi akan sangat tinggi, tetapi kompleksitas dan biaya kabel akan sangat tinggi. Dalam contoh di atas, satu dasbor memerlukan 8 konektor, jadi untuk mengatasi masalah ini, CAN diperkenalkan sebagai solusi tersentralisasi yang memerlukan dua kabel, yaitu CAN tinggi dan CAN rendah. Solusi penggunaan protokol CAN cukup efisien karena prioritas pesannya, dan fleksibel karena node dapat dimasukkan atau dihapus tanpa memengaruhi jaringan.
Aplikasi protokol CAN
Awalnya, protokol CAN dirancang untuk mengatasi masalah komunikasi yang terjadi di dalam kendaraan. Namun, seiring berjalannya waktu, protokol ini digunakan di berbagai bidang lain karena berbagai fitur yang ditawarkannya. Berikut ini adalah beberapa aplikasi protokol CAN:IKLAN
- Otomotif (kendaraan penumpang, truk, bus)
- Peralatan elektronik untuk penerbangan dan navigasi
- Otomasi industri dan kontrol mekanis
- Lift dan eskalator
- Otomasi bangunan
- Instrumen dan peralatan medis
- Kelautan, medis, industri, medis
Arsitektur berlapis CAN
Seperti yang kita ketahui bahwa model OSI membagi sistem komunikasi menjadi 7 lapisan yang berbeda. Namun arsitektur CAN terdiri dari dua lapisan, yaitu lapisan data-link dan lapisan fisik.
Mari kita pahami kedua lapisan tersebut.
- Lapisan tautan data: Lapisan ini bertanggung jawab atas transfer data dari satu node ke node lain. Lapisan ini memungkinkan Anda untuk membuat dan mengakhiri koneksi. Lapisan ini juga bertanggung jawab untuk mendeteksi dan mengoreksi kesalahan yang mungkin terjadi pada lapisan fisik. Lapisan tautan data dibagi lagi menjadi dua sublapisan:
- MAC: MAC adalah singkatan dari Media Access Control. MAC mendefinisikan bagaimana perangkat dalam jaringan memperoleh akses ke media. MAC menyediakan Enkapsulasi dan Dekapsulasi data, Deteksi kesalahan, dan pemberian sinyal.
- LLC: LLC adalah singkatan dari Logical link control. LLC bertanggung jawab atas penyaringan penerimaan frame, pemberitahuan kelebihan beban, dan manajemen pemulihan.
- Lapisan fisik: Lapisan fisik bertanggung jawab atas transmisi data mentah. Lapisan ini mendefinisikan spesifikasi untuk parameter seperti level tegangan, pengaturan waktu, kecepatan data, dan konektor.
Spesifikasi CAN mendefinisikan protokol CAN dan lapisan fisik CAN, yang didefinisikan dalam standar CAN ISO 11898. ISO 11898 memiliki tiga bagian:
- ISO 11898-1: Bagian ini berisi spesifikasi lapisan data-link dan tautan sinyal fisik.
- ISO 11898-2: Bagian ini termasuk dalam lapisan fisik CAN untuk CAN berkecepatan tinggi. CAN berkecepatan tinggi memungkinkan kecepatan data hingga 1 Mbps yang digunakan dalam rangkaian daya dan area pengisian daya kendaraan.
- ISO 11898-3: Bagian ini juga termasuk dalam lapisan fisik CAN untuk CAN kecepatan rendah. Bagian ini memungkinkan kecepatan data hingga 125 kbps, dan CAN kecepatan rendah digunakan saat kecepatan komunikasi bukan merupakan faktor yang penting.
CiA DS-102: Bentuk lengkap CiA adalah CAN dalam Otomasi, yang mendefinisikan spesifikasi untuk konektor CAN.
Sejauh menyangkut implementasi, pengontrol CAN dan transceiver CAN diimplementasikan dalam perangkat lunak dengan bantuan aplikasi, sistem operasi, dan fungsi manajemen jaringan.
Pembingkaian CAN
Mari kita pahami struktur frame CAN.
- SOF: SOF adalah singkatan dari start of frame, yang menunjukkan bahwa frame baru telah dimasukkan ke dalam jaringan. SOF terdiri dari 1 bit.
- Pengidentifikasi: Format data standar yang ditetapkan berdasarkan spesifikasi CAN 2.0 A menggunakan pengidentifikasi pesan 11-bit untuk arbitrase. Pada dasarnya, pengidentifikasi pesan ini menetapkan prioritas bingkai data.
- RTR: RTR adalah singkatan dari Remote Transmission Request, yang menentukan jenis frame, apakah itu frame data atau frame jarak jauh. RTR terdiri dari 1-bit.
- Bidang kontrol: Memiliki fungsi yang ditentukan pengguna.
- IDE: Bit IDE dalam bidang kontrol merupakan singkatan dari ekstensi pengenal. Bit IDE yang dominan mendefinisikan pengenal standar 11-bit, sedangkan bit IDE resesif mendefinisikan pengenal yang diperluas 29-bit.
- DLC: DLC adalah singkatan dari Data Length Code, yang menentukan panjang data dalam bidang data. Kode ini terdiri dari 4 bit.
- Bidang data: Bidang data dapat berisi hingga 8 byte.
- Bidang CRC: Kerangka data juga berisi bidang pemeriksaan redundansi siklik 15 bit, yang digunakan untuk mendeteksi kerusakan jika terjadi selama waktu transmisi. Pengirim akan menghitung CRC sebelum mengirim kerangka data, dan penerima juga menghitung CRC lalu membandingkan CRC yang dihitung dengan CRC yang diterima dari pengirim. Jika CRC tidak cocok, maka penerima akan menghasilkan kesalahan.
- Bidang ACK: Ini adalah pengakuan penerima. Dalam protokol lain, paket terpisah untuk pengakuan dikirim setelah menerima semua paket, tetapi dalam kasus protokol CAN, tidak ada paket terpisah yang dikirim untuk pengakuan.
- EOF: EOF adalah singkatan dari end of frame. Berisi 7 bit resesif berurutan yang dikenal sebagai End of frame.
Sekarang kita akan melihat bagaimana data dikirimkan melalui jaringan CAN.
Jaringan CAN terdiri dari beberapa node CAN. Dalam kasus di atas, kami telah mempertimbangkan tiga node CAN, dan menamainya sebagai node A, node B, dan node C. Node CAN terdiri dari tiga elemen yang diberikan di bawah ini:
- Host
Host adalah mikrokontroler atau mikroprosesor yang menjalankan beberapa aplikasi untuk melakukan pekerjaan tertentu. Host memutuskan apa arti pesan yang diterima dan pesan apa yang harus dikirim selanjutnya. - Pengontrol CAN
Pengontrol CAN menangani fungsi komunikasi yang dijelaskan oleh protokol CAN. Pengontrol ini juga memicu pengiriman atau penerimaan pesan CAN. - Transceiver CAN
Transceiver CAN bertanggung jawab atas transmisi atau penerimaan data pada bus CAN. Transceiver ini mengubah sinyal data menjadi aliran data yang dikumpulkan dari bus CAN yang dapat dipahami oleh pengontrol CAN.
Pada diagram di atas, kabel pasangan terpilin tanpa pelindung digunakan untuk mengirimkan atau menerima data. Kabel ini juga dikenal sebagai bus CAN, dan bus CAN terdiri dari dua jalur, yaitu jalur CAN low dan jalur CAN high, yang juga dikenal sebagai CANH dan CANL. Transmisi terjadi karena tegangan diferensial yang diterapkan pada jalur ini. CAN menggunakan kabel pasangan terpilin dan tegangan diferensial karena lingkungannya. Misalnya, pada mobil, motor, sistem pengapian, dan banyak perangkat lainnya dapat menyebabkan kehilangan data dan kerusakan data karena gangguan. Pemutarbalikan kedua jalur tersebut juga mengurangi medan magnet. Bus diakhiri dengan resistansi 120Ω di setiap ujungnya.
Karakteristik CAN
Dengan bantuan tegangan diferensial, kita akan menentukan bagaimana 0 dan 1 ditransmisikan melalui bus CAN. Gambar di atas adalah grafik tegangan yang menunjukkan level tegangan CAN low dan CAN high. Dalam terminologi CAN, logika 1 dikatakan resesif sedangkan logika 0 dominan. Ketika jalur CAN high dan jalur CAN low diaplikasikan dengan 2,5 volt, maka tegangan diferensial aktual akan menjadi nol volt. Nol volt pada bus CAN dibaca oleh transceiver CAN sebagai resesif atau logika 1. Nol volt pada bus CAN adalah status bus yang ideal. Ketika jalur CAN high ditarik ke atas hingga 3,5 volt dan jalur CAN low ditarik ke bawah hingga 1,5 volt, maka tegangan diferensial aktual bus akan menjadi 2 volt. Ini diperlakukan sebagai bit dominan atau logika 0 oleh transceiver CAN. Jika status bus mencapai dominan atau logika 0 maka akan menjadi mustahil untuk pindah ke status resesif oleh node lain mana pun.
Poin-poin penting yang dipelajari dari karakteristik CAN
- Logika 1 adalah status resesif. Untuk mengirimkan 1 pada bus CAN, CAN tinggi dan CAN rendah harus diterapkan dengan 2,5V.
- Logika 0 adalah status dominan. Untuk mengirimkan 0 pada bus CAN, CAN tinggi harus diterapkan pada 3,5V dan CAN rendah harus diterapkan pada 1,5V.
- Keadaan bus yang ideal adalah resesif.
- Jika simpul mencapai keadaan dominan, ia tidak dapat kembali ke keadaan resesif melalui simpul lainnya.
logika bus CAN
Dari skenario di atas, kita mengetahui bahwa status dominan menimpa status resesif. Ketika node mengirimkan bit dominan dan resesif secara bersamaan, maka bus tetap dominan. Level resesif hanya terjadi ketika semua node mengirimkan bit resesif. Logika semacam itu dikenal sebagai logika AND, dan secara fisik diimplementasikan sebagai rangkaian kolektor terbuka.
Prinsip Komunikasi CAN
Seperti yang kita ketahui bahwa pesan dikirim berdasarkan prioritas yang ditetapkan di bidang arbitrase. Untuk frame standar, pengenal pesan adalah 11 bit, sedangkan untuk frame yang diperluas, pengenal pesan adalah 29 bit. Hal ini memungkinkan perancang sistem untuk merancang pengenal pesan pada desain itu sendiri. Semakin kecil pengenal pesan, semakin tinggi prioritas pesan.
Mari kita pahami cara kerja arbitrase melalui diagram alur.
Pengirim ingin mengirim pesan dan menunggu bus CAN menjadi tidak aktif. Jika bus CAN tidak aktif, maka pengirim mengirim SOF atau bit dominan untuk akses bus. Kemudian, ia mengirim bit pengenal pesan dalam bit yang paling signifikan. Jika node mendeteksi bit dominan pada bus saat ia telah mengirimkan bit resesif, itu berarti bahwa node telah kehilangan arbitrase dan berhenti mengirimkan bit lebih lanjut. Pengirim akan menunggu dan mengirim ulang pesan setelah bus bebas.
Contoh Arbitrase CAN
Jika kita mempertimbangkan tiga node, yaitu Node 1, Node 2, dan Node 3, pengenal pesan dari node-node ini berturut-turut adalah 0x7F3, 0x6B3, dan 0x6D9.
Transmisi ketiga node dengan bit paling signifikan ditunjukkan pada diagram di atas.
Bit ke -11 : Karena ketiga bit node bersifat resesif, maka bit bus juga akan tetap resesif.
Bit ke -10 : Semua node memiliki bit ke-10 sebagai resesif, jadi bus juga akan tetap resesif.
Bit ke -9 : Node 1 memiliki bit resesif sementara node lain memiliki bit dominan, jadi bus juga akan tetap dominan. Dalam kasus ini, node 1 telah kehilangan arbitrasi, jadi ia berhenti mengirim bit.
Bit ke -8 : Baik node 2 maupun node 3 mengirimkan bit resesif, sehingga status bus akan tetap resesif.
Bit ke -7 : Node 2 mengirimkan bit dominan sementara node 3 telah mengirimkan bit resesif, sehingga status bus akan tetap dominan. Dalam kasus ini, node 3 telah kalah dalam arbitrasi, sehingga berhenti mengirimkan pesan sementara node 2 telah memenangkan arbitrasi yang berarti akan terus menahan bus hingga pesan diterima.
//AGR
Referensi : [1]