基于CAN總線技術(shù)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)分析
單片機(jī)程序主要包括節(jié)點(diǎn)初始化程序、報(bào)文發(fā)送程序、報(bào)文接收程序以及CAN總線出錯(cuò)處理程序等。單片機(jī)主程序流程圖見圖3,程序用C51語言編寫。
CAN控制器對于CPU來說是以確保雙方獨(dú)立工作的寄存器映像外圍設(shè)備出現(xiàn)的,微控制器和CPU之 間狀態(tài)、控制和命令的交換都是通過在復(fù)位模式或工作模式下對這些寄存器的讀寫來完成的。初始化CAN內(nèi)部寄存器時(shí)注意使得各節(jié)點(diǎn)的位速率必須一致,而且接、發(fā)雙方必須同步。發(fā)送一幀數(shù)據(jù)采用高速DMA,它允許在最多2個(gè)周期內(nèi),在CAN控制器和主RAM之間傳送一個(gè)完整的報(bào)文(最多10個(gè)字節(jié))。CPU功能的極大增強(qiáng)是由于高速傳送是在后臺(tái)完成的。一次成功的DMA傳送后DMA位被復(fù)位。DMA傳送期間,CPU可以處理下一條指令,然而,不允許對數(shù)據(jù)存貯器、CANADR、CANDAT、CANCON或CANSTA的訪問。置DMA位后,各個(gè)中斷均被禁止,直至傳送結(jié)束。復(fù)位狀態(tài)期間(復(fù)位請求位為高)不能進(jìn)行DMA傳送。為提高通信的實(shí)時(shí)性,報(bào)文的接收采用中斷接收方式,這樣也可保證接收緩存器不會(huì)出現(xiàn)數(shù)據(jù)溢出現(xiàn)象。
主機(jī)程序包括測量和控制子程序、通信子程序、數(shù)據(jù)處理子程序等。數(shù)據(jù)測量和控制子程序用來控制下位機(jī)進(jìn)行測量,通信子程序根據(jù)通信協(xié)議發(fā)送控制命令并接收測量數(shù)據(jù),數(shù)據(jù)處理子程序?qū)崿F(xiàn)對數(shù)據(jù)的預(yù)處理和存儲(chǔ)。主機(jī)程序用C語言編寫。主機(jī)程序流程見圖4。
在對水下物理場數(shù)據(jù)進(jìn)行采集時(shí),需要測量的信號共有3種8路:電場三個(gè)分量,磁場三個(gè)分量以及傳感器在海底的傾斜角度兩個(gè)分量。實(shí)際測量時(shí),整個(gè)測量體(包括傳感器,信號調(diào)理電路,水密容器等)放置在海底(約30米深),測量體距離岸邊接收主機(jī)120米。其他一些實(shí)驗(yàn)參數(shù)設(shè)置如下:傳輸波特率為1Mbps,各節(jié)點(diǎn)的采樣頻率為10KHz,每采樣4路信號向主機(jī)發(fā)送一次數(shù)據(jù),每次送出4組8字節(jié)數(shù)據(jù),分辨率:0.0495μA/m;信號輸入范圍:-50mV~50mV;信號頻率帶寬:500Hz~800Hz;供電電壓:±5V,9V,±15V。測量系統(tǒng)在較復(fù)雜的海洋環(huán)境條件下從上午9:00開始工作,中間不停機(jī),到下午5:00測量完畢。測量結(jié)果經(jīng)過分析與理論計(jì)算吻合說明該系統(tǒng)工作穩(wěn)定、可靠。此外,全套測量系統(tǒng)硬件設(shè)備(包括計(jì)算機(jī)與傳感器)造價(jià)低于3萬元。
CAN總線已被公認(rèn)為是最有前途的幾種現(xiàn)場總線之一,在一些高檔汽車車載系統(tǒng)中已經(jīng)得到了廣泛應(yīng)用,也因其高性能價(jià)格比、實(shí)現(xiàn)簡單等突出優(yōu)點(diǎn)深得越來越多的研發(fā)人員的青睞。本文的創(chuàng)新點(diǎn)是提出一種基于CAN總線結(jié)構(gòu)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)方法,將CAN總線技術(shù)應(yīng)用于工業(yè)現(xiàn)場控制中,設(shè)計(jì)了硬 件電路和軟件,并得到實(shí)際應(yīng)用。該系統(tǒng)可在復(fù)雜的海洋中實(shí)現(xiàn)對8路傳感器信號的實(shí)時(shí)采集與傳送,實(shí)驗(yàn)證明該系統(tǒng)具有結(jié)構(gòu)簡單、性能可靠、傳輸距離遠(yuǎn)、價(jià)格低廉等優(yōu)點(diǎn)。該系統(tǒng)設(shè)計(jì)方法也可應(yīng)用到其他需要數(shù)據(jù)采集的多節(jié)點(diǎn)系統(tǒng)中去。
評論