Can-Bus Nedir?

canbusAçılımı “Controller Area Network Bus” yani “Kontrol Alan Ağı Veri Yolu”dur. 1980’lerde Robert Bosch tarafından otomotivde kablo yumağı yerine, bir kablodan yazılım kontrollü veri transferini sağlamak amacıyla geliştirilmiştir. CAN, otomotiv endüstrisindeki en bilinen haberleşme sistemidir. Her ne kadar başlangıçta yalnızca otomotiv uygulamaları için tasarlanmış olsa da yüksek performans güvenilirliğinden dolayı birçok dağıtık (distrubuted) endüstriyel kontrol uygulamalarında yaygın olarak 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 laboratuvar otomasyonu gibi uygulama alanlarında maksimum 1Mbit/sn’lik bir hızda veri iletişimi sağlar.

CAN-BUS sisteminin sahip olduğu özellikler:

– Mesaj önceliği
– Kayıp zaman güvenliği – Yapılandırma esnekliği
– Senkronizasyonlu çoklu kabul: Aynı veri birçok ünite tarafından alınabilir
– Sistemdeki veri yoğunluğunu kaldırabilme
– Çok efendili (Multimaster) çalışma
– Hata tespiti ve hataya ilişkin sinyalleri üretme
– Mesajın yollanmasında hata oluşması halinde mesajın iletim hattının (BUS) boş olduğu bir anda mesajı otomatik tekrar yollama
– Ünitelerde oluşan hataları ayırt edebilme ve özerk olarak kalıcı hatalı üniteleri kapatabilme

Çalışma Mantığı

CAN-BUS sisteminde tüm üniteler iletim hattına eşit öncelikli veri yollama hakkına sahiptirler. Buna multimaster çalışma denir. Hatasız veri iletişimi nasıl olur? Herkes bir anda veri yollamaya çalışırsa çatışmalar olacağı açık. Bunun çözümü şöyle sağlanmış. Tüm üniteler her daim iletim hattını dinlemek zorundadır.

Yani her ünite iletim hattının boş olduğu anı yakalamaya çalışır. Hattı boş gören verisini yollar. Tüm ünitelerin eşit mesaj yollama önceliği olsa da işin aslı biraz öyle değil. Bunun sebebi, CAN’in mesaj öncelikli bir sistem olmasından dolayıdır. İnternette tüm PC’lerin bir numarası (IP’si) vardır ve veriler o IP’li kişiye yollanır. Zaten bu yüzden bol kablolamalı bir sistemdir. Ancak CAN’de ünitelere değil mesajlara numara verilir. Örneğin bir otomobil düşünelim. Aceleci şoförümüz yolda hızlıca giderken bir arabaya çarpacak olsun. Şoför çarpacağını fark eder ve tüm gücüyle frene basar. Burada CAN’in önemi arabaların kaza yapması ile başlar. Mesela önden çaptı ve sensörler bunu fark ettiğinde hava yastıklarının açılması, yakıtın kesilmesi gibi bir dizi önlemler alınmalıdır. Bu işlerden sorumlu tüm ünitelere 1 numaralı mesaj (kaza oldu; güvenlik sistemleri devreye girin) iletilmelidir. Bunu diğer ünitelere sensörlü sistem söyleyecektir. Ancak o ara başka bir ünite mesela motor ısısının kaç derece olduğunu kokpitteki LCD’li üniteye yollamaya çalışsın. Sizce hangisi şu anda daha önemli? İşte CAN tek kablo üzerinden eşit erişimli mesaj yollanmasına izin verir ama öncelikli mesajların daha önce iletim ortamına iletilmesine de özen gösterir. 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.

CAN-BUS

Dolayısıyla,CAN düğümler 1 Mbit/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)’den kısaca bahsedersek CAN sistemi, güvenli iletişim gücünü bu yapıyı kullanmasından alır. Bir CAN haberleşmesi örneği ile CSMA/CD’nın rolünü 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 verisini yola iletir. Bazen uzak mesafelerden de kaynaklanan sebeplerden dolayı bir ünite yola veri aktarırken, uzaktaki diğer ünite 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 her iki ünite de veri aktarım isteklerini bir süre bekletir. Daha sonra iletim ortamı boş olduğunda verilerini tekrar yollamaya çalışırlar.

CAN-BUS’a gönderilen tüm veriler tüm üniteler tarafından alınır. Her ünite içinde bulunan filtreler yardımıyla kendisini ilgilendiren mesajları alır, ilgilendirmeyenleri ise çöpe atar.

CAN’ in Gelişim Süreci:
90larda 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. 95 de CAN2.0B geliştirilerek 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.