Back to Developer Wiki
Endüstriyel Protokoller

CAN FD ve CANopen: Endüstriyel Ağ Mimarisi Seçim Rehberi

Klasik CAN, CAN FD ve CANopen arasındaki pratik farkları, nesne sözlüğü ile PDO/SDO'nun doğru kullanımını ve EtherCAT'e geçiş eşiklerini ele alan seçim rehberi. Bus yükü hesabı, SocketCAN komut örnekleri ve topoloji önerileri içerir.

Spikedge MühendislikJuly 26, 20266 dk okuma

Yeni bir makine kontrol projesinde ağ mimarisi kararı, çoğu zaman yazılım mimarisinden daha kalıcıdır: kablolama, konnektör seçimi, sürücü ekosistemi ve on yıllık yedek parça planı bu karara bağlanır. Bu rehber, klasik CAN'dan CAN FD'ye geçişin gerçekte ne kazandırdığını, CANopen'ın nesne sözlüğü ile PDO/SDO mekanizmalarının nasıl doğru kullanılacağını ve hangi eşikten sonra EtherCAT'in doğru araç hâline geldiğini pratik kriterlerle ele alıyor.

Klasik CAN'ın sınırları, CAN FD'nin gerçek kazancı

Klasik CAN (ISO 11898-1) frame başına 8 bayt payload taşır ve pratikte 1 Mbit/s ile sınırlıdır; 8 baytlık bir frame'in verimliliği bit stuffing dâhil %50 civarındadır. CAN FD iki şeyi değiştirir: payload 64 bayta çıkar ve Bit Rate Switching (BRS) ile veri fazı 2–8 Mbit/s'e yükseltilebilir. Arbitrasyon fazı hâlâ klasik hızda döner; bu yüzden bus uzunluğunu belirleyen değer veri fazı değil, arbitrasyon bit hızıdır.

Sahada dikkat edilmesi gerekenler:

  • Aynı segmentte FD-tolerant olmayan tek bir düğüm bile FD frame'lerine error frame üretir. Ya tüm düğümler FD uyumlu olmalı ya da segmentler gateway ile ayrılmalıdır.
  • 2 Mbit/s üzeri veri fazında transceiver seçimi kritiktir; sinyal iyileştirmeli (SIC, CiA 601-4) transceiver'lar dallanmış hatlardaki ringing'i bastırır.
  • CANopen kullanıyorsanız klasik PDO'lar 8 baytla eşlenir; 64 baytlık PDO için CANopen FD (CiA 1301) gerekir ve bu ekosistem hâlâ klasik CANopen kadar olgun değildir. "CAN FD alalım, CANopen üstünde nasılsa koşar" varsayımını doğrulamadan geçiş planına yazmayın.
Kriter Klasik CAN CAN FD EtherCAT
Payload 8 bayt 64 bayt Frame başına ~1486 bayt process data
Bit hızı ≤1 Mbit/s Arbitrasyon ≤1 Mbit/s, veri fazı 2–8 Mbit/s 100 Mbit/s full-duplex
Tipik döngü süresi 5–20 ms 1–5 ms ≤250 µs, µs mertebesi mümkün
Senkronizasyon SYNC mesajı, yüzlerce µs jitter SYNC mesajı Distributed Clocks, <1 µs
Topoloji Hat + 120 Ω sonlandırma Hat, stub toleransı daha düşük Hat/yıldız/ağaç serbest
Düğüm başına maliyet Düşük Düşük–orta Orta

CANopen nesne sözlüğü: cihazın sözleşmesi

CANopen'da her cihaz, 16-bit index + 8-bit subindex ile adreslenen bir nesne sözlüğü (object dictionary) yayınlar. 0x1000–0x1FFF iletişim profilidir (CiA 301): cihaz tipi (0x1000), hata kaydı (0x1001), kimlik (0x1018), PDO haberleşme ve mapping parametreleri burada yaşar. 0x2000–0x5FFF üretici alanıdır; 0x6000 ve üzeri standart cihaz profillerine ayrılmıştır — sürücüler için CiA 402, enkoderler için CiA 406 gibi.

Pratik tavsiye: üretici alanına özel nesne eklemeden önce uygun bir cihaz profili olup olmadığına bakın. CiA 402'ye uyan bir sürücü, master tarafında hazır state machine ve homing desteğiyle çalışır; özel nesnelerle kurduğunuz her şeyi master'da elle yeniden yazarsınız. EDS/DCF dosyalarını cihaz firmware'iyle birlikte sürümleyin — sahada en sık görülen konfigürasyon hatası, nesne sözlüğü ile EDS'in birbirinden uzaklaşmasıdır.

PDO ile SDO'yu doğru işe koşun

PDO (Process Data Object) gerçek zamanlı süreç verisi içindir: onaysız, broadcast, mapping'i 0x1600/0x1A00 nesneleriyle tanımlanır; event-driven, timer-driven veya SYNC mesajına kilitli gönderilebilir. SDO (Service Data Object) ise istek/yanıt mantığıyla çalışan konfigürasyon kanalıdır; segmentli transfer yükü nedeniyle kontrol döngüsünde yeri yoktur.

Basit kural: boot aşamasında SDO ile konfigüre edin, Operational durumda yalnızca PDO akıtın. Düğüm sağlığı için node guarding yerine heartbeat (0x1017) kullanın; guarding'in RTR tabanlı mekanizması hem bus'a ek yük bindirir hem de bazı CAN denetleyicilerinde sorunludur.

Linux SocketCAN üzerinde tipik bir devreye alma akışı:

# CAN FD arayüzü: arbitrasyon 500 kbit/s, veri fazı 2 Mbit/s
ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on

# SDO ile 5 no'lu düğümün heartbeat üreticisini 1000 ms yap (0x1017:00, UNSIGNED16)
cansend can0 605#2B.17.10.00.E8.03.00.00
# beklenen yanıt: 585#60.17.10.00.00.00.00.00

# NMT: tüm düğümleri Operational durumuna al
cansend can0 000#01.00

# Node 5'in TPDO1 trafiğini izle (COB-ID 0x185)
candump can0,185:7FF

EtherCAT'e geçiş eşiği

Karar çoğu zaman üç soruya iner:

  1. Döngü süresi: 1 Mbit/s'de 8 baytlık bir CAN frame'i stuffing dâhil ~130 µs sürer. 10 düğüm × (RPDO + TPDO) trafiği tek başına milisaniyeyi doldurur; %50 bus yükü tavanını da eklediğinizde 1 ms altı döngü klasik CAN'da matematiksel olarak kapanmaz. CAN FD bu sınırı öteler ama ortadan kaldırmaz.
  2. Senkronizasyon: Eksenler arası <10 µs senkron gerekiyorsa (interpolasyonlu hareket, gantry eksenleri) CANopen SYNC mesajı yeterli değildir; EtherCAT Distributed Clocks tam olarak bu iş için tasarlanmıştır.
  3. Veri hacmi: Process image birkaç yüz baytı aşıyorsa — çok eksen + I/O + safety — EtherCAT'in frame başına ~1486 baytlık process data kapasitesi tabloyu değiştirir.

İyi haber: CANopen yatırımı çöpe gitmez. CoE (CANopen over EtherCAT), nesne sözlüğünü, PDO/SDO kavramlarını ve CiA 402 sürücü profilini aynen taşır; değişen yalnızca taşıma katmanıdır. Ölçeğin nereye gidebildiğine bir referans: i.MX8M Plus üzerinde PREEMPT_RT ve IgH master ile yürüttüğümüz bir çalışmada EtherCAT döngü işleme süresini 8 µs'den 3.8 µs'ye düşürdük, DC senkronizasyonunu ±5 µs'den 100 ns'nin altına çektik — ayrıntılar EtherCAT motion control vaka analizinde.

Topoloji önerileri

  • Hat topolojisi + çift sonlandırma: CAN/CAN FD'de her iki uçta 120 Ω, ara düğümlerde sonlandırma yok. Yıldız topolojiden ve uzun stub'lardan kaçının; 2 Mbit/s üzeri veri fazında stub'ları santimetre mertebesinde tutun.
  • Uzunluk bütçesi: Bus uzunluğunu arbitrasyon hızı belirler — 500 kbit/s için ~100 m, 1 Mbit/s için ~40 m pratik sınırdır. Daha uzun hat gerekiyorsa hızı düşürün ya da segmentlere bölün.
  • Segmentasyon: Karışık hız veya karışık protokol ihtiyacında gateway ile bölün: kabin içinde CAN FD, saha tarafında klasik CAN tipik bir desendir.
  • İzolasyon ve topraklama: Uzun hatlarda galvanik izolasyonlu transceiver + tek noktadan şasi topraklaması, aralıklı hata avından kurtarır. CAN_H/CAN_L için bükümlü çifti zorunlu kabul edin.
  • EtherCAT tarafında: Port tabanlı yapı hat, yıldız ve ağaç topolojilerine izin verir; kablo yedekliliği gerekiyorsa halka kurup master'da redundancy açabilirsiniz.

Karar özeti

  • ≤10 düğüm, ≥5 ms döngü, yüksek maliyet hassasiyeti → klasik CAN + CANopen hâlâ doğru cevap.
  • 8 baytı aşan veri blokları, 1–5 ms döngü → CAN FD; CANopen FD ekosisteminin cihazlarınız için olgunluğunu önceden doğrulayın.
  • <1 ms döngü, çok eksenli senkron hareket, µs altı senkronizasyon → EtherCAT + CoE.

Bu eşiklerin sizin sisteminizde nereye düştüğünü bus yükü, döngü bütçesi ve donanım maliyetiyle birlikte görmek isterseniz, mevcut ağınızı endüstriyel ağ mimari denetimi kapsamında somut ölçümlerle değerlendiriyoruz; fieldbus yığını tarafında yaptıklarımızın özeti için endüstriyel protokoller yetkinlik sayfasına bakabilirsiniz.

#CAN FD#CANopen#EtherCAT#fieldbus#endüstriyel ağ

Using this technology in your project?

Schedule an architecture audit with Spikedge engineers.

Schedule Architecture Audit