當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Linux的EPA無線通信卡的實(shí)現(xiàn)

摘要:闡述了基于Linux的EPA無線通信卡的實(shí)現(xiàn)過程,成功地解決了IO模塊控制卡與其之間的通信問題,從而為實(shí)現(xiàn)了基于無線局域網(wǎng)的EPA網(wǎng)絡(luò)控制系統(tǒng)研發(fā)提供了可靠保證。同時(shí)進(jìn)行了簡(jiǎn)單測(cè)試,實(shí)驗(yàn)證明測(cè)試系統(tǒng)運(yùn)行效果良好,達(dá)到了預(yù)期目標(biāo)。
關(guān)鍵詞:EPA通信卡;無線局域網(wǎng);Linux驅(qū)動(dòng)

    引言

    在工業(yè)環(huán)境中,各種現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)采集,其相互間的數(shù)據(jù)傳送、信息共享以及控制信號(hào)的收發(fā)基本上都采用電纜進(jìn)行通信。盡管現(xiàn)場(chǎng)總線技術(shù)的成熟極大地減少了現(xiàn)場(chǎng)電纜的敷設(shè)數(shù)量,正逐漸代替?zhèn)鹘y(tǒng)的DCS技術(shù)。但在某些工業(yè)現(xiàn)場(chǎng)中存在著大量移動(dòng)設(shè)備,如空中起重機(jī)使之很難在空中布線,在加固混凝土的地板下面也無法敷設(shè)電纜,貨運(yùn)通道也不便在地面布線。甚至在高溫高壓等特殊工業(yè)環(huán)境中,往往不能敷設(shè)連到計(jì)算機(jī)的電纜,現(xiàn)場(chǎng)設(shè)備間無法通過有線進(jìn)行相互間的通信,這給傳統(tǒng)的有線連接方式提出了挑戰(zhàn)。

    無線通信技術(shù)與現(xiàn)場(chǎng)總線技術(shù)有機(jī)集成,有效地解決了工業(yè)現(xiàn)場(chǎng)面臨的諸多難題。

     EPA標(biāo)準(zhǔn)概述

     EPA系統(tǒng)結(jié)構(gòu)
     EPA系統(tǒng)是一種分布式系統(tǒng),有三種子網(wǎng):基于以太網(wǎng)(IEEE802.3)、無線局域網(wǎng)(IEEE802.11)和藍(lán)牙(IEEE802.15)的子網(wǎng):

     1)一個(gè)或多個(gè)基于以太網(wǎng)的EPA子網(wǎng),兼容IEEE802.3協(xié)議;
     2)一個(gè)或多個(gè)基于無線局域網(wǎng)的EPA子網(wǎng),兼容IEEE802.11a、IEEE802.11b、IEEE802.11g協(xié)議;
     3)一個(gè)或多個(gè)基于藍(lán)牙技術(shù)的EPA子網(wǎng),兼容IEEE802.15協(xié)議。

     EPA系統(tǒng)中的網(wǎng)段也可以是不同類型的子網(wǎng),即兩種或三種的結(jié)合。如基于以太網(wǎng)和無線局域網(wǎng)的兩種子網(wǎng)組成的混合網(wǎng)段。其EPA系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。

   
    圖1 EPA系統(tǒng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

    基于無線局域網(wǎng)的EPA網(wǎng)絡(luò)控制系統(tǒng)
     EPA標(biāo)準(zhǔn)制定工作組通過對(duì)適用于工業(yè)現(xiàn)場(chǎng)控制的無線局域網(wǎng)關(guān)鍵技術(shù)的研究,提出了支持無線局域網(wǎng)技術(shù)的實(shí)時(shí)分布式網(wǎng)絡(luò)控制系統(tǒng)體系結(jié)構(gòu)。該體系結(jié)構(gòu)結(jié)合工業(yè)現(xiàn)場(chǎng)環(huán)境的特點(diǎn),考慮了基于無線局域網(wǎng)的EPA控制網(wǎng)絡(luò)的實(shí)時(shí)性、可變傳輸率下的通信性能、無線傳輸距離、無線通訊的抗干擾性和無線通訊的安全性等方面的問題,開發(fā)了基于EPA的無線分散控制站。EPA無線分散控制站由IO模塊控制卡、EPA無線通信卡兩部分組成。兩塊板卡通過IO模塊控制卡上的雙端口RAM交換數(shù)據(jù),通過中斷觸發(fā)數(shù)據(jù)讀寫操作,達(dá)到通信效果。

    基于Linux的EPA無線通信卡

     EPA無線通信卡使用AT91RM9200控制器并通過USB接口加載符合802.11b協(xié)議的無線傳輸模塊,操作系統(tǒng)為L(zhǎng)inux系統(tǒng)。

    基于Linux的EPA無線通信卡的工作原理
     EPA無線通信卡運(yùn)行著EPA協(xié)議棧和功能塊(MAI、MAO、MDI、MDO)等。使用向IO模塊控制卡發(fā)中斷及響應(yīng)IO模塊控制卡中斷的方式,通過IO模塊控制卡來配置、讀取和控制現(xiàn)場(chǎng)設(shè)備。EPA無線通信卡與IO模塊控制卡之間數(shù)據(jù)傳輸是直接通過讀寫IO模塊控制卡上的雙端口RAM實(shí)現(xiàn)的。EPA無線通信卡通過其上面的USB接口加載了符合802.11b協(xié)議的無線傳輸模塊,通過該模塊實(shí)現(xiàn)與EPA有線網(wǎng)絡(luò)相連,使其與相應(yīng)的EPA工作站通信,其結(jié)構(gòu)示意圖如圖2所示。

   
    圖2 基于Linux的EPA無線通信卡的結(jié)構(gòu)示意圖

    基于Linux的EPA無線通信卡的軟件設(shè)計(jì)
     EPA無線分散控制站中無線通信卡軟件開發(fā)基于Linux操作系統(tǒng)。由于Linux系統(tǒng)基于802.11b協(xié)議的無線驅(qū)動(dòng)已經(jīng)很成熟了,而基于Linux操作系統(tǒng)的EPA協(xié)議棧軟件移植也比較容易。因此,選擇Linux系統(tǒng)會(huì)有效的提高EPA無線通信卡的開發(fā)周期。

    基于Linux的EPA無線通信卡與有線的EPA通信卡在EPA協(xié)議棧和功能塊方面大致相同,僅需將應(yīng)用程序向Linux系統(tǒng)上移植即可。但由于采用了Linux系統(tǒng)在與IO模塊控制卡通信的實(shí)現(xiàn)上就相對(duì)比較復(fù)雜了。與IO模塊控制卡通信的程序流程如圖3所示。

   
    圖3 與IO模塊控制卡通信的程序流程圖

    軟件實(shí)現(xiàn)中關(guān)鍵性問題的解決
    在Linux操作系統(tǒng)下對(duì)于中斷及其他系統(tǒng)資源的操作有特定的規(guī)范,如內(nèi)核模式操作和用戶模式操作具有不同操作權(quán)限,內(nèi)核空間與用戶空間也不能隨意互訪。導(dǎo)致如EPA協(xié)議棧無法直接對(duì)雙端口RAM進(jìn)行讀寫,也無法直接向I/O模塊控制卡收發(fā)中斷,在Linux系統(tǒng)下,只有在內(nèi)核模式下才可以做到。那么,怎么樣將數(shù)據(jù)寫入到雙端口RAM中,然后發(fā)送中斷信號(hào)通知對(duì)方及如何響應(yīng)對(duì)方的中斷并從雙端口RAM中讀數(shù)是軟件實(shí)現(xiàn)中的關(guān)鍵性問題。

     發(fā)中斷與注冊(cè)中斷處理程序的實(shí)現(xiàn)
    由于發(fā)中斷與注冊(cè)中斷處理程序是對(duì)硬件直接操作,在Linux系統(tǒng)下用戶程序無法直接對(duì)其硬件進(jìn)行操作。因此,必須編寫相應(yīng)的內(nèi)核模塊,在內(nèi)核模塊中完成發(fā)中斷與注冊(cè)中斷處理程序的操作。在用戶程序中動(dòng)態(tài)加載相應(yīng)內(nèi)核模塊來達(dá)到用戶程序發(fā)中斷與注冊(cè)中斷處理程序的效果。其注冊(cè)中斷處理程序的內(nèi)核模塊關(guān)鍵性代碼如下:

     intinit_module(void)                    //中斷注冊(cè)模塊初始化
     {
    …                                    /*初始化設(shè)置*/
    AT91_SYS->AIC_SMR[25]|=0X20;
    //設(shè)置中斷下跳沿觸發(fā)
    if(request_irq(25,epa_interrupt,SA_INTERRUPT,
    "MAIN_IRQ",NULL))
    //請(qǐng)求分配中斷號(hào)為25的快速中斷處理
    //epa_interrupt為指向處理這個(gè)中斷的中斷處理程序的指針
    {…/*進(jìn)行出錯(cuò)處理*/}
    else
      {printk("<1>request_irqok! ");
    return0;}
   }
   voidcleanup_module(void)
   {
    …/*釋放資源*/
    free_irq(25,NULL);                   //釋放中斷線25
    }
   
     在用戶程序中發(fā)中斷時(shí),通過調(diào)用system(send_riq)來動(dòng)態(tài)執(zhí)行內(nèi)核模塊程序來控制發(fā)送中斷的管腳的信號(hào),從而實(shí)現(xiàn)在用戶程序發(fā)中斷的效果。其發(fā)中斷的內(nèi)核模塊關(guān)鍵性代碼如下:

    AT91_SYS->PIOC_PER|=AT91C_PIO_PC15;
    //設(shè)置PC15IO使能
    AT91_SYS->PIOC_OER|=AT91C_PIO_PC15;
    //設(shè)置PC15輸出使能
    //發(fā)送一個(gè)方波中斷信號(hào)
    AT91_SYS->PIOC_CODR|=AT91C_PIO_PC15;
    for(i=1;i<1000;i++);
    //延時(shí),內(nèi)核中不能調(diào)用sleep()函數(shù)
    AT91_SYS->PIOC_SODR|=AT91C_PIO_PC15;

     雙端口RAM驅(qū)動(dòng)的實(shí)現(xiàn)
    由于用戶程序不能直接對(duì)雙端口RAM進(jìn)行讀寫,因此必須根據(jù)用戶程序的需要編寫雙端口RAM的驅(qū)動(dòng),以內(nèi)核模塊的形式動(dòng)態(tài)加載到系統(tǒng)中去。Linux系統(tǒng)將所有設(shè)備都看作是文件,對(duì)設(shè)備的讀寫相當(dāng)于對(duì)文件的讀寫。雙端口RAM驅(qū)動(dòng)模塊加載后,用戶程序就可以像讀寫文件一樣,間接的對(duì)雙端口RAM進(jìn)行讀寫了。其雙端口RAM驅(qū)動(dòng)模塊的主要實(shí)現(xiàn)過程如下:

    staticintwrite_dpram(structfile*file,constchar*buf,u32count,loff_t*f_pos)
    {……                                                       /*寫初始化*/
    copy_from_user(wMessage,buf,count);
    ……                                                    /*進(jìn)行數(shù)據(jù)處理*/
    for(i=0;i<count;i++)
    {writeb(wMessage[i],base+wadd);
      wadd++;}……                             /*向IO模塊控制卡發(fā)中斷信號(hào)*/
    }
    staticintread_dpram(structfile*file,char*buf,u32count,loff_t*f_pos)
    {……                     /*讀函數(shù)則調(diào)用相應(yīng)的readb()和copy_to_user()函數(shù),與寫函數(shù)同理*/}
    staticintopen_dpram(structinode*inode,structfile*file)
   {……                                                      /*初始化*/
    if(!request_mem_region(AT91_DPRAM,
    BUF_LEN3sizeof(u8),DEVICE_NAME))
    {……                           /*未申請(qǐng)到該內(nèi)存空間時(shí)進(jìn)行相應(yīng)處理*/}
    //申請(qǐng)使用內(nèi)存空間
    base=ioremap(AT91_DPRAM,BUF_LEN3sizeof(u8));
    //為設(shè)備內(nèi)存區(qū)域分配虛擬地址
    ……                                              /*設(shè)置DPRAM讀寫時(shí)序*/
    }
    staticintrelease_dpram(structinode3inode,structfile3file)
    {……/*釋放相應(yīng)資iounmap()和release_mem_region();}

    以上為DPRAM設(shè)備驅(qū)動(dòng)的打開、讀寫、關(guān)閉函數(shù)的實(shí)現(xiàn),然后通過以下標(biāo)記化結(jié)構(gòu)將其驅(qū)動(dòng)的功能映射到前面的具體實(shí)現(xiàn)函數(shù)上:

    staticstructfile_operationstest_fops={
    read:read_dpram,
    write:write_dpram,
    open:open_dpram,
    release:release_dpram
    };
   
    另外,在驅(qū)動(dòng)程序初始化時(shí)必須通過register_chrdev()注冊(cè)。在加載該驅(qū)動(dòng)前要使用system("mknod/dev/設(shè)備名c主設(shè)備號(hào)次設(shè)備號(hào)")創(chuàng)建設(shè)備文件并為該設(shè)備分配設(shè)備號(hào)。

    測(cè)試系統(tǒng)

    本項(xiàng)目所搭建的測(cè)試系統(tǒng)包括EPA無線通信卡和IO模塊控制卡兩套EPA無線設(shè)備、一臺(tái)PC機(jī)及一個(gè)燈箱,如圖4所示。燈箱中的溫度傳感器與AI模塊相連,將溫度值傳遞給AI模塊,并通過設(shè)備A發(fā)送到以太網(wǎng)上。設(shè)備B接收到此溫度值后,將其與額定溫度值相比較,如果低于額定溫度值,則通過AO模塊輸出4mA~20mA電流,控制燈箱內(nèi)的可控硅模塊,進(jìn)而驅(qū)動(dòng)燈箱內(nèi)的燈泡,開始加熱;如果高于額定溫度值,則中斷AO模塊的輸出電流,切斷燈泡的電流輸入,使燈箱內(nèi)的溫度下降,從而達(dá)到保持燈箱內(nèi)溫度恒定的目的。

    實(shí)驗(yàn)證明,EPA無線通信卡與IO模塊控制卡之間數(shù)據(jù)傳輸穩(wěn)定,這個(gè)系統(tǒng)運(yùn)行效果良好,達(dá)到了預(yù)期目標(biāo),能夠滿足工業(yè)現(xiàn)場(chǎng)設(shè)備的通信要求。

   
    圖4 測(cè)試系統(tǒng)示意圖

    結(jié)語

     EPA系統(tǒng)是一種分布式系統(tǒng),將分布在現(xiàn)場(chǎng)的若干個(gè)設(shè)備連接起來一起運(yùn)作,共同完成工業(yè)生產(chǎn)過程和操作中的測(cè)量和控制。目前,無線局域網(wǎng)技術(shù)在工業(yè)控制中的應(yīng)用已成為當(dāng)今工業(yè)控制領(lǐng)域中的研究熱點(diǎn)。但將無線技術(shù)應(yīng)用于工業(yè)現(xiàn)場(chǎng)設(shè)備間的通信,并形成完整的分布式網(wǎng)絡(luò)控制系統(tǒng)還是空白,也沒相關(guān)的行業(yè)標(biāo)準(zhǔn)、國(guó)家標(biāo)準(zhǔn)和國(guó)際標(biāo)準(zhǔn),專利也很少。因此,研究開發(fā)基于無線局域網(wǎng)的EPA通訊體系和工業(yè)現(xiàn)場(chǎng)控制設(shè)備原理樣機(jī)及相關(guān)軟件,形成基于EPA的分布式無線網(wǎng)絡(luò)控制系統(tǒng),具有很強(qiáng)的原創(chuàng)性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉