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

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

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





