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