Mühendisliğe Dair Her Şey...: CAN-Bus Protokolü
Mühendisliğe Dair Her Şey...
Açılımı “Controller Area Network” olan 1983 yılında Robert Bosch tarafından otomotivde kablo yumağı yerine bir kablodan yazılım kontrollü veri transferini sağlamak amacıyla geliştirilmiştir ve resmi olarak 1986 yılında kullanılmaya başlanmıştır. Bu protokol sayesinde motor, frenler, klima, çeşitli sensörler gibi birimler arasında onlarca kablo yerine sadece iki kablo kullanılmakadır. CAN protokolü başta otomotiv alanında kullanılsa da veri iletim hızı, hata oranının düşüklüğü ve uygulama kolaylığı gibi sebeplerden dolayı mikroişlemcili sistemlerde de çoğu kişi tarafından bireysel uygulamalarda kullanılmaktadır. Güvenliğin çok önemli olduğu gerçek zamanlı uygulamalarda da kullanılır. Öyle ki istatistiksel olasılık hesapları sonucunda bir asırda bir tane tespit edilemeyen mesaj hatası yapabileceği tespit edilmiştir. Uygulama alanı yüksek hızlı ağlardan düşük maliyetli çoklu kablolamalı sistemlere kadar geniştir. CAN-BUS; otomobil elektroniği, akıllı motor kontrolü, robot kontrolü, akıllı sensörler, asansörler, makine kontrol birimleri, kaymayı engelleyici sistemler, trafik sinyalizasyon sistemleri, akıllı binalar ve laboratuar otomasyonu gibi uygulama alanlarında maksimum 1Mbit/sn lik bir hızda veri iletişimi sağlar. Genel olarak iletişim hızı 40m de 1Mbit/sn iken bir km uzaklıklarda 40Kbit/sn ye düşmektedir. CAN diğer protokollerden farklı olarak mesaj temelli çalışmaktadır. Her mesaja özgü bir ID numarası vardır. Mesajlar çerçeveler ile iletilirler, veri ve istek mesajları olarak ikiye ayrılırlar. İstek mesajlarında veri bulunmaz. Veri mesajlarında ise en fazla sekiz baytlık veri aktarılır. CAN2.0A ve CAN2.0B olmak üzere iki tane standartı vardır. Bunlar arasındaki fark mesaj uzunluklarının farklı olmasıdır. İlerleyen kısımlarda bu iki kavram açıklanacaktır.
2. CAN- Bus Sisteminin Özellikleri
Tüm üniteler iletim hattına eşit öncelikli veri yollama hakkına sahiptir. Buna multimaster(çok efendili) çalışma denir.
Senkronizasyonlu çoklu kabul; aynu veri birçok ünite tarafından alınabilir
Mesajın yollanmasında hata oluşması halinde mesaj iletim hattının(bus) boş olduğu anda otomatik olarak tekrar veri yollama
3. CAN-Bus Sisteminin Çalışma Mantığı
Bir sistemde her ünite bir anda veri yollamaya çalışırsa çatışmalar meydana gelir. Bu durumu önlemek için tüm ünitelerin her an iletim hattını dinler ve hattın boş olduğu anı yakalamaya çalışır. Hattı boş gören ünite kendisine ait veriyi yollar.
Tüm ünitelerin eşit mesaj yollama özelliği bu iletişim sisteminin mesaj öncelikli sistem olmasından kaynaklanır. İnternette tüm bilgisayarların bir numarası (IP) vardır ve veriler o numaraya ait kişiye yollanır. CAN-Bus sisteminde ise ünitelere değil mesajlara numara verilir. Örneğin yolda kaza yapma ihtimali olan bir otomobili düşünelim. Sürücü çarpacağını fark eder ve frene basar. Burada CAN-Bus sisteminin özelliğini aracın çarpışması durumuna göre inceleyelim. Önden bir çarpışma durumunda sensörler devreye girer ve hava yastıklarının açılması, yakıtın kesilmesi gibi bir dizi önlemler alınmalıdır. Bu gibi işlerden sorumlu tüm ünitelere 1 no’lu mesaj (kaza oldu güvenlik sistemleri devreye girsin) iletilmelidir. Bunu diğer ünitelere sensörlü sistem söyleyecektir. Ancak o arada başka bir ünite motor ısısının kaç derece olduğunu sürücü göstergesindeki ekrana bağlı üniteye göndermeye çalışsın. Peki hangisi daha önemli? Bu durumda CAN-Bus sistemi tek kablo üzerinden eşit erişimli mesaj yollanmasına izin verir fakat öncelikli mesajların daha önce iletilmesi iletim çakışmalarını önler.
CAN, iletişim ortamına erişim yöntemi olarak bit öncelikli yapı ile CSMA/CD kullanır. Bu yöntem , mesajların çarpışmamasını garanti etmekle beraber, iletişim hattının uzunluğunu sınırlandırır. Dolayısıyla, CAN düğümleri 1Mbit/s veri iletim hızı ile 40 m ve 40 Kbit/s veri iletim hızı ile 1000 m’lik bir veri yolu üzerinden bağlanabilirler.
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) yapısı CAN sisteminin daha güvenli olmasını sağlar. Bu sistemi kısaca açıklayalım. CAN sistemindeki her ünite iletim ortamını dinlemek zorundadır. Eğer bir ünite iletim ortamına veri aktarmak isterse önce yolu dinler, yol boş ise veriyi iletir. Bazen uzak mesafelerden kaynaklanan sebeplerden dolayı bir ünite yola veri aktarırken, uzaktaki ünite diğer mesajın yolda olduğunu anlayamadığından kendi mesajını da yolu boş zannederek bırakır. Böylece çatışma (collision) oluşur. İki ünite de çatışmayı sezer ve veri aktarımını bir süre bekletir. Daha sonra iletim ortamı boş olduğunda verileri tekrar yollamaya çalışırlar. CAN-BUS sistemine gönderilen tüm veriler, ağdaki her ünite tarafında alınır. Üniteler içinde bulunan filtre yardımıyla kendisini ilgilendiren mesajları alır ilgilendirmeyen mesajları siler.
4. CAN-Bus Veri Paketleme Yapısı ve Mantığı
4.1. Mesaj ID Alanı(Arbitration Field)
CAN sistemlerinde veriler paketler halinde iletilir. Ancak iki tip paketleme yapılır ve özel adları vardır. 11 bit tanımlayıcıya sahip olanlar CAN 2.0A diğer adıyla standart CAN, 29 bit tanımlayıcıya sahip olanlar ise CAN 2.0B extended (geliştirilmiş) CAN denir. Aralarındaki temel fark, tanımlanabilecek mesaj sayısıdır. Standart CAN sisteminde 2^11=2048 mesaj tanımlanabilirken geliştirilmiş Can sisteminde 2^29=536870912 mesaj tanımlanabilir. Bu bilginin tutulduğu alana mesaj ID alanı adı verilir. Mesaj önceliğini belirlemek için buradaki sayı dikkate alınır. Ayrıca mesaj ID alanı RTR biti de içerir. Eğer 1 ise gönderilecek pakete istek çerçevesi (remote frame) denir. Eğer 0 ise veri çerçevesi (data frame) denir. Bir ünite neden data frame yollar? Bu sorunun yanıtı kendisinde bulunan veriyi iletmektir. Bir ünitenin istek çerçevesi yollamasının nedeni, ünitelerin başka ünitelerden gelecek bilgiye ihtiyaç duymalarıdır. Karşı tarafa “bana şu bilgiyi yolla” demenin yolu istek çerçevesi kullanmaktır. İstek çerçevesi yollayan bir ünitenin veri alanı (data field) yoktur. Çünkü veri istemektedir. Istenen veriye ilişkin mesaj ID alanında vardır.
4.2. Kontrol Alanı(Control Field)
6 bitten oluşur. İlk biti standart veri paketlemesi mi ya da geliştirilmiş veri paketlemesi mi yapıldığını belirtir. Ayrıca veri alanının kaç byte değerinden oluştuğunu belirten bitlere sahiptir.
4.3. Veri Alanı(Data Field)
CAN-Bus iletişiminde en fazla 8 byte bilgi iletilebilir. Bu değer 8 byte dan daha az olabilir. Gönderilecek veri uzunluğu kontrol alanında belirtilir.
4.4. Dönüşssel Artıklık Kontrol Alanı(CRC Field)
15 bitlik CRC sequence ve CRC delimiterden oluşur. Görevi pakete ait CRC kodunu tutmaktır. Üniteye gelen pakete cevap verilebilmesi için ilk önce paketin doğruluğu kontrol edilmelidir. Bunun için de ilk önce alınan paketin CRC paketi hesaplanır. Daha sonra alıcı ünite paket ile birlikte gelen CRC değeri ile hesaplanan değeri karşılaştırılır. İki değer birbirine eşit ise alınan paket geçerlidir. Eğer iki değer, birbirine eşit değilse mesajı alamadığını belirtmek için CRC hatasından kaynaklı hata oluştuğunu belirten hata çerçevesi (error frame) yollar. Bu bilgiyi alan gönderici veriyi tekrar yollamaya çalışır. Bu bilgiyi ünitelerden sadece biri yollasa bile veri tekrar yollanmalıdır.
4.5. Alındı Bilgisi Alanı(ACK Field)
Bu bir mesaj iletimiyle açıklanacak olursa; gönderici başla bitir ile iletim hattında şu an gönderici benim der. Ardından mesaj ID alanı, kontrol alanı, CRC alanı gönderilir. Alındı bilgisi alanında ise iletim ortamı çekinik tutulur. Eğer diğer tüm ünitelerden biri, mesaj onu ilgilendirse yada ilgilendirmese dahi mesajı alabiliyorsa iletim ortamını baskın yapar ve böylece gönderici en az bir ünite veriyi alabildiği için bitir bitini yollayıp iletim ortamını diğerlerinin kontrolüne bırakır. Yani alındı bilgisi alanında “aldınız mı?” sorusuna yanıt beklenir. Eğer alındı bilgisi sürecinde herhangi bir üniteden alındığına dair bilgi alamazsa ACK hatasından kaynaklı hata oluştuğunu belirten hata çerçevesi üretilir ve gönderici tekrar yolamaya çalışır. Eğer gönderen istek çerçevesi yollamışsa, alıcı da iletim hattının boş bir anında cevabını göndericiye yollar.
4.6. Hata Çerçevesi(Error Frame)
Veri çerçevesi veya istek çerçevesinin gönderiminde ya da alımında hata oluştuğunda gönderen veya alıcılar tarafından ne tip hatanın olduğunu gösteren mesaj çerçevesidir.
5. CAN-Bus Kullanım Türleri
6. CAN-Bus Gelişim Süreci
90’larda CAN’ in gelişimi sonucunda CiA denen CAN in Automation kuruldu. Bu bağımsız grup CAN özelliklerini belirlemekte ve gerçekleştirmektedir. Daha sonra DeviceNET geliştirildi. DeviceNet endüstriyel cihazlarını (sensörs,aktuatör) yük eviye cihazlarına(kontrolör) bağlamaya yarayan düşük seviye networktür. DeviceNet özellikle düşük maliyet üzerine yoğunlaşmıştır. 1995’te CAN2.0B geliştirilerekten bir CAN sistemine bağlı ünite sayısı 500 milyona çıkarılmıştır. 1996’da CANopen geliştirilmiştir. Böylece uygulamada kullanılabilirliği daha da artmıştır.
Gönderen Unknown zaman: 16:26:00