在工業(yè)現(xiàn)場的煤安監(jiān)控網(wǎng)絡(luò)中,CAN總線通信常因復(fù)雜環(huán)境出現(xiàn)數(shù)據(jù)丟失問題。本文以一起煤安監(jiān)控網(wǎng)絡(luò)中CAN總線數(shù)據(jù)丟失的故障排查案例,簡述了排查過程和解決方法,為工業(yè)現(xiàn)場CAN通信故障提供了參考。
? 現(xiàn)場通訊故障描述
用戶現(xiàn)場為一煤安監(jiān)控網(wǎng)絡(luò),節(jié)點(diǎn)包括一個(gè)主站設(shè)備、兩個(gè)分站設(shè)備,主站設(shè)備對(duì)分站設(shè)備進(jìn)行輪詢式數(shù)據(jù)查詢。故障出現(xiàn)時(shí)發(fā)現(xiàn)分站上傳的數(shù)據(jù)出現(xiàn)缺失現(xiàn)象。致遠(yuǎn)電子工程師將專業(yè)工具——CANScope分析儀接入故障網(wǎng)絡(luò)捕獲數(shù)據(jù),然后進(jìn)行分析。
圖1 CANScope總線綜合分析儀
? 對(duì)故障通訊網(wǎng)絡(luò)快速體檢
監(jiān)控系統(tǒng)上電工作后,記錄一段時(shí)間數(shù)據(jù),通過【報(bào)文幀統(tǒng)計(jì)功能】分析,此次測(cè)試樣本為135個(gè)幀,成功報(bào)文119個(gè),正確率為88.15%。錯(cuò)誤幀類型主要包括CRC定界符錯(cuò)誤、幀結(jié)束錯(cuò)誤、應(yīng)答定界符錯(cuò)誤、數(shù)據(jù)場填充錯(cuò)誤。使用CANScope分析儀捕獲到網(wǎng)絡(luò)中的錯(cuò)誤數(shù)據(jù),如圖2所示。
圖2 報(bào)文幀統(tǒng)計(jì)結(jié)果
? 數(shù)據(jù)丟失分析
用戶程序采取輪詢的方式查詢分站數(shù)據(jù),存在固有的數(shù)據(jù)周期,通過【流量分析功能】發(fā)現(xiàn),未丟數(shù)據(jù)的周期中,包含7條有效報(bào)文,如圖3所示。
圖3 未丟數(shù)據(jù)周期丟數(shù)據(jù)的周期中出現(xiàn)了紅色的錯(cuò)誤幀,如圖4所示。有效報(bào)文數(shù)量=周期報(bào)文總數(shù)-錯(cuò)誤幀數(shù)量。正常模式下CAN總線中出現(xiàn)錯(cuò)誤幀后底層會(huì)實(shí)現(xiàn)自動(dòng)重發(fā),保證報(bào)文不會(huì)因?yàn)殄e(cuò)誤幀而丟失,然而在本網(wǎng)絡(luò)中這一機(jī)制未能實(shí)現(xiàn)。通過檢查軟件,發(fā)現(xiàn)軟件工程師在CAN控制器初始化代碼中禁用了重發(fā)功能,導(dǎo)致錯(cuò)誤幀不能重發(fā)。
圖4 丟數(shù)據(jù)周期
? 錯(cuò)誤幀分析
通過修改代碼解決了數(shù)據(jù)重發(fā)的問題,但是網(wǎng)絡(luò)中偶爾冒出的錯(cuò)誤幀仍然是工程師的一塊心病,錯(cuò)誤重發(fā)機(jī)制的使能僅僅是治標(biāo)不治本,那么究竟是什么原因?qū)е翪AN網(wǎng)絡(luò)中出現(xiàn)錯(cuò)誤幀呢?需要對(duì)型號(hào)質(zhì)量進(jìn)行分析,這里用到了CANScope的信號(hào)質(zhì)量分析功能。通過觀察錯(cuò)誤幀的波形,發(fā)現(xiàn)CAN信號(hào)上存在很嚴(yán)重的共模干擾,使得CAN_H和CAN_L上的單線波形畸變嚴(yán)重,如圖5所示。
圖5 波形分析選取一條錯(cuò)誤幀使用【FFT分析功能】進(jìn)行分析可以看到該錯(cuò)誤幀信號(hào)上的頻域特性,其中在27KHz頻點(diǎn)上存在很強(qiáng)的能量,幅值甚至達(dá)到了1.38V,如圖6所示。CAN總線的顯隱性電平的壓差很小,1V左右的干擾很容易導(dǎo)致電平識(shí)別錯(cuò)誤,從而出現(xiàn)錯(cuò)誤幀。
圖6 FFT分析這一干擾是否具有統(tǒng)計(jì)特性呢?使用【干擾統(tǒng)計(jì)功能】針對(duì)所有樣本數(shù)據(jù)做干擾頻點(diǎn)強(qiáng)度排序,發(fā)現(xiàn)干擾最強(qiáng)的頻點(diǎn)集中在27KHz附近,如圖7所示。因此判斷在CAN網(wǎng)絡(luò)附近應(yīng)該存在這樣一個(gè)干擾源。后經(jīng)過仔細(xì)排查,發(fā)現(xiàn)這一干擾頻率與開關(guān)電源的開關(guān)頻率最吻合,由于所有CAN節(jié)點(diǎn)未做隔離導(dǎo)致電源串?dāng)_,引發(fā)錯(cuò)誤幀。更換電源后故障消失,問題解決。
圖7 干擾統(tǒng)計(jì)