在之前發(fā)布的文章中,我們介紹了CAN錯誤和錯誤處理的理論基礎(chǔ),而在本篇文章中,我們將在實(shí)踐中生成和記錄錯誤。測試過程中將使用到虹科的CANedge數(shù)據(jù)記錄儀和PCAN-USB設(shè)備。
1. 在實(shí)踐中生成和記錄CAN錯誤
測試1:沒有CAN總線錯誤
為了便于對照,我們設(shè)置了沒有CAN總線錯誤的測試:一個 CANedge2 的"發(fā)送器"將數(shù)據(jù)發(fā)送到另一個 CANedge2 的"接收器",并且兩者都能夠記錄CAN總線錯誤。
測試2:移除CAN總線終端電阻
在這個測試中,我們在日志會話過程中移除了 CAN 終端電阻。這可以有效地將位電平設(shè)置為顯性。同時,CANedge2發(fā)送器立即開始記錄位錯誤(當(dāng)它嘗試發(fā)送隱性位但讀取顯性位時會發(fā)生這種情況)。CANedge2 接收器在檢測到 6 個連續(xù)顯性位時記錄位填充錯誤。記錄這些錯誤,直到再次添加終止。
在記錄來自車輛、機(jī)器等的數(shù)據(jù)時,缺少終端電阻似乎并沒有影響,但是,在使用"測試臺"設(shè)置時,這個問題非常常見,并可能導(dǎo)致混淆,因?yàn)樗y以與非活動CAN總線區(qū)分開來。因此,在CANedge數(shù)據(jù)記錄儀上啟用錯誤幀記錄幀對于故障排除而言是十分有效的。
發(fā)送器位錯誤
接收器位填充錯誤
測試3:設(shè)置錯誤的波特率
在這個測試中,我們將CANedge接收器節(jié)點(diǎn)配置為具有492.872K波特率,而發(fā)送器的波特率為500K,這是一個相當(dāng)大的差異,并導(dǎo)致發(fā)送器的ACK錯誤和接收器的位填充錯誤。在更現(xiàn)實(shí)的場景中,各個節(jié)點(diǎn)的波特率配置的較小差異可能會導(dǎo)致間歇性錯誤幀,從而導(dǎo)致消息丟失。
這個例子比較極端,然而,在實(shí)踐中,我們有時會看到使用標(biāo)準(zhǔn)比特率(250K、500K、……)的CAN總線,但其特定的位時序設(shè)置與通常推薦的設(shè)置不同。這不會導(dǎo)致通信完全關(guān)閉,但會導(dǎo)致幾個百分比的周期性幀丟失。為了解決這個問題,可以在CANedge配置中構(gòu)建一個"預(yù)定義比特率",本質(zhì)上是設(shè)置位時序以更好地匹配正在記錄的CAN總線。
發(fā)送器ACK錯誤
接收器位填充錯誤
測試4:移除應(yīng)答CAN節(jié)點(diǎn)
在本次測試中,我們使用了三個配置如下的 CANedge 單元:
CANedge1:配置為應(yīng)答數(shù)據(jù)
CANedge2 A:配置為"靜默模式"(無確認(rèn))
CANedge2 B:配置為每 500 ms 傳輸一個 CAN 幀
在默認(rèn)設(shè)置中,數(shù)據(jù)由 CANedge2 B 傳輸?shù)?CAN 總線上并無錯誤記錄。但是,如果我們從總線上移除 CANedge1,則不再有任何 CAN 節(jié)點(diǎn)來確認(rèn)發(fā)送器發(fā)送的幀。結(jié)果,發(fā)送器檢測到ACK 錯誤。作為響應(yīng),它增加其發(fā)送錯誤計(jì)數(shù)器并在 CAN 總線上產(chǎn)生活動錯誤標(biāo)志。這些又由 CANedge2 A(它靜默監(jiān)控總線)記錄為格式錯誤。
CANedge之所以會記錄格式錯誤,是因?yàn)榘l(fā)送器在識別出ACK時隙中缺少顯性位時將其提高,一旦接收器在隨后的EOF字段中觀察到顯性位(本該是隱性的),就會檢測到格式錯誤。
很明顯,當(dāng)TEC從0增加到16x8=128時,發(fā)送器會廣播16個主動錯誤標(biāo)志。發(fā)送器現(xiàn)在已超過TEC的閾值127并進(jìn)入被動錯誤模式。因此,發(fā)送器仍然會遇到ACK錯誤,但現(xiàn)在只會引發(fā)被動錯誤標(biāo)志(接收器不可見)。在這一點(diǎn)上,發(fā)送器不斷嘗試發(fā)送相同的幀,并且接收器不斷記錄這個重傳序列。
這種類型的錯誤是我們在技術(shù)支持中經(jīng)常遇到的錯誤。具體來說,用戶會嘗試使用我們的CAN記錄器來記錄來自單個CAN節(jié)點(diǎn)的數(shù)據(jù)(例如從CANmod傳感器到CAN模塊),如果他們決定在這樣的安裝中啟用CANedge上的"靜默模式",則沒有CAN節(jié)點(diǎn)將確認(rèn)單個CAN節(jié)點(diǎn)廣播數(shù)據(jù),這樣得到的結(jié)果大概率將是空日志文件,或充滿相同CAN幀重傳的日志文件。
發(fā)送器ACK錯誤
接收器格式錯誤
測試5:CAN幀沖突(無重傳)
設(shè)置CAN總線時,避免CAN ID重復(fù)是關(guān)鍵,否則可能會導(dǎo)致幀沖突,因?yàn)閮蓚€CAN節(jié)點(diǎn)可能都認(rèn)為他們已經(jīng)贏得了仲裁,并同時開始傳輸它們的幀。
為了模擬這一點(diǎn),我們使用與測試4相同的設(shè)置。此外,我們連接了一個PCAN-USB設(shè)備作為輔助發(fā)送器。CANedge2發(fā)送器現(xiàn)在配置為每10ms輸出一個CAN ID為1且有效負(fù)載為8個0xFF字節(jié)的CAN幀。此外,我們將CANedge2配置為禁用因錯誤中斷的幀的重新傳輸。PCAN-USB每2ms輸出一個相同的CAN幀,有效載荷的第一個字節(jié)更改為0xFE。PCAN設(shè)備已啟用重傳。
這種設(shè)置會迅速產(chǎn)生幀沖突,從而導(dǎo)致CANedge和PCAN發(fā)送器檢測到位錯誤。作為對此的響應(yīng),兩者都會引發(fā)一個活動錯誤標(biāo)志,CANedge接收器將其檢測為位填充錯誤。PCAN設(shè)備立即嘗試重新傳輸并成功,而CANedge等待進(jìn)一步傳輸,直到要發(fā)送下一個消息。
這種類型的錯誤當(dāng)然不應(yīng)該發(fā)生在例如汽車中,因?yàn)樵O(shè)計(jì)和測試過程將確保所有 CAN 節(jié)點(diǎn)通過全球唯一的 CAN 標(biāo)識符進(jìn)行通信。但是,如果您安裝第 3 方設(shè)備(例如傳感器到 CAN 模塊)以將數(shù)據(jù)注入現(xiàn)有 CAN 總線,則很容易出現(xiàn)此問題。如果您不確保外部 CAN 節(jié)點(diǎn)的 CAN ID 的全局唯一性,您可能會導(dǎo)致幀沖突,從而導(dǎo)致 CAN 總線上的錯誤。如果您的外部 CAN 節(jié)點(diǎn)廣播具有高優(yōu)先級 CAN ID 的數(shù)據(jù),這一點(diǎn)尤其重要,因?yàn)槟赡軙绊懓踩P(guān)鍵 CAN 節(jié)點(diǎn)。
PCAN發(fā)送器位錯誤
CANedge發(fā)送器位錯誤
CANedge接收器位填充錯誤
測試6:CAN幀沖突(包括重傳)
在這個測試中,我們使用與之前相同的設(shè)置,但在CANedge2發(fā)送器上啟用重傳。在這種情況下,幀沖突會導(dǎo)致一系列后續(xù)幀沖突,因?yàn)镃ANedge2和PCAN-USB設(shè)備都試圖重新傳輸其中斷的消息。
由于產(chǎn)生的位錯誤,兩者都會引發(fā)總共16個活動錯誤標(biāo)志,它們被靜默CANedge2接收器檢測為位填充錯誤。然后兩個發(fā)送器進(jìn)入錯誤被動模式并停止產(chǎn)生主動錯誤標(biāo)志,這意味著它們都不能破壞總線上的CAN幀。結(jié)果,其中一個發(fā)送器將成功傳輸完整的消息,從而結(jié)束重傳,并使兩個設(shè)備都能恢復(fù)傳輸。但是,這僅持續(xù)幾秒鐘,然后發(fā)生另一次碰撞。
沖突處理是一個很好的例子,說明CAN錯誤處理在"關(guān)閉"潛在有問題的序列和使CAN節(jié)點(diǎn)能夠恢復(fù)通信方面很有效。如果發(fā)生幀沖突,很可能兩個CAN節(jié)點(diǎn)都將設(shè)置為嘗試重傳,如果不是錯誤處理和限制,則將導(dǎo)致阻塞。
虹科CAN/LIN數(shù)據(jù)與錯誤記錄器
虹科CANedge1讓您可以輕松地將數(shù)據(jù)從2xCAN/LIN總線記錄到8-32GB的SD卡中,并支持記錄CAN/LIN錯誤。只需將其連接到汽車或卡車即可開始記錄-并通過免費(fèi)軟件/API解碼數(shù)據(jù)。此外,升級版CANedge2添加了WiFi功能,讓您可以將數(shù)據(jù)自動傳輸?shù)侥约旱姆?wù)器,并通過無線方式更新設(shè)備。
2.CAN錯誤幀記錄的示例
1. OEM原型車中的CAN總線診斷
汽車OEM可能需要在后期原型測試期間在現(xiàn)場記錄CAN錯誤幀。通過部署CANedge,OEM工程團(tuán)隊(duì)將能夠根據(jù)實(shí)際CAN信號(速度、RPM、溫度)以及與原型系統(tǒng)中較低層CAN通信相關(guān)的問題進(jìn)行故障排除。如果感興趣的問題是間歇性的,例如每月只發(fā)生一次或兩次,這一點(diǎn)尤其重要。在這種情況下,CAN總線接口不太適合,因?yàn)閾碛谐杀拘б娓叩脑O(shè)備以實(shí)現(xiàn)可擴(kuò)展部署以更快地進(jìn)行故障排除變得越來越重要。虹科車輛網(wǎng)絡(luò)團(tuán)隊(duì)在車用CAN總線方面有著十分豐富的技術(shù)積累,歡迎通過hongchesys@hkaco.com聯(lián)系虹科車輛網(wǎng)絡(luò)團(tuán)隊(duì)。
2. 遠(yuǎn)程排除機(jī)器中的CAN錯誤
OEM或售后市場用戶可能需要在他們的機(jī)器中捕獲罕見的CAN錯誤事件。為此,他們部署了一個CANedge2來記錄CAN數(shù)據(jù)和相關(guān)的錯誤幀,并通過WiFi自動將數(shù)據(jù)上傳到他們自己的云服務(wù)器。在這里,錯誤會被自動識別,并向工程團(tuán)隊(duì)發(fā)送警報(bào),以便立即診斷和解決問題。虹科工業(yè)控制團(tuán)隊(duì)在CAN總線等工業(yè)通訊協(xié)議方面有著十分豐富的技術(shù)積累,歡迎通過hongconsys@hkaco.com聯(lián)系虹科工業(yè)控制團(tuán)隊(duì)。
虹科工業(yè)控制團(tuán)隊(duì)在工業(yè)通訊總線行業(yè)深耕十余年,為客戶提供CAN卡、CAN數(shù)據(jù)記錄儀、數(shù)據(jù)采集模塊、CAN網(wǎng)關(guān)和轉(zhuǎn)換器等硬件設(shè)備,以及PCAN-Explore 6等軟件。