趙寶全
(固安信通信號技術股份有限公司,河北 廊坊 065500)
CAN總線具有完善的地址競爭機制、故障保護機制和數據送達確認機制,并且成本低、電磁兼容性能可控、通信速率高、EMC可控,占據了工業現場總線的大部分市場[1]。
物理層的良好阻抗匹配是CAN總線高質量應用的基石,如果匹配不良就會出現通信不穩定、數據堵塞等問題,更嚴重的會引起整個CAN總線通信失效,診斷的簡單辦法是通過靜態測試CAN總線的電阻值是否在60~120 Ω的范圍內,但這只能解決一些簡單故障,對于復雜場景下CAN總線的阻抗則無法有效測試,如果使用網絡分析儀或者CAN總線故障診斷儀則價格昂貴、體積笨重、操作復雜,不適合現場應用。本文通過對CAN總線的傳輸的響應時間這一關鍵指標進行診斷,并總結了一套流程方法來解決此問題。
CAN總線如圖1所示,由CAN控制器、CAN收發器、CAN總線傳輸通道和匹配元件構成。CAN控制器主要完成數據鏈路層的功能,CAN收發器完成電平轉換功能,傳輸通道實現物理層的連接,匹配元件實現傳輸的阻抗匹配。

圖1 CAN總線原理
CAN總線收發器如圖2所示,內部由發送和接收兩部分構成,作用是把TX的信號轉化為差分電平后驅動總線(即CANH和CANL的差分信號),并把CAN總線上的信號轉換為TTL電平后由RX送回給CAN控制器回讀進行控制判斷。

圖2 CAN收發器原理
CAN控制器無數據收發時保持高電平,CAN總線傳輸通道保持隱形位電平,當CAN控制器需要發送數據時,控制CAN收發器TX引腳,CAN收發器驅動波形如圖3所示。CANH和CANL輸出電路如圖4所示。

圖3 CAN收發器波形

圖4 CANH和CANL輸出電路
CAN通信幀如圖5所示,CAN控制器在CAN通信幀的仲裁段發送幀ID時需要根據RX的回讀信號判斷總線競爭狀態[2]。如果CAN控制器向外發出的是隱形位信號(對應TX為高電平),而RX回讀的是顯性位信號(對應RX電平為低電平),那么CAN控制器則認為存在更高優先級的節點也在向總線發送信號,那么CAN控制器就會停止本次發送,轉為從機監聽應答模式,待總線恢復空閑后再次嘗試競爭主機,如果錯誤的判斷競爭優先級就導致無法發出信息。另外CAN控制器在CAN通信幀的ACK段通過RX回讀判斷ACK應答位,如果無應答就會多次重復發送數據,以確保信息送達,這樣就會阻塞信道。CAN總線本身由于其總線競爭的多主機制和數據送達確認機制保障了工作可靠性,但總線物理層阻抗匹配不良則成為導火索引發出一系列數據鏈路層的問題,如果不能抓住問題的關鍵點,則會被故障表象所迷惑,無法快速地解決故障。

圖5 CAN通信幀
通過圖2可知CAN收發器內部的接收部分在總線側是高阻輸入,理想化可認為是斷路,只分析發送部分即可。由于器件制造工藝原因,CANH和CANL之間存在電容等效為C1,總線的匹配電阻等效為R1,總線的線纜間電容等效為C2。
忽略R1和C2,當TX為高電平時,開關管Q1和Q2關閉,CANH和CANL被拉到參考電平2.5V。若TX由高電平變低電平時,開關管Q1和Q2導通,穩壓管Z1和Z2起分壓作用,C1被迅速充電,CANH和CANL分別被快速的拉到3.5 V和1.5 V,非常快的信號變化會導致電磁輻射的增大,但是當TX由低電平變高電平時,開關管Q1和Q2關閉,電容C1中的電荷只能通過R2和R3的高阻通路進行緩慢放電,這就導致CANH和CANL恢復到參考電平非常緩慢,總線就會出現隱形位時間小于顯性位時間,從而導致總線競爭判斷錯誤或接收數據校驗錯誤而不應答。線間電容C2并聯到C1上,更加劇了上述情況,所以才需要增加匹配終端電阻R1,其阻抗為60Ω左右,由于R1的分流作用,對電容的充電時間變長,總線信號邊沿上升時間變長改善了電磁兼容性能,在CANH和CANL由顯性位變為隱形位時,R1又充當了對C1和C2的低阻放電通路,使CANH和CANL快速恢復到參考電平,總線的顯性位和隱形位持續時間會趨于一致。通過以上分析可知為什么要對總線進行阻抗匹配,以及阻抗不匹配時的現象,但是常規診斷方法僅僅對CANH和CANL的波形進行測試,判斷是否達到3.5 V和1.5 V,無法分辨主機和從機節點,無法直觀了解主機發送信息是否正確和從機是否及時的應答,物理層和數據鏈路層的各種問題現象攪合在一起,無法快速有效的排查故障。
通過對CAN收發器內部的發送部分電路的分析了解了總線物理層需要阻抗匹配的原因,那么可以再利用其接收部分,更加直觀地了解到總線的顯性和隱形位,這樣就不必在總線側使用昂貴的差分探頭,直接在CAN收發器的TX和RX引腳處使用常規示波器探頭即可測試如圖3所示的t1和t2響應時間。表1為參照器件SN65HVD230的數據手冊并且在斜率RS電阻為0的情況下的數值,如果超出此范圍則說明總線阻抗匹配不良,需要優化調整[3]。其他器件可以參照對應手冊中的規定條件下數值進行測試診斷。
按照圖6所示流程步驟進行故障診斷,首先進行主機節點的判斷,找到主機節點后在收發器的RX也掛上示波器探頭,設置TX為下降沿觸發,觸發后測試t1和t2并按照表1進行判斷,由此可以得知總線的物理層是否存在阻抗匹配問題。

圖6 診斷流程

表1 響應時間
實際操作如圖7所示,示波器的2個通道分別接入普通探頭,探頭都撥入X10檔位,并校準[4]。此處需注意,普通探頭X1檔位只有7 MHz的帶寬,而CAN信號最高可達1M比特的速率,且為方波,所以帶寬要求超過7 MHz[5]。CH1的探頭接入收發器的TX引腳,CH2的探頭接入收發器的RX引腳,觸發方式為下降沿,觸發電平設置為1.5 V,觸發源為CH1。

圖7 診斷接線圖
如圖8所示,CH1和CH2分別顯示了CAN收發器的TX和RX引腳的波形以及總線上其它節點的應答響應。使用示波器的串行協議分析功能,在抓取的波形上可以自動完整的顯示出can幀的數據,如果示波器不具備串行協議分析功能可略過此步驟,直接觀察波形。確認TX和RX引腳波形抓取無誤后,拉寬波形,采用光標截取出t1的延時,如圖9所示,測量出的時間為80 ns,參考表1中70~155 ns的范圍可知,CAN總線一側工作良好。t2時間的測量方法類似,限于篇幅不再贅述。

圖8 CAN幀波形

圖9 CAN收發器的TX和RX引腳延遲時間
本文分析了CAN總線物理層阻抗匹配的原因,并介紹了通過在CAN收發器的TX和RX引腳測試信號的響應時間來快速對CAN總線物理層進行故障診斷方法,非常適合在現場對物理層的故障快速定位和評估修復情況。筆者在實際工作中已經按照本文所述方法多次解決問題,并評估CAN總線的通信質量,未來計劃按照此方法開發一套CAN總線時間測試工具,進一步簡化現場操作步驟,提高效率。