Hardware etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Hardware etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Temmuz 2026 Salı

RS-485/MODBUS ve CAN Bus Karşılaştırması: Hangisi Ne Zaman Tercih Edilmeli?

RS-485/MODBUS ve CAN Bus Karşılaştırması: Hangisi Ne Zaman Tercih Edilmeli?

Endüstriyel bir cihaz, otomasyon kartı, araç elektroniği veya gömülü sistem tasarlarken karşımıza sık sık şu soru çıkar:

“RS-485 ve Modbus mu kullanmalıyım, yoksa CAN Bus mı?”

İlk bakışta bu iki seçenek birbirine oldukça benzer görünür. İkisinde de genellikle iki telli diferansiyel bir haberleşme hattı vardır. İkisi de gürültülü ortamlarda kullanılabilir. İkisiyle de aynı hat üzerinde birden fazla cihaz haberleştirilebilir. Üstelik her ikisi de yıllardır sanayide güvenilir şekilde kullanılmaktadır.

Fakat biraz derine indiğimizde önemli bir fark ortaya çıkar:

RS-485 bir haberleşme protokolü değildir. Kablodaki elektriksel sinyalin nasıl taşınacağını tanımlayan fiziksel bir standarttır. Modbus RTU ise çoğunlukla RS-485 hattı üzerinde çalışan bir haberleşme protokolüdür.

CAN Bus ise yalnızca elektriksel sinyal seviyelerini değil; mesajların nasıl gönderileceğini, aynı anda konuşmak isteyen cihazların nasıl sıralanacağını, hataların nasıl algılanacağını ve hatalı cihazların ağdan nasıl uzaklaştırılacağını da tanımlar.

Dolayısıyla aslında yaptığımız karşılaştırma tam olarak “RS-485 ile CAN” karşılaştırması değildir. Daha doğru ifadeyle şunu karşılaştırıyoruz:

  • RS-485 fiziksel katmanı üzerinde çalışan Modbus RTU sistemi
  • CAN fiziksel katmanı ve CAN veri bağlantı protokolü

Bu yazıda RS-485, Modbus RTU ve CAN Bus yapılarını temel seviyeden başlayarak inceleyecek; hız, mesafe, güvenilirlik, gerçek zamanlılık, maliyet ve yazılım karmaşıklığı açısından karşılaştıracağız. Yazının sonunda hangi uygulamada hangi teknolojinin daha mantıklı olduğunu daha net görebileceksiniz. 😊

RS-485 üzerinde Modbus RTU ile CAN Bus haberleşme yapılarının; kablolama, sorgu-cevap modeli, mesaj arbitrajı, hız, mesafe ve hata yönetimi açısından karşılaştırılması.

Önce Katmanları Doğru Yerleştirelim

Haberleşme sistemlerini bir kargo hizmetine benzetebiliriz.

  • Kullanılan yol ve araçlar, fiziksel haberleşme ortamını temsil eder.
  • Paketin üzerine adresin nasıl yazılacağı, veri formatını temsil eder.
  • Kimin ne zaman paket göndereceği, erişim yöntemini temsil eder.
  • Paket kaybolursa ne yapılacağı ise hata yönetimini temsil eder.

Bu benzetmede RS-485 yalnızca yolun ve taşıma aracının elektriksel özelliklerini tanımlar. Modbus, paketin içine ne yazılacağını ve paketin nasıl yorumlanacağını belirler. CAN ise yol kullanım sırasından paket kontrolüne kadar daha fazla konuyu kendi içerisinde çözer.

Teknoloji Temel görevi Tanımladığı katman
RS-485 Elektriksel sinyalin kablo üzerinde nasıl taşınacağını belirler. Fiziksel katman
Modbus RTU Cihaz adreslerini, komutları, register yapılarını ve veri çerçevesini tanımlar. Uygulama protokolü ve seri hat çerçeveleme kuralları
CAN Bus Mesaj iletimi, hat erişimi, önceliklendirme ve hata yönetimini sağlar. Fiziksel katman ve veri bağlantı katmanı
CANopen / J1939 CAN mesajlarının uygulama seviyesinde nasıl kullanılacağını tanımlar. Üst seviye protokol

Bu ayrım oldukça önemlidir. Çünkü “CAN kullanırsam bütün cihazlar otomatik olarak anlaşır” düşüncesi doğru değildir. CAN, mesajların güvenilir biçimde taşınmasını sağlar; ancak mesajların içerisindeki baytların ne anlama geldiğini sizin tanımlamanız veya CANopen, SAE J1939 gibi bir üst seviye protokol kullanmanız gerekir.

RS-485 Nedir?

RS-485, uzun mesafeli ve gürültüye dayanıklı seri haberleşme için geliştirilmiş diferansiyel bir elektriksel iletişim standardıdır. RS-485 hattında veri genellikle A ve B olarak adlandırılan iki kablo üzerinden taşınır.

Alıcı cihaz yalnızca bir kablonun gerilimine bakmaz. A ve B hatları arasındaki gerilim farkını ölçer. Dış ortamdan gelen elektromanyetik gürültü iki kabloyu benzer şekilde etkilediği için alıcı, ortak gürültünün önemli bir bölümünü bastırabilir.

Tek uçlu haberleşme:

Sinyal ---------------------------->
GND   ----------------------------->

Diferansiyel RS-485 haberleşmesi:

A     ----\____/----\____/--------->
B     ____/----\____/----\________->

Alıcı, A ile B arasındaki farkı değerlendirir.

Bu yapı RS-485’i fabrika ortamları, motor sürücüleri, enerji sayaçları, bina otomasyonu, HVAC sistemleri, güneş enerjisi inverterleri ve saha cihazları için oldukça kullanışlı hâle getirir.

RS-485’in temel özellikleri

  • Diferansiyel sinyal kullandığı için elektriksel gürültüye dayanıklıdır.
  • Düşük haberleşme hızlarında yaklaşık bir kilometre sınıfındaki mesafelere ulaşılabilir.
  • Aynı hat üzerinde birden fazla cihaz bulunabilir.
  • İki telli yarı çift yönlü veya dört telli tam çift yönlü kullanılabilir.
  • UART bulunan hemen her mikrodenetleyiciye bir RS-485 transceiver eklenerek uygulanabilir.
  • Haberleşme protokolünü kendisi belirlemez.

RS-485 neden tek başına yeterli değildir?

RS-485 yalnızca sürücü ve alıcıların elektriksel davranışını tanımlar. Aşağıdaki soruların cevabını vermez:

  • Mesaj hangi baytla başlayacak?
  • Cihazların adresi nasıl belirlenecek?
  • Verinin doğru ulaştığı nasıl kontrol edilecek?
  • İki cihaz aynı anda konuşursa ne olacak?
  • Bir sensör değeri hangi veri formatında gönderilecek?
  • Mesajın sonunda hangi hata kontrol yöntemi kullanılacak?

Bu kuralları sizin tanımlamanız gerekir. Alternatif olarak Modbus RTU gibi hazır ve yaygın bir protokol kullanabilirsiniz.

Modbus RTU Nedir?

Modbus, endüstriyel cihazlar arasında veri alışverişi yapmak için geliştirilmiş açık ve yaygın bir haberleşme protokolüdür. Seri hatta kullanılan sürümü genellikle Modbus RTU olarak adlandırılır.

Modbus RTU çoğunlukla RS-485 üzerinde çalışır. Ancak teorik olarak RS-232 veya başka uygun seri haberleşme ortamlarında da kullanılabilir.

Modbus RTU sisteminde genellikle bir istemci ve birden fazla sunucu cihaz bulunur. Eski dokümanlarda bunlar “master” ve “slave” olarak da adlandırılabilir.

İstemci cihaz soruyu sorar, adreslenen sunucu cevap verir.

İstemci:
"1 numaralı cihaz, 100. register'dan itibaren iki register gönder."

Cihaz 1:
"İstediğin iki register'ın değeri 1250 ve 846."

İstemci:
"2 numaralı cihaz, 20. çıkışı aktif et."

Cihaz 2:
"Komut uygulandı."

Modbus veri modeli

Modbus içerisinde veriler yaygın olarak dört temel grupta ele alınır:

Veri türü Erişim Örnek kullanım
Coil Okuma ve yazma Röle veya dijital çıkış komutu
Discrete Input Yalnızca okuma Buton veya dijital giriş durumu
Input Register Yalnızca okuma Sıcaklık, basınç veya analog ölçüm
Holding Register Okuma ve yazma Ayar, eşik, çalışma modu veya kalibrasyon değeri

Register tabanlı bu yaklaşım özellikle PLC, HMI ve SCADA sistemleri açısından oldukça pratiktir. Bir cihazın dokümanında register tablosu bulunuyorsa, cihazı farklı üreticilerin PLC veya yazılımlarıyla entegre etmek görece kolaydır.

Basit bir Modbus RTU mesajı

Örneğin istemci, 1 adresli cihazdan iki holding register okumak istesin:

01 03 00 64 00 02 CRC_L CRC_H
  • 01: Cihaz adresi
  • 03: Holding register okuma fonksiyon kodu
  • 00 64: Başlangıç register adresi
  • 00 02: Okunacak register sayısı
  • CRC_L CRC_H: Hata kontrol değeri

Buradaki CRC, mesajın hat üzerinde bozulup bozulmadığının anlaşılmasına yardımcı olur. Fakat mesajın yeniden gönderilmesi, zaman aşımı yönetimi ve cihazın cevap vermemesi gibi durumların yönetimi büyük ölçüde uygulama yazılımına bırakılmıştır.

CAN Bus Nedir?

CAN, yani Controller Area Network, başlangıçta araç içerisindeki elektronik kontrol ünitelerinin güvenilir biçimde haberleşebilmesi için geliştirilmiştir. Günümüzde otomotiv dışında iş makineleri, tarım makineleri, medikal cihazlar, robotlar, asansörler, denizcilik sistemleri ve endüstriyel kontrol uygulamalarında da kullanılmaktadır.

CAN hattında da çoğunlukla iki diferansiyel kablo bulunur:

  • CAN_H
  • CAN_L

CAN’in en önemli farkı, hattaki cihazların merkezi bir yöneticiden izin beklemeden mesaj gönderebilmesidir. Bu nedenle CAN, çok yöneticili veya yaygın kullanılan ifadeyle multi-master bir yapıya sahiptir.

CAN cihaz adresi yerine mesaj kimliği kullanır

Modbus sisteminde soru genellikle belirli bir cihaza yöneltilir:

"7 adresli cihaz, sıcaklık değerini gönder."

CAN sisteminde ise cihazlar çoğunlukla belirli bir mesaj kimliğini yayınlar:

CAN ID: 0x181
Data:   23 05 00 00 00 00 00 00

Hattaki bütün CAN düğümleri mesajı fiziksel olarak görür. Ancak yalnızca ilgili CAN ID’sine göre filtre ayarı yapılmış cihazlar mesajı işleme alır.

Bu nedenle CAN haberleşmesi cihaz odaklı değil, mesaj odaklıdır.

CAN Bus arbitrajı nasıl çalışır?

Aynı anda iki CAN düğümünün mesaj göndermeye başladığını düşünelim. Normal bir seri haberleşme sisteminde bu durum çakışmaya ve mesajların bozulmasına yol açabilir.

CAN, bu sorunu bit seviyesinde ve veri kaybı oluşturmadan çözer.

CAN hattında iki temel bit durumu vardır:

  • Dominant bit: Mantıksal 0
  • Recessive bit: Mantıksal 1

Dominant bit, recessive bite üstün gelir. Her düğüm kendi gönderdiği biti aynı anda hattan okur. Bir düğüm recessive bit gönderdiği hâlde hatta dominant bit görürse kendisinden daha yüksek öncelikli bir mesaj bulunduğunu anlar ve iletimi bırakır.

Düğüm A mesaj kimliği: 0x120
Düğüm B mesaj kimliği: 0x080

İki düğüm aynı anda başlar.

Bitler karşılaştırılır.
İlk farklılıkta 0 gönderen mesaj üstün gelir.

Sonuç:
0x080 mesajı hattı kazanır.
0x120 mesajı bozulmaz; yalnızca daha sonra tekrar gönderilir.

CAN’de sayısal olarak daha düşük mesaj kimliği daha yüksek önceliğe sahiptir. Örneğin 0x050 kimlikli bir acil durdurma mesajı, 0x500 kimlikli periyodik sıcaklık mesajından daha yüksek öncelikli olabilir.

Önemli: CAN arbitrajı öncelik tabanlıdır. Yanlış ID planlaması yapılırsa düşük öncelikli mesajlar yüksek hat yükünde uzun süre bekleyebilir.

CAN hata yönetimi neden güçlüdür?

CAN protokolünde hata algılama yalnızca mesaj sonundaki CRC kontrolünden ibaret değildir. Protokol içerisinde birden fazla kontrol mekanizması bulunur:

  • CRC kontrolü
  • Gönderilen bitin hat üzerinden geri okunması
  • Bit stuffing kontrolü
  • Mesaj çerçevesi format kontrolü
  • Alıcı onay biti, yani ACK
  • Hata çerçevesi gönderimi
  • Gönderme ve alma hata sayaçları
  • Error Active, Error Passive ve Bus-Off durumları

Sürekli hatalı mesaj gönderen bir CAN düğümü hata sayacını artırır. Hatalar devam ederse cihaz önce pasif hâle gelebilir, ardından Bus-Off durumuna geçerek haberleşme hattından mantıksal olarak ayrılabilir.

Bu mekanizma, arızalı tek bir cihazın bütün haberleşme hattını sürekli bozmasını önlemeye yardımcı olur.

RS-485/MODBUS ve CAN Bus Kısa Karşılaştırma Tablosu

Kriter RS-485 + Modbus RTU CAN Bus
Temel yapı İstemci-sunucu, sorgu-cevap Çok yöneticili, mesaj tabanlı yayın
Hat erişimi Genellikle istemci kontrol eder. Bütün düğümler mesaj gönderebilir.
Çakışma yönetimi Protokol ve uygulama yazılımıyla önlenir. Donanımsal, bit seviyesinde arbitraj bulunur.
Önceliklendirme İstemcinin sorgu sırasıyla yapılır. Mesaj kimliği arbitraj önceliğini belirler.
Veri modeli Coil ve register tabanlı hazır model Ham mesaj verisi; uygulama modeli ayrıca tanımlanır.
Klasik veri alanı Tek sorguda çok sayıda register taşınabilir. Klasik CAN’de en fazla 8 bayt
Yeni nesil veri alanı Modbus çerçevesi değişmez. CAN FD’de en fazla 64 bayt
Hata yönetimi CRC, zaman aşımı ve yazılımsal tekrar deneme CRC, ACK, bit kontrolü, hata çerçevesi ve hata sınırlama
Gerçek zamanlılık Planlı sorgulamayla öngörülebilir olabilir. Öncelik tabanlı, olay odaklı iletişim için güçlüdür.
Mesafe Düşük hızlarda çok uzun mesafeler için uygundur. Hız arttıkça ağın fiziksel uzunluğu belirgin biçimde azalır.
Yazılım geliştirme Temel uygulamalarda daha kolaydır. ID planlama, bit timing ve ağ yükü analizi gerektirir.
Yaygın kullanım PLC, sayaç, inverter, HMI ve bina otomasyonu Araç, robot, iş makinesi ve dağıtık kontrol sistemi

1. Haberleşme Modeli: Sorgu-Cevap mı, Olay Odaklı mı?

Modbus RTU’da iletişimi istemci yönetir

Modbus RTU sisteminde sunucu cihazlar genellikle kendi kendine veri göndermez. İstemcinin soru sormasını bekler.

Örneğin bir PLC, sırasıyla şu işlemleri yapabilir:

  1. Birinci cihazın sıcaklığını oku.
  2. İkinci cihazın basıncını oku.
  3. Üçüncü cihazın hata durumunu oku.
  4. Dördüncü cihaza çıkış komutu gönder.
  5. Tekrar başa dön.

Bu yaklaşımın önemli bir avantajı vardır: Hattın kontrolü tek bir merkezde olduğu için iletişim sırası kolayca öngörülebilir.

Ancak bir sensörde aniden kritik bir hata oluşursa sensör çoğu standart Modbus RTU sisteminde kendiliğinden bağırarak haber veremez. İstemcinin sensörü sıradaki sorgusunda yoklamasını bekler.

CAN Bus’ta olay gerçekleştiğinde mesaj yayınlanabilir

CAN ağındaki bir cihaz, hat boş olduğunda mesaj göndermeyi deneyebilir. Kritik bir olay oluştuğunda yüksek öncelikli bir CAN mesajı hemen yayınlanabilir.

Örneğin:

  • Motor sıcaklığı normalde saniyede bir gönderilebilir.
  • Motor aşırı akım hatası oluştuğunda mesaj anında yayınlanabilir.
  • Acil durdurma mesajına çok yüksek öncelik verilebilir.
  • Düşük öncelikli servis bilgileri daha sonra gönderilebilir.

Olay tabanlı, hızlı tepki gerektiren ve birden fazla kontrolcünün aktif olduğu sistemlerde CAN bu nedenle daha doğal bir çözüm olabilir.

2. Gerçek Zamanlılık ve Gecikme

“Gerçek zamanlı” ifadesi yalnızca hızlı olmak anlamına gelmez. Bir mesajın en geç ne zaman ulaşacağının öngörülebilmesi de önemlidir.

Modbus RTU gecikmesi nasıl oluşur?

Modbus RTU’da istemci cihazları sırayla sorgular. Bir cihazın cevap süresi uzarsa veya cihaz hiç cevap vermezse istemci zaman aşımını beklemek zorunda kalabilir.

Örneğin 20 cihazlı bir ağda her sorgu ve cevap toplam 10 milisaniye sürüyorsa, bütün cihazları bir kez taramak yaklaşık 200 milisaniye sürer. Fakat bir cihaz için 100 milisaniyelik zaman aşımı beklenirse toplam tarama süresi belirgin biçimde uzayabilir.

Bu nedenle Modbus performansında şu değerler önemlidir:

  • Baud rate
  • Sorgu uzunluğu
  • Cevap uzunluğu
  • Cihaz sayısı
  • Cihazların cevap hazırlama süresi
  • Zaman aşımı değeri
  • Tekrar deneme sayısı
  • Register’ların blok hâlinde okunup okunmadığı

Doğru tasarlanmış bir sorgulama tablosuyla Modbus RTU oldukça öngörülebilir çalışabilir. Ancak cihaz sayısı büyüdükçe ve zaman aşımı senaryoları arttıkça gecikme de artar.

CAN Bus gecikmesi nasıl oluşur?

CAN’de mesajın gecikmesi, büyük ölçüde mesaj önceliğine ve hat yüküne bağlıdır.

Yüksek öncelikli mesajlar hattı daha kolay kazanırken düşük öncelikli mesajlar bekleyebilir. Ağ yükü aşırı yükselirse düşük öncelikli mesajların gecikmesi önemli hâle gelebilir.

Dolayısıyla CAN sisteminde yalnızca baud rate seçmek yeterli değildir. Aşağıdakiler de planlanmalıdır:

  • Mesaj ID’leri ve öncelikler
  • Mesajların periyodik gönderim süreleri
  • Olay tabanlı mesajların maksimum sıklığı
  • En kötü durumdaki hat yükü
  • Maksimum kabul edilebilir mesaj gecikmesi
  • Düşük öncelikli mesajların aç kalma ihtimali

Doğru tasarlanmış bir CAN ağı, kritik mesajlar için oldukça düşük ve hesaplanabilir gecikmeler sağlayabilir.

3. Hız ve Veri Taşıma Verimliliği

Haberleşme hızını değerlendirirken yalnızca “kaç bit/saniye?” sorusuna bakmak yanıltıcı olabilir. Bir protokolün mesaj başlıkları, hata kontrol alanları ve cevap mekanizması da gerçek veri taşıma kapasitesini etkiler.

RS-485’in hızı protokolden bağımsızdır

RS-485 standardı oldukça yüksek hızlarda çalışabilen fiziksel katman çözümlerine izin verir. Ancak hız arttıkça erişilebilecek kablo mesafesi azalır.

Modbus RTU uygulamalarında sık karşılaşılan hızlar şunlardır:

  • 9.600 bit/s
  • 19.200 bit/s
  • 38.400 bit/s
  • 57.600 bit/s
  • 115.200 bit/s

Bunlar zorunlu değerler değildir. Cihazlar ve hat tasarımı destekliyorsa daha yüksek hızlar da kullanılabilir.

Modbus’un avantajlarından biri, tek sorguda art arda çok sayıda register okuyabilmesidir. Örneğin 30 farklı ölçüm değeri ardışık register’larda tutuluyorsa hepsini tek işlemle okumak mümkündür.

Klasik CAN ve CAN FD

Klasik CAN mesajında veri alanı en fazla 8 bayttır. Bu miktar kontrol komutları, sensör değerleri ve durum bilgileri için çoğu zaman yeterlidir. Ancak uzun veri blokları gönderilecekse mesajın birkaç parçaya bölünmesi gerekir.

CAN FD ile birlikte veri alanı 64 bayta kadar çıkarılmıştır. CAN FD ayrıca arbitraj bölümü tamamlandıktan sonra veri bölümünde daha yüksek bir bit hızına geçilmesine imkân tanır.

Buna rağmen CAN, büyük dosyaların veya sürekli yüksek hacimli verilerin taşınması için geliştirilmiş bir teknoloji değildir. Kamera görüntüsü, ses akışı veya büyük firmware dosyaları için Ethernet gibi daha yüksek bant genişlikli çözümler daha uygun olabilir.

4. Mesafe ve Kablo Yapısı

RS-485 uzun mesafede neden avantajlıdır?

RS-485 düşük hızlarda yaklaşık 1.000 metre sınıfındaki hatlarda kullanılabilir. Gerçek ulaşılabilir mesafe aşağıdaki etkenlere bağlıdır:

  • Haberleşme hızı
  • Kablonun karakteristik empedansı
  • Kablo kesiti ve kalitesi
  • Topoloji
  • Dal bağlantılarının uzunluğu
  • Sonlandırma direnci
  • Toprak potansiyeli farkı
  • Elektromanyetik gürültü
  • Transceiver özellikleri
  • Galvanik izolasyon ve koruma devreleri

Uzun bir üretim hattındaki enerji sayaçlarını veya bina içerisindeki farklı katlara dağılmış cihazları okumak için RS-485 oldukça uygun olabilir.

CAN’de hız-mesafe ilişkisi daha kritiktir

CAN arbitrajı sırasında bütün cihazların gönderilen biti yeterli süre içerisinde görmesi gerekir. Sinyalin hattın bir ucundan diğer ucuna gitme süresi ve geri dönüş gecikmesi, bit timing hesabını doğrudan etkiler.

Bu nedenle CAN hızı yükseldikçe izin verilen toplam hat uzunluğu azalır. Uygulamada 1 Mbit/s gibi yüksek hızlar daha kısa ağlarda; 125 kbit/s gibi daha düşük hızlar ise daha geniş fiziksel ağlarda tercih edilir.

Kesin mesafe yalnızca baud rate tablosundan seçilmemelidir. Kablo gecikmesi, transceiver gecikmesi, düğüm sayısı, konnektörler, stub uzunlukları ve örnekleme noktası birlikte değerlendirilmelidir.

5. Topoloji, Sonlandırma ve Dal Bağlantıları

Hem RS-485 hem de yüksek hızlı CAN için ideal yapı doğrusal bir bus topolojisidir.

Doğruya yakın bus topolojisi:

120 Ω                                            120 Ω
[SON]----+---------+---------+---------+---------[SON]
         |         |         |         |
       Cihaz 1   Cihaz 2   Cihaz 3   Cihaz 4

Sonlandırma dirençleri hattın iki fiziksel ucuna yerleştirilir. Her cihaza sonlandırma direnci takılması doğru değildir.

Yıldız bağlantı neden problem olabilir?

Önerilmeyen uzun kollu yıldız topoloji:

                 +---- Cihaz 1
                 |
Merkez ----------+---- Cihaz 2
                 |
                 +---- Cihaz 3
                 |
                 +---- Cihaz 4

Sinyal bir bağlantı noktasına ulaştığında farklı kollara ayrılır. Kolların empedansları ve uzunlukları nedeniyle yansımalar oluşabilir. Düşük hızlarda sistem çalışıyor gibi görünse bile hız yükseldiğinde veya kablo uzadığında rastgele haberleşme hataları başlayabilir.

CAN sistemi genellikle stub uzunluğu konusunda daha hassastır. RS-485’te de uzun dallar problem yaratır; ancak düşük hızdaki bazı sistemler daha toleranslı davranabilir.

RS-485 bias dirençleri

İki telli RS-485 hattında hiçbir sürücü aktif değilken hat boşta kalabilir. Alıcının belirsiz değer okumasını önlemek için bazı sistemlerde fail-safe bias dirençleri kullanılır.

Ancak her cihaza ayrı bias direnci koymak hattı gereksiz yere yükleyebilir. Bias ağı çoğunlukla tek bir uygun noktada tasarlanmalıdır. Modern transceiver’ların bir kısmında dahili fail-safe özellikler de bulunur.

CAN’de boşta kalma durumu

CAN transceiver yapısı, hat boşta olduğunda recessive seviyenin oluşmasını sağlayacak şekilde tasarlanır. RS-485’teki klasik harici bias ağı yaklaşımı CAN hattında aynı biçimde uygulanmaz.

6. Cihaz Sayısı ve Adresleme

RS-485 node sayısı

Klasik RS-485 tanımlarında sıkça “en fazla 32 cihaz” ifadesi görülür. Bu sayı, bir sürücünün taşıması gereken klasik unit load yükü üzerinden ortaya çıkmıştır.

Modern 1/2, 1/4 veya 1/8 unit load transceiver’larla fiziksel olarak daha fazla cihaz bağlamak mümkün olabilir. Fakat gerçek sınır yalnızca transceiver yükünden oluşmaz. Kablo uzunluğu, kapasitans, koruma devreleri, konnektörler, topoloji ve protokol adres alanı da dikkate alınmalıdır.

Modbus seri hatta sunucu adresleri genellikle 1 ile 247 arasında kullanılır. Adres 0 ise yayın mesajları için ayrılmıştır. Yayın mesajına cihazların cevap vermemesi gerekir.

CAN’de cihaz adresi kavramı farklıdır

CAN’in temel seviyesinde cihaz adresinden çok mesaj kimliği vardır. Bir düğüm birden fazla CAN ID yayınlayabilir. Aynı mesajı birden fazla cihaz dinleyebilir.

Cihazlara mantıksal node adresi vermek isteniyorsa CANopen veya SAE J1939 gibi bir üst seviye protokol kullanılabilir ya da projeye özel bir adresleme yöntemi tasarlanabilir.

7. Hata Algılama ve Arızaya Tepki

Modbus RTU hata yönetimi

Modbus RTU çerçevelerinde CRC-16 kontrolü bulunur. CRC uyuşmazsa alıcı mesajı geçersiz kabul eder.

Ancak aşağıdaki işlemler genellikle istemci yazılımı tarafından yapılır:

  • Cevap zaman aşımını takip etmek
  • Mesajı yeniden göndermek
  • Tekrar deneme sayısını sınırlamak
  • Cihazı çevrim dışı işaretlemek
  • Haberleşme hatasını operatöre bildirmek
  • Yeniden bağlanma stratejisini yönetmek

Modbus sunucusu geçerli bir sorguyu uygulayamıyorsa bir exception cevabı da gönderebilir. Örneğin desteklenmeyen fonksiyon kodu, geçersiz register adresi veya cihazın işlemi tamamlayamaması bildirilebilir.

CAN hata yönetimi

CAN’de düğümler mesajı gönderirken hattı da izler. Bir düğüm hata algıladığında hata çerçevesi oluşturabilir ve mesajın diğer düğümler tarafından geçerli kabul edilmesini engelleyebilir.

Hatalı mesaj daha sonra otomatik olarak tekrar gönderilebilir. Bunun yanında her CAN kontrolcüsünde iletim ve alım hata sayaçları bulunur.

Bu mekanizma özellikle aşağıdaki sistemlerde önemli bir avantaj sağlar:

  • Bir cihaz arızasının tüm ağı bozmasının kabul edilemediği sistemler
  • Birden fazla kontrol ünitesinin bulunduğu dağıtık mimariler
  • Elektromanyetik gürültünün yüksek olduğu araç ve makine uygulamaları
  • Hata teşhisi ve ağ sağlığının izlenmesi gereken projeler

8. Donanım Maliyeti ve Mikrodenetleyici Seçimi

RS-485 donanımı

RS-485 için temel donanım oldukça basittir:

  • UART çevre birimi bulunan bir mikrodenetleyici
  • RS-485 transceiver
  • Sonlandırma ve gerekirse bias dirençleri
  • ESD, EFT ve surge koruma elemanları
  • Gerekliyse dijital izolasyon ve izole DC/DC dönüştürücü

Yarı çift yönlü RS-485 transceiver’larda sürücü etkinleştirme pini bulunur. Mikrodenetleyici mesaj göndermeden önce sürücüyü aktif eder, son bayt gerçekten hattan çıktıktan sonra tekrar alıcı moduna döner.

Burada sık yapılan bir hata, UART veri register’ı boşalır boşalmaz sürücüyü kapatmaktır. UART register’ı boşalmış olsa bile son bit henüz fiziksel olarak hattan çıkmamış olabilir. Bu nedenle “transmit register empty” yerine çoğunlukla “transmission complete” durumu takip edilmelidir.

CAN donanımı

CAN için genellikle aşağıdaki bileşenler gerekir:

  • CAN kontrolcüsüne sahip bir mikrodenetleyici
  • Harici CAN transceiver
  • İki uçta 120 Ω sonlandırma
  • ESD ve transient koruma devreleri
  • Gerekliyse common-mode choke
  • Gerekliyse galvanik izolasyon

Mikrodenetleyicide dahili CAN kontrolcüsü yoksa MCP2515 gibi SPI üzerinden çalışan harici bir CAN kontrolcüsü kullanılabilir. Ancak yüksek mesaj trafiği, kesin zamanlama veya CAN FD gereken uygulamalarda dahili CAN çevre birimine sahip bir mikrodenetleyici daha uygun olabilir.

Donanım maliyeti açısından iki çözüm arasında her zaman büyük fark bulunmaz. Fark çoğunlukla yazılım geliştirme, test, analiz cihazları ve sistem mühendisliği tarafında ortaya çıkar.

9. Yazılım Karmaşıklığı

Modbus RTU yazılımı neden daha kolay görünebilir?

Basit bir Modbus RTU sunucusunda aşağıdaki yapı yeterli olabilir:

  1. UART’tan çerçeveyi al.
  2. Adresin cihaza ait olup olmadığını kontrol et.
  3. CRC’yi doğrula.
  4. Fonksiyon kodunu işle.
  5. İstenen register’ları oku veya yaz.
  6. Cevabı oluştur ve gönder.

Açık kaynak Modbus kütüphaneleri ve hazır PLC fonksiyon blokları oldukça yaygındır. Register tablosu düzgün hazırlanmışsa üçüncü taraf entegrasyonu da kolaylaşır.

CAN yazılımında neler planlanmalıdır?

CAN sürücüsünün çalıştırılması başlangıçta kolay görünebilir. Fakat iyi bir CAN ağı tasarlamak için aşağıdaki konuların düşünülmesi gerekir:

  • 11 bit veya 29 bit kimlik kullanımı
  • Mesaj ID dağılımı
  • Mesaj öncelikleri
  • Mesaj periyotları
  • Timeout ve alive counter mekanizmaları
  • Sinyal ölçekleri ve offset değerleri
  • Byte order
  • Mesaj bütünlük kontrolleri
  • Bus load hesabı
  • Bus-Off durumundan geri dönüş stratejisi
  • Yazılım güncelleme ve teşhis mesajları
  • Sürüm uyumluluğu

CAN’in donanım seviyesinde güçlü olması, uygulama protokolünün otomatik olarak hazır olduğu anlamına gelmez.

10. Veri Formatı ve Birlikte Çalışabilirlik

Modbus register haritası

Modbus cihazı geliştiren üretici genellikle bir register tablosu yayınlar:

Register Açıklama Veri tipi Ölçek
100 Besleme gerilimi Unsigned 16 bit 0,01 V/bit
101 Kart sıcaklığı Signed 16 bit 0,1 °C/bit
102 Dijital girişler Bit alanı Her bit bir giriş

Ancak bazı ayrıntılar Modbus standardı tarafından kesin biçimde çözülmez. Örneğin 32 bit veri iki register’a yerleştirildiğinde word sıralaması üreticiye göre değişebilir. Bu nedenle register dokümantasyonunda byte ve word sırası açıkça belirtilmelidir.

CAN sinyal tanımı

CAN tarafında benzer bir mesaj tanımı şu şekilde yapılabilir:

Mesaj adı : Device_Status
CAN ID    : 0x181
Periyot   : 100 ms
DLC       : 8

Byte 0-1  : Besleme gerilimi
            Unsigned 16 bit
            Little-endian
            Ölçek: 0,01 V/bit

Byte 2-3  : Kart sıcaklığı
            Signed 16 bit
            Ölçek: 0,1 °C/bit

Byte 4    : Dijital giriş bitleri
Byte 5    : Hata kodu
Byte 6    : Alive counter
Byte 7    : Uygulama CRC değeri

Otomotiv projelerinde bu tanımlar çoğunlukla DBC dosyalarında tutulur. Böylece analiz araçları ham CAN verisini gerilim, sıcaklık veya hız gibi fiziksel değerlere çevirebilir.

11. Galvanik İzolasyon Gerekli mi?

Hem RS-485 hem de CAN hatlarında galvanik izolasyon bazı uygulamalarda son derece önemlidir.

İzolasyon özellikle aşağıdaki durumlarda değerlendirilmelidir:

  • Cihazlar farklı güç kaynaklarından besleniyorsa
  • Toprak potansiyelleri arasında fark oluşabiliyorsa
  • Kablo bina veya makine sınırlarının dışına çıkıyorsa
  • Motor, kontaktör ve inverter bulunan gürültülü ortamdaysa
  • Yüksek gerilimli güç katı ile kontrol katı arasında güvenlik ayrımı gerekiyorsa
  • Uzun kablo nedeniyle yıldırım veya surge riski oluşuyorsa
  • İnsan erişimine açık konnektör bulunuyorsa

İzole bir arayüz genellikle iki parçadan oluşur:

  • Sinyal izolasyonu
  • İzole tarafta transceiver’ı besleyecek izole güç kaynağı

Yalnızca dijital izolatör eklemek yeterli olmayabilir. Bus tarafının enerji beslemesi de izolasyon bariyerinin uygun tarafında oluşturulmalıdır.

12. Siber Güvenlik Açısından Karşılaştırma

Ne standart Modbus RTU ne de klasik CAN temel hâliyle şifreleme ve güçlü kimlik doğrulama sağlar.

Modbus RTU güvenliği

Modbus RTU mesajında cihaz adresi, fonksiyon kodu, veri ve CRC bulunur. Ancak CRC bir güvenlik mekanizması değildir. Yalnızca iletim hatalarının algılanmasına yardımcı olur.

Hatta fiziksel erişimi olan bir saldırgan teorik olarak geçerli CRC’ye sahip sahte bir Modbus komutu oluşturabilir.

CAN güvenliği

CAN mesajlarında da temel seviyede gönderen cihazı kriptografik olarak doğrulayan bir mekanizma yoktur. Hatta erişebilen bir düğüm geçerli biçimde CAN mesajı yayınlayabilir.

CAN CRC’si ve hata kontrol mekanizmaları rastgele iletim hatalarına karşı güçlüdür; ancak kötü niyetli mesaj üretimine karşı kimlik doğrulama sağlamaz.

Güvenlik kritik sistemlerde aşağıdaki önlemler değerlendirilebilir:

  • Fiziksel erişimin sınırlandırılması
  • Ağ segmentasyonu
  • Gateway ve firewall kullanımı
  • Mesaj frekansı ve davranış anomali kontrolü
  • Uygulama katmanında mesaj kimlik doğrulama
  • Rolling counter veya freshness value
  • Güvenli bootloader ve imzalı firmware
  • Servis ve teşhis fonksiyonlarının erişim kontrolü

13. Örnek Proje: Endüstriyel Giriş-Çıkış Modülü

12–24 V ile çalışan, dört analog girişe ve dört adet high-side MOSFET çıkışına sahip bir saha cihazı geliştirdiğimizi düşünelim.

Cihaz aşağıdaki görevleri yapacak:

  • Dört analog sensörü okuyacak.
  • Dört adet 24 V çıkışı kontrol edecek.
  • Besleme ve kart sıcaklığını izleyecek.
  • Bir PLC veya merkezi kontrolcüyle haberleşecek.
  • Yaklaşık 300 metre kablo üzerinden çalışacak.

Bu proje için RS-485 ve Modbus neden mantıklı olabilir?

  • PLC entegrasyonu kolaydır.
  • Analog değerler input register olarak yayınlanabilir.
  • Çıkışlar coil veya holding register ile kontrol edilebilir.
  • 300 metre gibi bir mesafe düşük baud rate’te rahat yönetilebilir.
  • Cihazın acil ve kendiliğinden mesaj göndermesi gerekmeyebilir.
  • Register tablosu üçüncü taraf müşterilere kolayca verilebilir.
  • UART destekli ekonomik bir mikrodenetleyici yeterli olabilir.

Örnek register haritası şöyle olabilir:

30001 : Analog giriş 1
30002 : Analog giriş 2
30003 : Analog giriş 3
30004 : Analog giriş 4

40001 : Çıkış komutları
40002 : Akım limiti
40003 : Haberleşme watchdog süresi

00001 : Çıkış 1
00002 : Çıkış 2
00003 : Çıkış 3
00004 : Çıkış 4

Aynı proje için CAN ne zaman daha mantıklı olur?

  • Birden fazla kontrolcü bulunuyorsa
  • Giriş değişimleri anında yayınlanacaksa
  • Aşırı akım gibi hataların gecikmeden iletilmesi gerekiyorsa
  • Çıkış modülleri birbirinden bağımsız mesaj üretecekse
  • Sistem mobil bir araç veya iş makinesi üzerindeyse
  • Mesaj önceliği ve hata sınırlama önemliyse
  • İleride CANopen veya J1939 entegrasyonu planlanıyorsa

Örneğin aşırı akım mesajına 0x080, periyodik analog ölçümlere 0x300, servis bilgilerine ise 0x600 gibi daha düşük öncelikli ID’ler verilebilir.

14. Hangi Uygulamalarda RS-485/MODBUS Tercih Edilebilir?

Aşağıdaki şartlarda RS-485 üzerinde Modbus RTU genellikle güçlü bir adaydır:

  • PLC, HMI veya SCADA sistemiyle entegrasyon yapılacaksa
  • Cihazlar merkezi olarak sorgulanacaksa
  • Uzun kablo mesafesi gerekiyorsa
  • Veriler register tablosu şeklinde ifade edilebiliyorsa
  • Haberleşme hızı kritik değilse
  • Sistem mimarisi basit ve merkeziyse
  • Düşük maliyetli mikrodenetleyici kullanılacaksa
  • Üçüncü taraf entegrasyonu kolay olmalıysa
  • Saha teknisyenlerinin mevcut Modbus araçlarını kullanması isteniyorsa

Tipik örnekler:

  • Enerji sayaçları
  • Güneş enerjisi inverterleri
  • Motor sürücüleri
  • Uzaktan giriş-çıkış modülleri
  • HVAC kontrol cihazları
  • Bina otomasyonu
  • Endüstriyel sensörler
  • Pompa ve kompresör kontrol panoları

15. Hangi Uygulamalarda CAN Bus Tercih Edilebilir?

Aşağıdaki şartlarda CAN Bus daha uygun olabilir:

  • Birden fazla aktif kontrolcü bulunuyorsa
  • Cihazların olay oluştuğunda kendiliğinden mesaj göndermesi gerekiyorsa
  • Kritik mesajlara öncelik verilmesi gerekiyorsa
  • Güçlü hata algılama ve hata sınırlama isteniyorsa
  • Sistem dağıtık kontrol mimarisine sahipse
  • Kısa ve sık durum mesajları gönderilecekse
  • Araç veya hareketli makine uygulaması geliştiriliyorsa
  • CANopen, J1939 veya başka bir CAN tabanlı standart kullanılacaksa
  • Düğüm arızalarının ağ üzerindeki etkisi sınırlandırılmak isteniyorsa

Tipik örnekler:

  • Otomotiv elektronik kontrol üniteleri
  • Elektrikli araç batarya sistemleri
  • Tarım makineleri
  • İş makineleri
  • Robotik sistemler
  • Asansör kontrol sistemleri
  • Denizcilik elektroniği
  • Dağıtık motor kontrol sistemleri
  • Medikal ve laboratuvar cihazları

16. RS-485/MODBUS ve CAN Aynı Sistemde Kullanılabilir mi?

Evet. Hatta birçok gerçek sistemde iki teknoloji birlikte kullanılır.

Örneğin:

  • Araç içerisindeki düğümler CAN ile haberleşebilir.
  • Merkezi kontrolcü bina otomasyon sistemine Modbus RTU ile bağlanabilir.
  • Bir gateway, CAN mesajlarını Modbus register’larına dönüştürebilir.
  • Yerel hızlı kontrol CAN ile, uzak saha haberleşmesi RS-485 ile yapılabilir.
[CAN Sensörleri]
       |
       | CAN Bus
       |
[CAN / Modbus Gateway]
       |
       | RS-485 Modbus RTU
       |
[PLC veya SCADA]

Gateway tasarlanırken yalnızca veri çevrimi yapılmamalıdır. İki haberleşme sisteminin farklı zamanlama modelleri de düşünülmelidir.

CAN mesajları kendiliğinden ve hızlı biçimde gelebilirken Modbus istemcisi veriyi aralıklı olarak sorgular. Bu nedenle gateway içerisinde son değerlerin tutulduğu bir veri tabanı, timeout bilgisi ve veri güncellik işareti bulunması yararlı olabilir.

17. Sık Yapılan Tasarım Hataları

RS-485 ve Modbus tarafındaki yaygın hatalar

  • RS-485 ile Modbus’un aynı şey olduğunu düşünmek
  • Hattın her cihazına 120 Ω sonlandırma bağlamak
  • Uzun yıldız topoloji kullanmak
  • A ve B isimlendirmesinin her üreticide aynı olduğunu varsaymak
  • Transceiver yön kontrolünü yanlış zamanda değiştirmek
  • Ortak referans hattını ve toprak potansiyeli farkını dikkate almamak
  • Her düğüme ayrı bias dirençleri koymak
  • CRC doğrulaması yapmadan mesajı işlemek
  • Zaman aşımı ve tekrar deneme stratejisi oluşturmamak
  • Register tablosunda veri tipi, ölçek ve byte sırasını belirtmemek

CAN tarafındaki yaygın hatalar

  • Her düğüme sonlandırma direnci takmak
  • Uzun yıldız topoloji kullanmak
  • Bit timing değerlerini rastgele seçmek
  • Bütün mesajlara benzer öncelik vermek
  • Düşük sayısal CAN ID’nin yüksek öncelik olduğunu unutmak
  • Hat yükünü hesaplamamak
  • Bus-Off durumundan geri dönüş stratejisi oluşturmamak
  • Çok sık periyodik mesaj göndererek ağı gereksiz yüklemek
  • CAN’in uygulama protokolünü de otomatik olarak tanımladığını düşünmek
  • Sinyal ölçeklerini ve mesaj sürümlerini dokümante etmemek

18. Hızlı Karar Rehberi

Aşağıdaki sorular seçim sürecini kolaylaştırabilir:

PLC veya SCADA ile kolay entegrasyon mu gerekiyor?

RS-485 ve Modbus RTU genellikle daha uygun olur.

Birden fazla cihaz kendiliğinden mesaj gönderecek mi?

CAN Bus daha doğal bir mimari sunar.

Çok uzun kablo mesafesi mi gerekiyor?

Düşük hızda çalışan RS-485 önemli avantaj sağlayabilir.

Kritik mesajlara donanımsal öncelik mi verilecek?

CAN Bus arbitraj mekanizması sayesinde öne çıkar.

Basit bir sensör veya giriş-çıkış cihazı mı geliştiriliyor?

Merkezi sorgulama yeterliyse Modbus RTU daha kolay olabilir.

Araç, robot veya dağıtık kontrol sistemi mi geliştiriliyor?

CAN Bus çoğunlukla daha uygun olur.

Tek mesajda çok sayıda ölçüm değeri mi okunacak?

Ardışık register okuması sayesinde Modbus RTU oldukça pratik olabilir.

Mesajların olay oluştuğunda hemen yayınlanması mı gerekiyor?

CAN Bus tercih edilebilir.

Sonuç: Hangisi Daha İyi?

RS-485/MODBUS ile CAN Bus arasında herkese uyan tek bir kazanan yoktur. İki teknoloji farklı sistem ihtiyaçlarına cevap verir.

RS-485 üzerinde Modbus RTU; merkezi olarak yönetilen, uzun mesafeli, PLC ve SCADA entegrasyonu gereken, register tabanlı endüstriyel uygulamalarda sade ve ekonomik bir çözümdür.

CAN Bus ise; birden fazla aktif kontrolcünün bulunduğu, mesajların olay tabanlı gönderildiği, kritik mesajlara öncelik verilmesi ve güçlü hata yönetimi gereken dağıtık sistemlerde öne çıkar.

En önemli seçim kriteri yalnızca haberleşme hızı değildir. Aşağıdaki konular birlikte değerlendirilmelidir:

  • Sistem mimarisi
  • Mesafe
  • Düğüm sayısı
  • Mesaj gecikmesi
  • Gerçek zamanlılık
  • Hata yönetimi
  • PLC ve üçüncü taraf uyumluluğu
  • Yazılım geliştirme maliyeti
  • Gelecekteki genişleme ihtiyacı
  • Güvenlik ve izolasyon gereksinimleri

Kısaca özetlersek:

“Bir merkez cihazları sırayla sorgulasın, mesafe uzun olsun ve PLC entegrasyonu kolay olsun” diyorsanız RS-485 + Modbus RTU güçlü bir seçimdir.

“Cihazlar gerektiğinde kendiliğinden konuşsun, kritik mesajlar öncelikli olsun ve haberleşme hataları donanımsal olarak yönetilsin” diyorsanız CAN Bus daha uygun olabilir.

🔖 Terimler Sözlüğü

Terim Kısa açıklama
RS-485 Diferansiyel ve çok düğümlü seri haberleşmenin elektriksel özelliklerini tanımlayan standart.
Modbus RTU Çoğunlukla RS-485 üzerinde kullanılan, sorgu-cevap tabanlı endüstriyel protokol.
CAN Bus Mesaj tabanlı, çok yöneticili, öncelik ve güçlü hata yönetimi sunan haberleşme sistemi.
Transceiver Mikrodenetleyicinin dijital sinyalini fiziksel haberleşme hattına dönüştüren alıcı-verici devre.
CRC İletim sırasında oluşan veri bozulmalarını algılamaya yarayan hata kontrol değeri.
Arbitraj Aynı anda mesaj göndermek isteyen CAN düğümleri arasında öncelik belirleme işlemi.
Dominant bit CAN arbitrajında recessive bite üstün gelen, mantıksal 0 değeri.
CAN ID CAN mesajının türünü ve arbitraj önceliğini belirleyen kimlik alanı.
Sonlandırma Kablo üzerindeki sinyal yansımalarını azaltmak için hattın uçlarına yerleştirilen direnç ağı.
Bus-Off Sürekli hata üreten bir CAN düğümünün kendisini haberleşme hattından ayırdığı durum.
CAN FD 64 bayta kadar veri alanı ve veri bölümünde daha yüksek hız sağlayabilen geliştirilmiş CAN sürümü.

📌 Ekstra Kaynaklar

28 Kasım 2025 Cuma

CAN Bus'ın Avantajları ve Dezavantajları: Modern Araçların Gizli Kahramanı

CAN Bus'ın Avantajları ve Dezavantajları: Modern Araçların Görünmeyen Kahramanı

Merhaba! Bu yazıda otomotiv dünyasının perde arkasında çalışan ama çoğu zaman adı bile geçmeyen bir teknolojiye odaklanacağız: CAN Bus. Bugün piyasadaki neredeyse tüm modern araçlarda, ECU’lar (Electronic Control Unit), sensörler ve aktüatörler arasındaki iletişimin büyük kısmı bu yapı üzerinden gerçekleşiyor.

Eğer araç elektroniklerine meraklıysan, gömülü yazılım geliştiriyorsan ya da sadece “Bu kadar sistem birbirini nasıl anlıyor?” diye düşünüyorsan, doğru yerdesin. Bu yazıda CAN Bus’ın avantajlarını, dezavantajlarını, pratik kullanım alanlarını ve gelecekte yerini nelerin alabileceğini konuşacağız. Hem yeni başlayanlar hem de sektörde çalışanlar için anlaşılır bir dil kullanmaya çalışacağım. 🚗💡

Bir otomobildeki ECU’ların aynı CAN Bus hattı üzerinde birbirine bağlandığını gösteren şematik ağ diyagramı



CAN Bus Kısaca Nedir?

CAN (Controller Area Network), temel olarak araç içindeki elektronik kontrol birimleri arasında iletişim kurulmasını sağlayan bir haberleşme protokolüdür. 1980’lerin ortasında Bosch tarafından geliştirilmiş ve daha sonra ISO 11898 standardı hâline gelmiştir.

Bu ağda her ECU, birer “node” (düğüm) gibi düşünülür ve hepsi ortak bir veri yolu (bus) üzerinde konuşur. CAN Bus; motor kontrol ünitesi, ABS, airbag, direksiyon sistemi, gövde kontrol modülü, multimedya sistemi gibi birbirinden çok farklı modüller arasında veri taşır.

CAN Bus’ın Temel Özellikleri

  • İki telli diferansiyel hat kullanır (CAN_H ve CAN_L).
  • Genellikle 500 kbps veya 1 Mbps hızlarda çalışır (klasik CAN).
  • Broadcast (yayın) mantığı ile mesajlar hattaki tüm ECU’lara iletilir.
  • Her mesajın kendine ait bir ID (Identifier) değeri vardır ve bu ID aynı zamanda önceliği belirler.

Kısaca: İki kablo üzerinden, aynı hat üzerinde bir sürü modülün konuştuğu, hataya dayanıklı, oldukça pratik bir iletişim sistemi diyebiliriz.


CAN Bus’ın Avantajları

1. Yüksek Güvenilirlik ve Hata Toleransı

CAN, otomotiv gibi güvenliğin kritik olduğu alanlarda kullanılmak üzere tasarlanmıştır. Hata algılama ve yönetimi konusunda oldukça gelişmiş mekanizmalara sahiptir:

  • Bit hata algılama (bit monitoring)
  • CRC (Cyclic Redundancy Check) ile veri bütünlüğü kontrolü
  • Acknowledge (ACK) mekanizması
  • Error frame göndererek hatalı düğümün kendini sınırlaması

Bir ECU sürekli hatalı mesaj gönderiyorsa, CAN protokolü bu ECU’yu “bus-off” hâline getirip hatta zarar vermesini engeller. Bu sayede kritik fonksiyonların sürekliliği desteklenir.

2. Diferansiyel Sinyalleme Sayesinde Gürültü Bağışıklığı

Otomotiv ortamı, özellikle de motor bölgesi; yüksek akımların, enjektörlerin, ateşleme bobinlerinin ve çeşitli elektromanyetik kaynakların olduğu oldukça gürültülü bir ortamdır. CAN, bu zorlu şartlara dayanmak için diferansiyel sinyal kullanır:

  • CAN_H ve CAN_L hatlarında zıt fazda sinyal taşınır.
  • Ortamdan gelen gürültü her iki hatta da aynı yönde biner (common-mode noise).
  • Alıcı, bu iki hattın farkını okuduğu için gürültünün etkisi büyük oranda bastırılır.

Sonuç: Uzun kablo mesafelerinde ve zorlu ortamlarda bile güvenilir iletişim. 🚙

3. Kablo Maliyeti ve Ağırlığında Azalma

CAN’dan önce araç içinde pek çok fonksiyon için nokta-nokta kablolama kullanılıyordu. Örneğin bir buton ile bir modül arasında özel kablo çekiliyor, sensörler doğrudan tek bir ECU’ya bağlanıyordu. Bu yaklaşım:

  • Daha fazla kablo → daha yüksek maliyet
  • Daha fazla kablo → daha yüksek araç ağırlığı
  • Montaj ve bakım zorluğu

CAN ile birlikte bu yapı büyük ölçüde sadeleşti:

  • Birçok sensör ve ECU aynı ortak veri yolunu kullanmaya başladı.
  • Kablolama, “power + CAN bus” hattı şeklinde basitleşti.

Özellikle büyük araçlarda (otobüs, kamyon, iş makinesi vb.) kablo metrajındaki azalma ciddi maliyet avantajı sağlar.

4. Kolay Genişletilebilir ve Esnek Mimari

CAN hattına yeni bir ECU eklemek için genellikle yapılması gereken tek şey, o ECU’yu aynı CAN_H ve CAN_L hattına bağlamaktır. Doğru terminasyon, hız ve ID planlaması yapıldıktan sonra sistem oldukça esnek bir şekilde ölçeklenebilir.

Bu da OEM’lere (araç üreticilerine) şu imkânları verir:

  • Farklı donanım paketlerinde opsiyonel modüller ekleyebilme (ör. park asistanı, kör nokta uyarı sistemi)
  • Aynı platformu kullanıp farklı model araçlar türetebilme

5. Gerçek Zamanlı (Real-Time) İletişime Uygun Yapı

CAN, özellikle kontrol döngülerinin hızlı ve deterministik olması gereken sistemlerde kullanılır. Örneğin:

  • Tekerlek hızı verilerinin ABS/ESP modülüne aktarılması
  • Motor devir, tork ve yük bilgilerinin ECU’lar arasında paylaşılması
  • Direksiyon açı sensörü verisinin sürüş destek sistemleriyle paylaşılması

CAN, doğru tasarlanmış bir ağ mimarisi ve doğru ID önceliklendirmesi ile oldukça tutarlı zamanlama performansı sunar.

6. Öncelik Tabanlı Mesajlaşma (Arbitration)

CAN Bus’ın en önemli avantajlarından biri de önceliklendirme mekanizmasıdır. CAN hattında aynı anda birden fazla ECU mesaj göndermek isterse, devreye arbitration (hakemlik) süreci girer:

  • Mesaj önceliği, ID değeri ile belirlenir.
  • Numerik olarak küçük ID = daha yüksek öncelik
  • Yüksek öncelikli mesajlar, düşük öncelikli mesajları “ezer” ve önce hattı kullanır.
Örnek:
ID 0x010  → Yüksek öncelik (ör. fren komutu)
ID 0x100  → Orta öncelik (ör. motor verisi)
ID 0x600  → Düşük öncelik (ör. konfor özellikleri)

Bu sayede fren gibi kritik bir mesaj, yoğun ağ trafiğinde bile gecikmeden iletilebilir.

7. Uygun Maliyetli ve Yaygın Ekosistem

CAN transceiver entegreleri ve CAN destekli mikrodenetleyiciler (STM32, NXP, Microchip vb.) piyasada fazlasıyla yaygın ve görece ucuzdur. Bu, CAN’i sadece otomotivde değil:

  • Endüstriyel otomasyon
  • Tıbbi cihazlar
  • Drone ve robotik uygulamalar
  • Tarım makineleri
  • Denizcilik (NMEA 2000)

gibi birçok alanda da standart hâline getirmiştir.


CAN Bus’ın Dezavantajları

Her teknolojide olduğu gibi CAN’in de bazı sınırları ve dezavantajları var. Özellikle modern araçlardaki veri miktarı arttıkça, bu dezavantajlar daha belirgin hâle geliyor.

1. Sınırlı Bant Genişliği (Veri Hızı)

Klasik CAN (Classical CAN) için tipik maksimum hız 1 Mbps’tir. Bu hız; sensör verileri, komut mesajları ve basit durum bilgileri için fazlasıyla yeterli olsa da, günümüz araçlarında kullanılan:

  • Kamera görüntüleri
  • Radar/LiDAR verileri
  • Yüksek çözünürlüklü ekran veri akışları

gibi uygulamalar için oldukça yetersiz kalır.

Bu nedenle OEM’ler, özellikle otonom sürüş ve gelişmiş sürüş destek sistemlerinde Automotive Ethernet gibi daha yüksek bant genişlikli çözümlere yöneliyor.

2. Mesaj Boyutu Sınırlaması

Klasik CAN çerçevesinde en fazla 8 byte veri taşınabilir. Büyük boyutlu veriler (örneğin uzun bir durum paketi, kalibrasyon verisi veya log bilgisi) bu sınır nedeniyle parçalara bölünmek zorundadır.

Bu sorunu azaltmak için geliştirilen CAN FD (Flexible Data Rate) standardı, veri alanını 64 byte’a kadar genişletir ve daha yüksek veri hızları sağlar. Yine de, bu hâliyle bile CAN FD; görsel veri gibi çok büyük akışlar için yeterli değildir.

3. Yerleşik Güvenlik (Security) Mekanizması Bulunmaması

CAN’in tasarlandığı dönemlerde araçlar dış dünyaya bu kadar bağlı değildi ve siber saldırı tehdidi bugünkü kadar gündemde değildi. Bu nedenle CAN protokolü:

  • Kimlik doğrulama (authentication)
  • Şifreleme (encryption)
  • Erişim kontrolü (access control)

gibi güvenlik mekanizmalarını yerleşik olarak içermez.

Bu da şu riskleri doğurur:

  • Yetkisiz erişimle mesaj dinleme (sniffing)
  • Sahte mesaj gönderme (spoofing)
  • Kritik sistemlere müdahale etme

Bu yüzden günümüzde ISO/SAE 21434 ve UNECE R155 gibi siber güvenlik standartları, CAN tabanlı ağlar üzerinde ek güvenlik katmanları ve IDS (Intrusion Detection System) gibi çözümlerin kullanılmasını şart koşuyor.

4. Broadcast Yapının Gizlilik ve Güvenlik Açısından Riskleri

CAN Bus, doğası gereği bir broadcast (yayın) protokoldür; yani hat üzerindeki tüm mesajlar, hatta bağlı olan tüm ECU’lar tarafından dinlenebilir. Bu durum:

  • Her ECU’nun, doğru filtreleme yapılmazsa gereğinden fazla mesaj görmesine
  • Saldırganın tek bir noktadan bağlanarak tüm trafiği izlemesine

imkân tanır. Dolayısıyla, CAN yapısı güvenlik açısından ekstra tasarım önlemleri gerektirir.

5. Uzun Hatlarda ve Yanlış Topolojilerde Sinyal Bütünlüğü Problemleri

CAN hattı, teoride çok esnek görünse de fiziksel tasarım tarafında dikkat edilmesi gereken noktalar vardır:

  • Hattın iki ucuna mutlaka 120 Ω terminasyon direnci konmalıdır.
  • “Yıldız topoloji” gibi yanlış kablolama yöntemleri yansımalara (reflections) neden olabilir.
  • Çok uzun kablolarda ve yüksek hızlarda sinyal zayıflaması görülebilir.

Bu sorunlar, özellikle saha uygulamalarında “Arada sırada çalışan, sonra bozulan” gizemli hatalara sebep olabilir. Bu yüzden hem elektriksel tasarım hem de PCB layout tarafında dikkatli olmak gerekir.


Gerçek Hayattan CAN Bus Örnekleri

Motor Kontrolü (Powertrain)

Motor ECU’su; sensörlerden gelen:

  • Devir (RPM)
  • Gaz pedalı konumu
  • Emme manifoldu basıncı
  • Sıcaklık sensörleri

gibi verileri CAN üzerinden alır ve diğer modüllerle paylaşır. Örneğin:

  • Motor tork bilgisi şanzıman ECU’suna iletilir.
  • Yakıt tüketim bilgisi gösterge paneline gönderilir.

Şasi ve Güvenlik Sistemleri

ABS, ESP, hava yastığı modülleri gibi güvenlik kritik sistemler, CAN üzerinden sürekli veri alışverişi yapar. Örneğin:

  • Tekerlek hız sensörleri → ABS/ESP modülü
  • Yanal ivme ve dönüş hızı → ESP/ADAS modülü
  • Çarpışma sensörleri → Airbag kontrol ünitesi

Bu verilerin doğru zamanda ve doğru şekilde iletilmesi, doğrudan yolcu güvenliğini etkiler.

Konfor ve Multimedya

Cam kaldırma modülleri, koltuk kontrol üniteleri, klima, far kontrolü ve multimedya sistemleri de CAN üzerinden haberleşir. Örneğin:

  • “Kapı açıldı” bilgisi hem gövde kontrol modülüne hem iç aydınlatma sistemine iletilir.
  • Direksiyondaki multimedya tuşları, ses sistemiyle CAN üzerinden konuşur.

Bu sayede araç içindeki tüm konfor özellikleri birbirine entegre, senkronize ve yönetilebilir hâle gelir.


CAN FD ve Automotive Ethernet ile Kıyaslama

Modern araçlarda veri miktarı arttıkça, klasik CAN’in limitleri daha fazla hissedilir hâle geldi. Bunun üzerine iki önemli teknoloji öne çıktı:

CAN FD (Flexible Data Rate)

  • Veri alanını 8 byte → 64 byte’a çıkarır.
  • Belli kısımlarda daha yüksek baudrate kullanarak toplam veri hızını artırır.
  • Klasik CAN ile geriye dönük uyumluluk sunar (donanım/altyapı avantajı).

CAN FD, özellikle daha yoğun veri alışverişi gerektiren kontrol modüllerinde (örneğin modern güç aktarım sistemleri, batarya yönetim sistemleri) giderek daha fazla kullanılmaktadır.

Automotive Ethernet

  • 10 Mbps, 100 Mbps hatta 1 Gbps seviyelerinde veri taşıyabilir.
  • Kamera, radar, multimedya gibi yüksek bant genişliği isteyen uygulamalar için uygundur.
  • Switch tabanlı yapısı ile segmentasyon ve daha iyi güvenlik imkânı sunar.

Yine de, maliyet, karmaşıklık ve gerçek zamanlı kontrol açısından değerlendirdiğimizde; CAN Bus hâlâ kritik kontrol yollarında vazgeçilmez konumunu koruyor.


CAN Bus Avantaj & Dezavantaj Karşılaştırma Tablosu

Başlık Avantaj Dezavantaj
Bant Genişliği Kontrol verileri için yeterli Görüntü, radar vb. için yetersiz
Güvenilirlik Gelişmiş hata algılama ve bus-off mekanizması Yerleşik siber güvenlik özellikleri yok
Kablolama İki telli yapı, düşük maliyet ve ağırlık Yanlış topoloji ve terminasyon sorun yaratabilir
Esneklik Ağa yeni ECU eklemek kolay Toplam trafik iyi planlanmazsa tıkanma riski
Mesaj Yapısı Basit ve deterministik Klasik CAN’de 8 byte sınırı

Sonuç: CAN Bus Neden Hâlâ Oyunun İçinde?

Özetle; CAN Bus, düşük maliyet, yüksek güvenilirlik, gerçek zamanlı performans ve yaygın ekosistem gibi güçlü avantajlara sahip. Evet, bant genişliği sınırlı ve yerleşik güvenlik mekanizmaları yok; ancak doğru mimari, uygun güvenlik katmanları ve iyi bir ID/mesaj tasarımıyla hâlâ son derece güçlü bir çözüm sunuyor.

Günümüzde otonom sürüş, bağlı araçlar (connected cars) ve OTA (Over-the-Air) güncellemeler gibi yeni kavramlarla birlikte Ethernet ve CAN FD gibi teknolojiler öne çıksa da, klasik CAN Bus’ın uzun yıllar daha araçların kalbinde yaşamaya devam edeceğini söylemek yanlış olmaz. 🚗✨


🔖 Terimler Sözlüğü

Terim Açıklama
CAN Controller Area Network – Araç içi iletişim protokolü
ECU Electronic Control Unit – Elektronik kontrol ünitesi/modülü
Diferansiyel Sinyal İki hat arasındaki gerilim farkı üzerinden veri iletimi tekniği
Arbitration CAN hattında mesajların ID’ye göre önceliklendirilmesi ve çakışma çözümü
CRC Cyclic Redundancy Check – Veri bütünlüğünü kontrol etmek için kullanılan algoritma
CAN FD Flexible Data Rate – Daha yüksek veri hızı ve daha büyük veri alanı sunan CAN genişlemesi
Automotive Ethernet Yüksek bant genişlikli, Ethernet tabanlı araç içi haberleşme teknolojisi
Bus-off Sürekli hata üreten ECU’nun CAN hattından otomatik olarak izole edilmesi durumu

📌 Ekstra Kaynaklar

25 Haziran 2025 Çarşamba

CAN Bus Fiziksel Katmanı Nedir?

Otomotiv endüstrisinden endüstriyel otomasyona kadar pek çok alanda yaygın olarak kullanılan CAN Bus (Controller Area Network), güvenilirliği ve dayanıklılığıyla ön plana çıkar. Ancak bu protokolün arkasındaki en temel yapı taşı fiziksel katmanıdır. Bu yazıda, CAN Bus'ın fiziksel katmanını detaylı şekilde ele alacağız. 😊

Diagram showing the CAN Bus physical layer with twisted pair wiring, terminator resistors, and transceiver between microcontroller and bus lines

📚 Fiziksel Katman Neyi İfade Eder?

OSI modelinde "Fiziksel Katman" (Physical Layer), verilerin elektriksel ve fiziksel taşıma biçimidir. CAN Bus özelinde bu, veri hattının nasıl sinyal taşıdığı, hangi kabloların kullanıldığı, napaj (power supply) düzenlemeleri ve elektriksel gürültüye karşı önlemleri içerir.

📏 CAN Bus Fiziksel Katman Bileşenleri

İyi bir CAN haberleşmesi için, aşağıdaki temel bileşenlerin doğru şekilde yapılandırılması gerekir:

  • Diferansiyel Hatlar (CAN_H ve CAN_L): İletim sırasında voltaj farkı üzerinden veri taşır. Bu sayede elektromanyetik parazitlere karşı dirençlidir.
  • Transceiver (Alıcı-Verici): Mikrodenetleyici ile CAN hattı arasında köprü görevi görür.
  • 120 Ohm Sonlandırıcı Dirençler: Veri hattının her iki ucuna bağlanır. Yansıma (refleksiyon) engellenir.
  • Bükümlü Çift Kablo (Twisted Pair): Gürültüye karşı koruma sağlar.
  • Topraklama (Ground): Gerilim farklarını dengelemek için ortak referans noktasıdır.

🧪 Voltaj Seviyeleri ve Sinyal Yapısı

CAN haberleşmesinde kullanılan iki temel voltaj seviyesi şunlardır:

Durum CAN_H CAN_L Diferansiyel Voltaj (Vdiff)
Recessive (Boşta) ~2.5V ~2.5V 0V
Dominant (Aktif) ~3.5V ~1.5V ~2V

Bu diferansiyel sinyal yapısı sayesinde, CAN Bus oldukça sağlam bir iletişim sunar.

🛡️ Elektromanyetik Uyumluluk ve Koruma

CAN Bus kabloları, dış ortamda oluşabilecek elektromanyetik gürültüye karşı bükümlü çift (twisted pair) olarak döşenir. Gerekirse bu kablolar shielding (ekranlama) ile daha da korunabilir.

🔌 Kablolama Kuralları

Aşağıdaki kurallar CAN hattının sağlıklı çalışması için oldukça kritiktir:

  • Kablolama lineer (doğrusal) olmalıdır, dallanmalardan kaçınılmalıdır.
  • Hattın iki ucunda 120Ω sonlandırma mutlaka olmalıdır.
  • Toplam kablo uzunluğu 500m’yi geçmemelidir (10kbps için).
  • Bağlantı noktaları 1m’den uzun olmamalıdır.

⚙️ Hız ve Kablo Uzunluğu İlişkisi

Veri Hızı (kbps) Maksimum Kablo Uzunluğu
1000 kbps 40 m
500 kbps 100 m
250 kbps 250 m
125 kbps 500 m
50 kbps 1000 m

🔧 CAN Transceiver Seçimi

CAN transceiver’lar, mikrodenetleyiciler ile CAN hattı arasında fiziksel bağ kurar. Aşağıdaki özelliklere dikkat etmek gerekir:

  • ISO 11898-2 uyumluluğu
  • EMI performansı
  • Çalışma sıcaklık aralığı
  • Standby ve düşük güç modları

Popüler transceiver örnekleri: TJA1050, SN65HVD230, MCP2551.

❓ CAN Bus Fiziksel Katmanı Sık Sorulan Sorular

  • CAN_H ve CAN_L ters bağlanırsa ne olur? Genellikle sistem çalışmaz, ama transceiver zarar görmez.
  • Tek direnç yeterli mi? Hayır, her iki uçta 120 ohm olmalı. Aksi halde yansıma oluşur.
  • Toprak bağlantısı olmazsa ne olur? Gerilim farkları iletişimi bozabilir. Ortak ground önerilir.

🔖 Terimler Sözlüğü

Terim Açıklama
CAN_H Yüksek seviyeli CAN hattı
CAN_L Düşük seviyeli CAN hattı
Transceiver Veri alışverişini gerçekleştiren alıcı-verici devre
Diferansiyel Sinyal İki hat arasındaki voltaj farkına dayalı iletişim
Sonlandırma Direnci Veri hattı ucuna takılan 120Ω direnç

📌 Ekstra Kaynaklar

8 Nisan 2025 Salı

STM32CubeIDE’de Canlı Değişken Takibi: Debug Sürecini Güçlendiren İpucu

STM32CubeIDE, STM32 mikrodenetleyici projelerinde hem geliştirme hem de hata ayıklama süreçlerini kolaylaştıran güçlü bir araç. Ancak çoğu kullanıcı, debug sürecini sadece breakpoint koyup değişkenleri tek tek kontrol ederek geçiriyor. Oysa ki “Live Expressions” (canlı ifadeler) özelliği ile, debug sırasında gerçek zamanlı değişken değişimlerini izleyerek çok daha verimli bir şekilde sorunları analiz edebilirsiniz.

Bu yazıda, STM32CubeIDE’de canlı değişken takibi nasıl yapılır, ne gibi avantajlar sağlar ve bunu bir örnek proje üzerinden nasıl kullanabileceğinizi adım adım anlatacağım.


Nedir Bu "Live Expressions"?

Live Expressions penceresi, kodunuz çalışırken belirli değişkenleri (ya da ifadeleri) sürekli gözlemlemenizi sağlar. Kod breakpoint’te durmasa bile, değişkenlerin değerleri anlık olarak güncellenir. Bu, özellikle zamanla değişen sayıcılar, PWM duty cycle’ları veya sensör değerleri gibi dinamik verileri takip etmek için çok faydalıdır.


Neden Kullanmalısınız?

Live Expressions ile şunları kolaylıkla yapabilirsiniz:

  • Kod kesintiye uğramadan değişkenleri takip edebilirsiniz.

  • Belirli bir algoritmanın anlık çıktısını grafiksel ya da sayısal olarak izleyebilirsiniz.

  • Delay’lerle uğraşmadan, breakpoint koymadan performans sorunlarını veya mantıksal hataları yakalayabilirsiniz.

  • Gerçek zamanlı sistemlerde, kod akışını bozmadan değerlerin nasıl değiştiğini görme imkânı sağlar.


Uygulamalı Örnek: ADC ile Sıcaklık Ölçümü

Diyelim ki bir STM32F103RB mikrodenetleyici ile dahili sıcaklık sensöründen ADC kullanarak sıcaklık değeri okuyoruz. Kodumuz şöyle:

c
#include "main.h" ADC_HandleTypeDef hadc1; float temperature = 0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if (hadc->Instance == ADC1) { uint32_t adc_val = HAL_ADC_GetValue(&hadc1); temperature = ((float)adc_val) * 3.3f / 4096.0f; // Voltaj temperature = ((temperature - 0.76f) / 0.0025f) + 25; // Sıcaklık (yaklaşık hesap) } } int main(void) { HAL_Init(); SystemClock_Config(); MX_ADC1_Init(); HAL_ADC_Start_IT(&hadc1); while (1) { HAL_Delay(500); // Sıcaklık değerini yarım saniyede bir güncelliyoruz } }

Adım Adım: Live Expressions Kullanımı

1. Debug Moduna Geçin

Projeyi build ettikten sonra Debug moduna geçin (F11 veya üstteki bug ikonuna tıklayarak).

2. Live Expressions Panelini Açın

Debug görünümüne geçtikten sonra:

  • Menüden Window > Show View > Expressions yolunu izleyin.

  • Açılan panelin ismi "Expressions" olabilir ama bu panel canlı güncelleme desteği sunar.

3. Değişken Ekleyin

  • Expressions paneline sağ tıklayın ve Add Watch Expression seçeneğine tıklayın.

  • Açılan kutuya temperature yazın.

  • Enter’a bastığınızda, değişken panelde belirecek.

4. Canlı Güncellemeyi Görüntüleyin

  • Kod hala çalışırken (pause durumda değilken!) temperature değerinin saniyede iki kez güncellendiğini göreceksiniz.

  • Değer sürekli güncelleniyorsa, sisteminizde herhangi bir kesinti olmadan anlık sıcaklık verisini izleyebiliyorsunuz demektir.


İleri Seviye: İfade Takibi (Expression Tracking)

Bu panelde sadece değişken değil, ifade de yazabilirsiniz. Örneğin:

temperature > 30

şeklinde yazarsanız, bu ifade true veya false olarak sürekli değerlendirilir. Bu da debug sürecinde koşul kontrollerini anında görmek için ideal bir yöntemdir.


İpuçları & Dikkat Edilmesi Gerekenler

  • Optimization seviyeleri yüksekse (-O2, -O3) bazı değişkenler derleyici tarafından optimize edilebilir ve debug sırasında görünmeyebilir. Geliştirme aşamasında -O0 (optimizasyon kapalı) kullanmanızı öneririm.

  • Eğer değişken global değilse, yani fonksiyon içindeyse ve static değilse, Live Expressions’da gözükmeyebilir. Bu durumda değişkenin kapsamını değiştirin.

  • volatile tanımlaması, anlık değişen donanım temelli değişkenlerde kritik öneme sahiptir. Bu sayede değer her seferinde RAM’den okunur.


Sonuç: Canlı Takiple Daha Akıllı Debug

Live Expressions, STM32CubeIDE’nin az bilinen ama çok etkili bir özelliği. Özellikle gömülü sistemlerde, zamanla değişen verileri izlemek ve mantıksal hataları tespit etmek için oldukça kullanışlıdır.

Her debug seansında breakpoint koymak yerine, bu özelliği kullanarak sisteminizi çalışır haldeyken analiz edebilir, daha kısa sürede daha isabetli çözümler üretebilirsiniz.


Eğer bu özelliği daha önce kullanmadıysanız, bir sonraki debug seansınızda denemenizi kesinlikle tavsiye ederim. STM32CubeIDE’nin sunduğu bu ve benzeri küçük araçlar, geliştirme sürecinizde büyük farklar yaratabilir.

1 Mart 2025 Cumartesi

STM32 HAL Kullanırken Performans Optimizasyonu: Kesme ve DMA İpuçları

STM32 HAL Kullanırken Performans Optimizasyonu: Kesme ve DMA İpuçları

STM32 mikrodenetleyicileri, özellikle gömülü sistemler ve zaman kritikli uygulamalar için oldukça popülerdir. Ancak, yazılım tarafında performans optimizasyonu yapmak, donanımın tüm potansiyelini verimli bir şekilde kullanabilmek için kritik önem taşır. Bu yazıda, STM32 HAL (Hardware Abstraction Layer) kütüphanesini kullanarak performansı artırmanıza yardımcı olacak iki önemli konuyu ele alacağız: Kesme ve DMA (Direct Memory Access).

1. Kesme (Interrupt) ile Hızlı Tepki

Kesme, STM32 gibi mikrodenetleyicilerde, belirli bir olay gerçekleştiğinde programın normal akışından çıkıp, hemen o olaya tepki vermesini sağlar. Bu özellik, özellikle zaman kritik uygulamalarda oldukça faydalıdır. Örneğin, bir sensörden gelen veriyi hızlıca okumak veya dış bir butona basıldığında kullanıcıya tepki vermek için kesme kullanabilirsiniz.

Kesme Kullanmanın Avantajları:

  • Hızlı Tepki: Kesme kullanarak, sürekli olarak bir işlem yapmayı beklemek yerine, bir olay gerçekleştiğinde hemen müdahale edebilirsiniz. Bu, zaman kazandırır.
  • Verimli Zaman Kullanımı: Mikrodenetleyici başka işlemlerle meşgulken, kesmeler sayesinde sadece gerekli olduğunda işlem yapılır. Bu, CPU’nun verimli kullanılmasını sağlar.

Kesme Performansı İçin İpuçları:

  • Kesme Önceliği Ayarı: STM32, çoklu kesme kaynakları destekler ve her bir kesmeye bir öncelik verebilirsiniz. Kesme önceliği ayarlayarak, en önemli olayların ön planda işlenmesini sağlayabilirsiniz. Bu, kritik uygulamalarda kesme sırasının doğru yönetilmesini sağlar.

  • Kesme Fonksiyonlarını Kısa Tutun: Kesme fonksiyonları kısa olmalıdır. Kesme fonksiyonları sırasında, mikrodenetleyici başka kesmeleri almaz ve bu da sistemin yanıt süresini olumsuz etkiler. Yalnızca gerekli işlemleri yapın ve büyük hesaplamaları ana program akışına bırakın.

2. DMA (Direct Memory Access) ile Verimli Veri Transferi

DMA, mikrodenetleyicinin CPU’sunu devre dışı bırakarak, verileri bir bellek biriminden diğerine hızlı bir şekilde aktarır. Bu özellik, özellikle yüksek hızda veri transferi yapmanız gerektiğinde faydalıdır. Örneğin, ADC (Analog to Digital Converter) ile veri okuma veya UART üzerinden gelen veriyi hafızaya kaydetme gibi işlemler için DMA kullanmak verimliliği artırır.

DMA Kullanmanın Avantajları:

  • CPU Yükünü Azaltır: CPU, veri transferini kontrol etmez, bu da diğer işlemler için daha fazla işlem gücü bırakır.
  • Hızlı Veri Transferi: CPU’dan bağımsız olarak, veri transferi çok daha hızlı yapılır. Bu, özellikle büyük veri setleriyle çalışırken oldukça önemlidir.

DMA Performansı İçin İpuçları:

  • DMA ile Kesme Kullanımı: DMA ile veri transferi sırasında kesme kullanarak, transfer tamamlandığında işlem yapabilirsiniz. Bu, veri transferi bitmeden önce başka bir işlem başlatmanın önüne geçer.

  • Veri Boyutunu Yönetme: DMA işlemleri genellikle büyük veri blokları üzerinde daha etkilidir. Küçük veri transferleri için DMA yerine doğrudan işlemler yapmak daha verimli olabilir. Gereksiz veri transferlerini önlemek için veri boyutlarını optimize edin.

  • DMA Kanal Yapılandırması: STM32, birden fazla DMA kanalını aynı anda kullanabilir. Bu kanalların doğru yapılandırılması, veri transferinin en verimli şekilde yapılmasını sağlar. DMA kanalındaki kaynak ve hedef adreslerini doğru belirlemek çok önemlidir.

3. Kesme ve DMA Birlikte Kullanımı

Kesme ve DMA birlikte kullanıldığında, çok daha verimli ve hızlı sistemler oluşturabilirsiniz. Örneğin, ADC ile sürekli veri okurken, DMA ile verileri hafızaya aktarabilir ve her yeni veri bloğu geldiğinde bir kesme ile işlem yapabilirsiniz. Bu sayede, hem hızlı veri transferi hem de hızlı işlem yapma imkanı elde edersiniz.

Kesme ve DMA’yı Birlikte Kullanırken Dikkat Edilmesi Gerekenler:

  • Kesme ve DMA Zamanlamasını Yönetme: Kesme ve DMA arasında zamanlama çatışmaları olabilir. DMA ile veri aktarımı bittiğinde bir kesme gerçekleşeceği için, kesme sırasında DMA işlemlerini engellemeyen bir yapı kurmak önemlidir.
  • Kesme İzinlerini Yönetme: DMA kesme işlemi sırasında, başka bir kesmenin engellenmemesi için doğru kesme izinlerini yönetmek gerekir. Örneğin, DMA kesmesinin aktif olduğu zamanlarda, düşük öncelikli kesmeleri geçici olarak devre dışı bırakmak verimliliği artırır.

Sonuç

Kesme ve DMA, STM32 mikrodenetleyicilerinin performansını önemli ölçüde artıran iki güçlü özelliktir. Doğru kullanıldığında, bu iki özellik, zaman ve kaynak verimliliğini optimize eder, CPU yükünü azaltır ve tepki sürelerini hızlandırır. STM32 HAL kütüphanesi, bu özellikleri kullanmayı kolaylaştırır, ancak yine de performans için dikkatli bir yapılandırma gereklidir. Bu yazıda verdiğimiz ipuçları, projelerinizde daha verimli ve hızlı sistemler kurmanıza yardımcı olacaktır.

Unutmayın, her zaman yazılımın yanı sıra donanımı da doğru şekilde yapılandırmak gerekir. Performans optimizasyonu, sistemin tüm bileşenlerinin uyumlu bir şekilde çalışmasıyla mümkündür.

13 Aralık 2024 Cuma

Transistörlü Röle Sürme Devresinde Diyot Kullanımının Önemi

Transistörlü Röle Sürme Devresinde Diyot Kullanımının Önemi

Elektronik devrelerde diyotların farklı görevleri bulunur. Bu yazıda, bir transistör aracılığıyla sürülen bir röle devresindeki diyotun neden kritik bir bileşen olduğunu inceleyeceğiz.

Devre Tasarımına Genel Bakış

Görseldeki devre, bir transistörün yardımıyla bir rölenin kontrol edilmesini sağlamaktadır. Devredeki temel bileşenler şunlardır:

Transistör: Giriş sinyaline göre iletime geçerek rölenin enerjilenmesini sağlar.

Röle: Bobini üzerinden akım geçtiğinde elektromanyetik alan oluşturarak mekanik anahtarının konumunu değiştirir.

Diyot: Röle bobini ile paralel bağlanmış olan bu diyot, devrede bir nevi koruma görevi üretir.

Diyelim ki giriş sinyali transistörü iletime soktu ve rölenin bobini üzerinden akım akmaya başladı. Bu durumda röle mekanik anahtarını kapatır ve bağlı bulunduğu yüklenin çalışmasını sağlar. Ancak, transistör kesime geçip akım akışı aniden kesildiğinde diyotun önemi ortaya çıkar.

Diyotun Koruma Mekanizması

Bir röle bobini, elektromanyetik indürens temelinde çalışr. Bobin üzerinden geçen akım kesildiğinde, bu akımın hızla sona ermesi bobin içerisinde bir öz indürens voltajı oluşturur. Bu voltaj genellikle çok yüksek olabilir (yüzlerce volt seviyesine ulaşabilir) ve devrenin diğer bileşenlerine zarar verebilir.

Diyot, bu noktada koruyucu bir unsur olarak devreye girer. Diyotun röle bobinine paralel bağlı olması, öz indürens sonucu oluşan bu ters yönlü voltajı şu sekilde bastırır:

  • Röle bobini akımını kesmeye çalıştığında, bobin uçlarında yüksek bir gerilim oluşur.
  • Diyot, ters gerilimi kendi üzerinden ileterek bobinde oluşan enerjiyi çözer.
  • Bu sayede transistör, yüksek voltaj seviyesine (spike) maruz kalmaz ve zarar görmekten korunur.

Diyot Olmasaydı Ne Olurdu?

Diyotun bulunmadığı durumlarda, bobin içerisinde oluşan öz indürens voltajı transistörün bacaklarına zarar verebilir. Bu, transistörün yanmasına ya da kalıcı hasarlara yol açabilir. Ayrıca devrenin genel çalışma kararlılığı ciddi anlamda bozulabilir.

Zener Diyotun Rolü

Bu devrede ayrıca bir zener diyot kullanılmış. Zener diyot, belirli bir eşik voltajı aştığında iletime geçerek gerilimi sınırlar. Röle bobini üzerinde oluşan gerilimı kontrol altında tutarak devrede ekstra bir koruma katmanı sağlar.

Sonuç

Diyotlar, basit görünüşlerine rağmen elektronik devrelerde çok kritik bir rol oynar. Görseldeki devrede kullanılan diyot, transistörü ve diğer bileşenleri koruyarak devrenin uzun ömürlü ve güvenilir olmasını sağlar. Bu tür koruma önlemleri, özellikle elektromekanik bileşenlerle çalışan devrelerde vazgeçilmezdir.

Kaynaklar:

  1. https://www.learningaboutelectronics.com/Articles/Relay-driver-circuit.php

31 Mayıs 2024 Cuma

Diyot Tipleri, Kullanım Alanları

Bu yazıda diyot tipleri ve ana kullanım alanları listelenmiştir.

  • P-N Junction-General Purpose Diode: Akımın tek yönde iletilmesini sağlar. İletim yönünde üzerine ~0.7V gerilim düşer. Genellikle doğrultucu olarak kullanılır. Aynı zamanda devre güç girişlerinde ters kutuplamadan/polariteden korunmak için de kullanılır.


  • Schottky Diode: Genel kullanım diyot ile benzer özelliklerdedir. Farklı kılan kısmı İletim yönünde üzerine daha düşük gerilim düşer. Bu sayede yüksek hızlı anahtarlama devrelerinde hızlı geri toparlama özelliği sayesinde sıklıkla kullanılır. Bu uygulamalarda üzerinde harcanan güç daha düşük olduğu için verimi daha yüksektir.

  • Zener Diyot: Belirli bir ters gerilimde iletime geçer ve gerilimi sabitlemeye yarar. Bu özelliği sayesinde gerilim regülatör devrelerinde, referans gerilim üreteçlerinde ve aşırı gerilim koruma devrelerinde kullanılır.

  • Transient Voltage Suppression Diode (TVS): Ani ve yüksek gerilim yükselmelerine karşı koruma sağlar. Elektronik cihazları yıldırım düşmesi, elektrostatik deşarj veya endüktif yüklerin sebep olduğu ani gerilim yükselmelerinden korur.


  • Light-Emitting Diode (LED): İleri yönde akım geçtiğinde ışık yayan yarı iletken diyottur. Farklı yarı iletken malzemeler kullanılarak farklı dalga boylarında (renklerde) ışık üretebilir. Aydınlatma, gösterge, sinyalizasyon ve haberleşme gibi birçok alanda kullanılır.


  • Fotodiyot: Üzerine düşen ışık miktarına bağlı olarak akım üreten diyottur. Işığı elektrik sinyaline dönüştürdüğü için ışık sensörleri, otomatik aydınlatma sistemleri, kamera pozometreleri ve tıbbi görüntüleme cihazlarında kullanılır.


  • Varaktör Diyot (Varikap): Uygulanan ters gerilime bağlı olarak kapasitans değeri değişen diyottur. Bu özelliği sayesinde radyo ve televizyon alıcılarında frekans ayarlama, osilatör devrelerinde frekans kontrolü ve parametrik yükselteçlerde kullanılır.


  • Tünel Diyot: Kuantum tünelleme etkisiyle çalışan özel bir diyot türüdür. Çok hızlı anahtarlama özelliği sayesinde yüksek frekanslı osilatör ve yükselteç devrelerinde kullanılır.


  • Lazer Diyot: Uyarılmış ışık emisyonu ile ışık üreten özel bir diyot türüdür. Ürettiği ışık, tek renkli, tutarlı ve yönlüdür. Optik fiber iletişim sistemleri, barkod okuyucular, lazer yazıcılar, lazer işaretleyiciler ve tıp alanında kullanılır.



Kaynaklar

  • https://www.globalspec.com/learnmore/semiconductors/discrete/diodes/general_purpose_diodes
  • https://www.build-electronic-circuits.com/schottky-diode/
  • https://www.build-electronic-circuits.com/zener-diode/
  • https://uk.rs-online.com/web/content/discovery/ideas-and-advice/tvs-diodes-guide
  • https://www.electrical4u.com/led-or-light-emitting-diode/
  • https://elektrikbilim.com/1009-fotodiyotlar.html
  • https://diyot.net/diyot-cesitleri-1/
  • https://www.derstagram.com/tunnel-diyot-nedir-nasil-calisir/
  • https://tekfaz.com/lazer-diyot-nedir-yapisi-ve-calisma-prensibi.html

MODBUS'a Hızlı Bir Giriş

Bir enerji analizörünün kılavuzunu açıyorsunuz, karşınıza "Fonksiyon kodu: 03" yazan bir tablo çıkıyor. Yandaki inverterin ...