張 勇
(上海飛機設計研究院 飛控系統設計研究部,上海 200436)
CAN(Controller Area Network 控制器局域網)總線是在汽車、輪船、醫療等領域廣泛應用的一種串行數據通訊現場總線,能有效地支持具有很高安全等級的分布式實時控制。由于CAN總線數據通信具有高可靠性、實時性和靈活性的特點,常被應用于飛機、汽車、輪船等計算機系統之間的通訊方式,因此CAN總線的數據采集技術也得到了廣泛應用。
CAN總線為串行數據協議總線,能夠同時傳輸多個報文(message),一個報文定義為一幀,分為三個域,標準型CAN總線數據格式如圖1所示,分別為ID域(Identifier),數據長度定義域(Length)和數據信息域(Data),圖中的箭頭指示了數據傳輸的先后順序。

圖1 標準型CAN總線數據位定義
CAN總線為多主方式,理論上一條CAN總線上可以串接110個節點,為了讀取CAN總線數據,可采用如圖2所示的拓撲結構將CAN總線采集設備接入到CAN總線上。

圖2 CAN總線數據采集系統連接原理圖
本方案中系統硬件采用NI公司的PXI-648x系列CAN總線卡,機箱采用PXI-1050,測試服務器與測試客戶端之間采用以太網連接方式。
在CAN總線數據采集軟件的設計實現時,需要重點考慮的問題是CAN總線數據的正確解析。CAN總線通道可同時發送多個報文,每個報文的數據域最長可達64位,理論上一個通道的信息可多達幾百個,因此,正確解析每個通道的數據信息至關重要。當前CAN的總線數據采集方法廣泛采用數據庫技術,編寫CANdb數據庫文件作為數據采集和解析的基礎,有眾多商用軟件(如CANoe,NI的QNmax等)可以實現CANdb數據庫文件的編輯。本文闡述了一種基于MS Office Access數據庫進行CAN總線數據采集的實現方法。
CAN總線數據采集最終要建立的是CAN總線數據庫,它是CAN數據解析的基礎。根據CAN總線的數據格式,在Access數據庫中建立如圖3所示的數據庫表格。

圖3 數據庫設計視圖
其中包含了CAN總線數據格式的各種基本信息,主要字段設計的說明如表1所示。
有了Access數據庫,就需要在軟件中建立與數據庫對應的結構體,在程序調用時為程序變量賦值。程序設計結構體如下:


表1 Access數據庫主要字段說明表

CAN總線數據采集軟件的開發采用NI公司LabWINDOWS/CVI軟件,該軟件對Access數據庫的支持友好,可以方便的與數據源連接,能夠滿足程序設計的需要。軟件系統的流程圖如圖4所示。

圖4 CAN總線采集程序流程圖
本文探索了一種利用Access數據庫技術實現CAN總線數據采集的方法,通過LabWindows/CVI+Access軟件編程實現了CAN總線數據的自動化解析、處理,很好的實現了CAN總線的自動采集功能,在試驗中能夠滿足各種CAN總線信息的采集,取得了良好的實用效果。
[1] CAN-bus規范V2.0版本,譯自BOSCH 公司《CAN Specification V2.0》.
[2] NI-CANTM Hardware and Software Manual.
[3] 王建新,等.LabWindows/CVI測試技術及工程應用[M],化學工業出版社,2006.
[4] 王俊波,胥布工.CANopen協議分析與實現[J].計算機信息,2006,22(6-2):104-106.