技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于Linux的現(xiàn)場總線無線通信卡的實現(xiàn)

基于Linux的現(xiàn)場總線無線通信卡的實現(xiàn)

時間:2009-03-26 14:31:25來源:ronggang

導(dǎo)語:?本文闡述了基于Linux的現(xiàn)場總線無線通信卡的實現(xiàn)過程,成功地解決了IO模塊控制卡與其之間的通信問題,通過無線通信卡實現(xiàn)了無線現(xiàn)場設(shè)備通過標準的無線技術(shù)接入到現(xiàn)有的現(xiàn)場總線中
摘 要:本文闡述了基于Linux的現(xiàn)場總線無線通信卡的實現(xiàn)過程,成功地解決了IO模塊控制卡與其之間的通信問題,通過無線通信卡實現(xiàn)了無線現(xiàn)場設(shè)備通過標準的無線技術(shù)接入到現(xiàn)有的現(xiàn)場總線中。同時進行了簡單測試,實驗證明測試系統(tǒng)運行效果良好,達到了預(yù)期目標。 關(guān)鍵字:無線通信卡 現(xiàn)場總線 Linux驅(qū)動 Abstract: This paper expatiate the realization technique of fieldbus wireless communication card based on Linux, and successfully solve the problem of communication with IO card. It provides the feasibility of realization of wireless extension of fieldbus by wireless communication card. Simple testing shows that system works orderly and achieves anticipative aim. Key words: Wireless Communication Card;Fieldbus;Linux driver; 1.引言   使用無線連接設(shè)備的便利已經(jīng)導(dǎo)致了在消費電子(商業(yè))領(lǐng)域中無線技術(shù)被空前成功的應(yīng)用。在此基礎(chǔ)上基于無線技術(shù)的應(yīng)用開始出現(xiàn)在各個領(lǐng)域。在工業(yè)或工廠底層環(huán)境中,使用無線技術(shù)的優(yōu)勢更是多方面的。   第一,在工業(yè)環(huán)境中往往需要大量的布線,采用無線技術(shù)不僅會使安裝和維護的成本有效減少,而且會使設(shè)備的調(diào)整規(guī)劃和重新配置更加的容易。   第二,無線技術(shù)的引入對于解決在有化學(xué)腐蝕、震動和移動部件等惡劣環(huán)境中對各種線纜的潛在損傷等問題顯得更加有效。   第三,考慮到工廠設(shè)備中適應(yīng)性和靈活性,固定系統(tǒng)可以通過無線技術(shù)和現(xiàn)有的移動子系統(tǒng)或移動機器人連接通信。   第四,對在工廠設(shè)備進行臨時訪問任務(wù)(如診斷或程序設(shè)計等)使用無線技術(shù)會更加簡化(如使用無線手持設(shè)備)。   在解決工業(yè)環(huán)境及過程控制環(huán)境下的許多移動對象,如移動機器人與自治運輸設(shè)備之間的協(xié)調(diào);旋轉(zhuǎn)對象,如機械臂;危險環(huán)境對象的監(jiān)測與控制問題,如分布式控制等工業(yè)環(huán)境無線技術(shù)發(fā)揮極大的作用。將無線技術(shù)應(yīng)用到現(xiàn)場總線中來解決傳統(tǒng)現(xiàn)場總線存在的問題,正受到學(xué)術(shù)界和工業(yè)界的極大關(guān)注。 2.現(xiàn)場總線的無線接入方法   為了使無線技術(shù)能夠無縫而更廣泛地應(yīng)用于工業(yè)現(xiàn)場,使現(xiàn)場設(shè)備無線接入到現(xiàn)存的現(xiàn)場總線,國內(nèi)外相關(guān)領(lǐng)域的技術(shù)人員進行了一定的嘗試。按在不同層上實現(xiàn)接入可以將接入方案分為三大類:用戶層接入、數(shù)據(jù)鏈路層接入和物理層接入。   (1)用戶層接入:在用戶層設(shè)一個OPC服務(wù)器,通過OPC服務(wù)器進行有線網(wǎng)段與無線網(wǎng)段之間的數(shù)據(jù)交換。該方案其優(yōu)點是簡單易實現(xiàn),雙方可保持原有結(jié)構(gòu)不動,兩側(cè)的“連接”可隨時通過軟件的控制建立或分離。缺點是中間環(huán)節(jié)太多,實時性得不到保證。  ?。?)物理層的接入:在某些站點的有線連接“下”面加裝Modem。無線站點的信號經(jīng)過此無線收發(fā)裝置將幀格式轉(zhuǎn)換后,聯(lián)入有線網(wǎng)段接口,因此遠端的無線站點被“視為”同質(zhì)站點。這樣,所有的有線、無線站點均采用原有現(xiàn)場總線協(xié)議,只是在最底層的某些物理連接上,無線連接代替了有線的連接。其缺點是此方法僅實現(xiàn)了點對點的連接,無線站點不具有“漫游接入”的能力。  ?。?)數(shù)據(jù)鏈路層的接入:此方法源自WLAN和以太網(wǎng)的聯(lián)接方式,即在PHY層和DDL層之上加一個無線網(wǎng)關(guān)。該無線網(wǎng)關(guān)實現(xiàn)了無線網(wǎng)段數(shù)據(jù)與有線網(wǎng)段之間的數(shù)據(jù)格式轉(zhuǎn)換和轉(zhuǎn)發(fā)。原有的現(xiàn)場總線保持不動,加裝一個無線網(wǎng)段的AP接入點。當兩網(wǎng)段間有數(shù)據(jù)交換時,才會通過AP點經(jīng)過協(xié)議轉(zhuǎn)換把數(shù)據(jù)轉(zhuǎn)發(fā)到另一端。   數(shù)據(jù)鏈路層的接入是現(xiàn)階段最被關(guān)注的方法。其具體實現(xiàn)方法較多,但大多處于理論研究階段或需要對原有的現(xiàn)場總線進行改造,而工業(yè)廠家又不想使現(xiàn)正運行的現(xiàn)場總線暫停工作。這使得現(xiàn)階段的一些其無線接入技術(shù)在現(xiàn)場總線中應(yīng)用變得困難。為了使無線現(xiàn)場設(shè)備能夠應(yīng)用于工業(yè)現(xiàn)場,又不改動現(xiàn)有的現(xiàn)場總線系統(tǒng),目前較成熟的技術(shù)就是使用無線分散控制站來與原有的現(xiàn)場總線連接,實現(xiàn)現(xiàn)場設(shè)備的無線接入。無線分散控制站一般由IO模塊控制卡、無線通信卡兩部分組成。兩塊板卡通過IO模塊控制卡上的雙端口RAM交換數(shù)據(jù),通過中斷觸發(fā)數(shù)據(jù)讀寫操作,從而達到通信效果。其關(guān)鍵技術(shù)就是如何實現(xiàn)無線通信卡的軟件設(shè)計。 3.基于Linux的無線通信卡   在無線分散控制站中無線通信卡使用AT91RM9200控制器并通過USB接口加載符合802.11b協(xié)議的無線傳輸模塊,其操作系統(tǒng)為Linux系統(tǒng)。 3.1基于Linux的無線通信卡的工作原理   無線通信卡運行著現(xiàn)場總線協(xié)議棧和功能塊(MAI,MAO,MDI,MDO)等。根據(jù)所接入的現(xiàn)場總線的不同選用相應(yīng)的協(xié)議棧。使用向IO模塊控制卡發(fā)中斷及響應(yīng)IO模塊控制卡中斷的方式,通過IO模塊控制卡來配置、讀取和控制現(xiàn)場設(shè)備。無線通信卡與IO模塊控制卡之間數(shù)據(jù)傳輸是直接通過讀寫IO模塊控制卡上的雙端口RAM實現(xiàn)的。另一方面,無線通信卡通過其上面的USB接口加載了符合802.11b協(xié)議的無線傳輸模塊,能夠通過該模塊實現(xiàn)與有線網(wǎng)絡(luò)相連,使其與相應(yīng)的現(xiàn)場總線工作站通信,其結(jié)構(gòu)示意圖如圖3-1所示: [align=center] 圖3-1無線通信卡的結(jié)構(gòu)示意圖[/align] 3.2基于Linux的無線通信卡的軟件設(shè)計   無線分散控制站中無線通信卡軟件開發(fā)基于Linux操作系統(tǒng)。由于Linux系統(tǒng)基于802.11b協(xié)議的無線驅(qū)動已經(jīng)很成熟了,而基于Linux操作系統(tǒng)的協(xié)議棧軟件移植也比較容易。因此,選擇Linux系統(tǒng)會有效的提高無線通信卡的開發(fā)周期。   基于Linux的無線通信卡與有線的通信卡在協(xié)議棧和功能塊方面大致相同,僅需將應(yīng)用程序向Linux系統(tǒng)上移植即可。但由于采用了Linux系統(tǒng)在與IO模塊控制卡通信的實現(xiàn)上就相對比較復(fù)雜了。與IO模塊控制卡通信的程序流程圖如下圖3-2所示: [align=center] 圖3-2 與IO模塊控制卡通信的程序流程圖[/align] 3.3軟件實現(xiàn)中關(guān)鍵性問題的解決   在Linux操作系統(tǒng)下對于中斷及其它系統(tǒng)資源的操作有特定的規(guī)范,如內(nèi)核模式操作和用戶模式操作具有不同操作權(quán)限,內(nèi)核空間與用戶空間也不能隨意互訪。導(dǎo)致如協(xié)議棧無法直接對雙端口RAM進行讀寫,也無法直接向I/O模塊控制卡收發(fā)中斷,在Linux系統(tǒng)下,只有在內(nèi)核模式下才可以做到。那么,怎么樣將數(shù)據(jù)寫入到雙端口RAM中,然后發(fā)送中斷信號通知對方及如何響應(yīng)對方的中斷并從雙端口RAM中讀數(shù)是軟件實現(xiàn)中的關(guān)鍵性問題。 3.3.1發(fā)中斷與注冊中斷處理程序的實現(xiàn)   由于發(fā)中斷與注冊中斷處理程序是對硬件直接操作,在Linux系統(tǒng)下用戶程序無法直接對其硬件進行操作。因此,必須編寫相應(yīng)的內(nèi)核模塊,在內(nèi)核模塊中完成發(fā)中斷與注冊中斷處理程序的操作。在用戶程序中動態(tài)加載相應(yīng)內(nèi)核模塊來達到用戶程序發(fā)中斷與注冊中斷處理程序的效果。其注冊中斷處理程序的內(nèi)核模塊關(guān)鍵性代碼如下:   int init_module(void) //中斷注冊模塊初始化   { …… /* 初始化設(shè)置 */   AT91_SYS->AIC_SMR[25]|=0X20; //設(shè)置中斷下跳沿觸發(fā)   if (request_irq(n, interrupt_program, INTERRUPT," IRQ1",NULL))   // 請求分配中斷號為n的快速中斷處理   // interrupt_program為指向處理這個中斷的中斷處理程序的指針  ?。?……/*沒有申請成功 根據(jù)返回值進行出錯處理 * / }   else   { printk("<1> 注冊中斷成功 ! \n");   return 0;}   init_waitqueue_head(&my_queue);  ?。?   void cleanup_module(void)  ?。?…… /* 釋放資源 */   free_irq(n,NULL); //釋放中斷線n  ?。?   在用戶程序中發(fā)中斷時,通過調(diào)用system(send_riq)來動態(tài)執(zhí)行內(nèi)核模塊程序來控制發(fā)送中斷的管腳的信號,從而實現(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ā)送一個方波中斷信號   AT91_SYS->PIOC_CODR |= AT91C_PIO_PC15;   for(i=1;i   AT91_SYS->PIOC_SODR |= AT91C_PIO_PC15; 3.3.2雙端口RAM驅(qū)動的實現(xiàn)   由于用戶程序不能直接對雙端口RAM進行讀寫,因此必須根據(jù)用戶程序的需要編寫雙端口RAM的驅(qū)動,以內(nèi)核模塊的形式動態(tài)加載到系統(tǒng)中去。Linux系統(tǒng)將所有設(shè)備都看做是文件,對設(shè)備的讀寫相當于對文件的讀寫。雙端口RAM驅(qū)動模塊加載后,用戶程序就可以像讀寫文件一樣,間接的對雙端口RAM進行讀寫了。其雙端口RAM驅(qū)動模塊的主要實現(xiàn)過程如下:   static int write_dpram(struct file *file, const char *buf, u32 count, loff_t *f_pos)  ?。?…… /* 寫初始化 */   copy_from_user(wMessage,buf,count);   …… /* 進行數(shù)據(jù)處理 */   for (i=0;i  ?。?writeb(wMessage[i], base+wadd);   wadd++; }   …… /*向IO模塊控制卡發(fā)中斷信號*/  ?。?   static int read_dpram(struct file *file,char *buf,u32 count,loff_t *f_pos)  ?。?…… /*讀函數(shù)則調(diào)用相應(yīng)的readb( )和copy_to_user( )函數(shù),與寫函數(shù)同理*/}   static int open_dpram(struct inode *inode,struct file *file )  ?。?…… /*初始化*/   if (!request_mem_region(AT91_DPRAM,BUF_LEN*sizeof(u8),DEVICE_NAME))   { …… /*未申請到該內(nèi)存空間時進行相應(yīng)處理*/} //申請使用內(nèi)存空間   base =ioremap(AT91_DPRAM,BUF_LEN*sizeof(u8));//為設(shè)備內(nèi)存區(qū)域分配虛擬地址   …… /* 設(shè)置DPRAM讀寫時序*/   }   static int release_dpram(struct inode *inode,struct file *file )  ?。?…… /* 釋放相應(yīng)資iounmap( )和release_mem_region();}   以上為DPRAM設(shè)備驅(qū)動的打開、讀寫、關(guān)閉函數(shù)的實現(xiàn),然后通過以下標記化結(jié)構(gòu)將其驅(qū)動的功能映射到前面的具體實現(xiàn)函數(shù)上:   static struct file_operations test_fops = {   read:read_dpram,   write:write_dpram,   open: open_dpram,   release:release_dpram   };   另外,在驅(qū)動程序初始化時必須通過register_chrdev( )注冊。在加載該驅(qū)動前要使用system("mknod /dev/設(shè)備名 c 主設(shè)備號 次設(shè)備號")創(chuàng)建設(shè)備文件并為該設(shè)備分配設(shè)備號。該雙端口RAM驅(qū)動是通用的,無論什么功能的板卡上面有雙端口RAM并且是基于Linux的系統(tǒng)的都可以使用該驅(qū)動。 4. 測試   為了測試該無線通信卡的性能,該測試選用了符合EPA(Ethernet for Plant Automation)標準的現(xiàn)場總線系統(tǒng)進行無線擴展。EPA是我國第一個擁有自主知識產(chǎn)權(quán)的現(xiàn)場總線標準。所搭建的測試系統(tǒng)基本和有線EPA演示系統(tǒng)一致。包括一個EPA無線現(xiàn)場設(shè)備B(包括EPA無線通信卡和IO模塊控制卡)和一個EPA無線接入網(wǎng)橋、一臺PC機及一個燈箱,如圖4-1所示。燈箱中的溫度傳感器與AI模塊相連,將溫度值傳遞給AI模塊,并通過設(shè)備A發(fā)送到以太網(wǎng)上。設(shè)備B接收到此溫度值后,將其與額定溫度值相比較,如果低于額定溫度值,則通過AO模塊輸出電流來控制燈箱內(nèi)燈泡加熱;如果高于額定溫度值,則中斷AO模塊的輸出電流,切斷燈泡的電流輸入,使燈箱內(nèi)的溫度下降,從而達到保持燈箱內(nèi)溫度恒定的目的。 [align=center] 圖4-1測試系統(tǒng)示意圖[/align]   實驗證明,無線通信卡與IO模塊控制卡之間數(shù)據(jù)傳輸穩(wěn)定,這個系統(tǒng)運行效果良好,達到了預(yù)期目標,能夠滿足工業(yè)現(xiàn)場設(shè)備的通信要求。同時,并沒有改變和影響原來的有線現(xiàn)場總線的正常工作。 5.小結(jié)   通過使用無線分散控制站和無線網(wǎng)橋?qū)崿F(xiàn)現(xiàn)場總線的無線接入,目前是比較穩(wěn)定、便捷的無限擴展方法。本文提出的無線分散控制站中無線通信卡的軟硬件實現(xiàn)方法是一個通用的快捷開發(fā)方案。無線技術(shù)給工業(yè)帶來很多益處如減少設(shè)備配置和安裝時間。市場也提供了較成熟的無線技術(shù)如IEEE 802.11標準, IEEE 802.15.4 標準和藍牙技術(shù)。但在工業(yè)現(xiàn)場無線技術(shù)仍不能被廣泛使用。原因之一是無線信道的實時性和出錯率達不到要求。隨著合適的協(xié)議機制和傳輸調(diào)度的設(shè)計,并細致結(jié)合這些方案,無線技術(shù)必將會在工業(yè)現(xiàn)場總線中得到廣泛使用。 主要參考文獻:   [1]吳愛國,郭昕.現(xiàn)場總線CAN與無線以太網(wǎng)IEEE802.11的結(jié)合[J].組合機床與自動化加工技術(shù),2004,(11): 61-62,64.   [2]侯維巖,許靜,費敏銳,陳伯時.工業(yè)現(xiàn)場總線與無線通信的集成模式[J].自動化儀表,2003,24(12):10-14.   [3]高路,于海濱,王宏,徐皚冬.EPA網(wǎng)絡(luò)體系結(jié)構(gòu)[J].計算機工程, 2004,17(30):81-82.   [4]Alessandro Rubini. LINUX設(shè)備驅(qū)動程序(第二版)[M].中國電力出版社,2002.2.

標簽:

點贊

分享到:

上一篇:基于LonWorks現(xiàn)場總線的樓宇...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.wangxinlc.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號