趙寶全
(固安信通信號技術(shù)股份有限公司,河北 廊坊 065500)
CAN總線具有完善的地址競爭機(jī)制、故障保護(hù)機(jī)制和數(shù)據(jù)送達(dá)確認(rèn)機(jī)制,并且成本低、電磁兼容性能可控、通信速率高、EMC可控,占據(jù)了工業(yè)現(xiàn)場總線的大部分市場[1]。
物理層的良好阻抗匹配是CAN總線高質(zhì)量應(yīng)用的基石,如果匹配不良就會出現(xiàn)通信不穩(wěn)定、數(shù)據(jù)堵塞等問題,更嚴(yán)重的會引起整個CAN總線通信失效,診斷的簡單辦法是通過靜態(tài)測試CAN總線的電阻值是否在60~120 Ω的范圍內(nèi),但這只能解決一些簡單故障,對于復(fù)雜場景下CAN總線的阻抗則無法有效測試,如果使用網(wǎng)絡(luò)分析儀或者CAN總線故障診斷儀則價格昂貴、體積笨重、操作復(fù)雜,不適合現(xiàn)場應(yīng)用。本文通過對CAN總線的傳輸?shù)捻憫?yīng)時間這一關(guān)鍵指標(biāo)進(jìn)行診斷,并總結(jié)了一套流程方法來解決此問題。
CAN總線如圖1所示,由CAN控制器、CAN收發(fā)器、CAN總線傳輸通道和匹配元件構(gòu)成。CAN控制器主要完成數(shù)據(jù)鏈路層的功能,CAN收發(fā)器完成電平轉(zhuǎn)換功能,傳輸通道實(shí)現(xiàn)物理層的連接,匹配元件實(shí)現(xiàn)傳輸?shù)淖杩蛊ヅ洹?/p>
圖1 CAN總線原理
CAN總線收發(fā)器如圖2所示,內(nèi)部由發(fā)送和接收兩部分構(gòu)成,作用是把TX的信號轉(zhuǎn)化為差分電平后驅(qū)動總線(即CANH和CANL的差分信號),并把CAN總線上的信號轉(zhuǎn)換為TTL電平后由RX送回給CAN控制器回讀進(jìn)行控制判斷。
圖2 CAN收發(fā)器原理
CAN控制器無數(shù)據(jù)收發(fā)時保持高電平,CAN總線傳輸通道保持隱形位電平,當(dāng)CAN控制器需要發(fā)送數(shù)據(jù)時,控制CAN收發(fā)器TX引腳,CAN收發(fā)器驅(qū)動波形如圖3所示。CANH和CANL輸出電路如圖4所示。
圖3 CAN收發(fā)器波形
圖4 CANH和CANL輸出電路
CAN通信幀如圖5所示,CAN控制器在CAN通信幀的仲裁段發(fā)送幀ID時需要根據(jù)RX的回讀信號判斷總線競爭狀態(tài)[2]。如果CAN控制器向外發(fā)出的是隱形位信號(對應(yīng)TX為高電平),而RX回讀的是顯性位信號(對應(yīng)RX電平為低電平),那么CAN控制器則認(rèn)為存在更高優(yōu)先級的節(jié)點(diǎn)也在向總線發(fā)送信號,那么CAN控制器就會停止本次發(fā)送,轉(zhuǎn)為從機(jī)監(jiān)聽?wèi)?yīng)答模式,待總線恢復(fù)空閑后再次嘗試競爭主機(jī),如果錯誤的判斷競爭優(yōu)先級就導(dǎo)致無法發(fā)出信息。另外CAN控制器在CAN通信幀的ACK段通過RX回讀判斷ACK應(yīng)答位,如果無應(yīng)答就會多次重復(fù)發(fā)送數(shù)據(jù),以確保信息送達(dá),這樣就會阻塞信道。CAN總線本身由于其總線競爭的多主機(jī)制和數(shù)據(jù)送達(dá)確認(rèn)機(jī)制保障了工作可靠性,但總線物理層阻抗匹配不良則成為導(dǎo)火索引發(fā)出一系列數(shù)據(jù)鏈路層的問題,如果不能抓住問題的關(guān)鍵點(diǎn),則會被故障表象所迷惑,無法快速地解決故障。
圖5 CAN通信幀
通過圖2可知CAN收發(fā)器內(nèi)部的接收部分在總線側(cè)是高阻輸入,理想化可認(rèn)為是斷路,只分析發(fā)送部分即可。由于器件制造工藝原因,CANH和CANL之間存在電容等效為C1,總線的匹配電阻等效為R1,總線的線纜間電容等效為C2。
忽略R1和C2,當(dāng)TX為高電平時,開關(guān)管Q1和Q2關(guān)閉,CANH和CANL被拉到參考電平2.5V。若TX由高電平變低電平時,開關(guān)管Q1和Q2導(dǎo)通,穩(wěn)壓管Z1和Z2起分壓作用,C1被迅速充電,CANH和CANL分別被快速的拉到3.5 V和1.5 V,非??斓男盘栕兓瘯?dǎo)致電磁輻射的增大,但是當(dāng)TX由低電平變高電平時,開關(guān)管Q1和Q2關(guān)閉,電容C1中的電荷只能通過R2和R3的高阻通路進(jìn)行緩慢放電,這就導(dǎo)致CANH和CANL恢復(fù)到參考電平非常緩慢,總線就會出現(xiàn)隱形位時間小于顯性位時間,從而導(dǎo)致總線競爭判斷錯誤或接收數(shù)據(jù)校驗錯誤而不應(yīng)答。線間電容C2并聯(lián)到C1上,更加劇了上述情況,所以才需要增加匹配終端電阻R1,其阻抗為60Ω左右,由于R1的分流作用,對電容的充電時間變長,總線信號邊沿上升時間變長改善了電磁兼容性能,在CANH和CANL由顯性位變?yōu)殡[形位時,R1又充當(dāng)了對C1和C2的低阻放電通路,使CANH和CANL快速恢復(fù)到參考電平,總線的顯性位和隱形位持續(xù)時間會趨于一致。通過以上分析可知為什么要對總線進(jìn)行阻抗匹配,以及阻抗不匹配時的現(xiàn)象,但是常規(guī)診斷方法僅僅對CANH和CANL的波形進(jìn)行測試,判斷是否達(dá)到3.5 V和1.5 V,無法分辨主機(jī)和從機(jī)節(jié)點(diǎn),無法直觀了解主機(jī)發(fā)送信息是否正確和從機(jī)是否及時的應(yīng)答,物理層和數(shù)據(jù)鏈路層的各種問題現(xiàn)象攪合在一起,無法快速有效的排查故障。
通過對CAN收發(fā)器內(nèi)部的發(fā)送部分電路的分析了解了總線物理層需要阻抗匹配的原因,那么可以再利用其接收部分,更加直觀地了解到總線的顯性和隱形位,這樣就不必在總線側(cè)使用昂貴的差分探頭,直接在CAN收發(fā)器的TX和RX引腳處使用常規(guī)示波器探頭即可測試如圖3所示的t1和t2響應(yīng)時間。表1為參照器件SN65HVD230的數(shù)據(jù)手冊并且在斜率RS電阻為0的情況下的數(shù)值,如果超出此范圍則說明總線阻抗匹配不良,需要優(yōu)化調(diào)整[3]。其他器件可以參照對應(yīng)手冊中的規(guī)定條件下數(shù)值進(jìn)行測試診斷。
按照圖6所示流程步驟進(jìn)行故障診斷,首先進(jìn)行主機(jī)節(jié)點(diǎn)的判斷,找到主機(jī)節(jié)點(diǎn)后在收發(fā)器的RX也掛上示波器探頭,設(shè)置TX為下降沿觸發(fā),觸發(fā)后測試t1和t2并按照表1進(jìn)行判斷,由此可以得知總線的物理層是否存在阻抗匹配問題。
圖6 診斷流程
表1 響應(yīng)時間
實(shí)際操作如圖7所示,示波器的2個通道分別接入普通探頭,探頭都撥入X10檔位,并校準(zhǔn)[4]。此處需注意,普通探頭X1檔位只有7 MHz的帶寬,而CAN信號最高可達(dá)1M比特的速率,且為方波,所以帶寬要求超過7 MHz[5]。CH1的探頭接入收發(fā)器的TX引腳,CH2的探頭接入收發(fā)器的RX引腳,觸發(fā)方式為下降沿,觸發(fā)電平設(shè)置為1.5 V,觸發(fā)源為CH1。
圖7 診斷接線圖
如圖8所示,CH1和CH2分別顯示了CAN收發(fā)器的TX和RX引腳的波形以及總線上其它節(jié)點(diǎn)的應(yīng)答響應(yīng)。使用示波器的串行協(xié)議分析功能,在抓取的波形上可以自動完整的顯示出can幀的數(shù)據(jù),如果示波器不具備串行協(xié)議分析功能可略過此步驟,直接觀察波形。確認(rèn)TX和RX引腳波形抓取無誤后,拉寬波形,采用光標(biāo)截取出t1的延時,如圖9所示,測量出的時間為80 ns,參考表1中70~155 ns的范圍可知,CAN總線一側(cè)工作良好。t2時間的測量方法類似,限于篇幅不再贅述。
圖8 CAN幀波形
圖9 CAN收發(fā)器的TX和RX引腳延遲時間
本文分析了CAN總線物理層阻抗匹配的原因,并介紹了通過在CAN收發(fā)器的TX和RX引腳測試信號的響應(yīng)時間來快速對CAN總線物理層進(jìn)行故障診斷方法,非常適合在現(xiàn)場對物理層的故障快速定位和評估修復(fù)情況。筆者在實(shí)際工作中已經(jīng)按照本文所述方法多次解決問題,并評估CAN總線的通信質(zhì)量,未來計劃按照此方法開發(fā)一套CAN總線時間測試工具,進(jìn)一步簡化現(xiàn)場操作步驟,提高效率。