在軟件(jià₽♥★↑n)定義汽車(chē)這(zhè)個(gè)時(shí)代,汽車(c≈σ× hē)功能(néng)越來(lái)越豐♠♠★富,随之ECU越來(lái)越多(duō¥®≤₹),有(yǒu)些(xiē)功能(néng)靠ECU獨立實現(®≥xiàn),有(yǒu)些(xiē)功能(néng)則需要(yào)多(duō)¥Ω₽✔個(gè)ECU聯合實現(xiàn)。總體(tǐ)來(lái)說(✘≠↕×shuō),ECU絕大(dà)多(duō)數(shù)情況下(xià)都(dōu)需要λ$(yào)與其他(tā)ECU進行(xíng)信息交互,比如(rú)充電(↑♠diàn)功能(néng),車(chē)載充電(diàn)機(jī)OBC需要(yào)∑δΩ≈聯合電(diàn)池管理(lǐ)系統BMS和(hé)整車(chē)控制(δ≠<zhì)器(qì)VCU等聯合才能(néng)實現(xiàn)。因此,這(zhè)些(®π★¶xiē)ECU采取怎樣的(de)通(tōng)訊方式來(lái)實現(xiàn)信息交互?目前,¥∑常用(yòng)的(de)ECU通(tōng)訊方式有(yǒu) CAN,× LIN和(hé)FlexRay,同時(shí)随著(zhe)汽車(chē)®$電(diàn)子(zǐ)電(diàn)器(qì)架構©∞¶α朝著(zhe)中央集成控制(zhì)方向發展,以太網的(de)應用(yòng)也(yě)越來(l∏&ái)越廣泛。
source:the software Car: Buil ₽×✘ding ICT Architectures for Future Elect±✔§ric Vehicles
₹
當然不(bù)管汽車(chē±×)電(diàn)子(zǐ)電(diàn)器(qì)架構發α☆ 展多(duō)麽迅速,CAN通(tōng)訊仍将無處不(bù)在,持續對(duΩ↓∑ì)ECU之間(jiān)的(de)信息交互扮演著(zhe)極其關鍵的(de)角色。因此,本文(&βwén)從(cóng)ECU系統層級角度來(lái)探討(t♦€♠ǎo)CAN通(tōng)訊都(dōu)會(huì)有(yǒu×"§σ)怎樣的(de)需求,以及如(rú)何去(qù)理(l÷§"ǐ)解與評估這(zhè)些(xiē)需求。
#01 CAN通(tōng)訊需求的(de)分(fēn)析與分(fēn)解
汽車(chē)ECU基本都(dα≥↓♦ōu)采用(yòng)V流程開(kāi)發,先由OEM提供功能(néng)開(kāi)發需求,α¶然後經過ECU系統的(de)分(fēn)析與評估,再分(fēn)配給ECU軟硬"® €件(jiàn)進行(xíng)相(xiànφ≠∑®g)應的(de)開(kāi)發與驗證,最後由系統進行(xíng)驗證和(hé)确認。
Source: 一(yī)文(wén)了(le)解汽車(chē)功能(néng)開(kāi)發要(yào)做(z≤≤ uò)什(shén)麽?怎麽做(zuò)?
本文↔☆(wén)将側重點在ECU系統層面視(shì)角來(lái)看(kà♠§© n)這(zhè)些(xiē)CAN通(tōng)訊需求。通(tōng↔♦®)常ECU系統收到(dào)在客戶關于CAN通(tōng)訊的(de)需<Ω求會(huì)涉及以下(xià)幾個(gè)點:
- ECU需要(yào)具備幾路(lù)CAN,每 §₽↕路(lù)CAN的(de)基本要(yào)求是♥α(shì)什(shén)麽;
- 每條CAN需要(yào)§≈ 具備哪些(xiē)功能(néng);
- CAN通(tōng)訊矩陣或DBC是(shì)怎樣的(de)。
這(zhè)些(xiē)需求就(jiù)是(shì)→♦™×ECU CAN通(tōng)訊開(kāi)發的(de)起點,一(yī)般稱為(wèi)客戶需求或者₹₩≠↔利益相(xiàng)關者需求Stakeholder requirement。在ECU系&×統層面,系統工(gōng)程師(shī)收到(dào)這(zhè)"♥σσ些(xiē)需求後,會(huì)拉上(shàn±♠™g)相(xiàng)關利益者一(yī)起來(lái)評估這(zhè)些(xiē)需求,包括€'₩硬件(jiàn),軟件(jiàn)和(hé)功能(néng≥×)安全等項目內(nèi)部成員(yuán),同&♥時(shí)也(yě)會(huì)和(hé)客戶多(duō)次對(duì)齊,最終☆∑ 明(míng)确好(hǎo)這(zhè)些(xiē)CAN通(¥§>εtōng)訊需求。
接著(zhe)系統工(gōng)∑'≥程師(shī)将在ECU系統層面将需求細化( $§huà)為(wèi)ECU系統需求,比如(rú)$©:
- ECU需要(yào)兩路(lù)CAN,CAN1用(yòng)于ECU之間(j¥εiān)的(de)信息交互,CAN2用(yò×★ng)于診斷和(hé)标定;
- 兩路(lù) εCAN都(dōu)為(wèi)CAN FD,仲裁段波特率500Kbps,數(sh∞γπù)據段波特率為(wèi)2Mbps,采樣點均為(wèi)80%,都(dōu)支持标準÷☆&幀和(hé)擴展幀格式;
- CAN1需要(yào)根據已提供的(de)∞ ✔CAN通(tōng)訊矩陣或DBC進行(xíng)開("♥kāi)發;
- CAN1需要(yào)支持特≤∑≈定幀報(bào)文(wén)喚醒,支持局部網絡♥ε喚醒功能(néng)等。
當然需求細化(huà)分(fēn)解出來(lái)了(l÷∏≈e)很(hěn)重要(yào),但(dàn)有(yǒu)沒有(yǒu)徹底∞吃(chī)透呢(ne)?接下(xià)來(lái€→♣)我們就(jiù)再進一(yī)步來(lái)探討(tǎo)。
#02 如(rú)何理(lǐ)解CAN通(tōng)訊需求
就(jiù)系統♦ 工(gōng)程師(shī)的(de)經曆Ω>來(lái)說(shuō),當看(kàn)到(dà≤¥o)這(zhè)些(xiē)需求,一(yī)方面要(yà §φ®o)理(lǐ)解需求本身(shēn),另一(₹↔σyī)方面需要(yào)知(zhī)道(dào)這(zhè)些(xiē≥♠£★)需求将會(huì)涉及的(de)相(xiàng)關利益方。下(xià)面我∞✘們就(jiù)逐一(yī)解析上(shàng)面∏≤γ所列舉的(de)CAN通(tōng)訊需求。
為(wèi)什(shén)麽ECU↓↓£通(tōng)常需要(yào)兩路(lù)CAN或者更多(duō)?≤§≠主要(yào)考慮因素有(yǒu)CAN總線的(de)負載率以及功能(néng)需求等。所以OEMק↓定義一(yī)路(lù)用(yòng)作(zuò)通(tōng)訊,比如(r→γú)動力總成域上(shàng)挂VCU, MCU, BMS 和(hé)OBC等。另一(yī)路Ω≠α(lù)則用(yòng)于車(chē)輛(liàng)的(de)标定和(hé)₽診斷通(tōng)訊功能(néng),其中标定功能(néng)在量産☆≈♦會(huì)被禁用(yòng),這(zhè)路(lù•♣)CAN與OBD接口相(xiàng)連,如(rú)下(xià)所示:
當然也(yě)有(yǒu)有(yǒu)些(xi"≈δ₩ē)控制(zhì)器(qì)隻有(yǒu)1路(lù)CAN,既用<β✘↔(yòng)于通(tōng)訊也(yě)用(yòng)于診斷标定,比如(rú)有(≤<Ωyǒu)些(xiē)電(diàn)子(zǐ)泵産品。
對(duì©∞>¶)于這(zhè)條需求,該如(rú)何評估,考慮點有(yǒu):
- 主要(yào)評估當前的(de)控制(zhì)器(qì)硬件(ji★↓≤àn)是(shì)否滿足,即從(cóng)接插件(jiàn)Pin數(shù)量是÷¶₽(shì)否足夠提供兩路(lù)CAN_H和(hé)Ωσ∑×CAN_L;
λ←↕ - PCB是(shì)否有(yǒu)足夠空(kōng)間(jiān)布置兩顆CAN收發器(qì)©$及其相(xiàng)應的(de)處理(lβ¶&ǐ)電(diàn)路(lù);
- & 微(wēi)控制(zhì)器(qì)芯片中CAN控制(zhì)器(qì)數(shù)量是(shì)否足夠。
因此實現(xiàn)的(de)關鍵點在于硬件(jiàn☆£),而對(duì)于軟件(jiàn)來(lái)說(shuō),主要(yào♣>₩)涉及工(gōng)作(zuò)量。
對(duì)于這(zhè)條需求,考慮因素有(yǒλπ€€u)兩個(gè)方面:
- 一(yī)方面是(shì)控制(zhì)器(qì)硬件(jiàn),即CAN收發↕€₩器(qì)和(hé)MCU的(de)CAN控制(zhì)器(qì)需要(yào←)支持CAN FD;
-♦π 另一(yī)方面是(shì)控制(zhì)器(qì)軟件(j↑≤iàn),CAN通(tōng)訊功能(néng)模塊需要(yào)支®持CAN FD報(bào)文(wén)的(de)處 λ¶理(lǐ)。
- 另外(wài)針對(duì)$←₹ΩCAN數(shù)據幀格式,傳輸速率及采樣,主要(₽ yào)涉及軟件(jiàn)開(kāi)發的(de)內(nèi)容,另外(wài)可(kě)能♠©∑(néng)需要(yào)确保測試設備支持CAN FD的(de)測試驗證。
sour"≥₽ce:CANFD an introduction, from Vectoπ×≠₩r
為(wèi)了(le)更好(hǎo)地(dì)理(<&→δlǐ)解這(zhè)些(xiē)需求,這♠"¥(zhè)裡(lǐ)對(duì)這(zhè)些(xiē)術(shù)語稍作(zuò)解釋:∏'
- CAN FD的(de)可(kě)變速率。CAN FD采用εβ→φ(yòng)了(le)兩種位速率:從(có≤¶ng)控制(zhì)場(chǎng)中的(de)BRS位到(dào)ACK場(chǎng)之↑≤±前(含CRC分(fēn)界符)稱為(wè×★i)數(shù)據段速率,如(rú)上(sh☆£π™àng)圖藍(lán)色部分(fēn),其餘部分(fēn)仲裁段速率α。兩種速率各有(yǒu)一(yī)套位時(shí)間 <(jiān)定義寄存器(qì),它們除了±¶(le)采用(yòng)不(bù)同的(de)位時(shí)♣≈間(jiān)單位TQ外(wài),位時(shí)間(β≠±σjiān)各段的(de)分(fēn)配比例也(yě)可(kě)不∞→$(bù)同,所以兩者可(kě)以設置不(bù∏←♣)同的(de)波特率和(hé)采樣點。500Kbps表示1秒(miǎo)鐘ε¥(zhōng)可(kě)以傳輸500,000bit的(de)數(shù)據,2000Kbε↑ps表示1秒(miǎo)鐘(zhōng)可(kě)以≤±∏傳輸2000,000bit的(de)數(shù)據。
- ™±↕≤标準和(hé)擴展格式的(de)數(shù)> 據幀。兩者的(de)區(qū)别在仲裁段,标準格式的(de)仲裁段包含11位基本ID位和(hε♠§±é)RTR位,而擴展格式的(de)仲裁段除了(le)11位基本I÷∑ D位和(hé)RTR位外(wài),還(hái)包含SRR位,I↔♠'DE位和(hé)18位擴展ID位。即标準格式φ$可(kě)表示的(de)CAN ID(11位)範圍為(wèi) 0X000~0X7FF,而擴展格式↔≈←♥可(kě)表示的(de)CAN ID(29位)範©✘♣®圍為(wèi)0X00000000~0X1FFFFFFF。如(rú)下♠↑(xià)所示:
source:CAN_E: Data ¶©Frame (vector.com)
主要(y≤ào)工(gōng)作(zuò)內(nèi)容在軟件(jiàn),包括CA©✘∑N驅動的(de)配置,CAN報(bào)文(wén)的(de)收發,CAN報(bào'₽)文(wén)信号的(de)提取和(hé)轉換等 ♣↕£。對(duì)于CAN通(tōng)訊矩陣中的(de)信号不(bù)再做(÷₩zuò)詳細解釋,這(zhè)裡(lǐ)了(le✘∑★←)解下(xià)報(bào)文(wén)中包含保護或校(xiào)驗信息,比如(rú↑γ¥☆)校(xiào)驗和(hé)(Checksum)和(hé)滾動計(jì)數(shù)器(qìβ∞↔)(Rolling Counter)。
-&nbs<±¥∏p;Checksum。它是(shì)用(yòng)來(lái)判斷CAN報(bào)文(wén)傳輸過₩↑↔程是(shì)否會(huì)出現(xiàn✔£↑↕)錯(cuò)誤,報(bào)文(wén)σ的(de)發送方采用(yòng)特定的(de)Checksum校(xiào)驗算(suàn)€' ε法計(jì)算(suàn)一(yī)條報(bào)文(wén)的(de)CRC™↕校(xiào)驗碼,再将該校(xiào)驗碼放(fàng)到(dào)該報(bào)文≥£β$(wén)數(shù)據中,與報(bào)文(wén)中的£★(de)其他(tā)信号一(yī)起發送到(dào)CAN總線♦'。然後報(bào)文(wén)的(de)接收方會(h ©uì)讀(dú)取到(dào)該校(xiào)驗碼,同時(shí)采用(yòng)相(xi↑§®àng)同的(de)Checksum校(xiào<≤♦ε)驗算(suàn)法計(jì)算(suàn♠)出CRC校(xiào)驗碼,再對(duì)比這(zhè)兩個(gè)校(xiào)驗碼,如(¶≈rú)果一(yī)緻,則說(shuō)明(míng)報(bào)文(wén)傳£γ輸過程沒有(yǒu)出現(xiàn)錯(cuò)誤,否則認為(wèi)報(bào)文(w₽×↕én)傳輸過程有(yǒu)誤,這(zhè)條報(bào&δק)文(wén)有(yǒu)問(wèn)題。
&γ₽nbsp;- Rolling counter。它是(shì)用(yòng)來(lái)判斷報(bào€←φ)文(wén)傳輸過程是(shì)否出現(xiàn•©)丢幀,報(bào)文(wén)的(de)∑ε≈發送方發送一(yī)條報(bào)文(wén)就(jiù)計(jì)數(shù)器(qì)加δαα"1,從(cóng)0累加到(dào)15,然後不(bù)斷循環。如(rú)果出現(x♦&→♥iàn)計(jì)數(shù)器(qì)ε×γ不(bù)連續或首尾值不(bù)對(duì),報(bào)文(wén)的(de∑₩)接收方會(huì)認為(wèi)丢幀。
其實對(duì)于整個(gè)↑CAN通(tōng)訊需求開(kāi)發內(♠ ✘£nèi)容,CAN通(tōng)訊矩陣涉及內(nèi)容最多(duō),并且貫穿整個($♥gè)軟件(jiàn)開(kāi)發的(de)周期。
對(duì)于這(zhè)條需求,需 ★求明(míng)确要(yào)特定幀報(bào)文(wén)喚醒功能(néng),即÷← ∞對(duì)控制(zhì)器(qì)硬件(jiàn)設計(jì)↕>>有(yǒu)要(yào)求,選用(yòng)的(de)CAN收發器(qì)芯片要(y← ↓×ào)支持特定幀喚醒。其次需求要(yào)求支持局部網絡喚醒功能(nγβéng),因此涉及到(dào)複雜(zá)的(de)網絡管理(lǐ)"→€策略。以底盤域的(de)網絡喚醒例子(zǐ)來(lái)理(lǐ)解,如(rú)下(xià×↕)所示:
Source:一(yī)篇易懂(dǒng)的(de)整↑φγβ車(chē)網絡管理(lǐ)指南(nán)
&nbs≤Ωp;
一(yī)個(gè)ECU可(kě)能(néng↕♠∞)存本地(dì)喚醒和(hé)網絡喚醒等,比如(rú)上(shàng)圖中假設IEB的(de)本≈地(dì)喚醒源是(shì)制(zhì)動踏闆行(×₩xíng)程傳感器(qì)BPS,即某個(gè)喚醒場(chǎng)景下(xià),BPS感知(zβ€♥♦hī)到(dào)變化(huà),以硬線δδ♥信号形式傳給IEB,那(nà)麽處于休眠的(de)IEB将被喚γβφ↑醒,對(duì)應著(zhe)圖中1區(qū)域。I×ελEB喚醒後将請(qǐng)求喚醒EPS和(hé)VCU參與功能(néng)控制(zhì),§★這(zhè)部分(fēn)與網絡喚醒策略相(xiàng)關。
以上(shàng)就(jiù)列舉了(le)一(≤πyī)個(gè)典型的(de)網絡管理(lǐ)場(chǎng)€γΩ景,要(yào)實現(xiàn)這(zhè)樣的(de)場(chǎ∞Ω<✔ng)景,會(huì)涉及幾個(gè)方面內β∑↑ (nèi)容:
- 喚醒功能(néng)♥←&↑邏輯需求,以怎樣的(de)邏輯精準識别喚醒源;
•'- 網絡管理(lǐ)狀态機(jī)需求,采用(y ♣òng)怎麽樣形式,AutoSAR NM嗎(ma)?以及狀态之間(jiān∏♦✔₹)的(de)跳(tiào)轉條件(jiàn)和(hé)每個(gè)狀态下(xià)的(deπ₽✘)動作(zuò)是(shì)怎樣定義的(de);
- ∏≠網絡管理(lǐ)報(bào)文(wén)需求。網絡管理(lǐ)報↓σλ₹(bào)文(wén)內(nèi)容是(shì)怎麽定義,接收與發送的(de)規π✘←則是(shì)怎樣的(de)等。
上(shàng)述這(zhè)些λΩδ™(xiē)內(nèi)容喚醒源檢測會(huì)涉及到(dào)硬件(jià ∑n)設計(jì),在硬件(jiàn)具備的(€λde)情況下(xià),那(nà)麽開(kāi)發的(de)內(nèi)容≈☆™∏均由軟件(jiàn)來(lái)實現(xiàn)。關于網絡管理(lǐ)需求的(de)實現γ ∏§(xiàn),除了(le)單個(gè)ECU自(zì)身(shēn)需求實現(xiàn✘÷'),其實與其他(tā)ECU強相(xiàng)關,因為(wèi)這(• zhè)些(xiē)喚醒場(chǎng)景由這(zhè)些(xiē)Eφ£CU共同實現(xiàn)。
#03 CAN通(tōng)訊需求總結
當然還(hái)有•ε≈∑(yǒu)很(hěn)多(duō)CAN通(tōng)訊需求本文(wén)還(hái∑")未提及展開(kāi),比如(rú):
- CAN總線Bus off處理(lǐ)需求;
- CAN報(bào)文(wén)的(de)診斷需求,比如(rú)ID檢測,超≥✘×時(shí)檢測,Checksum校(xiào)驗和(hé)故障後處理(lǐ)措施等;
- 功能(néng)安全相(xiànσ♠± g)關的(de)E2E保護需求。
總之,CAN通(tōng)訊其實是(sh×₹∞ì)一(yī)個(gè)非常大(dà)的(de)話(huà)題,內(nèi♥">≠)容非常多(duō)非常複雜(zá),不(bù)管在主機(j✘¥ī)廠(chǎng)還(hái)是(shì)供應商,不(bù)管₹$♠是(shì)ECU系統還(hái)是(shì)ECU軟硬件(jià n),都(dōu)有(yǒu)很(hěn)多(♣≥duō)相(xiàng)關的(de)工(gōng¥)作(zuò)需要(yào)做(zuò),很(hěn)多(duō)細節需要(yào)把控,→®↕更多(duō)CAN通(tōng)訊內(nèπφi)容,歡迎持續關注。
轉自(zì)汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)