張 勇
(上海飛機(jī)設(shè)計(jì)研究院 飛控系統(tǒng)設(shè)計(jì)研究部,上海 200436)
CAN(Controller Area Network 控制器局域網(wǎng))總線是在汽車(chē)、輪船、醫(yī)療等領(lǐng)域廣泛應(yīng)用的一種串行數(shù)據(jù)通訊現(xiàn)場(chǎng)總線,能有效地支持具有很高安全等級(jí)的分布式實(shí)時(shí)控制。由于CAN總線數(shù)據(jù)通信具有高可靠性、實(shí)時(shí)性和靈活性的特點(diǎn),常被應(yīng)用于飛機(jī)、汽車(chē)、輪船等計(jì)算機(jī)系統(tǒng)之間的通訊方式,因此CAN總線的數(shù)據(jù)采集技術(shù)也得到了廣泛應(yīng)用。
CAN總線為串行數(shù)據(jù)協(xié)議總線,能夠同時(shí)傳輸多個(gè)報(bào)文(message),一個(gè)報(bào)文定義為一幀,分為三個(gè)域,標(biāo)準(zhǔn)型CAN總線數(shù)據(jù)格式如圖1所示,分別為ID域(Identifier),數(shù)據(jù)長(zhǎng)度定義域(Length)和數(shù)據(jù)信息域(Data),圖中的箭頭指示了數(shù)據(jù)傳輸?shù)南群箜樞颉?/p>
圖1 標(biāo)準(zhǔn)型CAN總線數(shù)據(jù)位定義
CAN總線為多主方式,理論上一條CAN總線上可以串接110個(gè)節(jié)點(diǎn),為了讀取CAN總線數(shù)據(jù),可采用如圖2所示的拓?fù)浣Y(jié)構(gòu)將CAN總線采集設(shè)備接入到CAN總線上。
圖2 CAN總線數(shù)據(jù)采集系統(tǒng)連接原理圖
本方案中系統(tǒng)硬件采用NI公司的PXI-648x系列CAN總線卡,機(jī)箱采用PXI-1050,測(cè)試服務(wù)器與測(cè)試客戶端之間采用以太網(wǎng)連接方式。
在CAN總線數(shù)據(jù)采集軟件的設(shè)計(jì)實(shí)現(xiàn)時(shí),需要重點(diǎn)考慮的問(wèn)題是CAN總線數(shù)據(jù)的正確解析。CAN總線通道可同時(shí)發(fā)送多個(gè)報(bào)文,每個(gè)報(bào)文的數(shù)據(jù)域最長(zhǎng)可達(dá)64位,理論上一個(gè)通道的信息可多達(dá)幾百個(gè),因此,正確解析每個(gè)通道的數(shù)據(jù)信息至關(guān)重要。當(dāng)前CAN的總線數(shù)據(jù)采集方法廣泛采用數(shù)據(jù)庫(kù)技術(shù),編寫(xiě)CANdb數(shù)據(jù)庫(kù)文件作為數(shù)據(jù)采集和解析的基礎(chǔ),有眾多商用軟件(如CANoe,NI的QNmax等)可以實(shí)現(xiàn)CANdb數(shù)據(jù)庫(kù)文件的編輯。本文闡述了一種基于MS Office Access數(shù)據(jù)庫(kù)進(jìn)行CAN總線數(shù)據(jù)采集的實(shí)現(xiàn)方法。
CAN總線數(shù)據(jù)采集最終要建立的是CAN總線數(shù)據(jù)庫(kù),它是CAN數(shù)據(jù)解析的基礎(chǔ)。根據(jù)CAN總線的數(shù)據(jù)格式,在Access數(shù)據(jù)庫(kù)中建立如圖3所示的數(shù)據(jù)庫(kù)表格。
圖3 數(shù)據(jù)庫(kù)設(shè)計(jì)視圖
其中包含了CAN總線數(shù)據(jù)格式的各種基本信息,主要字段設(shè)計(jì)的說(shuō)明如表1所示。
有了Access數(shù)據(jù)庫(kù),就需要在軟件中建立與數(shù)據(jù)庫(kù)對(duì)應(yīng)的結(jié)構(gòu)體,在程序調(diào)用時(shí)為程序變量賦值。程序設(shè)計(jì)結(jié)構(gòu)體如下:
表1 Access數(shù)據(jù)庫(kù)主要字段說(shuō)明表
CAN總線數(shù)據(jù)采集軟件的開(kāi)發(fā)采用NI公司LabWINDOWS/CVI軟件,該軟件對(duì)Access數(shù)據(jù)庫(kù)的支持友好,可以方便的與數(shù)據(jù)源連接,能夠滿足程序設(shè)計(jì)的需要。軟件系統(tǒng)的流程圖如圖4所示。
圖4 CAN總線采集程序流程圖
本文探索了一種利用Access數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)CAN總線數(shù)據(jù)采集的方法,通過(guò)LabWindows/CVI+Access軟件編程實(shí)現(xiàn)了CAN總線數(shù)據(jù)的自動(dòng)化解析、處理,很好的實(shí)現(xiàn)了CAN總線的自動(dòng)采集功能,在試驗(yàn)中能夠滿足各種CAN總線信息的采集,取得了良好的實(shí)用效果。
[1] CAN-bus規(guī)范V2.0版本,譯自BOSCH 公司《CAN Specification V2.0》.
[2] NI-CANTM Hardware and Software Manual.
[3] 王建新,等.LabWindows/CVI測(cè)試技術(shù)及工程應(yīng)用[M],化學(xué)工業(yè)出版社,2006.
[4] 王俊波,胥布工.CANopen協(xié)議分析與實(shí)現(xiàn)[J].計(jì)算機(jī)信息,2006,22(6-2):104-106.