1 Giriş
Endüstriyel ekipman iletişimi tipik olarak çok çeşitli donanım ve yazılım ürünlerinin yanı sıra standart bilgisayar platformlarını (kişisel bilgisayarlar veya iş istasyonları) endüstriyel otomasyon cihazlarına bağlamak için kullanılan protokolleri içerir. Sonuç olarak çoğu otomasyon cihazı, kişisel bilgisayarlarda veya seri bağlantı noktası kartlarındaki eklenti-de bulunan standart seri bağlantı noktalarıyla uyumlu basit seri komutları yürütmek üzere tasarlanmıştır. RS-232 şu anda PC ve endüstriyel iletişim sektörlerinde en yaygın kullanılan seri arayüzdür. RS-232, düşük hızlı seri iletişimde iletişim mesafelerini genişletmek için tasarlanmış tek uçlu bir standart olarak tanımlanır. RS-232, verici ile alıcı arasında ortak bir sinyal zeminini paylaştığından diferansiyel sinyalleri kullanamaz; aksi takdirde ortak mod gürültüsü sinyal sistemine bağlanacaktır. RS-232 standardı yalnızca 15 m'lik maksimum mesafeyi ve 20 kbit/s'lik maksimum sinyal iletim hızını belirtir.
"Kontrolör Alanı Ağı"nın kısaltması olan CAN, uluslararası alanda en yaygın kullanılan fieldbus'lardan biridir. CAN veri yollarından oluşan tek bir ağ, ağ donanımının elektriksel özellikleriyle sınırlıdır. Çoklu-ana seri iletişim veriyolu olarak CAN'ın temel tasarım özellikleri, yüksek bit hızları ve elektromanyetik girişime karşı güçlü direncin yanı sıra iletişim veriyolunda meydana gelen hataları tespit etme becerisini gerektirir. Sinyal aktarım mesafesi 10 km'ye ulaştığında bile CAN, 50 kbit/s'ye kadar veri aktarım hızları sağlayabilir. Tablo 1, CAN veri yolu üzerindeki herhangi iki düğüm arasındaki maksimum iletim mesafesi ile bunların bit hızları arasındaki ilişkiyi göstermektedir.
CAN Veri Yolu Sisteminde Üçgen Yapılandırmadaki Herhangi İki Düğüm Arasındaki Maksimum Uzaklık
Bit Hızı/kb/sn 1000 500 250 125 100
Maksimum Mesafe/m 40 130 270 530 620
Bit Hızı (kbps) 50 20 10 5
Maksimum Mesafe (m) 1300 3300 6700 10000
Görülebileceği gibi CAN veri yolu, gerçek zamanlı performans, uyarlanabilirlik, esneklik ve güvenilirlik açısından RS-232'ye göre üstün bir seri veri yoludur. İki seri cihaz birbirinden çok uzakta bulunduğunda ve RS-232 aracılığıyla doğrudan bağlanamadığında, seri cihazların CAN veri yolu üzerinden ağ bağlantısını sağlamak için RS-232, CAN'a dönüştürülebilir.
Ancak RS-232 ve CAN, voltaj seviyeleri ve çerçeve formatları açısından önemli ölçüde farklılık gösterir. Özellikle:
RS-232 standardı, +3V ile +15V arasındaki herhangi bir voltaj seviyesini mantık "0" olarak ve -3V ile -15V arasındaki herhangi bir voltaj seviyesini mantık "1" olarak tanımlayan negatif mantık kullanır. CAN sinyalleri ise diferansiyel voltaj kullanılarak iletilir. İki sinyal hattına "CAN_H" ve "CAN_L" adı verilir. Statik durumda her ikisi de yaklaşık 2,5V'tur; bu durum mantıksal "1" olarak temsil edilir ve aynı zamanda "resesif" olarak da adlandırılır. CAN_H, CAN_L'den yüksek olduğunda, "baskın" olarak bilinen mantıksal bir "0"ı temsil eder. Baskın durumda tipik voltaj değerleri şunlardır: CAN_H=3.5V, CAN_L=1.5V;
RS-232 seri bağlantı noktasının çerçeve formatı şu şekildedir: bir başlangıç biti, sekiz veri biti, programlanabilir dokuzuncu bit (hem iletim hem de alım için adres/veri biti olarak hizmet eder) ve bir durdurma biti. CAN veri çerçevesi formatı aşağıdakilerden oluşur: çerçeve başlığı + ID + veriler (iki formata ayrılabilir: standart çerçeveler ve genişletilmiş çerçeveler).
Bu nedenle tasarım, seviye ve çerçeve formatı dönüşümleri gibi dönüşümleri gerçekleştirmek için bir mikrodenetleyici gerektirir. Dönüştürme işlemi Şekil 1'de gösterilmektedir.
2 RS-232'den CAN'a Dönüşüm için Donanım Tasarımı
RS-232-CAN'a-dönüştürme cihazının tasarımında, mikroişlemci olarak AT89C52 mikro denetleyicisi kullanılır; SJA1000, CAN mikro denetleyicisi olarak kullanılır. SJA1000, CAN protokolünün fiziksel katman ve veri bağlantı katmanı işlevlerini entegre eder ve iletişim verilerinin çerçevelenmesini pasif olarak yönetebilir; AT82C250, CAN denetleyicisi ile fiziksel veri yolu arasında arayüz görevi görerek veri yolu için diferansiyel iletim yeteneği ve CAN denetleyicisi için diferansiyel alım yeteneği sağlar. AT82C250'nin pin 3'ü aracılığıyla üç farklı çalışma modu (yüksek-hız, eğim kontrolü ve bekleme) seçilebilir. Pim 3 topraklandığında cihaz yüksek hız modunda çalışır; harici sinyallerden kaynaklanan paraziti önleyen 6N137 kullanılarak yüksek hızlı optik izolasyon uygulanır; MAX232, mikro denetleyici arayüz çipi için 232 seviyeli sinyalleri TTL seviyelerine dönüştürmek için kullanılır. Belirli donanım arayüzü devresi ayrıntıları için lütfen SJA1000'e ilişkin ilgili kaynaklara bakın; burada daha fazla açıklama yapılmamıştır. Ancak aşağıdaki noktalara dikkat edilmelidir.
(1) Veri yolu empedansını eşleştirmek için CAN veriyolunun her iki ucuna 120Ω'luk bir direnç bağlanır, böylece parazite karşı bağışıklık ve veri iletişiminin güvenilirliği artar. Ancak pratikte CAN ağındaki "CAN_H" ile "CAN_L" arasındaki şönt direncinin 60Ω olmasını sağlamak yeterlidir.
(2) SJA1000'in Pim 20'si (RX1) kullanılmadığında topraklanabilir (özel neden için yazılım tasarımına bakın); CDR.6 ayar biti ile birleştirildiğinde bu, veri yolu uzunluğunu önemli ölçüde artırabilir.
(3) TX0 ve TX1 pinlerinin bağlantı yöntemi seri çıkışın seviyesini belirler. Belirli ayrıntılar için Çıkış Kontrol Kaydı (OCR) içindeki ayarlara bakın.
(4) AT82C250'nin RS pini ile toprak arasına bir eğim direnci bağlanır. Direnç değeri veri yolu iletişim hızına göre uygun şekilde ayarlanabilir; tipik olarak 16 kΩ ile 140 kΩ arasında değişir.
(5) MAX232, dahili güç dönüşümü için de kullanılan dört elektrolitik kapasitöre ({2}}C1, C2, C3 ve C4) ihtiyaç duyar. Hepsinin derecelendirmesi 1 μF/25 V'tur; tantal kapasitörler tavsiye edilir ve çipe mümkün olduğunca yakın yerleştirilmelidir. VCC güç kaynağı ile toprak arasına 0,1 μF dekuplaj kapasitörü bağlanmalıdır.
3 RS-232'den CAN'a Dönüşüm için Yazılım Tasarımı
Mikroişlemci kontrolü altında, RS-232 ile CAN arasındaki veri alışverişi sırasında seri port alımını ve CAN kesintilerini kullanmak operasyonel verimliliği artırabilir. Ana program akış şeması Şekil 2'de gösterilmektedir. SJA1000 yalnızca sıfırlama modunda başlatılabilir; bu öncelikle çalışma modunun, saat bölümünün ve kabul filtre kayıtlarının ayarlanmasını, baud hızı parametrelerinin yapılandırılmasını ve kesme etkinleştirme kaydının ayarlanmasını içerir.
Verilerin doğru bir şekilde iletilebilmesi, yazılım tasarımı sırasında göz ardı edilemeyecek hususlar olan baud hızına ve akış kontrolüne de bağlıdır. Bu nedenle, aşağıdaki bölümlerde CAN baud hızı yapılandırması, seri port baud hızlarının otomatik tespiti ve seri port veri akışı kontrolü konularına odaklanılacaktır.

3.1 CAN Filtre Hızını Ayarlama
CAN protokolünün temel unsurlarından biri baud hızıdır. Kullanıcılar, bit periyodu içindeki bit örnekleme noktalarının konumunu ve örnek sayısını ayarlayarak, uygulamaları için ağ performansını serbestçe optimize etmelerine olanak tanır. Ancak bu optimizasyon işlemi sırasında bit zamanlama parametreleri için kullanılan referans osilatörün toleransı ile sistem içindeki farklı sinyallerin yayılma gecikmeleri arasındaki ilişkiye dikkat edilmelidir.
Sistemin bit hızı, fBil, zaman birimi başına iletilen veri bitlerinin sayısını, yani baud hızı fBit=1/tBit'i temsil eder. Nominal bit zamanlaması,-üst üste binmeyen üç bölümden oluşur: SYNC_SEG, TSEG1 ve TSEG2. Bu üç zaman dilimi sırasıyla tSYNC_SEG, tTSEG1 ve tTSEG2 olarak gösterilir. Bu nedenle nominal bit periyodu tBit bu üç zaman diliminin toplamıdır.
tBit=tSYNC_SEG + tTSEG1 + tTSEG2
Bit periyodu içerisinde bu bölümler, temel zaman biriminin tamsayı katları cinsinden ifade edilir. Bu zaman birimine zaman kotası (TQ) adı verilir ve zaman kotasının süresi, osilatör saat periyodundan (tCLK) türetilen CAN sistem saatinin (tSCL) bir döngüsüdür. CAN sistem saati, ön ölçekleyici faktörünün (baud hızı ön ayar değeri, BRP) programlanmasıyla ayarlanabilir. Özellikle:
tSCL=BRP × 2tCLK=2BPR/fCLK
CAN bit zamanlama hesaplamaları için çok önemli bir diğer zaman aralığı, tSJW süresine sahip olan senkronizasyon atlama genişliğidir (SJW). SJW segmenti bit döngüsünün bir parçası değildir; bunun yerine, bir yeniden senkronizasyon olayı sırasında bit döngüsünün uzatıldığı veya kısaltıldığı maksimum TQ sayısını tanımlar. Buna ek olarak, CAN protokolü kullanıcıların tekli-örnekleme modu veya üç-örnekleme modu (üç örnekten bir sonuç seçerek) olabilen bit örnekleme modunu (SAM) belirtmesine olanak tanır. Tekli-örnekleme modunda, örnekleme noktası TSEG1 segmentinin sonundadır. Üç-örnekleme modunda, tek-örnekleme moduna kıyasla iki ek örnekleme noktası alınır; bunlar bir TQ ile ayrılan TSEG1 segmentinin sonundan önce bulunur.

Yukarıda bahsedilen BPR, SJW, SAM, TESG1 ve TESG2'nin tümü kullanıcı tarafından CAN denetleyicisinin dahili BTR0 ve BTR1 kayıtları aracılığıyla tanımlanabilir. Ayrıntılar Şekil 3'te gösterilmektedir. BTR0 ve BTR1 ayarlandıktan sonra gerçek baud hızı aralığı:
Maksimum=1/(tBit - tSJW), Minimum=1/(tBit + tSJW)
3.2 Seri Port Baud Hızı Tespiti
Bir seri cihaz ana bilgisayar olarak görev yaptığında, o anda dönüştürme cihazının seri port baud hızını tespit etmeniz gerekiyorsa, öncelikle ana bilgisayarın alma baud hızını (örneğin 9600 baud) ayarlayabilir ve terminalden belirli bir karakter (örneğin bir satır başı) gönderebilirsiniz. Bu şekilde ana bilgisayar, alınan karakter bilgisine dayanarak dönüştürme cihazının iletişim baud hızını belirleyebilir. Satırbaşı karakterinin ASCII değeri 0DH'dir; farklı baud hızlarında alınan değerler Tablo 2'de listelenmiştir.
Farklı Baud Hızlarında Alınan Bayt Sayısı
Baud Hızı (bit/s) Alınan Bayt Sayısı (Onaltılık) Baud Hızı (bit/s) Alınan Bayt Sayısı (Onaltılık)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*
3.3 Seri Bağlantı Noktası Akış Kontrolü
Burada kullanılan "akış" terimi veri akışını ifade eder. Veri kaybı genellikle iki seri port arasındaki iletim sırasında meydana gelir. Mikrodenetleyicinin arabelleği sınırlı kapasiteye sahip olduğundan, veri alınırken arabellek doluysa o anda gönderilmeye devam edilen veriler kaybolacaktır. Akış kontrolü bu sorunu etkili bir şekilde çözer: Alıcı uç verileri zamanında işleyemediğinde, akış kontrol sistemi bir "alma" sinyali göndererek gönderen ucun bir "iletime devam et" sinyali alana kadar iletimi durdurmasına neden olur. Bu nedenle akış kontrolü veri aktarım sürecini yönetir ve veri kaybını önler. Yaygın olarak kullanılan iki akış kontrolü türü, donanım akış kontrolü (RTS/CTS, DTR/CTS vb. dahil) ve yazılım akış kontrolüdür (XON/XOFF-devam/durdur). Aşağıdaki açıklama yalnızca RTS/CTS kullanan donanım akış kontrolü yöntemine odaklanmaktadır.
Akış kontrolü için donanım kullanıldığında, seri terminalin RTS ve CTS pinleri mikro denetleyicinin I/O bağlantı noktalarına bağlanır ve I/O bağlantı noktalarının 1 veya 0'a ayarlanmasıyla başlatma/durdurma sinyalleri alınır ve iletilir. Veri terminali ekipmanı (bilgisayar gibi) mikro denetleyici tarafından gönderilen veri akışını başlatmak için RTS'yi kullanırken, mikro denetleyici bilgisayardan veri akışını başlatmak ve duraklatmak için CTS'yi kullanır. Bu donanım el sıkışma yöntemini uygulamak için, programlama sırasında alıcı arabelleğin boyutuna göre bir yüksek-seviye işareti ve bir düşük-seviye işareti ayarlanır. Tampondaki veri miktarı yüksek-seviye eşiğe ulaştığında, alıcı uçtaki CTS hattı düşük değere ayarlanır (mantık 0). İletim ucundaki program CTS'nin düşük olduğunu tespit ettiğinde, alma arabelleğindeki veri miktarı düşük-seviye eşiğinin altına düşene ve CTS yüksek olarak ayarlanana kadar veri iletimini durdurur. RTS, alıcı cihazın veri almaya hazır olup olmadığını belirtmek için kullanılır.
3.4 CAN Alım Alt Programı
PeliCAN formatı hem standart hem de genişletilmiş çerçeveleri destekler. CAN modu, saat bölücü kaydındaki CDR.7 kullanılarak yapılandırılabilir (BasicCAN için 0, PeliCAN için 1). CAN verisi alınırken, çerçeve bilgisindeki FF biti bunun standart mı yoksa genişletilmiş çerçeve mi olduğunu belirlemek için kullanılır ve RTR biti uzak çerçeve ile veri çerçevesi arasında ayrım yapmak için kullanılır. Aşağıda CAN alma alt programı verilmiştir:
;//////////////////////////////////////////////////////////////////
;//CAN Veri Alımı/2 Bayt Kimlikli Çerçeve Formatında Birleştirildi//
;///////////////////////////////////////////////////////////////////////
:
MOV R0, #C_RE ; Mikrodenetleyicinin dahili arabelleğinin başlangıç adresi
MOV DPTR, #RXBUF ; Alma arabelleğinin içeriğini okuyun ve kaydedin
MOVX A, @DPTR ; CAN arabelleğinin ikinci baytını oku
MOV @R0, A; Kaydetmek
JB ACC.7, EFF_RE ; FF biti: 0=SFF, 1=EFF
MOV R2, #0
SJMP SFF_RE; Kimlik numarasına bağlı olarak "veri baytının" yakalandığı konum değişir
EFF_RE: MOV R2, #2
SFF_RE: MOV R2, #2
SFF_RE:
JB ACC.6, EXIT_RECAN ; RTR bitini kontrol edin; 1 ise (uzak çerçeve), dışarı atla
ANL A, #0FH
MOVR3,A; Bu noktada ortadaki 4 bit veri uzunluğunu temsil eder
MOV C_NUM, A; Alınan çerçevenin uzunluğunu R3 ve R5'te saklayın
RDATA0:
INC DPTR; 2 baytlık kimlik
DAHİL R0
MOVX A, @DPTR
MOV @R0, A
INC DPTR
MOVX A, @R0, A
INC DPTR
MOVX A, @DPTR
MOV @R0, A
MOVA, R2; EFF ise iki-bayt kimliğini atlayın
JZ DRATA1
INC DPTR
INC DPTR
VERİ1: ; Veri baytları
INC DPTR
DAHİL R0
MOVX A, @DPTR
MOV @R0, A
DJNZ R3, RDATA1
EXIT_RECAN:
RET
4 Sonuç
Bilgisayarların minyatürleştirilmesi, ölçüm ve kontrol araçlarının akıllı bir şekilde geliştirilmesi için gerekli koşulları sağlayarak, mikroişlemci{0}}tabanlı terminal cihazlarının üstün dijital iletişim yeteneklerine sahip olmasını sağladı. Akıllı terminallerin sayısının artmasıyla birlikte ağ mimarisi, protokoller, gerçek-zaman performansının yanı sıra uygulanabilirlik, esneklik, güvenilirlik ve hatta maliyet konusunda daha yüksek talepler ortaya çıkıyor. Sonuç olarak, fieldbus teknolojisi gelecekteki gelişim için büyük umut vaat ediyor. CAN veri yolunun çerçeve yapısı, bir cihaz ağı içinde birden fazla ağ ana bilgisayarına sahip olmayı mümkün kılan bir tanımlayıcı (ID) içerir; yani bu ağ ana bilgisayarları aracılığıyla tüm cihaz ağının operasyonel durumu izlenebiliyor ve ilgili kontrol kararları alınabiliyor. Bu cihaz artık tamamen geliştirildi ve pratik uygulamalarda mükemmel sonuçlar elde etti.




