??? 摘? 要: 研究了基于ARM的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng),。系統(tǒng)采用S3C2410 為主控芯片并且移植了具有一定實(shí)時(shí)性,、源代碼公開(kāi)的嵌入式系統(tǒng)Linux。ARM處理器實(shí)時(shí)監(jiān)控現(xiàn)場(chǎng)設(shè)備的運(yùn)行,,并將得到的各種監(jiān)控參數(shù)進(jìn)行分析,、處理,然后將處理結(jié)果通過(guò)以太網(wǎng)傳入Internet,。遠(yuǎn)程控制者就可以實(shí)現(xiàn)異地監(jiān)視和控制現(xiàn)場(chǎng)設(shè)備,。?
??? 關(guān)鍵詞: 嵌入式技術(shù); 套接字; Linux; 遠(yuǎn)程監(jiān)控; ARM?
?
??? 隨著計(jì)算機(jī)、通信,、網(wǎng)絡(luò)控制及嵌入式等技術(shù)的飛速發(fā)展,,信息交換溝通的領(lǐng)域不斷擴(kuò)大,覆蓋了從現(xiàn)場(chǎng)設(shè)備到控制,、管理的各個(gè)層次,。嵌入式系統(tǒng)由于其穩(wěn)定性、實(shí)時(shí)性較高已在工業(yè),、國(guó)防,、運(yùn)輸及航天等領(lǐng)域被廣泛地應(yīng)用。如果將嵌入式系統(tǒng)連接到應(yīng)用廣泛的網(wǎng)絡(luò)上,,則可以方便,、低廉地將信息傳到幾乎世界的任何一個(gè)地方,從而進(jìn)行遠(yuǎn)程監(jiān)控,。嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)現(xiàn)已成為工業(yè)控制網(wǎng)絡(luò)重要的發(fā)展方向之一,。基于ARM的遠(yuǎn)程監(jiān)控系統(tǒng)[1]是信息網(wǎng)絡(luò)與控制結(jié)合的產(chǎn)物,,它借助網(wǎng)絡(luò)完成監(jiān)視控制任務(wù),,將監(jiān)視范圍擴(kuò)大到更大的空間,進(jìn)一步推進(jìn)了控制技術(shù)向網(wǎng)絡(luò)化、分散化和開(kāi)放化的發(fā)展,。?
1 遠(yuǎn)程監(jiān)控系統(tǒng)總體結(jié)構(gòu)?
??? 遠(yuǎn)程監(jiān)控系統(tǒng)實(shí)質(zhì)是本地和遠(yuǎn)程端共同構(gòu)成能夠?qū)崿F(xiàn)遠(yuǎn)程監(jiān)控的軟,、硬件的系統(tǒng),它是信息網(wǎng)絡(luò)與控制網(wǎng)絡(luò)結(jié)合的產(chǎn)物,,目前已成為自動(dòng)化控制領(lǐng)域的研究熱點(diǎn),。根據(jù)設(shè)計(jì)的要求,本監(jiān)控系統(tǒng)包含三部分,。?
??? (1)現(xiàn)場(chǎng)設(shè)備層:包括遠(yuǎn)程I/O控制模塊和各種現(xiàn)場(chǎng)控制器,。主要完成現(xiàn)場(chǎng)數(shù)據(jù)的采集、處理并通過(guò)總線接口與上層進(jìn)行通信,。
??? (2) 內(nèi)部控制管理層:主要由企業(yè)內(nèi)部以太網(wǎng),、ARM主控制器組成。主要完成整個(gè)系統(tǒng)的信息收集和發(fā)布,,并對(duì)整個(gè)系統(tǒng)進(jìn)行統(tǒng)一管理和監(jiān)控,。?
??? (3) 網(wǎng)絡(luò)層:該層通過(guò)交換機(jī)、路由器連接企業(yè)各個(gè)局域網(wǎng),,完成信息全球發(fā)布,。?
??? 系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。?
?
?
2? 軟硬件設(shè)計(jì)?
??? 本系統(tǒng)的設(shè)計(jì)包括硬件設(shè)計(jì)與軟件設(shè)計(jì),。網(wǎng)絡(luò)系統(tǒng)硬件包括系統(tǒng)管理主機(jī),、服務(wù)器、網(wǎng)關(guān),、協(xié)議轉(zhuǎn)換器,、集線器及底層智能化儀表。網(wǎng)絡(luò)系統(tǒng)軟件包括網(wǎng)絡(luò)操作軟件,、服務(wù)器操作軟件,、應(yīng)用軟件數(shù)據(jù)庫(kù)、通信協(xié)議,、網(wǎng)絡(luò)管理協(xié)議等,。?
2.1? 硬件設(shè)計(jì)?
2.1.1? 控制器的設(shè)計(jì)?
??? ARM控制器作為嵌入式遠(yuǎn)程控制系統(tǒng)的中央控制平臺(tái)是整個(gè)監(jiān)控系統(tǒng)的核心,在系統(tǒng)中起著承上啟下的作用,。向上連接企業(yè)的局域網(wǎng),,向下兼容測(cè)控專用的現(xiàn)場(chǎng)總線網(wǎng)絡(luò);同時(shí),,它還承擔(dān)對(duì)外圍系統(tǒng)的數(shù)據(jù)采集和控制功能,。該部分的整體結(jié)構(gòu)由處理器、存儲(chǔ)器,、電源,、網(wǎng)絡(luò)功能、測(cè)控專用網(wǎng)絡(luò)、模擬信號(hào)采集,、數(shù)字量輸入輸出等部分構(gòu)成,,其基本結(jié)構(gòu)如圖2所示。在這個(gè)控制系統(tǒng)中核心板為基于AT91RM9200的最小系統(tǒng),,主要包括了AT91RM9200,、Flash、SDRAM,、電源模塊,、以太網(wǎng)通信端口、RS-485和RS-232通信端口,、JTAG調(diào)試端口等,。?
?
?
2.1.2? 嵌入式以太網(wǎng)的硬件設(shè)計(jì)?
??? 該系統(tǒng)采用的是Realtek 公司生產(chǎn)的RTL8019AS以太網(wǎng)控制器,由于其優(yōu)良的性能,、低廉的價(jià)格,,使其在市場(chǎng)上在10Mb/s網(wǎng)卡中占有較高的比例。?
??? RTL8019AS的性能如下:?
??? (1) 符合以太網(wǎng)與IEEE802.3的標(biāo)準(zhǔn);?
??? (2) 全雙工,,收發(fā)可同時(shí)達(dá)到10Mb/s的速率;?
??? (3) 內(nèi)置16KB的SRAM,,用于收發(fā)緩沖,,降低對(duì)主處理器的速度要求;?
??? (4)支持8/16位數(shù)據(jù)總線,,8個(gè)中斷申請(qǐng)以及16個(gè)I/O基地址選擇,;?
??? (5) 支持UTP、AUI,、BNC自動(dòng)檢測(cè),。還支持10Base-T拓?fù)浣Y(jié)構(gòu)的自動(dòng)極性修正;?
??? (6) 允許4個(gè)診斷LED引腳可編程輸出,。?
??? 由于開(kāi)發(fā)資源非常豐富,,所以對(duì)RTL8019AS開(kāi)發(fā)比較容易。其網(wǎng)絡(luò)通信部分的接口電路如圖3所示,。用RTL8019AS芯片設(shè)計(jì)的以太網(wǎng)控制器相關(guān)電路,,可以通過(guò)RJ-45連上以太網(wǎng),采用跳線工作方式即網(wǎng)卡的I/O和中斷由跳線決定,,JP引腳高電平是選擇16位數(shù)據(jù)線,。系統(tǒng)通過(guò)4條地址線A0~A3選擇RTL8019AS的寄存器地址和存儲(chǔ)器地址,控制并實(shí)現(xiàn)數(shù)據(jù)的讀取,。RTL8019AS的TPIN+(59腳),,TPIN-(58腳)腳是TP的一對(duì)輸入腳,能以10Mb/s的速率從雙絞線接收差分曼徹斯特編碼的數(shù)據(jù)。TPOUT+(45腳),、TPOUT-(46腳)是一對(duì)曼徹斯特編碼的差分TP輸出信號(hào),。為了防止雙絞線超載,該輸出信號(hào)會(huì)被提前中斷,,這樣可以減少擁塞,。連接器的其他管腳都通過(guò)一個(gè)電容與地連接。最后,,還必須在50,、51腳之間接入一個(gè)20MHz的晶體振蕩器。網(wǎng)卡的復(fù)位信號(hào)由ARM產(chǎn)生,,RST為高電平有效,,信號(hào)寬度至少為800ns。ARM的一個(gè)引腳產(chǎn)生1μs以上的高電平就可以使RTL8019AS復(fù)位,。
?
?
2.1.3 底層采集模塊設(shè)計(jì)?
??? 以總線技術(shù)為核心的工業(yè)控制系統(tǒng),,在底層設(shè)計(jì)時(shí)采用傳感器和各種智能儀器共同控制現(xiàn)場(chǎng)設(shè)備的正常運(yùn)行。由于各種總線采用的網(wǎng)絡(luò)協(xié)議和通信介質(zhì)各不相同,,使得不同總線設(shè)備之間實(shí)現(xiàn)互連和互操作存在困難,。這層信息參數(shù)主要包括生產(chǎn)裝置運(yùn)行參數(shù)的測(cè)量值、控制量,、開(kāi)關(guān)閥門的工作位置,、報(bào)警狀態(tài)、設(shè)備的資源與維護(hù)信息,、系統(tǒng)組態(tài),、參數(shù)修改、零點(diǎn)與量程調(diào)整信息等,,所以要協(xié)調(diào)好各種總線及控制節(jié)點(diǎn)間的關(guān)系,,以保證系統(tǒng)的正常運(yùn)行。具體設(shè)計(jì)如圖4所示,。?
?
?
2.2? 軟件設(shè)計(jì)?
??? 軟件總體設(shè)計(jì)包括嵌入式Linux[2-3]文件系統(tǒng)設(shè)計(jì),、網(wǎng)絡(luò)通信程序設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)和遠(yuǎn)程數(shù)據(jù)處理程序設(shè)計(jì),。?
??? 遠(yuǎn)程數(shù)據(jù)采集終端主要完成對(duì)電壓,、流量、壓力,、電流等信號(hào)的采樣及A/D轉(zhuǎn)換,。?
??? 網(wǎng)絡(luò)通信程序[4]是指上位機(jī)和下位機(jī)之間通過(guò)以太網(wǎng)進(jìn)行通信的程序。在以太網(wǎng)中應(yīng)用的 TCP/IP協(xié)議,,其核心內(nèi)容在傳輸層,、網(wǎng)絡(luò)層和設(shè)備接口層,,而這三層的功能一般是在操作系統(tǒng)的內(nèi)核中實(shí)現(xiàn)的。要在以太網(wǎng)上正確傳輸數(shù)據(jù),,網(wǎng)絡(luò)協(xié)議是必不可少的,,而TCP/IP協(xié)議是首選。使用完整的TCP/IP協(xié)議當(dāng)然能夠?qū)崿F(xiàn)上述要求,,但由于使用了嵌入式系統(tǒng),,其資源有限,因此必須對(duì)協(xié)議進(jìn)行精簡(jiǎn),。?
2.2.1 驅(qū)動(dòng)程序設(shè)計(jì)?
??? 以太網(wǎng)驅(qū)動(dòng)程序[5]主要實(shí)現(xiàn)以太網(wǎng)數(shù)據(jù)包的發(fā)送和接收,。這是以太網(wǎng)通信中最基本也最重要的,其實(shí)現(xiàn)的好壞直接影響整個(gè)協(xié)議的性能,。驅(qū)動(dòng)程序在發(fā)送數(shù)據(jù)時(shí),,將要發(fā)送的數(shù)據(jù)包按指定的格式寫入RTL8019AS并啟動(dòng)發(fā)送命令,RTL8019AS會(huì)自動(dòng)把數(shù)據(jù)包轉(zhuǎn)換成物理幀格式在物理通道上傳輸,。在接收數(shù)據(jù)時(shí),,RTL8019AS收到物理信號(hào)后將其轉(zhuǎn)換成數(shù)據(jù),按指定格式存放,,以太網(wǎng)驅(qū)動(dòng)程序按照網(wǎng)絡(luò)層可以接收的形式對(duì)接收到的數(shù)據(jù)進(jìn)行處理并交付,。簡(jiǎn)言之,RTL8019AS完成數(shù)據(jù)包和電信號(hào)之間的相互轉(zhuǎn)換,,而以太網(wǎng)驅(qū)動(dòng)程序就是物理接口與網(wǎng)絡(luò)層交互的軟件接口,。以太網(wǎng)驅(qū)動(dòng)程序具體如下:?
??? Static int rtl8019_init (struct net_device * dev);?
??? Static int rtl8019_open (struct net_device * dev);?
??? Static int rtl8019_release (struct net_device * dev);?
??? Static int rtl8019_config (struct net_device * dev, struct?ifmap *map);?
??? Static int rtl8019_tx(struct sk_buff * dev, struct net_device *map);?
??? Int rtl8019_init_module (void);?
??? Void rtl8019_cleanup (void);?
2.2.2? 數(shù)據(jù)處理?
??? 系統(tǒng)內(nèi)部首先注冊(cè)RTL8019AS網(wǎng)絡(luò)設(shè)備,,從而利用Linux為網(wǎng)絡(luò)設(shè)備所提供的數(shù)據(jù)傳輸功能接口,實(shí)現(xiàn)專用網(wǎng)卡的數(shù)據(jù)傳輸,。數(shù)據(jù)發(fā)送時(shí),,首先數(shù)據(jù)由塊設(shè)備的數(shù)據(jù)接口從用戶態(tài)拷入核心態(tài)的系統(tǒng)緩沖區(qū)中,再由RTL8019AS的發(fā)送接口將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)硬件設(shè)備,。Linux在進(jìn)程調(diào)度或從系統(tǒng)調(diào)用返回時(shí),,調(diào)度程序判斷是否被激活,然后判斷寫隊(duì)列是否有請(qǐng)求塊,。若有則將數(shù)據(jù)發(fā)送給對(duì)方進(jìn)程,,在確認(rèn)信號(hào)到來(lái)后,將請(qǐng)求塊移去,。若數(shù)據(jù)發(fā)送后響應(yīng)的為重傳信號(hào),,則根據(jù)約定進(jìn)一步處理。重復(fù)處理下一個(gè)請(qǐng)求塊直至請(qǐng)求隊(duì)列為空,。若隊(duì)列空且有進(jìn)程睡眠則喚醒睡眠進(jìn)程,。在接收時(shí),,通過(guò)RTL8019AS的設(shè)備接口將數(shù)據(jù)接收到系統(tǒng)緩沖區(qū)中,再通過(guò)塊設(shè)備接口將數(shù)據(jù)發(fā)送到用戶緩沖區(qū)中,。當(dāng)有數(shù)據(jù)收到時(shí),,激活中斷服務(wù)子程序,中斷服務(wù)子程序?qū)?shù)據(jù)讀入數(shù)據(jù)隊(duì)列,,若有讀睡眠進(jìn)程則喚醒該進(jìn)程,,同時(shí)將到來(lái)的數(shù)據(jù)進(jìn)行校驗(yàn),數(shù)據(jù)正確則發(fā)回信號(hào),,否則發(fā)回重傳信號(hào),,如圖5所示。?
?
?
??? 隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展,,工業(yè)控制領(lǐng)域也迎來(lái)了深刻技術(shù)變革,,控制系統(tǒng)結(jié)構(gòu)網(wǎng)絡(luò)化與控制系統(tǒng)體系開(kāi)放性將是控制系統(tǒng)技術(shù)發(fā)展的趨勢(shì)。近年來(lái)出現(xiàn)的基于ARM的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)作為一種全新的概念成為計(jì)算機(jī)技術(shù)與自動(dòng)控制技術(shù)深度融合的產(chǎn)物,,其高度的開(kāi)放性,、通用性、統(tǒng)一性使其相對(duì)于傳統(tǒng)監(jiān)控模式具有巨大的優(yōu)勢(shì),,其應(yīng)用前景也被人們寄予厚望,。?
參考文獻(xiàn)?
[1] 劉甜甜,連耀華. 基于ARM的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)[J].電子技術(shù), 2007(4):58-62.?
[2] 陳阿林,肖嵬,肖丹燕,等. 基于嵌入式Linux的網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004,21(1):23-25. ?
[3] 李善平. Linux與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2003.?
[4] 林宇,郭凌云. Linux網(wǎng)絡(luò)編程. 北京:機(jī)械工業(yè)出版社,?2000.?
[5] RUBINI A. Linux設(shè)備驅(qū)動(dòng)程序[M]. 魏永明, 譯.2版.北京:中國(guó)電力出版社,2002.?