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:
- 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.
- 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.
- 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.
