Tüm yazılar
Haberleşme Protokolleri

CANopen Nedir? PDO, SDO, NMT ve Endüstriyel Kullanım Alanları

CANopen'in Object Dictionary'sinden PDO/SDO ayrımına, NMT durumlarına ve heartbeat canlılık denetimine kadar — bir asansör makine dairesinde takıldığım 'node ölü' vakası üzerinden anlatıyorum.

CANopen Nedir? PDO, SDO, NMT ve Endüstriyel Kullanım Alanları

Kısa Cevap (Özet): CANopen, CAN (Controller Area Network) fiziksel hatı üzerine kurulu, CiA (CAN in Automation) tarafından standardize edilmiş (CENELEC EN 50325-4) bir üst katman protokolü ve aygıt profilidir. CAN ilk iki OSI katmanını (fiziksel + veri bağımlılığı) taşır; CANopen üst beş katmanı yürütür. Veriler Object Dictionary’de tutulur; ayar verisi SDO ile, sürekli değişen proses verisi PDO ile akar. Ağı NMT yönetir; canlılık heartbeat (veya node guarding) ile, arızalar EMCY mesajlarıyla bildirilir. 11-bit CAN ID’nin 7 biti düğüm numarası olduğundan ağ en fazla 127 düğüm alır.

Bir asansör makine dairesi, sabah sekiz, yeni montaj. Halat gergin, kabin boş, sürücü paneli yeşil — ama PLC “node 12 ölü” diyordu. CANopen hat, 12. düğümün heartbeat’ini almıyordu. On iki dakika sonra bulduk: terminal bloğunda CAN_H ve CAN_L’ın biri, kablo kanalı darlığından bükülüp şasiye değiyordu — hat arada bir “duyuyordu”, heartbeat’in de arada bir kesilmesinin sebebi buydu. CANopen’in karakteri de budur: ya her şeyi duyar ya hiç duymaz; aradaki gri alanı size heartbeat gösterir. Bu yazı o gri alanı ve protokolün tamamını anlatıyor.

Ne Kadar “CAN”, Ne Kadar “open”?

CAN, otomotivde doğmuş, 2 damarlı bir saha bus’udur: 11-bit (ya da genişletilmiş 29-bit) kimlik, 0–8 bayt veri, çakışmada kimlik kazanan frame (higher ID wins). İlk iki OSI katmanını — fiziksel ve veri bağı — o taşır.

CANopen ise CAN’ın üstüne oturan “anlaşma” katmanıdır: adresleme, ayar verisi, proses verisi, ağ yönetimi, canlılık denetimi. 1992’de kurulan CiA (CAN in Automation), Nuremberg merkezli, kâr amacı gütmeyen kuruluş tarafından geliştirilir; uluslararası standardı CENELEC EN 50325-4’tür. Yani iki markanın sürücüsü, iki markanın enkoderi — hepsi aynı “anlaşma”yı konuşur.

Object Dictionary: Her Cihazın Kimlik Kartı

CANopen’in kalbi Object Dictionary (OD)’dir — yapılandırma ve proses verisinin saklandığı tablo. Her CANopen cihazı OD taşır; standardın bazı adresleri zorunludur (ör. 1000h cihaz tipi, 1008h cihaz adı), bazıları isteğe bağlıdır (100Ah üretici yazılım versiyonu). Üreticiye özel alan 2000h–5FFFh aralığındadır — “voltage girişi verisi topla” gibi özel komutlar buraya yazılır.

Pratikte OD, cihazın kimlik kartıdır: master, 1008h’i okuyup hat üzerindeki her slave’i isimle tanır. Cihazı tanımlayan tabloya bakmadan ayar yapmaya çalışmak, adrese bakmadan telefon etmek gibidir.

Frame Formatı ve 127 Düğüm Tavanı

CANopen frame’i, CAN frame formatı üzerine kuruludur: 11-bit CAN-ID, kontrol bitleri (RTR, start), 4-bit veri uzunluğu ve 0–8 bayt veri. CANopen bu 11 bitin içine sığar: 4 bit fonksiyon kodu + 7 bit düğüm ID’si. 7 bit → 127 düğüm tavanı. COB-ID’ler (CAN-ID + kontrol bitleri) çakışma olmaması için benzersizdir.

SDO: Ayar Verisinin Yolu

Object Dictionary’ye erişmek SDO (Service Data Object) ile yapılır: master istemci (client), slave sunucu (server) rolünde. İstemci 600h + düğüm ID ile sorar, sunucu 580h + düğüm ID ile cevaplar. Örnek: master, 3 numaralı düğüme 603h gönderir; hat üzerindeki herkes görür ama yalnızca hedef node cevap verir (583h).

SDO iki modda çalışır: tüm veri tek frame’e sığıyorsa expedited, sığmıyorsa segmented (127 segmente kadar blok). Ayar verisi — kalibrasyon, sınırlar, isim — SDO ile akar; çünkü değişken değildir, master istediğinde taşınır.

PDO: Süreç Verisinin Yolu

Süreç verisi — sensör okuması, motor komutu — sürekli değişir. Bunu SDO ile taşımak hem yavaş hem hatırı sayılır overhead yaratır. Burada PDO (Process Data Object) devreye girer:

PDO’nun ne zaman göndereceği gönderim tipi ile belirlenir: event-driven (veri değişince), time-driven (sabit aralıkla), synchronized (master’ın SYNC mesajıyla). Bir asansör sürücüsünde moment komutu SYNC ile senkronize edilir — kabinin sarsıntısız olması tam da bu senkronizasyonun eseridir. PDO mapping, bir frame’in hangi OD indekslerini taşıyacağını belirler: tek bir PDO, 2001h, 2003h, 2005h değerlerini aynı anda gönderebilir.

NMT: Ağı Kim Yönetir?

NMT (Network Management), her düğümün durumunu yönetir: initializing → pre-operational → operational → stopped. Kritik ayrım şudur: SDO pre-operational’da serbest (ayar yapılır), PDO yalnızca operational’da akar (proses başlar). Bir düğüm stopped’da ise sadece heartbeat/guarding yapar — veri ne alır ne verir. Bu, “hat başlat” butonunun arkasındaki mekanizmadır.

Canlılık: Heartbeat ve Node Guarding

Bir düğümün “hayatta” olduğunu iki yöntemle doğrularsın:

Heartbeat tercih sebebidir: daha az overhead, hat üzerinde daha az gereksiz trafik.

Emergency (EMCY): Cihazın “Ben Ölüyorum” Mesajı

Heartbeat ve guarding iletişim kesintisini bildirir; EMCY, cihazın iç arızasını bildirir (sensör arızası, aşırı ısınma). 0x80 + düğüm ID ile tek seferlik yollanır; veri alanı hata kodunu taşır. “Hat sessiz” ile “cihaz hasta” arasındaki ayrımı, sahadaki en değerli iki kelimedir.

Nerede Kullanılır?

Ethernet tarafına geçerken PROFINET ve EtherCAT yazılarını; kısa hatlı basit iletişim için Modbus’u oku.

PLC’ye mi Yeni Başlıyorsun?

Bus’ları tanıyorsun — onu kuran kişi olmak için PLC’nin kendisini bilmek gerekir. Eğitim programı sayfasında müfredat; iletişim sayfasından vakaları konuşuyoruz.


O bükülen damar, bana CANopen’in en pahalı dersini verdi: hat, “arada bir” duymaz. Ya duyar ya duymaz; aradaki gri alan, heartbeat’in sana gösterdiği yerdir. Bir node “arada ölü” diyorsa, önce terminal bloğuna, sonra CAN_L’ın şasiye değip değmediğine bak. Gerisi — OD, SDO, PDO, NMT — artık senin elinin altında.