CANBUS Mesaj Yapısı

Canbus Haberleşme Protokolü Nedir ? yazımızda sizlere CANBUS protokolü hakkında temel bilgilere yer vermiştik. Bu yazımızda ise sizlere Canbus mesaj yapısı hakkında bilgiler vereceğiz. Bu yazıyı okuduğunuzda, CANBUS datasının nasıl oluşturulacağını ve nasıl okunacağını öğrenmiş olacaksınız. Bu bilgiler ışığında Canbus protokolünü anlayıp, Canbus protokolünü analiz edebilir hale geleceksiniz.

CANBUS Mesaj Tipleri Nelerdir ?

CAN veriyolu üzerinde kurulan iletişim CANBUS frameleri yani CANBUS mesaj çerçeveleri ile yapılır. Temelde iki farklı CAN mesaj tipi vardır. Bu mesaj tipleri standart olarak CAN 2.0A ve CAN2.0B olarak ikiye ayrılmaktadır. Bu standartlar çok önemlidir çünkü sizin hangi yapıda mesaj oluşturmanız gerektiğini belirler.

Canbus haberleşmesinde mesajlar protokolün temel taşıdır. Datanın veri yolu üzerindeki önceliği bu mesajlara bakarak belirlenmektedir. Bundan daha sonra daha detaylı bir şekilde bahsedeceğiz.

CAN 2.0A daha çok otomobillerde kullanılan mesaj tipidir. CAN2.0B den ayıran yönü mesaj ID’sinin 11 -Bit olmasıdır. CAN2.0B ise 29 Bit Mesaj ID içerebilirve daha çok ağır vasıta araçlarda tercih edilen J1939 protokolü ile kullanılmaktadır. Ancak kullanım alanları bunlar ile sınırlı değildir. Endüstride bu iki protokol yapısı da sıklıkla kullanılmaktadır. Örneğin iki cihazı birbiri ile haberleştirmek isterseniz, cihazların CANBUS fiziksel alt yapı desteği de mevcutsa ihtiyacınıza göre CAN2.0A ve CAN2.0B kullanabilirsiniz. Bu sizin Mesaj ID’yi nasıl seçeceğinize bağlıdır.

CAN2.0A bir başka ismiyle Standart CAN olarak bilinmektedir. En çok tercih edilen CAN mesaj yapısıdır.

CAN 2.0A (Standart CAN) Mesaj Yapısı

Standart CANBUS mesaj yapısı aşağıda gösterildiği gibidir:

Standart canbus mesaj yapısı

SOF: Start Of Frame demektir. 1-Bit veri içerir. Bir düğümün hatta konuşmak (data göndermek) istediğini belirtmek için baskın (dominant- 0) gönderir. Bir Node’un( hatta bulunan cihazın) konuşmak istediğini buradan anlarız. (Reccesive ve Dominant kavramlarını daha iyi anlamak için bakınız )

ID: Canbus’un en önemli birimi olan kısmıdır 11-Bitten oluşur. Mesajın özelleşmiş ID’sini içerir. Düşük değere sahip mesaj ID’si veri yolunda önceliğe sahiptir. Örneğin mesaj ID’si 0x05 olan bir frame, 0x09 olana göre önceliklidir. İlk önce 0x05 ID’li mesaj iletilecektir.

RTR: Remote Transmition Request ifadesinin kısaltılmasıdır. Bu CAN mesajının bir istek (request) mesajı mı yoksa data içeren bir mesaj mı olduğunu belirlememize yarayan kısımdır. 1-Bitlik veri içerir. Bu veri eğer “0” ise yani dominant ise, gönderilecek data mesaj framedir. Yani Data alanında veri içerir. RTR değeri “1” ise yani reccesive durumdaysa, gönderilen mesaj Request Mesajıdır. Bu mesaj tipinde, Data alanında veri olmaz. RTR’nin 1 olması durumunda, mesaj ID tipine göre istenen değerin istendiğini belirtir. Bu mesaja göre, bir başka mesaj ilgili düğüm (cihaz, node) tarafından hatta göndermektedir. Örneğin bir sensörün mesafe bilgisini öğrenmek istiyorsunuz, sensörün request mesajına cevap dönebildiğini varsayalım. Mesaj Id’sini 0x05 girdiniz ve bir request mesajı gönderdiniz. Bu mesaj ID’si İlgili Node tarafından, RTR= 1 olarak alınması durumunda sensör verilerini hatta gönderir.

CONTROL: 6-Bitlik bir alandır. IDE+r0+DLC kısmından oluşur. IDE: 1 bitlik bir alandır. Mesajın CAN2.0A mı yoksa CAN2.0B mi olduğunun belirtildiği kısımdır. Bu kısımdan sonra 1 bitlik r0 alanı gelir. Bu bit alanı kullanılmamaktadır ve resesiftir. Daha sonra 4-Bitlik DLC alanı gelir. Bu alanda Data bloğunun içinde kaç Byte data olduğu belirtilmelidir. Data bloğu maksimum 8 byte içerir. Bu değer bu duruma göre 0-8 arasında konfigüre edilmektedir.

DATA: CAN veri yolunda iletilmek istenen mesajın bulunduğu alandır. 0-64 bit arasında veri içerir.

CRC: Verinin data yolu üzerinde herhangi bir bozulmaya uğrayıp uğramadığının tespit edildiği kısımdır. Gönderici SOF alanından bu alana kadar hesaplamış olduğu CRC’yi bu ilgili alan koyar, alıcı ise aynı şekilde SOF’tan itibaren kendisi bir CRC hesaplar. Bu hesaplama sonucu CRC’lerin eşleşmesiyle datanın hiçbir bozulmaya uğramadığından emin olunur.

ACK: Mesajın bir alıcı node tarafından alınıp, alınmadığının belirlendiği kısımdır. Bu kısım 2 bitten oluşur, ilk bit gönderici tarafından reccesive olarak gönderilmektedir. Bir alıcı tarafından alınmışsa alıcı veri yoluna dominant bit yollar. 2. bit ise delimiter kısmıdır ve reccesive olarak gönderilir. Bu alan zaman senkronizasyonu için kullanılıp, alıcı tarafından gönderilecek ACK bitinin alınması için 1 bitlik bir süreyi bize sağlamaktadır.

EOF: Bu kısım End Of the Frame olarak isimlendirilmektedir. Mesaj çerçevesinin sonlandırıldığını ifade eder ve reccesive olarak gönderilmektedir.

CAN frame’leri arasında 3-Bitlik bir IFS alanı mevcuttur. Bu 3-Bitlik alan, mesaj çerçeveleri arasında boşluk sağlamak için kullanılmaktadır.

CAN 2.0B (Extended CAN) Mesaj Yapısı

Bu mesaj tipinde, CAN 2.0A mesaj tipine göre tek farklılık mesaj ID’sinin 29-Bit’den oluşmasıdır.

CAN2.0B canbus mesaj yapısı

Bir diğer farklı olan kısım ise Control bloğundaki IDE kısmıdır. Extended frame olduğunu bu kısım ile belirtmemiz gerekir. Diğer bitler standart can mesajları ile benzerlik gösterir.

Aynı Veri Hattı Üzerinde İki Mesaj Tipinin Bulunması

Peki burada şöyle bir soru aklımıza gelebilir: Standart ve Extended CAN mesajlarının hatta aynı anda olma durumu gerçekleşebilir mi ? Cevap evet olacaktır. Bu sorunun ardından bir başka soru da hemen arkasına sorulabilir, peki bu mesajlarda ki önceliği ne belirler ? Bunun için aşağıdaki görseli inceleyelim.

Extended canbus mesaj yapısı

Extended bir frame yapısında ID şu şekilde oluşur, ilk önce 11-Bitlik ID kısmı gelirken, Standart Frame’in RTR ve IDE’ye denk gelen kısımlarına SRR (Substitute Remote Request) ve IDE reccesive bitleri gelir. Bu sayede eğer hatta Standart Frame mevcutsa onun önce iletilmesi sağlanır. Daha sonra gelen 18- Bitlik mesaj kimliğinden sonra, Extended mesaja ait olan RTR+Control kısımları iletilmektedir. Diğer (Data, CRC, ACK, EOF) kısımları standart frame ile aynıdır.

Sizlere bu yazımızda CANBUS mesaj yapısı hakkında bilgi vermiş olduk. Bir sonraki yazımızda, Can haberleşme hızı, bit süresi gibi konulara yer vereceğiz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.