Bu bilgilerde eksik/yanlış noktalar var.
RS-485 üzerine kurulmuş bir sistem değildir. Standartları ve layerları(özellikle 1L) farklı yapılardadır.
Device-net, aynen CanOpen veya SDS gibi CAN üzerinde ki app layer(OSI-7L) de yer alır.
RS-485 için controller ihtiyacı yoktur( Herhangi bir MCU ile direkt transceiverı sürebilirsiniz).
CAN için MCU Core ile Transceiver arasında bir controllera ihtiyaç vardır.
Kısa mesafe kavramı göreceli( 40Kb@1000mt).
RS-485/422 den daha ekonomik olmamasına rağmen çok daha güvenli(Donanımsal bazda en güvenli haberleşme standartı).
CAN 2.0B ile çok daha efektif kullanım imkanı(2.0B geriye dönük(>2.0A) destek sağlar.
Doğrusu burada:
CANBus ve Rs485 popüler fieldbus uygulamalarında yer alır. RS485 OSI layerda yanlızca fiziksel katman üzerinde tanımlanır. CAN üzerinde ayrıca Data Link (Layer 2) eklenmiştir.
RS485 1983 yılında UART cihazlar için çok noktalı haberleşme mimarisi olarak tasarlandı. RS485 herhengi bir cihazla Half duplex ile çift yönlü iletişim sağlayabilir. Çift yönlü haberleşme sağlasa bile cihazlardan birinin mutlaka dinleme yapması lazımdır.
RS485 bir protokol değildir. Yalnızca haberleşme için gereken temel kuralları ve fiziksel bağlantıyı sağlar. Bu demektir ki iletişim yapısı, adresleme şeması, veri çarpışmaları ve diğer görevleri yönetmek protokol yazılımını geliştiren kişinin elindedir.
CAN mimarisi 1980 lerde Bosch firması tarafından otomotiv için geliştirilse de günümüzde endüstriyel otomasyon, medikal cihazlar gibi bir çok alanda kullanılmaktadır.
RS485 ile karşılaştırıldığında CAN yalnızca fiziksel katman içermekle kalmaz aynı zamanda mesaj iletilmesi için gereken mekanizmaları da bünyesinde barındırır. Örneğin çarpışmalarda otomatik veri tekrarlama, veri hatalarını tespit etme (CRC Check), Tüm noktalar üzerinde aynı veri çeşitini sağlamak gibi...Ayrıca mesajın tanımı, mesaj kimliği data ve kontrol bytleri gibi bilgiler iletilebilir.
Tıpkı RS485 gibi CAN'de half duplex modda çift yönlü çalışır. Haberleşme seri olarak yapılır. Sinyal deseni non-return-to-zero (NRZ) olarak kodlanmıştır ve tüm nodlar tarafından algılanır.
Eğer haberleşme hattı müsait ise herhangi bir nod aktarıma başlayabilir. Ancak iki ya da daha fazla nodun aynı anda aktarıma başlaması söz konusu olduğunda mesajın öncelik sıralamasına bakılır. Bu durumda mesaj önceliği yüksek olan data paketi değerlendirmeye alınarak mesaj önceliği düşük olan diğer nodun haberleşmesi askıya alınır.
RS485 normal bir UART modül yardımıyla çalıştırılır. Haberleşme, bu yüzden 8-bitlik bir register ile yazılı veya okunan bireysel karakterler olarak yürütülmektedir. Bu nedenle, bir mesajının yapısının yazılımsal olarak tanımlanması gerekir. Buna karşılık, CAN
kalıcı olarak önceden belirlenmiş bir biçimde mesaj fonksiyonları olan, 0-8 byte arasında ek olarak adresleme ve veri tutarlılığı kontrol bilgisi (CRC) içerir. Kullanıcı sadece mesajı tanımlar, geri kalanı CAN Controller tarafından ilave edilir. CAN denetleyicisi harici çip veya dahili olabilir.
Sonuç olarak CAN mimarisi gerçek zamanlı haberleşme olarak önümüze çıkar. Haberleşme performansı için yüksek öncelikli mesajların iletilmesi nedeni ile oluşabilecek maksimum gecikme zamanları CAN tarafından kontrol edilebilir. RS485 üzerinde çarpışma algılama (Collision Detection) yoktur, bu yüzden bu algılama yazılımsal olarak gerçekleştirilmek zorundadır. Bu nedenle gecikmeler her durumda CAN'den daha fazla olacaktır.
Maliyet anlamında bir çok microchip neredeyse ucuz maliyetle CAN çözümü sunmaktadır. RS485 özgür bir çözümdür. Bunun anlamı maliyet olarak RS485 CAN mimarisinden daha uygundur.