于瀟+巨同升+崔孝鳳+宋吉和
摘要:設計了基于ARM-Linux的大型試驗設備遠程監測系統,實現了對大型試驗設備狀態信息的采集與監測。系統采用B/S結構,通過開發Linux設備驅動程序、移植BOA服務器、編寫CGI程序等,將遠程嵌入式終端采集到的試驗設備信息保存在遠程數據庫中,用戶可以簡單地通過瀏覽器訪問數據庫中的信息。結果表明,該遠程監測系統性能穩定可靠,具有很好的實時性,能夠滿足對大型試驗設備(特別是位置偏僻或所處環境惡劣的設備)的監測要求。
關鍵詞:遠程監控;ARM;Linux;設備驅動程序;BOA服務器;CGI
中圖分類號:TP273+.5 文獻標識碼:A 文章編號:0439-8114(2014)15-3639-04
Designing Large-scale Test Equipment Monitoring System based on ARM-Linux
YU Xiao1,2,JU TONG-sheng1,CUI Xiao-feng1,SONG Ji-he1
(1. School of Computer Science and Technology, Shandong University of Technology, Zibo 255049,Shandong China;2.School of Computer Science, Beijing Institute of Technology, Beijing 100081,China.)
Abstract: An embedded remote information collection and monitoring system based on ARM-Linux was developed. It which could collect the informations and monitor the conditions from the large-scale test equipments. By developing device drivers, transplanting BOA server and programming CGI, the system took the B/S mode. Informations of equipments collected by remote embedded terminal were stored in a remote database. The users could simply access the informations in database via browser. Results showed that the system was stable and reliable and could meet testing demands of large-scale test equipments (especially in remote locations or in bad environments).
Key words: remote monitoring; ARM;Linux; device drivers; BOA; CGI
收稿日期:2014-01-10
基金項目:國家自然科學基金項目(61370224);國家高技術研究發展計劃(“863”計劃)項目(2013AA01A212)
作者簡介:于 瀟(1982-),男,山東淄博人,講師,在讀博士研究生,研究方向為網絡存儲、嵌入式系統,(電話)13969377480(電子信箱)
yuxiao8907118@163.com。
高校的分析測試實驗室擁有眾多先進、精密的大型儀器設備,是高校實驗室的重要組成部分。有別于基礎教學實驗室分析測試實驗室主要面向科研,為科學研究提供可靠的測試數據和試驗數據。長期以來,實驗室的大型儀器大部分使用率都比較低,為提高投資效益,最大限度地利用現有實驗室資源,更好地為科研教學服務,實驗室加大了開放的力度。試驗設備利用率提高以后,管理人員的工作大大增加。為此,迫切需要獲得每臺試驗設備的詳細使用數據,以用于設備的日常保養和檢修。
隨著網絡技術和嵌入式技術的發展,基于TCP/IP協議和B/S(Browser/Server)架構的分布式監控技術已日趨成熟。借助以太網和Internet技術,把嵌入式監控設備[1,2]連接到Internet上,用戶只需要使用普通的Web瀏覽器就可以對設備進行監視和控制,操作界面簡潔,數據傳輸量也可以降到最低。實現遠程監控后,技術人員無須親臨現場,就可以監視并控制生產系統和現場設備的運行狀態和參數。特別是當現場地理位置比較偏僻或環境比較惡劣時,這一點的優勢尤為突出。本研究設計了基于ARM-Linux的嵌入式遠程監測系統,實現了觀測站現場大型試驗設備信息的采集與監測。
1 遠程監測系統總體設計
遠程監測系統采用B/S結構,分為前方監測終端和后方監視終端兩部分。系統主要設計集中在前方監測終端,后方監視終端只需一臺安裝Web瀏覽器的PC即可。遠程監控系統結構如圖1所示。
前方監測終端由數據采集模塊和數據處理模塊構成。每個需要監測的大型試驗設備需安裝一個監測終端,每個終端分配一個獨立的IP地址,所有的監測終端連接到路由器上。數據采集模塊由傳感器和嵌入式終端設備組成,主要負責采集試驗設備工作時的光電信息,并轉換為有效的模擬信號輸入。數據處理模塊與數據采集模塊共用一個嵌入式終端設備,另外搭載了數據庫服務器及應用程序。嵌入式終端設備本身是一個完整的嵌入式設備,包括CPU、存儲器、GPIO(General Purpose Input /Output Ports)、網絡接口等[1]。試驗設備工作的信息和應用程序都放在數據處理模塊上。后方監視終端(一般為PC或智能設備)需要安裝Web瀏覽器,輸入前方監測終端相應的IP地址便可直接訪問它。在客戶端,由HTML負責表示邏輯,根據特定終端的URL(統一資源定位符)提出的服務請求,前方監測終端上安裝的網絡服務器會把數據文件返回給客戶端。endprint
2 前方監測終端的硬件設計
前方監測終端由數據采集模塊和數據處理模塊組成。由于試驗設備價格昂貴,為避免破壞設備,數據采集模塊使用電流互感器和光敏電阻兩種傳感器。傳感器可根據試驗設備的特征及檢測終端的安裝方便程度進行選擇。數據處理模塊采用Samsung公司基于ARM9核心的S3C2440處理器。前方監測終端的硬件結構如圖2所示。
其中,SDRAM主要功能是存放運行代碼、系統和用戶數據、堆棧等;FLASH主要功能是存儲嵌入式Linux鏡像、根文件系統和應用程序等;GPIO主要功能是提供電流互感器和光敏電阻的模擬輸入接口;RS232是系統的調試接口;USB接口用于外部擴展,例如連接外部存儲器;以太網控制器中的接口芯片采用DM9000,它可自適應10 M/100 M網絡。
3 前方監測終端的軟件設計
系統采用B/S模式設計,主要軟件設計集中在前方監測終端,前方監測終端的軟件結構如圖3所示。
當前方監測終端加電運行時,首先啟動系統引導程序Bootloader,在Bootloader的引導下啟動嵌入式Linux,Linux的內核版本為2.6.29[3]。然后Linux內核啟動,依次加載各設備的驅動程序,最后運行監測應用程序[4]。其中Web服務器使用BOA服務器,其優點是不僅能夠支持靜態Web頁面,還可以配合CGI支持動態頁面,實現與用戶的動態交互。圖形界面采用QT,它具有優良的跨平臺特性,同時還提供了豐富的API函數,使用非常方便。
3.1 A/D驅動開發
嵌入式Linux設備文件主要分為字符設備、塊設備、網絡設備和混合設備四種類型。其中,混合設備是在嵌入式系統中用得比較多的一種設備,特指不能嚴格劃分的設備類型。系統中,A/D設備的主要用途是將電流互感器和光敏電阻采集到的模擬信號轉換為數字信號,并輸入嵌入式設備的GPIO接口,系統在實現時,將A/D設備作為一種混合設備來處理。
A/D設備驅動程序主要功能是提供設備的注冊與注銷,設備的打開與關閉,設備的讀、寫操作以及設備的控制操作,設備的中斷服務響應等[5]。Linux內核通過file_operation數據結構提供文件系統的入口點函數,該函數是定義在
struct file_operations {
struct module* owner;
int(*open) (struct inode*,struct file*);
//打開I/O設備并初始化
int (*release)(struct inode*,struct file*);
//關閉I/O設備
ssize_t(*read)(struct file*,char_user*,size_t, loff_t *);
//讀I/O設備
ssize_t(*write)(struct file*,const char__user *, size_t,loff_t*);
//寫I/O設備
int(*ioctl)(struct inode*,struct file*,unsigned int, unsigned long);
//控制I/O設備
……
};
A/D設備驅動在初始化時通過misc_register()函數注冊混合設備;在釋放模塊時通過misc_deregister()注銷設備驅動。系統調用部分實際上是對設備的操作,如open、read、write、ioctl等操作。
系統采用動態加載設備驅動程序的方法。在編譯2.6版本的驅動程序時需要把驅動程序的源代碼加入內核代碼樹,并做相應的配置,然后在Linux源代碼根目錄位置執行make modules,就可以生成所需要的內核模塊文件,通過nfs將編譯出的內核模塊文件下載至下位機,然后使用#insmod命令裝載驅動程序。
3.2 BOA服務器的設計
由于嵌入式設備資源都非常有限,一般不會使用Linux下最普遍的服務器,如Apache等,而需要使用一些專門為嵌入式設備設計的Web服務器,比較典型的嵌入式Web服務器有HTTPD、BOA和THTTPD等。由于BOA支持認證、CGI等功能,同時占用系統資源較少,它最終被選擇作為系統的Web服務器。
BOA服務器的基礎是TCP/IP協議棧,需要實現HTTP、TCP和UDP等協議。監測系統設置了獨立的IP地址,通過網絡就可以將設備接入Internet。嵌入式BOA服務器的結構如圖4所示。
在使用BOA服務器之前,首先需要對BOA服務器的源代碼進行交叉編譯和配置。編譯可在Linux下用make命令完成,配置文件位于根目錄下,名稱為“BOA.conf”,“BOA.conf”配置如下:
Port 80 //監聽端口號,默認為80
User 0
Group 0
ServerName yx //服務器名稱
DocumentRoot /sdcard/www/pages/
//網頁文件所在目錄
UserDir public_html
DirectoryIndex index.html
//BOA服務器的默//認首頁
KeepAliveMax 100//一個連接所允許的HTTP持續作用請求最大數目
KeepAliveTimeout 10//HTTP持續作用中服務器在兩次請求之間等待的時間
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路徑
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路徑
3.3 CGI程序的設計
CGI(Common Gateway Interface)指公共網關接口,是Web服務器和網關應用程序之間信息傳遞的一個公共標準,是外部應用擴展應用程序與WWW服務器交互的一個標準接口[6]。CGI工作原理如圖5所示。
當用戶使用客戶端與服務器進行動態交互時,Web瀏覽器先將用戶數據傳送給BOA服務器,BOA服務器把接收到的有關信息存入環境變量,然后啟動指定的CGI進程;CGI進程從環境變量中獲得相關信息后按指令執行,操作完成后通過BOA服務器以HTML格式將結果返回給Web瀏覽器。因為用戶能通過瀏覽器傳遞不同的參數給CGI程序,所以CGI使得瀏覽器和服務器之間具有了可交互性。
3.4 主監測程序的設計
試驗設備往往價格高昂,為保證測量精度并不破壞試驗設備,傳感器板支持兩種類型的傳感器:電流互感器和光敏電阻。GPIO上提供4個模擬量輸入通道,監測程序將順序掃描各個通道,檢查是否存在有效的信號輸入。主監測程序執行流程如圖6所示。
3.5 試驗結果
遠程監測系統需要為每個監測終端(監測服務器)分配獨立的IP地址。當在遠程客戶端瀏覽器中輸入監測終端的IP時,BOA將返回監測系統的首頁。監測系統主要提供儀器狀態采集等功能。當監測系統處于運行狀態時,若儀器啟動,經監測程序確認后,檢測系統將實時采集試驗設備的狀態信息,并定期在檢測系統的數據庫中做記錄。記錄括開關機時間、運行時間、運行狀態等。
4 小結
基于S3C2440平臺和Linux操作系統,設計實現了一個嵌入式遠程信息采集與監測系統。通過因特網實現了對一組大型試驗儀器使用信息的遠程監測。試驗結果表明,遠程監測系統能采集并記錄試驗儀器的使用信息,為儀器的維護提供第一手資料,在一定程度上實現了實驗室的信息化。該遠程測控系統具有一定的通用性,根據需求在功能上作進一步完善后可應用于一系列領域,如機房監控、智能小區監控等。
參考文獻:
[1] 周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005.
[2] 周立功.ARM嵌入式系統軟件開發實例[M].北京:北京航空航天大學出版社,2005.
[3] 趙 炯.Linuxn內核完全剖析[M].北京:機械工業出版社,2006.
[4] 劉 淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[5] 劉 嵐,尹 勇,李京蔚.基于ARM的嵌入式開發[M].北京:電子工業出版社,2008.
[6] 楊大千,梅大成,張 巖.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006(8):45-46.endprint
KeepAliveTimeout 10//HTTP持續作用中服務器在兩次請求之間等待的時間
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路徑
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路徑
3.3 CGI程序的設計
CGI(Common Gateway Interface)指公共網關接口,是Web服務器和網關應用程序之間信息傳遞的一個公共標準,是外部應用擴展應用程序與WWW服務器交互的一個標準接口[6]。CGI工作原理如圖5所示。
當用戶使用客戶端與服務器進行動態交互時,Web瀏覽器先將用戶數據傳送給BOA服務器,BOA服務器把接收到的有關信息存入環境變量,然后啟動指定的CGI進程;CGI進程從環境變量中獲得相關信息后按指令執行,操作完成后通過BOA服務器以HTML格式將結果返回給Web瀏覽器。因為用戶能通過瀏覽器傳遞不同的參數給CGI程序,所以CGI使得瀏覽器和服務器之間具有了可交互性。
3.4 主監測程序的設計
試驗設備往往價格高昂,為保證測量精度并不破壞試驗設備,傳感器板支持兩種類型的傳感器:電流互感器和光敏電阻。GPIO上提供4個模擬量輸入通道,監測程序將順序掃描各個通道,檢查是否存在有效的信號輸入。主監測程序執行流程如圖6所示。
3.5 試驗結果
遠程監測系統需要為每個監測終端(監測服務器)分配獨立的IP地址。當在遠程客戶端瀏覽器中輸入監測終端的IP時,BOA將返回監測系統的首頁。監測系統主要提供儀器狀態采集等功能。當監測系統處于運行狀態時,若儀器啟動,經監測程序確認后,檢測系統將實時采集試驗設備的狀態信息,并定期在檢測系統的數據庫中做記錄。記錄括開關機時間、運行時間、運行狀態等。
4 小結
基于S3C2440平臺和Linux操作系統,設計實現了一個嵌入式遠程信息采集與監測系統。通過因特網實現了對一組大型試驗儀器使用信息的遠程監測。試驗結果表明,遠程監測系統能采集并記錄試驗儀器的使用信息,為儀器的維護提供第一手資料,在一定程度上實現了實驗室的信息化。該遠程測控系統具有一定的通用性,根據需求在功能上作進一步完善后可應用于一系列領域,如機房監控、智能小區監控等。
參考文獻:
[1] 周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005.
[2] 周立功.ARM嵌入式系統軟件開發實例[M].北京:北京航空航天大學出版社,2005.
[3] 趙 炯.Linuxn內核完全剖析[M].北京:機械工業出版社,2006.
[4] 劉 淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[5] 劉 嵐,尹 勇,李京蔚.基于ARM的嵌入式開發[M].北京:電子工業出版社,2008.
[6] 楊大千,梅大成,張 巖.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006(8):45-46.endprint
KeepAliveTimeout 10//HTTP持續作用中服務器在兩次請求之間等待的時間
MimeTypes/sdcard/www/web-conf/mime.types
//mimetype配置文件路徑
ScriptAlias
/cgi-bin//sdcard/www/cgi-bin/
//CGI程序路徑
3.3 CGI程序的設計
CGI(Common Gateway Interface)指公共網關接口,是Web服務器和網關應用程序之間信息傳遞的一個公共標準,是外部應用擴展應用程序與WWW服務器交互的一個標準接口[6]。CGI工作原理如圖5所示。
當用戶使用客戶端與服務器進行動態交互時,Web瀏覽器先將用戶數據傳送給BOA服務器,BOA服務器把接收到的有關信息存入環境變量,然后啟動指定的CGI進程;CGI進程從環境變量中獲得相關信息后按指令執行,操作完成后通過BOA服務器以HTML格式將結果返回給Web瀏覽器。因為用戶能通過瀏覽器傳遞不同的參數給CGI程序,所以CGI使得瀏覽器和服務器之間具有了可交互性。
3.4 主監測程序的設計
試驗設備往往價格高昂,為保證測量精度并不破壞試驗設備,傳感器板支持兩種類型的傳感器:電流互感器和光敏電阻。GPIO上提供4個模擬量輸入通道,監測程序將順序掃描各個通道,檢查是否存在有效的信號輸入。主監測程序執行流程如圖6所示。
3.5 試驗結果
遠程監測系統需要為每個監測終端(監測服務器)分配獨立的IP地址。當在遠程客戶端瀏覽器中輸入監測終端的IP時,BOA將返回監測系統的首頁。監測系統主要提供儀器狀態采集等功能。當監測系統處于運行狀態時,若儀器啟動,經監測程序確認后,檢測系統將實時采集試驗設備的狀態信息,并定期在檢測系統的數據庫中做記錄。記錄括開關機時間、運行時間、運行狀態等。
4 小結
基于S3C2440平臺和Linux操作系統,設計實現了一個嵌入式遠程信息采集與監測系統。通過因特網實現了對一組大型試驗儀器使用信息的遠程監測。試驗結果表明,遠程監測系統能采集并記錄試驗儀器的使用信息,為儀器的維護提供第一手資料,在一定程度上實現了實驗室的信息化。該遠程測控系統具有一定的通用性,根據需求在功能上作進一步完善后可應用于一系列領域,如機房監控、智能小區監控等。
參考文獻:
[1] 周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005.
[2] 周立功.ARM嵌入式系統軟件開發實例[M].北京:北京航空航天大學出版社,2005.
[3] 趙 炯.Linuxn內核完全剖析[M].北京:機械工業出版社,2006.
[4] 劉 淼.嵌入式系統接口設計與Linux驅動程序開發[M].北京:北京航空航天大學出版社,2006.
[5] 劉 嵐,尹 勇,李京蔚.基于ARM的嵌入式開發[M].北京:電子工業出版社,2008.
[6] 楊大千,梅大成,張 巖.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006(8):45-46.endprint