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