《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > CAN總線在野外地震數(shù)據(jù)傳輸中的應(yīng)用
CAN總線在野外地震數(shù)據(jù)傳輸中的應(yīng)用
來源:電子技術(shù)應(yīng)用2013年第9期
陳 瑛,宋俊磊,王典洪
中國地質(zhì)大學(xué)(武漢) 機械與電子信息學(xué)院,湖北 武漢430074
摘要: 野外地震數(shù)據(jù)傳輸和組網(wǎng)技術(shù)是地震臺網(wǎng)建設(shè)中的重要組成部分,關(guān)系著地震數(shù)據(jù)的實時性、有效性等問題。采用CAN總線連接分散的地震采集點,并利用ARM微處理器、多任務(wù)操作系統(tǒng)Linux和應(yīng)用程序框架Qt共同構(gòu)建地震臺網(wǎng)局部管理系統(tǒng),大大簡化了流動站管理任務(wù),為組建更大規(guī)模的流動采集站提供了可能。
關(guān)鍵詞: ARM CAN總線 野外傳輸 Linux QT
中圖分類號: TH762
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)09-0034-04
Application of CAN bus in field seismic data transmission
Chen Ying,Song Junlei,Wang Dianhong
Faculty of Mechanical & Electronic Information,China University of Geosciences,Wuhan 430074,China
Abstract: Technology of transmission and networking on field seismic data is an important part of seismic network,which concerns real-time and effectivity of seismic data.Design of connecting dispersed data acquisition nodes via CAN bus is detailed. A local seismic management system is constructed based on ARM microprocessor, multitask operating system Linux as well as application framework Qt,that simplifies management tasks of mobile station and makes it possible to construct larger-scale mobile station.
Key words : CAN bus;field communication;ARM;Linux;Qt

    目前,地震預(yù)報的信息來源主要依靠遍布在各處的地震觀測臺站所監(jiān)測到的地震數(shù)據(jù)。隨著地震觀測臺網(wǎng)規(guī)模日益擴大,實時性和數(shù)據(jù)量的要求也在不斷提高。除了固定的地方地震觀測臺站以外,還有大量野外流動地震觀測站。流動觀測站主要對一定時間和地區(qū)內(nèi)的數(shù)據(jù)進(jìn)行強化觀測,用以提高監(jiān)測能力和異常跟蹤能力,并可以針對多種物理量進(jìn)行采集,將數(shù)據(jù)反饋到臺網(wǎng)中心[1]。因此,一個流動站常常會布置數(shù)量眾多而又分散的采集點,而如何將這些分散的采集點的數(shù)據(jù)傳輸?shù)降卣鹋_網(wǎng),是野外流動觀測技術(shù)的關(guān)鍵之一。

    在野外復(fù)雜環(huán)境中,通常將采集節(jié)點數(shù)據(jù)匯總至流動站,再由流動站統(tǒng)一接入互聯(lián)網(wǎng)。局部數(shù)據(jù)的傳輸方式可有多種選擇,需要綜合考慮距離、便捷性、可靠性及成本等多種因素。本文中設(shè)計了一種采用控制器局域網(wǎng)(CAN)進(jìn)行地震數(shù)據(jù)傳輸?shù)姆绞剑詽M足分散的采集點能在相對較廣范圍內(nèi)進(jìn)行組網(wǎng)通信的要求。
1 系統(tǒng)框架
    本文以激光多普勒地震儀項目為背景進(jìn)行系統(tǒng)構(gòu)建,主要解決將分散的采集點進(jìn)行集中管理的問題。由于野外采集點數(shù)量眾多,且安裝位置較分散,若都與流動站之間直接組建局部網(wǎng)絡(luò)連接,則無論采用何種組網(wǎng)方式,都必將加重人力、物力的投入,同時也會加重流動站的管理負(fù)擔(dān)。因此,本文采用中繼站的思想,將一定區(qū)域內(nèi)的采集點利用總線方式匯總到主控機上,再由主控機統(tǒng)一將數(shù)據(jù)傳輸?shù)搅鲃诱荆到y(tǒng)結(jié)構(gòu)如圖1所示。采用這種分布式結(jié)構(gòu),一方面可以降低采集點組建網(wǎng)絡(luò)的成本,另一方面主控機可以取代部分流動站的功能,對本局域網(wǎng)內(nèi)的采集點進(jìn)行管理和監(jiān)控,便于組成規(guī)模更大的野外流動站。

    系統(tǒng)采用的控制器局域網(wǎng)(CAN)是一種ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,能有效支持具有很高安全等級的分布實時控制。相對于其他總線,CAN總線具有傳輸距離遠(yuǎn)、速度較快、抗干擾能力強、介質(zhì)簡單、可靠性高等優(yōu)勢[2-3],適合野外無人值守的環(huán)境。
2 采集節(jié)點的CAN通信實現(xiàn)
    項目中采集點的主控芯片采用TI公司C54系列DSP,因芯片不帶CAN控制端口,所以要在DSP平臺上實現(xiàn)CAN通信節(jié)點的設(shè)計。
2.1 基于DSP的傳輸節(jié)點設(shè)計
    項目選取SPI接口的獨立控制器MCP2515作為總線控制端,收發(fā)器采用帶有隔離的總線收發(fā)器ADM3054,該芯片直接將隔離器和收發(fā)器集成到一起,省去了控制器與收發(fā)器之間的光耦隔離,同時也可解決控制器與收發(fā)器之間的電平匹配問題,簡化外圍電路設(shè)計。
    將DSP的多通道緩沖串行口(McBSP)配置成SPI兼容模式,這種模式下每一幀的長度是固定的。但MCP2515的SPI控制指令長度并不統(tǒng)一,因此,采取折中方案以最長的指令位數(shù)來配置串行口。
    使用SPI模式通信時,關(guān)鍵的問題是時序的匹配,因為DSP的工作時鐘頻率遠(yuǎn)高于SPI傳輸時鐘頻率,所以需要在讀操作時加入足夠長的延時。圖2中的(a)、(b)可反映這一情況,采用控制器的環(huán)回模式進(jìn)行測試,DataSend數(shù)組中存放的是發(fā)送的8 B數(shù)據(jù),RecvBuff數(shù)組中存放的則是通過SPI讀取接收數(shù)據(jù)寄存器得到的值。圖2(a)是沒有加入足夠延時的讀操作,從虛線框標(biāo)出的數(shù)據(jù)看出,讀操作在時間上發(fā)生了錯位,當(dāng)前的讀操作實際讀到的是上一個指令傳送回來的數(shù)據(jù),而圖2(b)在加入了足夠長的延時之后,能在時間上對應(yīng),讀到正確的數(shù)值。

2.2 節(jié)點的通信策略
    CAN協(xié)議所采用的對報文進(jìn)行地址編碼的方式便于在總線上增刪節(jié)點。在本項目中,由于各個節(jié)點都只與主控機進(jìn)行通信,所以,充分利用CAN報文幀ID識別碼的特性,將發(fā)送幀的識別碼、本節(jié)點的編碼以及本節(jié)點接收濾波器的識別碼相統(tǒng)一。而主控機的節(jié)點則可以讀取所有總線上的報文,所采用的通信策略如圖3所示,這樣的設(shè)計實際上就將原先總線式的拓?fù)浣Y(jié)構(gòu)轉(zhuǎn)換成了類似星形拓?fù)涞慕Y(jié)構(gòu),便于主機管理所有節(jié)點。

3 主控制點的設(shè)計
    相對于采集節(jié)點單一的采集處理任務(wù)而言,主控機需要實現(xiàn)更多的功能,單任務(wù)的MCU則無法滿足要求。因此,本文選用嵌入式微處理器ARM11作為主控機的硬件平臺,ARM處理器具有豐富的外設(shè)接口和良好的實時控制性能,無論從尋址空間還是處理性能上,都要優(yōu)于一般的單片機,適合充當(dāng)小型控制中心。
3.1 Linux下CAN網(wǎng)絡(luò)設(shè)備驅(qū)動的實現(xiàn)
    項目中移植了Linux 3.0.1版本內(nèi)核作為軟件運行的系統(tǒng)平臺,內(nèi)核會為驅(qū)動提供統(tǒng)一的接口。在較新版本的內(nèi)核中,CAN設(shè)備已經(jīng)不再簡單定義成字符設(shè)備,而是定義成網(wǎng)絡(luò)設(shè)備,這更接近于CAN是一種局域網(wǎng)的本質(zhì),從而可以使用Socket套接字操作CAN設(shè)備,并使用內(nèi)核提供的高級功能。
    對內(nèi)核已提供的MCP2515的驅(qū)動文件進(jìn)行修改以符合硬件平臺的實現(xiàn)。通過定義mcp251x_priv結(jié)構(gòu)體來管理設(shè)備所有的信息,如下所示:
struct mcp251x_priv {
    struct can_priv       can;
    struct net_device *net;
    struct spi_device *spi;
    ……
};
    以上3個結(jié)構(gòu)體變量分別存放了設(shè)備需要使用的協(xié)議層、網(wǎng)絡(luò)層和硬件層的相關(guān)信息。通常,網(wǎng)絡(luò)設(shè)備驅(qū)動模塊主要包括網(wǎng)絡(luò)協(xié)議接口層、網(wǎng)絡(luò)設(shè)備接口層、設(shè)備驅(qū)動功能層和網(wǎng)絡(luò)設(shè)備與媒介層4層[4],各部分模塊在內(nèi)核中的結(jié)構(gòu)關(guān)系如圖4所示。設(shè)備通過SPI子系統(tǒng)來實現(xiàn)硬件層操作,網(wǎng)絡(luò)設(shè)備與SPI設(shè)備之間的連接橋梁是驅(qū)動功能層struct net_device_ops,通過它向上層提供網(wǎng)絡(luò)設(shè)備的底層硬件操作接口函數(shù):
struct net_device_ops mcp251x_netdev_ops = {
    .ndo_open = mcp251x_open,
    .ndo_stop = mcp251x_stop,
    .ndo_start_xmit = mcp251x_hard_start_xmit,
};

    采用“頂半部”和“底半部”的機制來處理中斷,可以解決在中斷中讀寫SPI耗時的問題,這種機制將耗時過長的中斷程序放到更安全的時段中運行,以使系統(tǒng)能及時響應(yīng)其他的中斷請求[5]。因此,僅僅在中斷函數(shù)中喚醒一個處理函數(shù)的工作隊列:schedule_work(&priv->irq_
work),而將真正的處理程序放到這個工作隊列中運行,以保證系統(tǒng)實時響應(yīng)的性能。
    運行驅(qū)動還需要向內(nèi)核注冊必要的硬件信息,如晶振頻率(.oscillator_frequency)、SPI總線號(.bus_num)、硬件中斷號(.irq)等硬件信息。其中設(shè)備名(.modalias)必須要和驅(qū)動中定義的設(shè)備名相同,否則內(nèi)核無法把這些信息傳遞到驅(qū)動中。
struct mcp251x_platform_data mcp251x_info = {
    .oscillator_frequency = 8000000,
    .board_specific_setup = mcp251x_ioSetup,
    ……
};
struct spi_board_info spi_mcp251x_info[] = {
    {    .modalias = "mcp2515",
        .platform_data = &mcp251x_info,
        .irq = IRQ_EINT(16),
        .bus_num = 1,
    ……
    },
};
3.2 基于Qt的控制應(yīng)用程序開發(fā)
    上層應(yīng)用程序是實現(xiàn)主控制點所有功能的入口,也是人機交互的平臺。項目采用跨平臺的C++應(yīng)用程序開發(fā)框架Qt來實現(xiàn)圖形化用戶界面程序的開發(fā),其具有良好的適應(yīng)性和可移植性[6]。
    本系統(tǒng)中移植了4.8.0版本的Qt庫,如圖5所示。項目應(yīng)用程序的主要框架通過窗體部件類QWidget來構(gòu)建。為了使界面更直觀,加入了對標(biāo)簽窗體類QTabWidget的支持。同時,主控機的Socket CAN通信功能由多線程來實現(xiàn),多線程機制可以使Qt程序在同時運行多個阻塞式任務(wù)時,不會影響用戶界面的響應(yīng)。

 

 

    子線程類RecvThrd主要實現(xiàn)對CAN口的監(jiān)聽任務(wù),并通過信號-槽機制將數(shù)據(jù)傳給主線程,重寫虛成員函數(shù)void RecvThrd :: run( )加載新的線程任務(wù)。Socket CAN的使用類似于其他網(wǎng)絡(luò)協(xié)議操作,主要包括建立套接字、綁定端口和監(jiān)聽等,不同的是CAN通信不需要與對方建立連接,主要實現(xiàn)方式如下:

void RecvThrd :: run( )
{
    rv_sk=socket(PF_CAN,SOCK_RAW,CAN_RAW);
    recv_addr.can_family = AF_CAN;
    recv_addr.can_ifindex = 0;
    bind(rv_sk, (struct sockaddr *)&recv_addr, len);
    recvfrom(rv_sk,(void*)&recv_frame,sizeof(struct can_frame),0,(struct sockaddr *)&recv_addr, &len);
    ……
}
    如圖6所示,使用繪圖類QPainter在子窗口Graph中實時顯示動態(tài)數(shù)據(jù)曲線和坐標(biāo)。繪制坐標(biāo)曲線時首先要使用QPainter的視窗轉(zhuǎn)換函數(shù)將Qt中默認(rèn)的繪圖坐標(biāo)原點從屏幕的左上角移到左下角。動態(tài)曲線采用折線方式繪制,當(dāng)曲線超過一定寬度后,會實時向左平移。由于在Qt中使用專門定義的數(shù)據(jù)類型,所以C中的通用數(shù)據(jù)類型都需經(jīng)過特定轉(zhuǎn)換后才能供Qt使用和顯示。管理數(shù)據(jù)和文件時使用流操作可有效減少系統(tǒng)調(diào)用次數(shù),提高運行速度[7]。
4 測試與總結(jié)
    將Qt應(yīng)用程序交叉編譯后,下載到ARM平臺上運行,產(chǎn)生圖6中的標(biāo)簽式窗口界面。在構(gòu)造主窗體時傳入Qt :: FramelessWindowHint參數(shù),可以讓界面不產(chǎn)生標(biāo)題欄,使窗口界面能準(zhǔn)確并完整地顯示在液晶屏上。
    當(dāng)主線程檢測到新的地震采集節(jié)點號時,會彈出消息框通知用戶處理,新節(jié)點會被加入每個子窗口的設(shè)備列表中,或被丟棄。引入Qt的互斥鎖QMutex機制,可以有效避免因命令沒有得到及時處理而導(dǎo)致重復(fù)添加相同ID號的情況。在另外兩個子窗口中可以瀏覽接收的數(shù)據(jù)以及管理對應(yīng)節(jié)點。

    測試表明,基于ARM平臺的主控機可以滿足數(shù)據(jù)收發(fā)、實時顯示、節(jié)點監(jiān)控以及異常記錄等多任務(wù)要求,在不影響與地震采集節(jié)點間通信的前提下,實現(xiàn)良好的人機交互和實時控制性能,在整個網(wǎng)絡(luò)系統(tǒng)中起中繼站的作用,方便了流動站對分散的地震采集節(jié)點的控制和管理。
    本文設(shè)計了一種采用CAN總線通信技術(shù)在地震數(shù)據(jù)采集點與流動站之間進(jìn)行數(shù)據(jù)傳輸?shù)姆绞剑肅AN總線通信傳輸距離長、抗干擾能力強、易于施工布線的特點,以及微處理器ARM優(yōu)越的實時控制能力和良好的通信能力,在地震采集節(jié)點與流動站之間構(gòu)建中間控制點,以星形拓?fù)涞姆绞綄⒁欢ǚ秶鷥?nèi)分散的采集點集中控制。同時,通過在ARM硬件平臺上構(gòu)建Linux多任務(wù)系統(tǒng)平臺,采用Qt嵌入式應(yīng)用程序框架搭建人機交互界面,實現(xiàn)了良好的實時控制和管理功能。這種基于CAN總線和嵌入式技術(shù)的地震數(shù)據(jù)傳輸方式,既便于野外環(huán)境中網(wǎng)絡(luò)的組建和拓展,也有利于減輕流動站的管理任務(wù)。
參考文獻(xiàn)
[1] 王晨,滕云田,王曉美,等.地震前兆野外流動觀測無線組網(wǎng)系統(tǒng)[J].地球物理學(xué)進(jìn)展,2012,27(3):945-949.
[2] 郭成鎮(zhèn),何迪.CAN總線的PLC通信網(wǎng)絡(luò)的研究[J].通信技術(shù),2012,45(7):51-53,74.
[3] 梁金芝.CAN總線協(xié)議在嵌入式系統(tǒng)中的應(yīng)用[J].電腦知識與技術(shù),2011,7(20):5003-5004.
[4] 宋寶華.Linux設(shè)備驅(qū)動開發(fā)詳解(第2版)[M].北京:人民郵電出版社,2010.
[5] CORBET J,RUBIN A,KROAH-HARTMAN G.Linux設(shè)備驅(qū)動程序(第3版)[M].魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2005.
[6] BLANCHETTE J,SUMMERFIELD M.C++ GUI Qt 4編程(第2版)[M].閆鋒欣,譯.北京:電子工業(yè)出版社,2008.
[7] MATTHEW N,STONES R.Linux程序設(shè)計(第4版)[M].陳健,宋健建,譯.北京:人民郵電出版社,2010.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区三区视频在线观看| 亚洲福利专区| 国产揄拍国内精品对白| 国产精品jizz在线观看美国| 欧美好吊妞视频| 欧美不卡视频一区发布| 久久女同互慰一区二区三区| 久久成人18免费观看| 羞羞色国产精品| 欧美一区二区三区播放老司机| 亚洲欧美视频一区二区三区| 亚洲欧美另类综合偷拍| 亚洲欧美自拍偷拍| 新狼窝色av性久久久久久| 亚洲伊人久久综合| 午夜精品久久久久久久男人的天堂| 亚洲午夜小视频| 亚洲影视综合| 亚洲欧美成人一区二区三区| 午夜精品美女自拍福到在线| 一区二区三区日韩在线观看| 欧美日韩免费观看一区=区三区| 欧美人与禽猛交乱配视频| 欧美日韩91| 国产精品v欧美精品v日韩 | 亚洲电影免费| 久久国产精品亚洲va麻豆| 亚洲综合精品自拍| 亚洲免费视频在线观看| 午夜精品久久久久| 久久久久久九九九九| 美女国内精品自产拍在线播放| 久久精品一区二区三区不卡牛牛| 开元免费观看欧美电视剧网站| 欧美大片一区| 国产精品爱久久久久久久| 国产精品青草久久久久福利99| 国产色产综合产在线视频| 精品av久久707| 日韩午夜在线电影| 亚洲欧美日韩综合一区| 亚洲国产精品电影在线观看| av成人手机在线| 午夜亚洲视频| 狂野欧美一区| 欧美视频亚洲视频| 国产一区99| 亚洲欧洲精品成人久久奇米网| 亚洲私人影吧| 久久精品论坛| 在线亚洲电影| 久久精品一本久久99精品| 久久精品人人爽| 欧美精品 国产精品| 国产精品久久久一区二区三区| 狠狠爱www人成狠狠爱综合网| 亚洲精品小视频| 一区二区三区高清| 久久精品色图| 亚洲一区日韩| 免费视频一区| 国产精品色在线| 亚洲国产欧美一区二区三区同亚洲| 亚洲网站视频福利| 亚洲区免费影片| 欧美一区=区| 欧美日韩国产综合视频在线| 国产一区二区三区观看| av成人免费| 亚洲国产小视频| 欧美主播一区二区三区美女 久久精品人 | 久久精品国产第一区二区三区最新章节| 99国内精品久久| 久久久久久亚洲精品中文字幕| 欧美日韩国产首页| 国内成人在线| 99国产精品99久久久久久| 久久国内精品自在自线400部| 亚洲专区一区二区三区| 欧美77777| 国产一区二区三区四区老人| 亚洲精选一区二区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美国产第一页| 国产精品久久久久久久久久久久久久 | 亚洲第一毛片| 欧美一区二区性| 亚洲一区日韩| 欧美麻豆久久久久久中文| 国产综合网站| 亚洲欧美中文字幕| 亚洲性av在线| 欧美女同在线视频| 在线观看一区二区精品视频| 欧美在线精品免播放器视频| 一本一本久久| 欧美国产在线观看| 在线免费观看日本一区| 久久精品国产96久久久香蕉| 欧美在线资源| 国产精品视频一二三| 一区二区三区你懂的| 99视频一区| 久久久久久久久岛国免费| 国产精品一区二区在线观看不卡 | 亚洲午夜视频| 欧美精品在线观看播放| 亚洲国产高清自拍| 亚洲国产视频一区| 免费成人黄色av| 国产欧美一区二区精品忘忧草 | 91久久精品国产91久久性色| 久久久久综合网| 久久精品日产第一区二区| 欧美日韩精品久久久| 国产精品乱子乱xxxx| 一区二区三区视频免费在线观看| 99天天综合性| 欧美黄色日本| 亚洲欧洲精品天堂一级| 日韩一区二区高清| 欧美人与性动交cc0o| 亚洲精品一级| 欧美一区亚洲| 久久手机免费观看| 黄色av日韩| 91久久一区二区| 欧美精品情趣视频| 99国内精品久久久久久久软件| 亚洲视频免费在线| 国产精品www网站| 亚洲一区二区在线视频| 亚洲精选一区二区| 欧美激情第二页| 日韩视频一区二区三区在线播放免费观看 | 欧美一区二区在线观看| 久久久人成影片一区二区三区观看| 国产中文一区二区| 亚洲高清在线观看| 欧美国产一区视频在线观看| 亚洲精品一区久久久久久| 亚洲欧美999| 国产亚洲午夜| 91久久精品国产91性色| 欧美精品日韩综合在线| 中文精品视频一区二区在线观看| 午夜精品视频在线| 国产一区二区精品丝袜| 亚洲国产一区在线| 欧美日韩免费观看中文| 亚洲专区在线| 蜜臀av一级做a爰片久久| 亚洲美洲欧洲综合国产一区| 欧美亚洲一区二区三区| 国语自产偷拍精品视频偷| 亚洲精品极品| 国产精品免费观看在线| 亚洲成色www8888| 欧美日韩国产123| 性做久久久久久| 欧美精品成人一区二区在线观看| 在线视频精品一区| 久久精品一二三区| 亚洲精品日韩在线| 久久电影一区| 亚洲激情另类| 欧美有码在线视频| 亚洲高清免费视频| 亚洲综合丁香| 136国产福利精品导航网址应用| 亚洲作爱视频| 国产亚洲精品激情久久| 亚洲精品网站在线播放gif| 国产精品欧美日韩一区| 亚洲欧洲日产国产网站| 国产精品日本精品| 亚洲精品乱码| 国产欧美日韩激情| 99精品热视频| 国产一区二区黄| 亚洲午夜精品一区二区三区他趣 | 亚洲福利国产精品| 午夜精品视频网站| 91久久黄色| 久久久久久久综合狠狠综合| 99re66热这里只有精品3直播| 久久九九久精品国产免费直播| 亚洲狼人精品一区二区三区| 久久精品国产综合| 正在播放亚洲一区| 欧美精品videossex性护士| 欧美在线观看一区二区| 欧美日韩精品在线| 亚洲激情影视| 国产午夜精品全部视频播放| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久国产精品一区二区| 国产精品美女www爽爽爽| 日韩天天综合| 激情校园亚洲|