CAN總線網(wǎng)絡(luò)監(jiān)控軟件設(shè)計
CAN總線網(wǎng)絡(luò)即控制器局域網(wǎng)絡(luò)(Controller Area Network,CAN),是由德國BOSCH公司在20世紀(jì)80年代為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,可實現(xiàn)點對點、一點對多點及全網(wǎng)廣播3種方式的發(fā)送和接收數(shù)據(jù)。傳輸?shù)臄?shù)據(jù)采用CRC校驗,能夠有效地降低誤碼率。CAN總線的通信介質(zhì)可以是雙絞線、同軸電纜或者光導(dǎo)纖維,通信速率可達1 MB/s。由于具有通信速度快、可靠性高、價格便宜等特點,使CAN總線成為應(yīng)用廣泛的現(xiàn)場總線之一。
當(dāng)前,市面上已有多種CAN總線的分析測試工具,如廣州周立功公司的CANalyst,德國Vector公司的CANoe等。這些軟件工具具有較強的功能,但對于一些小型CAN網(wǎng)絡(luò)開發(fā)組件來說,其附加費用較大?;诖丝紤],本文提出了一種功能完善、操作簡潔的CAN網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計方案,可達到對CAN總線運行情況監(jiān)測分析的目的。
1 設(shè)計需求
通過對一些通用CAN總線監(jiān)控軟件的分析,并結(jié)合設(shè)計提出的實現(xiàn)一個較為通用的CAN總線監(jiān)控軟件的要求,可以將此軟件的設(shè)計需求總結(jié)如下:
(1)具有適應(yīng)CAN控制器各種工作模式的功能,用戶只用稍加配置,便可以將此軟件用于具體的CAN總線網(wǎng)絡(luò)的監(jiān)控中。
(2)具有用戶自定義數(shù)據(jù)幀格式及其解析方式的功能,以使此軟件可以滿足不同環(huán)境下的使用要求,對用戶所需要的數(shù)據(jù)內(nèi)容進行解析。
(3)具有數(shù)據(jù)可視化顯示功能,如數(shù)據(jù)表展示數(shù)據(jù),圖形繪制數(shù)據(jù)曲線等方式。使用戶可以較為直觀地對網(wǎng)絡(luò)數(shù)據(jù)和狀態(tài)進行監(jiān)控。
(4)具有將通信中的數(shù)據(jù)信息進行分類的功能,方便用戶對數(shù)據(jù)的分析。
(5)具有查看歷史數(shù)據(jù)的功能,將歷史數(shù)據(jù)記錄下來,并提供一種方式實現(xiàn)對歷史網(wǎng)絡(luò)狀態(tài)的重現(xiàn),方便用戶調(diào)試。
2 方案設(shè)計
2.1 功能
CAN總線監(jiān)控軟件需具備的功能包括:CAN總線通信(數(shù)據(jù)接收與發(fā)送)、數(shù)據(jù)處理(數(shù)據(jù)解析與存儲)和數(shù)據(jù)應(yīng)用(將數(shù)據(jù)展示為圖表,數(shù)據(jù)回放等)。功能結(jié)構(gòu)如圖1所示。
2.2 功能模塊關(guān)系
CAN總線的監(jiān)控過程即是對通信數(shù)據(jù)的處理過程。軟件首先通過與CAN總線上的節(jié)點通信來接收和發(fā)送數(shù)據(jù),然后將這些數(shù)據(jù)記錄在文件中,同時對數(shù)據(jù)進行分析處理,軟件根據(jù)由用戶所設(shè)定的數(shù)據(jù)格式對數(shù)據(jù)解析,最后是對數(shù)據(jù)信息的應(yīng)用,根據(jù)用戶的設(shè)定,可以對數(shù)據(jù)進行表展示,曲線繪制或者歷史回放。各功能模塊關(guān)系如圖2所示。
2.2.1 通信
通信是監(jiān)控軟件獲取數(shù)據(jù)信息的方式,也是軟件的基礎(chǔ)。它的主要功能是接收和發(fā)送CAN總線中節(jié)點的數(shù)據(jù),是數(shù)據(jù)解析和應(yīng)用的來源。監(jiān)控節(jié)點需要連接到CAN總線網(wǎng)絡(luò)中,如圖3所示。
2.2.2 數(shù)據(jù)記錄
數(shù)據(jù)記錄模塊是將接收或者發(fā)送的數(shù)據(jù)以一定的形式記錄在文件中,用以對數(shù)據(jù)進行后期分析,或者通過回放功能復(fù)現(xiàn)CAN總線狀態(tài)。為能達到復(fù)現(xiàn)的目的,此記錄文件需記錄的信息包括原始數(shù)據(jù)包和收發(fā)時間,時間信息具體內(nèi)容為通信數(shù)據(jù)的時間間隔,基于此回放功能更加真實模擬網(wǎng)絡(luò)中的狀態(tài)。記錄內(nèi)容如圖4所示。
2.2.3 數(shù)據(jù)分析
數(shù)據(jù)分析模塊是整個監(jiān)控軟件的核心,它負責(zé)按照用戶設(shè)定的解析模式將收發(fā)數(shù)據(jù)報解析為可以理解的信息值。每一幀數(shù)據(jù)的解析過程可以分為以下3步:(1)定位。通過數(shù)據(jù)幀格式來定位每個信息在數(shù)據(jù)包中的起始位置,將數(shù)據(jù)包分組。(2)截取。通過起始位置和數(shù)據(jù)長度,可以截取到所需的數(shù)據(jù)。(3)轉(zhuǎn)換。由于截取所得到的數(shù)據(jù)為原始數(shù)據(jù),所以需要將其轉(zhuǎn)換為可以理解的信息。數(shù)據(jù)的分析過程如圖5所示。
2.2.4 數(shù)據(jù)應(yīng)用
數(shù)據(jù)應(yīng)用是指軟件對用戶所提供的數(shù)據(jù)服務(wù)。本軟件實現(xiàn)了以下幾個功能來應(yīng)用數(shù)據(jù):(1)數(shù)據(jù)表。用于向用戶提供所需要的信息,展示總線數(shù)據(jù)。(2)繪圖。根據(jù)用戶需要對某些需要顯示數(shù)據(jù)變化的內(nèi)容進行曲線繪制。(3)回放。將存儲于文件中的歷史數(shù)據(jù)按照收發(fā)時間順序重新播放,以重現(xiàn)網(wǎng)絡(luò)狀態(tài),它為用戶提供了一種調(diào)試網(wǎng)絡(luò)的簡單方式。
2.3 關(guān)鍵技術(shù)
2.3.1 數(shù)據(jù)解析
鑒于CAN總線的應(yīng)用廣泛,從汽車到工業(yè)現(xiàn)場的應(yīng)用,所需要監(jiān)測的信息不同,故軟件對數(shù)據(jù)的解析方式也不相同。數(shù)據(jù)的解析過程需要用到用戶所定義的數(shù)據(jù)格式,這里使用XML文件來描述數(shù)據(jù)幀的內(nèi)容。如圖6所示,幀ID為0x01的數(shù)據(jù)內(nèi)容包:一個16位數(shù)據(jù)表示的溫度值,信息類型為整數(shù);一個16位數(shù)據(jù)表示的壓力值,信息類型為正整數(shù)。
2.3.2 數(shù)據(jù)回放
回放功能是將歷史數(shù)據(jù)及當(dāng)時的網(wǎng)絡(luò)狀態(tài)按照原過程如實演示,使用的數(shù)據(jù)源是從歷史記錄文件中獲取的。記錄文件由記錄模塊將總線數(shù)據(jù)按照時間順序?qū)懭胛募猩?,使用回放功能是將所記錄?shù)據(jù)按順序讀入,按照記錄時間模擬當(dāng)時的順序?qū)崿F(xiàn)回放功能,用戶可通過應(yīng)用功能再次使用數(shù)據(jù)表、繪圖來呈現(xiàn)數(shù)據(jù)。
3 測試
在實際應(yīng)用中,將監(jiān)控節(jié)點接入CAN總線網(wǎng)絡(luò)中,完成軟件設(shè)定后,便可開啟對總線的監(jiān)控。使用數(shù)據(jù)表顯示所測得信息的正確性,并驗證通信是否正常。所生成的數(shù)據(jù)表如圖7所示,顯示信息來自節(jié)點1和節(jié)點3,以及發(fā)自它們的溫度和壓力值。使用繪圖功能將此溫度變化繪制為曲線圖形,如圖8所示。
4 結(jié)束語
本文提出了一個CAN總線網(wǎng)絡(luò)監(jiān)控軟件的方案,并描述了此軟件的設(shè)計方法和所使用到的關(guān)鍵技術(shù)。依據(jù)此方案,實現(xiàn)了一個較為通用的CAN總線監(jiān)控軟件,它可通過分析由用戶設(shè)定傳輸數(shù)據(jù)格式的方式,自動對數(shù)據(jù)進行解析,可滿足大多數(shù)CAN總線的監(jiān)控需求。在應(yīng)用中,它可幫助用戶調(diào)試和測試網(wǎng)絡(luò),有效提高工作效率。通過實際測試,驗證了此方案的可行性。
但是,本文提出的設(shè)計方案也有局限性和進一步提升的空間。在后續(xù)研究和設(shè)計中,可以將數(shù)據(jù)融合技術(shù)逐步加入到軟件對數(shù)據(jù)的分析中,并可將此工具演化為一種通用的軟件中間件,以便進行更多的應(yīng)用。
評論