Birden fazla ECU yongası bulunan araçlardan alınan çerçeveler


10

Ben genellikle bir 'araba insanı' değilim, umarım burada biraz yardım alabilecek kadar iyi açıklayabilirim:

Bir OBD-II cihazına mesaj gönderirken, test ettiğim çoğu otomobilde bir cevap alıyorum. Ancak, görünüşe göre birden fazla ECU yongası olan arabalarda, her birinden bir yanıt alıyorum. Örneğin, 3 ECU yongalı bir araca bir 01 0C PID komutu gönderirsem , genellikle çok benzer ancak yine de farklı olan 3 yanıt alırım.

Bir 01 00komutun, aracın desteklenen PID'lerini belirten 4 bayt döndürmesi gerekir, ancak bu aynı zamanda her ECU için 4 bayt döndürür - biri sadece birkaç bayrağın açık ve kapalı olduğu 4 bayt, diğerleri ise sadece bir avuç bayrak açıldı (şimdiye kadar bu bayraklar her zaman 'ana' yanıta dahil olan bayraklar gibi görünüyor, ancak durumun her zaman böyle olup olmadığından emin değilim).

Misal:

SENT: 01 00

RECEIVED:

00 BF BF AC D3 - This response has the most binary flags turned on
00 98 18 80 11 - 8 flags on here
00 98 18 80 13 - 9 flags on here

Son iki satır, ilk satırda da işaretlenen bayraklardan oluşur, ancak satır 3'te, satır 2'de olmayan bir ek bayrak bulunur.

Bana öyle geliyor ki, belki de komut gönderirken dinlemem gereken 'birincil' çip olarak nitelendirilen tek bir ECU var ve (sanırım) bir CAN ID maskesi / filtresi kullanabileceğimi anlıyorum sadece ihtiyacım olanlara dikkat et.

Soru şu: Gerçekten dikkat etmem gereken bir 'birincil ECU' var mı, ya da tüm bu cevaplar eşit derecede önemli mi? Hedeflemem gereken birincil bir kod varsa, hangisinin 'en önemli' olduğunu belirlemek için gönderebileceğim bir komut var mı?

Test edilen araçlar:

2011 Chevy Cruze               [2 ECUs]
2015 BMW M5                    [3 ECUs]
2015 Range Rover Autobiography [3 ECUs]

1
Bunu hangi marka ve model üzerinde denediğinizi belirtmek faydalı olabilir. Bildiğim şey, 3 ECU'lu otomobillerin iki normal ECU (her bir motor bankası için bir tane) ve iki normal ECU'ya (ve muhtemelen arasında?) Sinyalleri yöneten bir "ana" ECU ile kurulma eğilimindedir. "Master" ECU bundan çok daha fazlasını yapmaz, bu yüzden bir teşhis sorun kodu ayarlanırsa, bunun kaynağı "master" değil normal ECU olacaktır. Ancak, DTC'leri almak için master'ı OBD-II arabirimi üzerinden sorgulamanız gerekebilir. Keşke size bundan daha fazla yardım edebilseydim, ama şimdilik bu kadarım var.
Zaid

1
Yazılım mühendisiyim, ancak OBD veya CAN kullanmadım, ancak bu sayfa hiç yardımcı oluyor mu? Mesajları filtrelemenin bir yolu olmalı gibi görünüyor.
JPhi1618

@Zaid Ek bilgi için teşekkürler. Sorumu test ettiğim araçlarla güncelledim, ancak verilen herhangi bir araçta karar vermem gereken bir şey; desteklenmeyen PID'ler gönderirken beklemem gereken tam cevaba bağlı olarak önemli olmayabilir, ancak sadece tüm üslerimi kapsamak istedim
Rein S

@ JPhi1618 Bu aslında ben de buna ihtiyacım olan aynı bağlamda. Bu izlemem gereken yol olabilir! Bağlantı için bir demet teşekkürler, biraz daha derine dalacağım.
Rein S

1
Eğer bir "cevap" haline gelebileceğini düşündüğünüz ilgi çekici bir şey bulursanız, geri dönün ve kendi sorunuza cevap verin. Buna tamamen izin veriliyor.
JPhi1618

Yanıtlar:


5

Aracınız 2008 veya daha yeniyse can protokolünü kullanıyorsa, duymak istediğiniz ECU'yu seçmek için AT CR komutunu kullanabilirsiniz.
İşte böyle:
gönder

AT H1

bu, ECU'ların adreslerini görmek için başlıkları açacaktır.
gönderme

0100

bu, 1-20 arasındaki pidlerden hangisinin desteklendiğini gösteren bir OBD komutudur.
cevabınız şöyle olmalıdır:

7E8064100BE3EA813
7E906410098188013
>

Bu 2 ECU 7E8 (motor) 7E9 (şanzıman) olduğunu gösterir,
5 ECU döndüğünü gördüm: 7E8,7E9,7EA, 7EB, 7EC.
Sadece bir ECU'dan haber almak için xxx'in ECU adresi olduğu CRA xxx'e veriyorsunuz.
aşağıdakileri gönder

AT CRA 7E8

sonra

0100

geri dönücek:

7E8064100BE3EA813

gönderme

AT H0

üstbilgileri kapatmak ve daha sonra göndermek için:

0100

ve sadece geri döneceksin

4100BE3EA813

Aracınız 29 bit ise, 0100 resonse şöyle görünecektir:

18DAF11806410088180013
18DAF110064100BE5FA813
>

bu 2 ECU'yu 18DAF118 (şanzıman) ve 18DAF110'u (motor) gösterir.
gönderme

AT CRA 18DAF110

sadece motordan duymak.


Selam !! Araç teşhis sistemi için bir prototip üzerinde çalışıyorum. Cevabınızı gözden geçirdim, ancak birkaç sorgum var ... 1) kaç ECU'nun mevcut olduğunu kontrol etmek için herhangi bir AT komutu var. 2) başlık kapalıyken neden yalnızca "4100BE3EA813" bir dize gösterilmiyorsa "410098188013"
Dev

4

CAN düşündüğünüz gibi çalışmıyor.

CAN modül tabanlıdır, mesaj tabanlıdır. Hiçbir modül doğrudan diğer modüllerle konuşmaz. CAN'de bir modül adresli bir mesaj üretir, bu adres mesajda yer alacak verileri tanımlar. Adres ayrıca mesajın önemini de veriyor. Adres ne kadar düşükse öncelik o kadar yüksek olur.

Örneğin ABS araç hızını iletir. Verilere ihtiyaç duyan diğer tüm modüller bunu okuyacaktır.

Diğerlerinden daha önemli bir modül yoktur, önemli olan mesaj önceliği.


Bunu takip etmek için: Diğerinden daha önemli bir modül yoksa, birden fazla ECU'dan gelen yanıtları filtrelemek için herhangi bir neden var mı? Örneğin, BMW M5 için RPM talep edersem, 3 yanıt alırım (genellikle benzerdir, ancak asla aynı değildir). Doğru bir okuma olarak ilk cevaba 'güvenmeliyim' mi? Her istek için sadece ilk yanıtla gitmemek için bir neden var mı?
Rein S

Tüm yanıtlar aynı adrese sahipse, ilkine güven. Aynı adrese sahip değillerse, en yüksek önceliğe sahip adrese güvenin. En yüksek öncelik en düşük adrese sahiptir.
vini_i
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.