CANopen Haberleşme Yapısı | CANopen Protokolü

CANopen HABERLEŞME PROTOKOLÜ NEDİR ?

CANopen Protokolü Nedir ? CANopen Protokolü nasıl kullanılır ? CANopen haberleşme protokolü yapısı nedir ? CANopen protokolünün farkları nelerdir ? Bu ve benzeri sorulara cevap aradığımız CANopen protokolü yazımızı sizlerle paylaşıyoruz.

CANopen PROTOKOLÜ 

CAN (Alan ağı kontrol) alanağı yalnızca fiziksel katman ve data link katmanlarını tanımlar.(ISO11898 Standartlarına bakınız).Uygulama katmanını tanımlamaz.Ve pratik olarak dizaynda , fiziksel katmanı ve data link katmanını donanım belirler.

CAN alanağı kendi kendini tam olarak tamamlayamaz.Bu sebeple 11/29-bit tanımlayıcı ve 8-bit datayı tanımlar ve üstün bir protokole ihtiyaç duyar.CANopen protokolün üstün olan protokolü ise CAN’e dayanır.Tanımlı protokollerden biridir ve CiA(CAN-in-Automation) tarafından barındırılır.CAL (CAN uygulama katmanı) tarafından geliştirilmiştir ve CAL haberleşme ve servis protokolünü kullanılır.

CANopen protokolü uygulama katmanını ve haberleşme profilini kapsar (CiA DS301).Aynı zamanda programlanabilir aygıtlar için bir yapı sağlar (CiA 302).Ek olarak kablo ve konnektörler adına  (CiA 303-1) ve SI birimleri ve örnek gösterimleri adına (CiA 303-2).

OSI modeline göre CAN standartları ve CANopen protokolleri arasındaki ilişki modeli :

CanOpen protokolü

Nesne Sözlüğü :

CANopen objeye dayalı yol ile standart aygıt tanımlamasını kullanır.Her aygıt nesneler tarafından simgelenir ve bu sayede ağ üzerinden ziyaret edilebilir.

CANopen’ın ana konsepti aygıt nesne sözlüğüdür (OD).Her neşne adresleme için 16-Bit index için uyumludur.Data yapısı içerisindeki tek bir elemanı ziyaret etmek adına ise 8-Bit olarak alt index tanımlanabilir.

CANopen ağı içerisindeki her bir düğüm nesne sözlüğüne sahiptir.Aynı zamanda bu nesne sözlüğü , aygıt ve ağ davranışlarını içeren parametreleri , tanımlamalarınıda içerir.Nesne sözlüğü düğümü Elektronic Data Sheet (EDS) üzerinde tanımlanmıştır.

CANopen Haberleşme Nesnesi :

CANopen haberleşme protokolü aşağıdaki haberleşme nesnelerini içermektedir.

PDO (Process Data Object):

İşlem veri nesnesi aygıt uygulama nesnesine direk olarak ziyaret kanalı sağlar ,gerçek zamanlı data yayımı yapar ve yüksek önceliğe sahiptir.PDO CAN mesaj data listesindeki her byte data yayımında kullanılır ve mesajların kullanım oranı yüksektir.

2 çeşit İşlem Veri Nesnesi Bulunmaktadır .İlki data yayımı , ikincisi ise kabul için kullanılmaktadır.

Bunlar Transmit-PDOs (TxPDOs) ve Receive-PDOs (RxPDOs) olarak bilinir.TxPDOs’u destekleyen cihazlar üretici , PDOs’ları alabilen cihazlar ise alıcı olarak adlandırılırlar.

PDO , ‘üretici/alıcı mod’ olarak tanımlanabilir.Data bir üreticiden bir alıcı ya da birden fazla alıcıya yayılır.Data 1-Byte’dan 8-Byte’a kadar yayılabilir ve sınırıda 8-Bit’dir.

Data yayıldıktan sora alıcılar datayı cevaplamak zorunda değildirler.Ağ içerisindeki her bir düğüm data bilgisini inceler ve datayı alıp almayacağına karar verir.

Nesne sözlüğü içerisinde her bir İşlem Veri Nesnesi iki objeye sahiptir.PDO haberleşme parametreleri ve PDO harita parametreleri

PDO Haberleşme Parametreleri : COB-ID , İşlem veri nesnesi tarafından kullanılır.Yayım tipi , yasaklama zamanı , sayıcı döngüsü işlemleri’dir.

PDO Harita Parametreleri : Nesne sözlüğü içerisindeki nesne listesini içerir.Bu nesneler PDO içinde haritalanmış , yerleştirilmiştir ve aynı zamanda data uzunluğunu bitler içerisinde içerir.PDO’nun içeriklerini açıklamak, anlayabilmek adına , üretici ve alıcılar haritalamayı anlamak zorundadır.

PDO Yayım Modu : Seknron ve asenkron olarak iki şekildedir.

Senkron : Senkron periyodik ve senkron periyodik olmayan(non-periyodik) şeklindedir.

Asynchronous : İşlem veri nesnesi bu durumda data değişimlerinde ya da tetiklemenin ardından yayım yapar

PDO yayım modu  tipleri ise ; 0 , 1-240 , 254 , 255’tir.

Mod 0 : PDO bilgisi PDO data değişiminde ve senkron sinyal geldiğinde yayım yapar

Mod 1-240 : PDO bilgisinin tek parçası her 1-240 senkron sinyalde yayılır.

Mod 254 : Üretici tarafından tetiklenme ile tanımlanmıştır.Plc’nin tanımlanması da Mod 255 ile aynı olmalıdır.

Mod 255 : PDO , data değişimlerinde ya da tetiklenmenin ardından yayılır.

PDO içerisindeki tüm datalar , nesne sözlüğü tarafından haritalanmalıdır.

SDO (Service Data Object):

Servis data nesnesi ; İki CANopen aygıtı arasında client/server ilşikisi kurmak için kullanılır.Client aygıt server aygıtın nesne sözlüğünden data okuyabilir ve server aygıtın nesne sözlüğüne data yazabilir.

SDO ziyaret modu ise ‘client/server’ moddur.Bu mod SDO server tarafından ziyaret edilen serverdır.

Her CANopen aygıtı en az bir adet servis data nesnesine sahiptir ve bu servis data nesneleri aygıtın nesne sözlüğüne ziyaret adına kanal oluşturmayı sağlarlar.SDO tüm nesne sözlüklerini okur ve tüm nesneleri nesne sözlüğüne yazar.

SDO mesaj index bilgisini içerir ve nesne sözlüğü nesnelerinin pozisyonu adına alt index bilgilerini içerir.Ek olarak karmaşık data yapısı SDO ziyaretinden kolayca geçebilir.SDO client’ın okuma/yazma isteği göndermesinin ardından , SDO server cevaplar.

Client ve Server ,SDO’nun yayımını durdurabilir.İstek mesajı ve cevap mesajı farklı COB-IDs tarafından ayrılmıştır.

SDO herhangi bir uzunluktaki datayı yayabilir.Eğer data uzunluğu 4 Byte’dan daha büyükse , data segment tarafından yayılmıştır diyebiliriz.Datanın son segmenti end bayrağı içermektedir.

SDO İstek Mesaj Formatı :

COB-ID : 600 (Hex) + NODE-ID

Byte 0 : İstek Kodu

Byte 1 : Nesne İndexi LSB

Byte 2 : Nesne İndexi MSB

Byte 3 : Nesne Alt İndexi

Byte 4 : İstek Datası –Bit7/0

Byte 5 : İstek Datası –Bit15/8

Byte 6 : İstek Datası –Bit23/16

Byte 7 : İstek Datası – Bit31/24

İstek Mesaj içerisindeki istek kodu :

23 (Hex) : 4-Byte data yazma

2B (Hex) : 2-Byte data yazma

2F (Hex) : 1-Byte data yazma

40 (Hex) : Data Okuma

80 (Hex) : SDO Fonksiyonu Durdurma

Cevap Mesaj Formatı :

COB-ID : 580 (Hex) + NODE-ID

Byte 0 : Cevap Kodu

Byte 1 : Nesne İndexi LSB

Byte 2 : Nesne İndexi MSB

Byte 3 : Nesne Alt İndexi

Byte 4 : İstek Datası –Bit7/0

Byte 5 : İstek Datası –Bit15/8

Byte 6 : İstek Datası –Bit23/16

Byte 7 : İstek Datası – Bit31/24

İstek Mesaj içerisindeki istek kodu :

43 (Hex) : 4-Byte data okuma

4B (Hex) : 2-Byte data okuma

4F (Hex) : 1-Byte data okuma

60 (Hex) : 1/2/4-Byte data yazma

80 (Hex) : SDO Fonksiyonu Durdurma

NMT (Network Management Object)  :

Ağ yönetim nesnesi anlamına gelmektedir.CANopen ağ yönetimi master/slave modu destekler.CANopen ağ içerisinde yalnızca bir adet ağ yönetim nesnesi master olabilir ve diğer düğümler slave olarak düşünülür.NMT; 3 servis sağlar.Bunlar ; modül kontrol servisleri , hata kontrol servisleri  ve  önyükleme servisleridir.

Modül Kontrol Servisi :

CANopen ağı  içerisindeki master düğümü slave’leri komut göndermede kontrol eder.Slave; komut aldıktan sonra , komutu çalıştırır.Cevaplamaya gerek yoktur.Tüm CANopen düğümleri iç NMT durumlarını içerir.Slave düğümü dört duruma sahiptir.

Canopen protokolü modül başlatma

Bunlar başlatma durumları , çalıştırma öncesi durum , çalıştırma durumu  ve duruş durumudur.

1) Besleme geldikten sonra , aygıt otomatik olarak başlatma durumlarını çalıştırır.

2) Başlatma tamamlandıktan sonra , aygıt otomatik olarak çalıştırma öncesi durumları çalıştırır.

3 & 6 ) Remote(Uzak) düğüm çalışır

4 & 7 ) Aygıt çalıştırma öncesi durumları çalıştırır.

5 & 8 ) Remote(Uzak) düğüm durur.

9 & 10 & 11 ) Uygulama katmanı bekler

12 & 13 & 14 ) Haberleşme resetlenir.

15 ) Başlatma tamamlandıktan sonra , aygıt otomatik olarak  uygulama reset durumunu çalıştırır

16 ) Uygulama reset durumunun tamamlanmasının ardından , aygıt otomatik olarak  haberleşme reset durumunu çalıştırır.

Haberleşme nesne servisi yalnızca uygun durumlarda çalıştırılabilir.Örnek olarak , SDO yalnızca çalıştırma durumu ve ön çalıştırma durumlarında kullanılabilir.

Başlatma  : Boot-up

Ön Çalıştırma : SDO , SYNC , Time Stamp , EMCY , NMT

Çalıştırma : PDO , SDO , SYNC , Time Stamp , NMT

Duruş : NMT

Düğüm Durumu için Kontrol Mesaj Formatı :

COB-ID : 0

Byte 0 : Komut Belirteci (CS)

Byte 1 : Slave Adresi (0 :  Yayın)

Komut Belirteçleri Listesi :

01 (Hex) : Uzak düğüm başlangıç

02 (Hex) : Uzak düğüm duruş

80 (Hex) : Ön-çalıştırma durum çalıştırma

81 (Hex) : Uygulama katmanı reset

82 (Hex) : Haberleşme reset

Hata Kontrol Servisleri :

Ağ içerisindeki düğümlerde bağlantısızlık  ya da kopukluk olup olmadığını kontrol amaçlı kullanılırlar.Hata kontrol servisleri 2 grupta sınıflandırılabilirler ;

HeartBeat , Node Guarding.

PLC yalnızca Heartbeat’i destekler.

Örneğin , Master , slave Heartbeat servisini aktif ederse ancak slave üzerindeki bağlantısızlığı ya da hatayı görebilir.

Heartbeat ; ayarlanan değere göre zaman üretir ve buna göre Heartbeat üretici heartbeat mesajlarını yayar.Heartbeat üretici tarafından yayılan mesajları bir ya da daha fazla heartbeat alıcısı farkeder.

Zamanaşımı süreleri içerisinde üretici/yayıcı tarafından yayılan mesajları alıcılar almıyor ise ; CANopen haberleşmesi anormaldir diyebiliriz.

Canopen hata mesajları

Önyükleme Servisleri :

Slave’in başlatmayı tamamlamasının ardından , ön-çalışma durumu başlar ve önyükleme mesajlarını yayar.

Diğer Önceden Tanımlı CANopen Haberleşme Nesneleri (SYNC , EMCY) :

Senkron nesne ;CANopen ağı içerisinde Master düğüm tarafından periyodik olarak mesajları yayımlar.Bu nesne ağ saat sinyallerini tanımada kullanılır.Konfigürasyona göre , her aygıt  senkron haberleşme altında diğer cihazlarla beraber bu durumu kullanıp kullanmayacağına karar verir.

Örnek olarak : Sürücü bir cihazı kontrol ederken ; Aygıtlar master tarafından komutu aldıktan sonra hemen hareket etmeyecektir.Ancak senkron mesajı aldıktan sonra hareket edeceklerdir.Bu şekilde birçok aygıt senkron şekilde hareket etmektedir.

SYNC Mesaj Formatı :

COB –ID :  80 (Hex)

Acil Durum Nesnesi :

Acil durum nesnesi CANopen aygıtlarında dahili hataları tespit etmekte kullanılır.Aygıt içerisinde acil durum hatası meydana geldiğinde , aygıt acil durum mesajını(acil durum hata kodunuda içererecek şekilde ) gönderir ve aygıt hata durumuna geçer.

Hata durumu yok edildiğinde ise , aygıt acil durum mesajı gönderir ve acil durum hata kodu 0’dır.Ardından aygıt normal duruma geçer.

Acil Durum Mesaj Formatı :

COB-ID : 80 (Hex)  +Node-ID

Byte 0 : Acil Durum Hata Kodu LSB

Byte 1 : Acil Durum Hata Kodu MSB

Byte 2 : Hata Alanı

Byte 3 : Fabrika Tanımlı Hata Kodu

Byte 4 : Fabrika Tanımlı Hata Kodu

Byte 5 : Fabrika Tanımlı Hata Kodu

Byte 6 : Fabrika Tanımlı Hata Kodu

Byte 7 : Fabrika Tanımlı Hata Kodu

Not : Hata Register Alanı içerisindeki değer 1001(Hex) olarak haritalanır ve index alır ve nesne sözlüğüne gönderilir.Eğer değer 0 ise , herhangi bir hata meydana gelmez.Eğer değer 1 olursa  , normal hata meydana gelir.Eğer değer H’80 olursa , aygıt içerisinde dahili hata meydana gelir.

Ön-Tanımlı Bağlantı Ayarları :

Ağın , konfigürasyon iş yükünü azaltmak adına , CANopen varsayılan tanımlayıcı tanımlar.

Yayım Nesnesi Öntanımlı Bağlantı Ayarları :

Fonksiyon Kodu : NMT (0000) ; SYNC (0001) ; Time Stamp (0010)

COB-ID : NMT (0) ; SYNC (128 (80h)) ; Time Stamp (256(100h))

Haberleşme Parametre Index : NMT (-) ; SYNC (1005h,1006h,1007h) ; Time Stamp (1012h,1013h)

Öntanımlı Bağlantı Ayarlarına Karşılık Gelen Nesne  Tablosu :

canopen ön tanımlı nesne fonksiyon tablosu

CANopen Protokolü Nedir Sonuç :

Bugünki yazımızda CANopen Protokolünü beraber inceledik.CANopen protokolüne dair bilinmeyenler ve geniş açıklamalar ile ilgili yazılarımıza devam edeceğiz.Bizi takipte kalın.İyi çalışmalar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.