基于CAN 總線的信息采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:為解決某型衛(wèi)星信息采集系統(tǒng)中陀螺組合數(shù)據(jù)等的實(shí)時(shí)通訊問(wèn)題,提出了利用CAN 總線實(shí)現(xiàn)整個(gè)信息采集系統(tǒng)設(shè)計(jì)。與一般信息采集系統(tǒng)相比,該系統(tǒng)下位機(jī)采用TMS320F2812 型DSP,利用其eCAN 模塊作為數(shù)據(jù)發(fā)送模塊,上位機(jī)采用工控機(jī),其中ADLINK PCI/cPCI-7841 CAN 總線接口卡作為數(shù)據(jù)接收模塊,并在工控機(jī)中實(shí)時(shí)處理接收到的數(shù)據(jù),更可靠地完成了信息采集及實(shí)時(shí)監(jiān)測(cè)。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)信息采集實(shí)時(shí)性強(qiáng)、準(zhǔn)確穩(wěn)定。
CAN(Controller Area Network)即控制器局域網(wǎng),主要用于各種設(shè)備檢測(cè)及控制的一種現(xiàn)場(chǎng)總線。20 世紀(jì)80 年代初,德國(guó)BOSCH 公司為解決現(xiàn)代汽車中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換, 開(kāi)發(fā)了一種串行數(shù)據(jù)通信協(xié)議,即CAN 總線。
CAN 總線是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò), 它為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。CAN 屬于工業(yè)現(xiàn)場(chǎng)總線的范疇, 與一般的通信總線相比,CAN 總線的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性,通信速率可達(dá)1 Mb/s。
目前,CAN 總線不僅應(yīng)用于汽車領(lǐng)域,而且應(yīng)用于自動(dòng)控制、航空航天、機(jī)械工業(yè)、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域。
由于CAN 被越來(lái)越多不同領(lǐng)域采用和推廣, 導(dǎo)致要求各種應(yīng)用領(lǐng)域通信報(bào)文的標(biāo)準(zhǔn)化。為此,1991 年9 月PHILIPSSEMICONDUCTORS 制定并發(fā)布了CAN 技術(shù)規(guī)范(VERSION2.0)。該技術(shù)規(guī)范包括A 和B 兩部分。2.0A 給出在CAN 技術(shù)規(guī)范1.2 中定義的CAN 報(bào)文格式,能提供11 位地址;而2.0B給出了標(biāo)準(zhǔn)的和擴(kuò)展的2 種報(bào)文格式,能提供29位地址。此后,1993 年11 月ISO 正式頒布了道路交通運(yùn)載工具———數(shù)字信息交換———高速通信控制器局部網(wǎng)(CAN)國(guó)際標(biāo)準(zhǔn)(ISO11898),為控制器局部網(wǎng)標(biāo)準(zhǔn)化、規(guī)范化推廣鋪平了道路。
根據(jù)某型衛(wèi)星信息采集系統(tǒng)的導(dǎo)航數(shù)據(jù)的通信需求,且為保證信息采集的實(shí)時(shí)可靠, 文中應(yīng)用CAN 總線完成整個(gè)信息采集系統(tǒng)設(shè)計(jì)。
1 信息采集系統(tǒng)設(shè)計(jì):
由于衛(wèi)星的運(yùn)行環(huán)境復(fù)雜,采集的陀螺組合數(shù)據(jù)等會(huì)有相應(yīng)的誤差,因此需要對(duì)導(dǎo)航數(shù)據(jù)的采集進(jìn)行遙測(cè),對(duì)導(dǎo)航計(jì)算機(jī)的總線狀態(tài)進(jìn)行監(jiān)測(cè)。本系統(tǒng)根據(jù)某型衛(wèi)星的通信需要,利用CAN 總線完成整個(gè)信息采集及實(shí)時(shí)監(jiān)測(cè)。信息采集系統(tǒng)的框圖如圖1 所示。
[!--empirenews.page--]
1.1 系統(tǒng)硬件設(shè)計(jì):
由于TI 公司的TMS320F2812 型DSP 在軍事上已有應(yīng)用, 且根據(jù)各種性能的比較, 本系統(tǒng)采用TMS320F2812 型DSP 作為導(dǎo)航計(jì)算機(jī),進(jìn)行下位機(jī)的數(shù)據(jù)發(fā)送,其中eCAN 模塊是TMS320F2812 DSP 片上的增強(qiáng)型CAN 控制器, 其性能較之已有的DSP 內(nèi)嵌CAN 控制器有較大的提高, 數(shù)據(jù)傳輸更加靈活方便,數(shù)據(jù)量更大,可靠性更高,功能更加完備。
上位機(jī)采用工控機(jī), 其中由ADLINK 的PCI/cPCI-7841CAN 總線接口卡進(jìn)行數(shù)據(jù)接收。該卡可同時(shí)操作兩個(gè)獨(dú)立的CAN 網(wǎng)絡(luò),可編程傳輸速率可高達(dá)1 Mb/s,通過(guò)直接內(nèi)存映射能夠快速訪問(wèn)CAN 控制器,PCI 總線即插即用, 其總線控制器為SJA1000,電氣接口為82C250。
信息采集系統(tǒng)的信息通信利用CAN 總線完成, 其CAN總線接口電路如圖2 所示, 其中獨(dú)特之處是在收發(fā)器PCA82C250 的輸出引腳CANH 和CANL 之間并聯(lián)一個(gè)終端電阻R 為120 Ω,解決了遠(yuǎn)近端阻抗不匹配的影響。
如圖1 所示,由TMS320F2812 DSP 的eCAN 模塊發(fā)送陀螺組合數(shù)據(jù)及溫度值等, 上位機(jī)的PCI/cPCI-7841 型CAN 總線接口卡進(jìn)行數(shù)據(jù)接收,從而完成整個(gè)信息采集及監(jiān)測(cè)過(guò)程。
1.2 系統(tǒng)軟件設(shè)計(jì):
系統(tǒng)軟件主要完成基于CAN 總線的數(shù)據(jù)通信, 并在接收數(shù)據(jù)之后按要求對(duì)采集的導(dǎo)航數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換成實(shí)際所需數(shù)據(jù)類型,對(duì)陀螺組合的狀態(tài)進(jìn)行監(jiān)測(cè)。
本系統(tǒng)CAN 總線通信報(bào)文格式采用CAN2.0B 擴(kuò)展模式,通信數(shù)據(jù)格式主要是對(duì)CAN 總線協(xié)議中的(仲裁場(chǎng)ArbitrationField)和(數(shù)據(jù)場(chǎng)Data Field)進(jìn)行定義,要求數(shù)據(jù)傳輸速率為500 Kb/s。協(xié)議幀格式如圖3 所示。
系統(tǒng)的接收軟件設(shè)計(jì)流程圖如圖4 所示。
[!--empirenews.page--]
在使用CAN 接口卡之前首先要對(duì)卡進(jìn)行波特率、傳輸報(bào)文格式等參數(shù)的初始化。
1) 初始化CAN 總線的傳輸報(bào)文格式為提供29 位地址的CAN2.0B 擴(kuò)展模式;2) 初始化CAN 總線的波特率為500 Kb/s。
利用PCI/cPCI -7841CAN 接口卡的CanOpen-Driver () 函數(shù)打開(kāi)CAN 端口, 用CanConfigPort () 函數(shù)進(jìn)行初始化,用CanSendMsg()函數(shù)發(fā)送數(shù)據(jù)包,用Can-RcvMsg()函數(shù)接收數(shù)據(jù)包,用CanCloseDriver () 函數(shù)關(guān)閉端口[3]。創(chuàng)建接收線程,接收數(shù)據(jù)之后按要求對(duì)數(shù)據(jù)進(jìn)行處理。應(yīng)用MFC 制作通信界面。注意,線程函數(shù)只能是靜態(tài)成員函數(shù),或者是在類外面聲明的一個(gè)函數(shù)。
初始化程序如下:
PORT_STRUCT setPort;long handle[2];HANDLE rcvEvent0;HANDLE rcvEvent1;setPort.mode = 1; // 0 : 11-bit ; 1 : 29-bit CAN networksetPort.accCode = 0; // Only ID = accCode can pass thefiltersetPort.accMask = 0x7FF; // Don't care bitsetPort.baudrate = 2; // 0:125 Kb/s; 1:250 Kb/s; 2:500 Kb/s;3:1 Mb/s//open porthandle[0] = CanOpenDriver(0, 0);handle[1] = CanOpenDriver(0, 1);CanConfigPort(handle[0], &setPort);CanConfigPort(handle[1], &setPort);//get the receive event handleCanGetReceiveEvent(handle[0], &rcvEvent0);CanGetReceiveEvent(handle[1], &rcvEvent1);系統(tǒng)軟件界面如圖5 所示。
2 實(shí)驗(yàn)結(jié)果:
經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,該信息采集系統(tǒng)采集的數(shù)據(jù)經(jīng)過(guò)通信后不變,確保了信息采集的可靠、準(zhǔn)確。
3 結(jié)束語(yǔ):
由于基于CAN 總線的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性,同時(shí)由于TMS320F2812 DSP 的eCAN 模塊使數(shù)據(jù)傳輸更加靈活方便,數(shù)據(jù)量更大,可靠性更高,功能更加完備,用該DSP 進(jìn)行下位機(jī)的數(shù)據(jù)發(fā)送,PCI/cPCI CAN 接口卡進(jìn)行數(shù)據(jù)接收,從而完成信息采集,并對(duì)采集的數(shù)據(jù)進(jìn)行相應(yīng)處理,對(duì)陀螺組合的狀態(tài)進(jìn)行監(jiān)測(cè),這對(duì)衛(wèi)星等的導(dǎo)航有著重要意義。