İki Düğüm Kimliği Segmenti Aynısa Ne Olur?

Apr 04, 2018 Mesaj bırakın

İki düğüm ID segmenti aynıysa ne olur?




CAN-Bus ağları iki düğümün prensipte aynı ID segmentine sahip olmasına izin vermez, ancak iki düğüm ID segmenti aynıysa ne olur?

Deneyden önce, CAN mesajlarının yapısını ve tahkim ilkelerini açık bir şekilde anlayabilmeliyiz.


İlk olarak, CAN mesaj yapısı

En yaygın olarak kullanılan CAN-bus ağı standardı V2.0 sürümüdür. Bu standart ayrıca A ve B bölümlerine ayrılmıştır. Temel farkı tahkim alanındaki kimlik kodu uzunluğu. Bunlar arasında CAN2.0A (standart çerçeve) 11 bit ID, CAN2.0B (genişletme çerçevesi) 29 bit ID'dir. Aşağıdaki Tablo 1 CAN mesajının yapısını göstermektedir:

Tablo 1 CAN mesaj yapısı

Faz adı Faz uzunluğu / bit Açıklama
SOF 1 veri fazı başlangıcı ve tek baskın bit tarafından telafi anlamına gelir
Abtrisyon Aşaması Standart çerçeve 12 Çerçevenin önceliğini gösterir, 11 ID adresi ve 1 RTR
genişletilmiş çerçeve 32 Çerçevenin önceliğini, 29 ID adresi, 1 bit SRR, IDE genişletilmiş ve RTR ile gösterir.
Kontrol aşaması 6 veri segmentinin veri uzunluğunun grup kodu ve ayrılmış bitleri anlamına gelir
Veri Aşaması 0 ~ 8 veri içeriği, kontrol fazı veri uzunluğu kontrol
CRC 16 SOF'tan veri aşamasına, doldurma bitleri hariç tüm içeriklere çerçeve şemalarını kontrol etme
ACK 2 diğer düğüm doğru olarak alınacak bu çerçeveyi onaylıyor
Çerçeve ucu 7 çerçeve ucu anlamına gelir


İkincisi, tahkim ilkesi

CAN veri yolu tahkimi, Şekil 1'de gösterildiği gibi "çizgi ve ilke" ye dayanmaktadır. Bir alıcı-verici aynı zamanda farklı seviyelerde sinyaller yaydığında, resesif seviyesi her zaman baskın seviye tarafından kapsanmaktadır. Mesaj gönderilirken CAN kontrolörü, bus durumunun kendisinin gönderdiği ile aynı olup olmadığını izleyecektir. ID segmentinde tutarsızlık oluşursa, tahkim gerçekleşecektir. Diğer alanlarda meydana gelirse, ilgili hata tetiklenir.

Aşağıdaki anahtar nokta. İki düğüm ID segmenti aynıysa ne olur? Deneye iki CAN kart ve bir CANScope ile başladık. CAN kartı, mesaj göndermek ve almak için CAN standart düğümünü simüle eder ve Şekil 2'de gösterildiği gibi CANScope iletişim izlemeyi yapar.

                                                           

1.jpg

Fig.2 Deney Platform İnşaatı


Üçüncü olarak, bir "ID segmenti aynı ancak veriler farklı" deney

Bir CAN kartı ID 000H verisiyle 01020304050607H'ye ve başka bir CAN kartına bir CAN çerçevesi göndererek 02020304050607H'ye 000H veri göndermek için kullanılır. CANScope'un dinlediği veriler Şekil 3'te gösterilmektedir. Çok sayıda veri alanı dolum hatası olduğu gözlemlenebilir.


2.jpg

Şekil.3 Veri alanı doldurma erro

Bu neden böyle? İlk olarak Şekil 4'te gösterildiği gibi iki CAN kart iletim mesajına karşılık gelen dalga formlarını elde ederiz. İki pinli mesaj standart bir veri çerçevesi olduğundan ve her çerçeve 8 bayt veri içerdiğinden, paketlerin iki karesine karşılık gelen dalga formları Kimlik segmenti, RTR, IDE, R0 ve DLC segmentlerinde tam olarak aynıdır. Bu nedenle, tahkim rolü etkisizdir ve her iki düğüm de kendilerini öncelikli olarak görmektedir ve veri göndermeye devam etmektedir.

3.jpg

Şimdi veri segmentine odaklanıyoruz, ilk bayt verileri aynı, 00H; ikinci bayt verileri, sırasıyla, 01H, 02H'dir. Şekil 5'te oklar, karşılık gelen bitlerin mantığının sırasıyla 0 ve 1 olduğunu göstermektedir. Daha önce, CAN düğümünün, veri yolu seviyesinin mesaj gönderilirken gönderdiği seviye ile aynı olup olmadığını belirleyeceğinden bahsetmiştik. Tahkim olmayan alanda tutarsızlık oluşursa, ilgili hata tetiklenir, böylece iki çerçeve aynı anda veri yoluna gönderilirse, Bit hataları oluşmalıdır. Bit gönderme hatası, düğümün doldurma kuralını ihlal eden 6 dominant bit göndermesine neden olacağından (aktif hata çerçeve verilerini yok eder), Şekil 2'de gösterildiği gibi veri alanı doldurma hatası oluşur. 3


4.jpg

Şekil.5 Veri Alanı Çatışmaları


Dördüncüsü, iki "aynı kimlikle aynı verileri" deneyin

Aynı zamanda, ID'si 000H verileri 01020304050607H olan CAN çerçeveleri göndermek için iki CAN kartını ve CANScope iletişim izlemesini kullanır. Her şeyden önce, CANScope'un sadece dinleme modunda çalışmasını sağlamak için "veriyolu yanıtı" seçeneğini kontrol etmiyoruz. Deney sonuçları Şekil 6'da gösterilmiştir ve yanıt sınırlayıcı yanlış formattadır.

5.jpg

Şekil.6 Yanıt sınırlayıcı format hatası


Bu neden oluyor? Mesajı gönderen düğüm, ACK segmentine iki resess biti gönderecektir. İlk bit sırasında baskın bir seviye alınırsa, çerçevenin doğru şekilde alındığı kabul edilir. İki hakem aynı tahkim segmentine sahip olduklarında tahkim hakkını aldıklarını düşündüklerinden, ACK segmentinde bir yanıt beklerler, ancak ağda yalnızca iki düğüm vardır. Bu nedenle, ACK segmentinde herhangi bir cevap alınamaz ve bir yanıt sınırlayıcı hatası oluşur. Basitçe söylemek gerekirse, bu durum, veriyolundaki tek bir düğümün veri gönderemeyeceği gerçeğine benzer. Şekil 7, ACK segmentinde herhangi bir cevap olmadığında dalga biçimi karşılaştırmasını göstermektedir.

6.jpg

Şekil.7 ACK Yanıtı


Veriyolu yanıtını kontrol edip tekrar denemeyi başlatıyoruz (şu anda otobüste 3 düğüm var). Bu zamanda, ŞEK. 8, veri yolu verileri normal olarak iletilir ve alınır.

7.jpg

Şekil.8 BUS Yanıtını Başlat


Özet: İki düğüm aynı anda aynı kimlik ve veri içeren paketler gönderdiğinde, bir veri alanı dolgu hatası oluşur. İki düğüm aynı kimliği ve aynı verileri içeren paketler gönderdiğinde, diğer düğümler yanıt verirse hiçbir hata olmaz. Diğer düğümler yanıt hatasıyla yanıt verdi. Bu nedenle, CAN veriyolunu tasarlarken ID segmentinde aynı durumdan kaçınmalıyız.


Soruşturma göndermek

whatsapp

Telefon

E-posta

Sorgulama