作者:Steven Keeping
投稿人:DigiKey 北美編輯
控制器局域網(wǎng) (CAN) 是一種成熟穩(wěn)健的通信標(biāo)準(zhǔn),廣泛應(yīng)用于工業(yè)自動(dòng)化和汽車等領(lǐng)域。該技術(shù)有兩個(gè)版本:CAN2.0 和最新版本 CAN-Flexible Data (FD)。傳統(tǒng)的 CAN2.0 系統(tǒng)可通過(guò)添加 CAN-FD 節(jié)點(diǎn)來(lái)實(shí)現(xiàn)增強(qiáng),CAN-FD 節(jié)點(diǎn)可提供更高的有效載荷吞吐量,以支持關(guān)鍵通信事件。
這兩種技術(shù)通常是相互兼容的,但隨著系統(tǒng)復(fù)雜性和總線長(zhǎng)度的增加,混合系統(tǒng)中 CAN-FD 的較高速度會(huì)造成同步問(wèn)題,從而造成傳輸失敗。
對(duì)于簡(jiǎn)單的系統(tǒng)來(lái)說(shuō),CAN 系統(tǒng)測(cè)試中包含連接兩個(gè)控制器/收發(fā)器對(duì)的單一短總線可能會(huì)令人滿意。然而,對(duì)于更復(fù)雜的且組合了 CAN2.0 和 CAN-FD 器件的多節(jié)點(diǎn)系統(tǒng),這種測(cè)試往往無(wú)法檢測(cè)出其中可能出現(xiàn)的問(wèn)題。使用生產(chǎn)系統(tǒng)的孿生系統(tǒng)對(duì)所有潛在的使用案例進(jìn)行專門測(cè)試,可以發(fā)現(xiàn)現(xiàn)場(chǎng)可能出現(xiàn)的所有問(wèn)題。
本文將簡(jiǎn)要介紹 CAN2.0 和 CAN-FD,并解釋傳輸方面的挑戰(zhàn)。然后介紹測(cè)試技術(shù),以確保使用這些網(wǎng)絡(luò)的系統(tǒng)盡量減少現(xiàn)場(chǎng)故障。本文將以 [Analog Devices] 包含故障檢測(cè)和報(bào)告功能的器件為例,并展示使用此類器件如何加快已部署系統(tǒng)的測(cè)試階段和故障排除。此外,還將重點(diǎn)介紹了相關(guān)的評(píng)估板。
什么是 CAN2.0 和 CAN-FD?
CAN 是一種內(nèi)置了故障處理功能的分布式通信標(biāo)準(zhǔn)。ISO-118981 標(biāo)準(zhǔn)規(guī)定了物理層 (PHY) 和數(shù)據(jù)鏈路層 (DLL)。
CAN 的功能包括:
- 允許總線上有多個(gè)主機(jī)
- 信息的固有優(yōu)先級(jí)
- 按報(bào)文優(yōu)先級(jí)進(jìn)行總線仲裁
- 多級(jí)錯(cuò)誤檢測(cè)和恢復(fù)
- 在具有獨(dú)立時(shí)鐘源的節(jié)點(diǎn)間同步數(shù)據(jù)計(jì)時(shí)
CAN 采用差分電壓數(shù)據(jù)傳輸方案,具有兩種總線電壓狀態(tài):“隱性”狀態(tài)(驅(qū)動(dòng)器輸出為高阻抗)和“顯性”狀態(tài),閾值如表 1 所示。
| | 邏輯 | RS-485 電平 | CAN 狀態(tài) | CAN 電平 |
| ------ | ------------------ | ---------- | ---------------------- |
| 1 | A - B ≥ +200 mV | 隱性 | CANH - CANL ≤ 0.5 V |
| 0 | A - B ≤ -200 mV | 顯性 | CANH - CANL ≥ 0.9 V |
表 1:與 RS-485 相比,CAN 的隱性和顯性電壓電平。請(qǐng)注意,顯性(較高)電壓的對(duì)應(yīng)邏輯“0”。(圖片來(lái)源:Analog Devices)
節(jié)點(diǎn)傳輸邏輯“0”的顯性狀態(tài)(在此狀態(tài)下,一條總線 (CANH) 為高電平,另一條 (CANL) 為低電平)和邏輯“1”的隱性狀態(tài)。通過(guò)在標(biāo)準(zhǔn)幀或錯(cuò)誤幀結(jié)束后檢測(cè)到多個(gè)隱性位,可將空閑 CAN 總線與處于隱性位傳輸模式的 CAN 總線區(qū)分開來(lái)(圖 1)。
圖 1:CAN 傳輸方案??臻e模式由多個(gè)隱性位標(biāo)識(shí)。(圖片來(lái)源:Analog Devices)
CAN 收發(fā)器在 DLL、CAN 控制器(通常嵌入在微控制器等其他器件中)和 CAN 總線的物理布線之間提供差分 PHY 接口。圖 2 所示為實(shí)施 CAN 應(yīng)用所需的各種元件,以及它們與開放系統(tǒng)互連 (OSI) 層的關(guān)系和由每個(gè)項(xiàng)目實(shí)現(xiàn)的功能。
圖 2:CAN 收發(fā)器構(gòu)成 CAN 控制器和 CAN 總線之間的差分 PHY 接口。(圖片來(lái)源:Analog Devices)
CAN2.0 于 1991 年推出,標(biāo)稱吞吐量為 500 Kbits/s。由于這種數(shù)據(jù)傳輸速率有時(shí)無(wú)法滿足關(guān)鍵通信事件的需要,因此在 2012 年推出了 CAN-FD。CAN-FD 在正常工作條件下的標(biāo)稱吞吐量高達(dá) 2 Mbits/s,而在用于診斷或編程時(shí)則高達(dá) 5 Mbits/s。請(qǐng)注意,較高的通信速度只適用于報(bào)文有效載荷;如 11 位標(biāo)識(shí)符、循環(huán)冗余校驗(yàn) (CRC) 和確認(rèn) (ACK) 等報(bào)文的其他元素都以 500 Kbits/s 的 CAN2.0 速率發(fā)送。
CAN2.0 和 CAN-FD 的另一個(gè)區(qū)別在于標(biāo)準(zhǔn)數(shù)據(jù)幀有效載荷,CAN2.0 的有效載荷為 8 B,而 CAN-FD 的有效載荷則達(dá)到 64 B。有效載荷的增加提高了開銷/數(shù)據(jù)比,從而使 CAN-FD 通信更加高效。此外,以前由于 CAN2.0 的 8 B 有效載荷限制而不得不拆分的報(bào)文,現(xiàn)在可以通過(guò) CAN-FD 合并為一條報(bào)文。而且,由于 CAN-FD 報(bào)文的數(shù)據(jù)傳輸率更高,有效載荷更大,因此可以通過(guò)加密來(lái)提高安全性。
由于 CAN-FD 控制器同時(shí)支持 CAN2.0 和 CAN-FD 協(xié)議,因此在同一網(wǎng)絡(luò)中混合使用 CAN2.0 和 CAN-FD 節(jié)點(diǎn)是很常見的?;旌瞎?jié)點(diǎn)之所以流行,是因?yàn)樗试S傳統(tǒng)網(wǎng)絡(luò)在較長(zhǎng)時(shí)間內(nèi)遷移到速度更快的協(xié)議。混合系統(tǒng)的一個(gè)缺點(diǎn)是增加了成本和復(fù)雜性,這是因?yàn)槭瞻l(fā)器必須能夠支持 CAN2.0 節(jié)點(diǎn)上的 CAN-FD 濾波方法,以確保在 CAN-FD 通信過(guò)程中不會(huì)產(chǎn)生錯(cuò)誤幀。
CAN 的仲裁和錯(cuò)誤機(jī)制
任何已連接的 CAN 節(jié)點(diǎn)都可以向總線傳輸數(shù)據(jù)。為避免通信沖突,節(jié)點(diǎn)會(huì)對(duì)總線的使用進(jìn)行仲裁,以便根據(jù)優(yōu)先級(jí)逐條傳輸報(bào)文。CAN 采用無(wú)損和透明的仲裁方式;仲裁成功的節(jié)點(diǎn)會(huì)繼續(xù)傳輸其優(yōu)先級(jí)更高的報(bào)文,而其他節(jié)點(diǎn)不會(huì)干擾或破壞報(bào)文。這種仲裁是可能的,因?yàn)轱@性位傳輸會(huì)覆蓋隱性總線狀態(tài)。
標(biāo)準(zhǔn)數(shù)據(jù)幀包括一個(gè)報(bào)文標(biāo)識(shí)符和多個(gè)標(biāo)志位。這些信息被稱為“仲裁字段”。這決定了仲裁,因此也決定了報(bào)文優(yōu)先級(jí)。ID 值較低的報(bào)文(較多的初始“0”)具有較高優(yōu)先級(jí)(圖 3)。
圖 3:CAN 標(biāo)準(zhǔn)數(shù)據(jù)幀包括報(bào)文標(biāo)識(shí)符以及 RTR 和 IDE 標(biāo)志位。該仲裁字段規(guī)定了仲裁和報(bào)文優(yōu)先級(jí)。(圖片來(lái)源:Analog Devices)
即使有仲裁計(jì)劃,也可能出錯(cuò)。為了解決這些問(wèn)題,CAN 協(xié)議具有支持錯(cuò)誤校驗(yàn)和處理的機(jī)制。這些機(jī)制包括:
- 傳輸位驗(yàn)證
- CRC 校驗(yàn)
- 固定格式位域校驗(yàn)
- 強(qiáng)制報(bào)文 ACK
錯(cuò)誤會(huì)通過(guò)以下機(jī)制進(jìn)行處理:
- 錯(cuò)誤幀
- 錯(cuò)誤計(jì)數(shù)器
- 節(jié)點(diǎn)錯(cuò)誤狀態(tài)
任何 CAN 控制器都能檢測(cè)錯(cuò)誤,并通過(guò)觸發(fā)錯(cuò)誤幀和錯(cuò)誤節(jié)點(diǎn)計(jì)數(shù)器做出反應(yīng)。錯(cuò)誤幀通過(guò)使用六個(gè)連續(xù)的顯性或隱性位來(lái)區(qū)分。這種序列與正常傳輸規(guī)則不符,因此會(huì)被其他節(jié)點(diǎn)檢測(cè)到。發(fā)送錯(cuò)誤幀的節(jié)點(diǎn)隨后會(huì)發(fā)送隱性位,直到檢測(cè)到總線處于隱性狀態(tài)。再傳輸 7 個(gè)隱性位后,節(jié)點(diǎn)就可以嘗試傳輸常規(guī)的 CAN 幀(圖 4)。
圖 4:在這一錯(cuò)誤傳輸示例中(由于額外位 [1]導(dǎo)致 CRC 位錯(cuò)誤),最右邊顯示的是六個(gè)連續(xù)的位錯(cuò)誤幀。(圖片來(lái)源:Analog Devices)
除了錯(cuò)誤幀傳輸外,每個(gè) CAN 節(jié)點(diǎn)都發(fā)送和接收錯(cuò)誤計(jì)數(shù)器。錯(cuò)誤增加時(shí),計(jì)數(shù)器會(huì)增加一個(gè),而成功發(fā)送或接收信息時(shí),計(jì)數(shù)器會(huì)減少一個(gè)。根據(jù)錯(cuò)誤計(jì)數(shù)器,節(jié)點(diǎn)可能處于“主動(dòng)錯(cuò)誤”、“被動(dòng)錯(cuò)誤”或“總線切斷”狀態(tài)。在主動(dòng)錯(cuò)誤狀態(tài)下,節(jié)點(diǎn)可以在總線上通信,并在檢測(cè)到錯(cuò)誤時(shí)發(fā)送主動(dòng)錯(cuò)誤標(biāo)志。當(dāng)計(jì)數(shù)器超過(guò) 127 時(shí),即進(jìn)入被動(dòng)錯(cuò)誤狀態(tài);在此狀態(tài)下,節(jié)點(diǎn)只能發(fā)送被動(dòng)錯(cuò)誤標(biāo)志。一旦計(jì)數(shù)器低于 127,節(jié)點(diǎn)就會(huì)重新變?yōu)橹鲃?dòng)錯(cuò)誤狀態(tài)。如果計(jì)數(shù)器超過(guò) 256,節(jié)點(diǎn)將進(jìn)入總線切斷狀態(tài),進(jìn)而無(wú)法在總線上通信。節(jié)點(diǎn)計(jì)數(shù)器在接收到 128 個(gè)具有 11 個(gè)連續(xù)隱位的序列后,可重置為 0。
全面檢測(cè)的重要性
CAN 的仲裁和錯(cuò)誤機(jī)制有助于在發(fā)生故障時(shí)保持系統(tǒng)的現(xiàn)場(chǎng)運(yùn)行。不過(guò),通過(guò)設(shè)計(jì)限制發(fā)射和接收故障的系統(tǒng),就能達(dá)到更高的運(yùn)行效率。在幾種運(yùn)行情況下測(cè)試擬議系統(tǒng),是在部署前發(fā)現(xiàn)和校正缺陷的一種方法。
一種常見的技術(shù)是使用函數(shù)發(fā)生器向收發(fā)器的 TxD 引腳傳輸?shù)湫偷倪\(yùn)行標(biāo)準(zhǔn)數(shù)據(jù)幀,以檢驗(yàn)所選的 CAN 收發(fā)器是否發(fā)生錯(cuò)誤。雖然這是對(duì)單節(jié)點(diǎn)的合理測(cè)試,但并不能很好地反映具有長(zhǎng)總線的多節(jié)點(diǎn)系統(tǒng)在現(xiàn)場(chǎng)的性能。例如,復(fù)雜系統(tǒng)可能出現(xiàn)的問(wèn)題包括高頻運(yùn)行時(shí)電路存根產(chǎn)生的反射和其他偽影。這些都會(huì)帶來(lái)位之間的相移。
CAN 的仲裁機(jī)制只有在位同步的情況下才能工作。如果位與位之間的相移超過(guò)單個(gè)位傳輸時(shí)間的二分之一,則同步失敗,無(wú)法進(jìn)行仲裁。
在以 500 Kbits/s 至 1 Mbit/s 速率運(yùn)行的 CAN2.0 傳統(tǒng)系統(tǒng)中,單個(gè)位傳輸時(shí)間足夠長(zhǎng),因此很少會(huì)誘發(fā)相移問(wèn)題。然而,由于 CAN-FD 具有更高的吞吐速度,因此位傳輸時(shí)間縮短,相位偏移很快就會(huì)變得很大。
要克服這些挑戰(zhàn),就不能僅僅測(cè)試單個(gè)節(jié)點(diǎn),而是要通過(guò)復(fù)制完整的終端系統(tǒng)并在各種不同的工作條件下進(jìn)行測(cè)試來(lái)驗(yàn)證設(shè)計(jì)。雖然這比基本測(cè)試更費(fèi)時(shí)費(fèi)力,但比處理現(xiàn)場(chǎng)故障和客戶不滿要節(jié)省得多。
實(shí)例
要了解相移測(cè)試在實(shí)際中的工作原理,可以考慮使用入圍供應(yīng)商提供的 CAN 收發(fā)器和 CAN 控制器設(shè)計(jì)一個(gè)系統(tǒng)。該節(jié)點(diǎn)與一條 20 m 總線連接,該總線還支持許多其他節(jié)點(diǎn),包括 CAN2.0 和 CAN-FD 組件。為了便于測(cè)試,節(jié)點(diǎn)的傳輸速率為 13.3 Mbits/s,相當(dāng)于 75 ns 的位寬。出于同步和仲裁目的,控制器以 80% 的 TxD 位寬進(jìn)行采樣,因此它需要的最小 RxD 位寬為 0.8 x 75 = 60 ns,其中包含上升時(shí)間、下降時(shí)間和環(huán)路延遲。測(cè)試組件產(chǎn)生的 TxD 位寬為 48 ns,從而導(dǎo)致系統(tǒng)失效。
對(duì) Analog Devices 的 [MAX33012EASA+]CAN 收發(fā)器進(jìn)行了同樣的測(cè)試。在該測(cè)試中,測(cè)得 TxD 的位寬為 75 ns,RxD 的位寬為 72 ns。72 ns 的位寬超過(guò)了 60 ns 的 80% 采樣時(shí)間要求,因此系統(tǒng)同步和仲裁運(yùn)行是令人滿意的。13.3 Mbits/s 的吞吐量比系統(tǒng)在目標(biāo)應(yīng)用中使用時(shí)的速度還要快,這表明它足以在所有預(yù)期運(yùn)行條件下正常運(yùn)行(圖 5)。
圖 5:在 20 米總線上以 13.3 Mbits/s 的速度(75 ns TxD 位寬)運(yùn)行 MAX33012EASA+ CAN 收發(fā)器的測(cè)試結(jié)果。RxD 位寬為 72 ns,足以確保滿足控制器 80% 的采樣時(shí)間 (60 ns) 并實(shí)現(xiàn)同步。(圖片來(lái)源:Analog Devices)
內(nèi)置故障排除功能
通過(guò)使用包含故障檢測(cè)和報(bào)告功能的組件,可以使測(cè)試過(guò)程更輕松,成本更低。MAX33012EASA+ CAN 收發(fā)器等器件不僅能快速發(fā)現(xiàn)原型和試生產(chǎn) CAN 電路中存在的問(wèn)題,還能用于對(duì)實(shí)時(shí)控制系統(tǒng)部署來(lái)說(shuō),快速故障排除是重要功能的應(yīng)用。
MAX33012EASA+ 是一款 +5 V CAN 收發(fā)器,可解決過(guò)流、過(guò)壓和傳輸故障等常見故障。該器件的故障保護(hù)電壓高達(dá) ±65 V,適合需要過(guò)壓保護(hù)的應(yīng)用。共模電壓范圍為 ±25 V,可在如重型機(jī)械等嘈雜環(huán)境中進(jìn)行通信。CANH 和 CANL 輸出具有短路限流功能,并通過(guò)熱關(guān)斷電路防止功率耗散過(guò)大,這種電路將驅(qū)動(dòng)器輸出置于高阻抗?fàn)顟B(tài)。
MAX33012EASA+ 的工作頻率高達(dá) 5 Mbits/s,并具有將壓擺率減慢至 8 V/μs 的選項(xiàng),從而最大限度地減少電磁干擾 (EMI) 并允許使用非屏蔽雙絞線或并行電纜(圖 6)。
圖 6:所示為多模系統(tǒng)中的 MAX33012EASA+ 應(yīng)用電路。在本例中,微控制器包括一個(gè)嵌入式 CAN 控制器。(圖片來(lái)源:Analog Devices)
CAN 收發(fā)器的故障檢測(cè)在上電時(shí)通過(guò) 100 次 TxD 低電平到高電平的轉(zhuǎn)換來(lái)啟用(通常是一個(gè)或兩個(gè)標(biāo)準(zhǔn)數(shù)據(jù)幀,具體取決于所使用的協(xié)議)。故障檢測(cè)啟用后,如果檢測(cè)到故障,則需要在 TxD 上再進(jìn)行 16 次低電平到高電平的轉(zhuǎn)換,以傳輸故障代碼。最后,還需要 10 個(gè)脈沖才能清除故障。
啟用故障檢測(cè)后,如果 RxD 上的信號(hào)連續(xù) 10 個(gè)周期與 TxD 不匹配,就會(huì)觸發(fā)傳輸故障檢測(cè)功能。例如,當(dāng)兩個(gè)終端電阻都缺失,或者 CANH 與地或 CANL 與 VDD 之間存在短路而導(dǎo)致差分信號(hào)不符合規(guī)范時(shí),就會(huì)出現(xiàn)這種情況。
Analog Devices 提供的 CANbus 接口 Arduino 平臺(tái) [評(píng)估板 MAX33012E] 可用于演示 MAX33012E 的功能。雖然該器件采用 Arduino 盾板外形,但也能單獨(dú)用作評(píng)估板。
結(jié)語(yǔ)
為確保多模 CAN2.0 和 CAN-FD 混合系統(tǒng)在現(xiàn)場(chǎng)可靠運(yùn)行,必須對(duì)整個(gè)設(shè)計(jì)進(jìn)行全面測(cè)試。然而,簡(jiǎn)單的單節(jié)點(diǎn)測(cè)試不足以檢測(cè)出故障。然后,由于同步問(wèn)題可能會(huì)破壞該技術(shù)的仲裁機(jī)制,這些未檢測(cè)出的故障又會(huì)導(dǎo)致現(xiàn)場(chǎng)故障。通過(guò)選擇具有內(nèi)置故障檢測(cè)和報(bào)告功能的 CAN 收發(fā)器,可以簡(jiǎn)化混合多節(jié)點(diǎn) CAN 系統(tǒng)的初始測(cè)試和后期現(xiàn)場(chǎng)故障排除工作。
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3338瀏覽量
105541 -
CAN
+關(guān)注
關(guān)注
57文章
2663瀏覽量
462458 -
通信
+關(guān)注
關(guān)注
18文章
5880瀏覽量
135321 -
控制器局域網(wǎng)
+關(guān)注
關(guān)注
0文章
19瀏覽量
6989
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論