Khung nhận được từ xe có nhiều chip ECU


10

Nói chung tôi không phải là "người đi xe hơi", vì vậy hy vọng tôi có thể giải thích điều này đủ tốt để nhận được sự giúp đỡ ở đây:

Khi gửi tin nhắn đến thiết bị OBD-II, tôi nhận được một phản hồi trong hầu hết các xe tôi đã thử nghiệm. Tuy nhiên, với những chiếc xe dường như có nhiều chip ECU, tôi nhận được phản hồi từ mỗi chiếc. Ví dụ: nếu tôi gửi 01 0C lệnh PID tới một chiếc xe có 3 chip ECU, tôi nhận được 3 phản hồi thường rất giống nhau nhưng vẫn khác nhau.

Một 01 00lệnh được cho là trả về 4 byte cho biết các PID được hỗ trợ của phương tiện, nhưng lệnh này cũng trả về 4 byte cho mỗi ECU - một byte được bổ sung đầy đủ 4 byte với nhiều cờ và tắt, trong khi các lệnh khác dường như chỉ có một số cờ được bật (những cờ này cho đến nay dường như luôn là cờ được bao gồm trong phản hồi 'chính', nhưng tôi không chắc liệu đây có phải là trường hợp không).

Thí dụ:

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

Hai dòng cuối cùng bao gồm các cờ cũng được gắn cờ trong dòng đầu tiên, nhưng dòng 3 có thêm một cờ mà dòng 2 thì không.

Dường như với tôi rằng có lẽ có một ECU duy nhất đủ điều kiện là chip 'chính' mà tôi nên nghe khi tôi gửi lệnh và (tôi nghĩ) Tôi hiểu rằng tôi có thể sử dụng mặt nạ / bộ lọc CAN ID để chỉ chú ý đến những cái tôi cần

Câu hỏi là: Có thực sự là một 'ECU chính' mà tôi nên chú ý hay tất cả những câu trả lời này đều quan trọng như nhau? Nếu có mục tiêu chính tôi cần nhắm mục tiêu, liệu tôi có thể gửi lệnh nào để xác định mục nào là 'quan trọng nhất' không?

Xe thử nghiệm trên:

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

1
Nó có thể hữu ích để cho chúng tôi biết sản phẩm và mô hình mà bạn đã thử này. Những gì tôi biết là những chiếc xe có 3 ECU có xu hướng được thiết lập với hai ECU thông thường (một cho mỗi ngân hàng động cơ) và một ECU "chính" quản lý tín hiệu đến / từ (và có thể giữa?) Của hai ECU thông thường. ECU "chính" không thực sự làm được nhiều hơn thế, vì vậy nếu mã lỗi chẩn đoán được đặt, nguồn của đó sẽ là ECU thông thường, không phải là "chính". Tuy nhiên, bạn có thể phải thăm dò ý kiến ​​chính thông qua giao diện OBD-II để có được DTC. Tôi ước tôi có thể giúp bạn nhiều hơn thế, nhưng đó là tất cả những gì tôi có bây giờ.
Zaid

1
Tôi là một kỹ sư phần mềm, nhưng chưa sử dụng OBD hoặc CAN, nhưng trang này có giúp ích gì không? Có vẻ như nên có một cách để lọc tin nhắn.
JPhi1618

@Zaid Cảm ơn bạn đã biết thêm thông tin. Tôi đã cập nhật câu hỏi của mình với những chiếc xe tôi đã thử, nhưng đây là điều mà tôi cần quyết định đối với bất kỳ số lượng xe nào; nó có thể không kết thúc vấn đề, tùy thuộc vào phản hồi chính xác mà tôi mong đợi khi gửi các bộ vi xử lý không được hỗ trợ, nhưng tôi chỉ muốn bao gồm tất cả các cơ sở của mình
Rein S

@ JPhi1618 Đây thực sự là khá nhiều bối cảnh giống như tôi cần. Đây rất có thể là con đường tôi cần đi theo! Cảm ơn một bó cho liên kết, tôi sẽ đi sâu hơn một chút.
Tăng cường

1
Nếu bạn tìm thấy bất cứ điều gì bạn quan tâm mà bạn nghĩ rằng bạn có thể đưa ra một "câu trả lời", hãy quay lại và trả lời câu hỏi của riêng bạn. Điều đó hoàn toàn được phép.
JPhi1618

Câu trả lời:


5

Nếu xe của bạn là 2008 hoặc mới hơn, nó đang sử dụng giao thức can, bạn có thể sử dụng lệnh AT CR để chọn ECU mà bạn muốn nghe.
Đây là cách:
gửi

AT H1

điều này sẽ bật các tiêu đề để xem địa chỉ của ECU.
gửi

0100

đây là lệnh OBD để chỉ ra các pids nào từ 1-20 được hỗ trợ.
Phản hồi của bạn sẽ như sau:

7E8064100BE3EA813
7E906410098188013
>

chương trình này bạn có 2 ECU 7E8 (động cơ) 7E9 (truyền),
tôi đã thấy 5 ECU trả về: 7E8,7E9,7EA, 7EB, 7EC.
Để nghe từ chỉ một ECU, bạn phát hành AT CRA xxx trong đó xxx là địa chỉ ECU.
gửi như sau

AT CRA 7E8

sau đó

0100

sẽ trở lại:

7E8064100BE3EA813

gửi

AT H0

để tắt tiêu đề sau đó gửi:

0100

và bạn sẽ lấy lại

4100BE3EA813

Nếu phương tiện của bạn là 29 bit thì 0100 resonse sẽ trông giống như:

18DAF11806410088180013
18DAF110064100BE5FA813
>

điều này cho thấy 2 ECU 18DAF118 (truyền) và 18DAF110 (động cơ).
gửi

AT CRA 18DAF110

để nghe chỉ từ động cơ.


Chào !! tôi đang làm việc trên một nguyên mẫu cho hệ thống chẩn đoán xe. Tôi đã xem qua câu trả lời của bạn nhưng tôi có một vài truy vấn ... 1) có lệnh AT nào để kiểm tra xem có bao nhiêu ECU không. 2) khi tiêu đề tắt hơn tại sao chỉ có một chuỗi "4100BE3EA813" được hiển thị không phải cả "410098188013"
Dev

4

CAN không hoạt động như bạn nghĩ.

CAN không dựa trên mô-đun, nó dựa trên thông điệp. Không có mô-đun nói trực tiếp với bất kỳ mô-đun khác. Trong CAN, một mô-đun tạo một thông báo có địa chỉ, địa chỉ đó xác định dữ liệu sẽ được chứa trong tin nhắn. Ngoài ra địa chỉ cho tầm quan trọng của tin nhắn. Địa chỉ càng thấp thì mức độ ưu tiên càng cao.

Ví dụ, ABS sẽ truyền tốc độ xe. Mỗi mô-đun khác cần dữ liệu sẽ đọc nó trong.

Không có mô-đun nào quan trọng hơn bất kỳ mô-đun nào khác, đó là ưu tiên tin nhắn quan trọng.


Chỉ cần theo dõi điều này: Nếu không có mô-đun nào quan trọng hơn mô-đun kia, có lý do nào để lọc ra phản hồi từ nhiều ECU không? Ví dụ: nếu tôi yêu cầu RPM cho BMW M5, tôi nhận được 3 phản hồi (nhìn chung chúng tương tự nhau, nhưng không bao giờ giống hệt nhau). Tôi có nên 'tin tưởng' phản hồi đầu tiên như một bài đọc chính xác? Bất kỳ lý do không chỉ đi với phản hồi đầu tiên cho mỗi yêu cầu?
Tăng cường

Nếu tất cả các câu trả lời có cùng một địa chỉ thì hãy tin vào người đầu tiên. Nếu họ không có cùng địa chỉ thì hãy tin vào địa chỉ có mức ưu tiên cao nhất. Ưu tiên cao nhất có địa chỉ thấp nhất.
vini_i
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.