ได้รับเฟรมจากรถยนต์ที่มีชิป ECU หลายตัว


10

ฉันไม่ได้เป็น 'คนในรถ' ดังนั้นหวังว่าฉันจะอธิบายได้ดีพอที่จะรับความช่วยเหลือได้ที่นี่:

เมื่อส่งข้อความไปยังอุปกรณ์ OBD-II ฉันได้รับการตอบกลับหนึ่งครั้งในรถยนต์ส่วนใหญ่ที่ฉันทดสอบ อย่างไรก็ตามด้วยรถยนต์ที่เห็นได้ชัดว่ามีมากกว่าหนึ่ง ECU ชิปฉันได้รับการตอบสนองจากพวกเขาแต่ละคน ตัวอย่างเช่นถ้าฉันส่ง01 0C คำสั่ง PIDไปยังรถยนต์ที่มีชิป ECU 3 ตัวฉันจะได้รับคำตอบ 3 ครั้งซึ่งโดยทั่วไปจะคล้ายกันมาก แต่ก็ยังแตกต่างกัน

01 00คำสั่งควรจะกลับ 4 ไบต์ที่ระบุ PIDs สนับสนุนของรถ แต่นี้ยังส่งกลับ 4 ไบต์สำหรับแต่ละ ECU - หนึ่งเป็นโป่งพองออกอย่างเต็มที่ 4 ไบต์ที่มีธงหลายและปิดในขณะที่คนอื่น ๆ ดูเหมือนจะมีเพียง มีการเปิดใช้งานธงจำนวนหนึ่ง (ธงเหล่านี้ดูเหมือนจะเป็นธงที่รวมอยู่ในการตอบสนอง 'หลัก' เสมอ แต่ฉันไม่แน่ใจว่าเป็นเช่นนี้หรือไม่)

ตัวอย่าง:

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

สองบรรทัดสุดท้ายประกอบด้วยแฟล็กที่ถูกแฟล็กภายในบรรทัดแรก แต่บรรทัด 3 มีแฟล็กเพิ่มเติมหนึ่งรายการที่บรรทัด 2 ไม่

สำหรับฉันดูเหมือนว่าอาจมี ECU ตัวเดียวที่มีคุณสมบัติเป็นชิป 'หลัก' ที่ฉันควรฟังเมื่อฉันส่งคำสั่งและ (ฉันคิดว่า) ฉันเข้าใจว่าฉันสามารถใช้รูปแบบ CAN ID / ตัวกรองเพื่อ ให้ความสนใจกับสิ่งที่ฉันต้องการเท่านั้น

คำถามคือ: มี 'ECU หลัก' จริง ๆ หรือไม่ที่ฉันควรให้ความสนใจ หากมีเป้าหมายหลักที่ฉันต้องกำหนดเป้าหมายมีคำสั่งที่ฉันสามารถส่งเพื่อตรวจสอบว่า 'สำคัญที่สุด' หรือไม่

ยานพาหนะทดสอบเมื่อ:

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

1
มันอาจมีประโยชน์ในการบอกเราว่าคุณทำแบบจำลองใดและลองทำอะไร สิ่งที่ฉันรู้คือรถยนต์ที่มี 3 ECU มีแนวโน้มที่จะตั้งค่าด้วย ECU ปกติสองคัน (หนึ่งอันสำหรับแต่ละธนาคารเครื่องยนต์) และ ECU "ต้นแบบ" หนึ่งตัวที่จัดการสัญญาณไป / มา (และอาจอยู่ระหว่าง?) สอง ECU ปกติ ECU "ต้นแบบ" ไม่ได้ทำอะไรมากไปกว่านั้นดังนั้นหากตั้งรหัสปัญหาในการวินิจฉัยแหล่งที่มาของมันจะเป็น ECU ปกติไม่ใช่ "ต้นแบบ" อย่างไรก็ตามคุณอาจต้องสำรวจหลักผ่านทางอินเตอร์เฟส OBD-II เพื่อรับ DTC ฉันหวังว่าฉันจะช่วยคุณได้มากกว่านี้ แต่นั่นคือทั้งหมดที่ฉันมีในตอนนี้
Zaid

1
ฉันเป็นวิศวกรซอฟต์แวร์ แต่ไม่ได้ใช้ OBD หรือ CAN แต่หน้านี้มีประโยชน์หรือไม่ ดูเหมือนว่าควรมีวิธีการกรองข้อความ
JPhi1618

@ Zaid ขอบคุณสำหรับข้อมูลเพิ่มเติม ฉันอัปเดตคำถามของฉันกับรถยนต์ที่ฉันทดสอบแล้ว แต่นี่เป็นสิ่งที่ฉันจะต้องตัดสินใจในยานพาหนะที่กำหนดจำนวนหนึ่ง มันอาจไม่จบลงที่สำคัญขึ้นอยู่กับการตอบสนองที่แน่นอนที่ฉันควรคาดหวังเมื่อส่ง PID ที่ไม่สนับสนุน แต่ฉันต้องการครอบคลุมฐานทั้งหมดของฉัน
Rein S

@ JPhi1618 อันที่จริงแล้วเป็นบริบทเดียวกับที่ฉันต้องการสิ่งนี้สิ่งนี้อาจเป็นเส้นทางที่ฉันต้องปฏิบัติตาม! ขอบคุณมัดสำหรับลิงค์ฉันจะดำดิ่งลงไปอีกหน่อย
Rein S

1
หากคุณพบสิ่งใดที่น่าสนใจที่คุณคิดว่าคุณสามารถแยกออกเป็น "คำตอบ" ให้กลับมาและตอบคำถามของคุณเอง ที่ได้รับอนุญาตทั้งหมด
JPhi1618

คำตอบ:


5

หากรถของคุณคือ 2008 หรือใหม่กว่านั้นใช้โปรโตคอล can คุณสามารถใช้คำสั่ง AT CR เพื่อเลือก ECU ที่คุณต้องการรับฟัง
นี่คือวิธี:
ส่ง

AT H1

สิ่งนี้จะเปิดส่วนหัวเพื่อดูที่อยู่ของ ECU
ส่ง

0100

นี่เป็นคำสั่ง OBD เพื่อแสดงว่ารองรับ pids ใดจาก 1-20
คำตอบของคุณควรเป็นเช่น:

7E8064100BE3EA813
7E906410098188013
>

สิ่งนี้แสดงให้เห็นว่าคุณมี 2 ECUs 7E8 (เอ็นจิ้น) 7E9 (เกียร์)
ฉันได้เห็น 5 ECUs คืนมา: 7E8,7E9,7EA, 7EB, 7EC
ในการรับฟังจาก ECU เพียงหนึ่งเครื่องคุณออก AT CRA xxx โดยที่ xxx คือที่อยู่ ECU
ส่งต่อไปนี้

AT CRA 7E8

แล้วก็

0100

จะกลับมา:

7E8064100BE3EA813

ส่ง

AT H0

หากต้องการปิดส่วนหัวแล้วส่ง:

0100

และคุณจะได้รับกลับมาเพียงแค่

4100BE3EA813

หากรถของคุณเป็น 29 บิตสามารถรีเฟรช 0100 จะมีลักษณะดังนี้:

18DAF11806410088180013
18DAF110064100BE5FA813
>

สิ่งนี้แสดงให้เห็น 2 ECUS 18DAF118 (เกียร์) และ 18DAF110 (เครื่องยนต์)
ส่ง

AT CRA 18DAF110

ที่จะได้ยินเพียงแค่จากเครื่องยนต์


สวัสดี !! ฉันกำลังทำงานต้นแบบสำหรับระบบการวินิจฉัยยานพาหนะ ฉันได้คำตอบของคุณแล้ว แต่ฉันมีข้อซักถามน้อย ... 1) มีคำสั่ง AT เพื่อตรวจสอบว่ามี ECUs กี่ตัว 2) เมื่อส่วนหัวดับกว่าสาเหตุที่มีเพียงหนึ่งสตริง "4100BE3EA813" แสดงไม่ใช่ทั้ง "410098188013"
Dev

4

ไม่สามารถทำงานได้ตามที่คุณคิด

CAN ไม่ได้เป็นแบบโมดูล แต่เป็นแบบข้อความ ไม่มีโมดูลพูดโดยตรงกับโมดูลอื่น ๆ ในโมดูลสามารถสร้างข้อความด้วยที่อยู่ที่อยู่นั้นจะระบุข้อมูลที่จะมีอยู่ในข้อความ นอกจากนี้ที่อยู่ให้ความสำคัญของข้อความ ที่อยู่ต่ำกว่าลำดับความสำคัญที่สูงขึ้น

ตัวอย่างเช่น ABS จะส่งความเร็วของยานพาหนะ โมดูลอื่น ๆ ที่ต้องการข้อมูลจะอ่านได้

ไม่มีโมดูลที่มีความสำคัญมากกว่าโมดูลอื่น ๆ เป็นลำดับความสำคัญของข้อความที่สำคัญ


เพื่อติดตามสิ่งต่อไปนี้: หากไม่มีโมดูลใดที่สำคัญไปกว่าโมดูลอื่น ๆ มีเหตุผลอะไรบ้างที่จะกรองการตอบสนองจาก ECU หลายตัว? ตัวอย่างเช่นถ้าฉันขอ RPM สำหรับ BMW M5 ฉันจะได้รับคำตอบ 3 ครั้ง (โดยทั่วไปแล้วจะคล้ายกัน แต่ก็ไม่เหมือนกันทุกประการ) ฉันควรเพียงแค่ 'เชื่อมั่น' คำตอบแรกเป็นการอ่านที่ถูกต้องหรือไม่? เหตุผลใดที่ไม่เพียงแค่ไปพร้อมกับคำตอบแรกสำหรับแต่ละคำขอ?
Rein S

หากคำตอบทั้งหมดมีที่อยู่เดียวกันให้ไว้ก่อน หากพวกเขาไม่มีที่อยู่เดียวกันให้เชื่อถือที่อยู่ที่มีลำดับความสำคัญสูงสุด ลำดับความสำคัญสูงสุดมีที่อยู่ต่ำสุด
vini_i
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.