【摘 要】 提出了一種基于嵌入式Linux的遠程監控系統的設計方案,詳細分析了它的系統結構,并給出了相應的軟件實現過程。
??? 關鍵詞:嵌入式Linux,B/S模式,Web服務器,遠程監控,進程
1 引 言
單片機和微控制器在工業現場控制領域已得到廣泛的應用,但這些控制系統通常采用RS232或RS485組網,作用距離短。如今,Internet飛速發展,已成為信息交流的重要渠道。而且,基于Web的B/S遠程監控模式技術也越來越成熟。如果將這種模式應用于工業現場控制領域,則用戶只要在有Internet接入的地方,就可以對工業現場設備進行遠程監控。將其應用于家庭,則可以朝家電信息化邁出關鍵的一步。
上述系統的實現離不開嵌入式操作系統。后PC時代,隨著嵌入式系統的廣泛應用,嵌入式操作系統也越來越受到重視。嵌入式操作系統具有結構小巧、實時性強、穩定性高等特點。目前,商用嵌入式操作系統比較多,如Vxworks,QNX,Nucleaus,WinCE等,但價格都很昂貴,并不適合廣泛應用。
嵌入式Linux為這個問題提供了良好的解決方案,其開放的源代碼、強大的技術支持、良好的可擴展性及對眾多硬件的支持都是它嵌入化的優勢。所以我們選擇嵌入式linux為操作平臺,結合成熟的Web技術來進行遠程監控系統的設計。
2 系統結構
?? 該遠程控制系統利用Internet/Intranet網絡資源,只需一臺聯網的PC客戶機,就可實現對遠程設備狀態的監視和控制。這里,我們提出系統結構的兩種設計方案,如圖1、2所示。
兩種方案都利用了Internet/Intranet網絡資源。不同的是,在方案一中,使用了一臺PC機作為代理服務器接入Internet網絡,這樣便可利用代理服務器提供強大的數據庫功能。該方案適用于測量設備較多,相對集中的場合。嵌入式設備可通過以太網線直接與服務器相連,這樣,嵌入式設備實際上只需要實現一個以太網到RS232的轉換。但是,在某些嵌入式的應用環境中,并不適合單獨使用一臺PC機作服務器,因此,我們提出方案二,嵌入式設備作為Web Server直接接入Internet/Intranet。嵌入式設備運行一個操作系統并在此基礎之上實現WebServer的功能,這對系統硬件要求比較高,再加上小型嵌入式數據庫技術的不成熟,使得它在數據管理方面稍有欠缺。盡管如此,我們仍采用方案二,因為我們認為它代表著嵌入式系統的發展方向,其應用范圍更為廣泛,并且,隨著軟硬件水平的不斷提高,上述的缺點都是可以克服的。
我們的方案中,硬件上采用32位Motorola微處理器,2M Flash,16M SDRAM,及必要的外圍設備即可滿足系統的要求。
3 系統軟件設計
3.1 Linux的選擇
由于Linux過于龐大,要將它應用于小巧的嵌入式系統,首先必須將其小型化。目前,出現了各種不同的嵌入式Linux版本,有一些還具有一定的實時性。我們首先依據自己所選擇的CPU類型,以公開的嵌入式Linux源代碼為基礎,根據自己設計的主板情況編寫相應的bootloader程序或BIOS,運行自己的系統。一旦加載上了嵌入式Linux,則對于上層應用軟件的編程與在運行普通Linux的PC機上一樣,所有的程序都可以先在Linux的PC機上調試通過,然后只需要修改MakeFile文件,就可以完全移植到嵌入式Linux設備上運行。如果編譯嵌入式Linux時選擇網絡文件系統(NFS),則調試的時候可利用gdbserver,省去了無數次下載程序的麻煩。這種方法有很大的靈活性與自由度,但也要注意到,由于硬件的配置不同,或程序本身原因,網上下載的源代碼未必都合適,這需要自己對照源碼去調試與發現。
3.2 應用程序設計
3.2.1 C/S(Client/Server)模式與B/S(Browser/Server)模式傳統的C/S模式采用兩層設計,客戶應用層負責提供交互界面,實現應用邏輯以發送數據、請求并處理返回數據;數據庫服務器層負責處理客戶數據請求并返回結果,有效管理系統資源。該模式需獨立開發和安裝每個應用,系統升級維護困難,客戶機負擔重。此外,與數據庫的直接交互導致應用程序對數據結構有很強的依賴性,且浪費數據庫連接資源。
基于二層結構的C/S模式無法適應Internet網絡的特性,因此出現了一種新的體系結構——B/S模式。B/S是一種基于Hyperlink,HTML,Java的三級或多級C/S,客戶端僅需要單一的瀏覽器軟件,其它大量工作都由Web Sever完成。B/S模式使用簡單、易于維護、擴展性好,已逐漸成為主流。
3.2.2 客戶端工作過程
該系統使用的是B/S模式,對客戶端幾乎沒有特別要求。客戶端只要基于普通Windows視窗系統,安裝IE或Netscape即可。換句話說,任何一臺上網的計算機,都可能成為客戶端。
客戶端的工作過程如下:通過Internet/Intranet網絡訪問監控中心的主頁,根據需要輸入用戶名和密碼,檢驗成功則進入Web Server系統的監控界面,點擊相應的設備按鈕可以獲得該設備的運行狀態并可以對設備的參數進行設置。
3.2.3 服務器端程序的設計
?? (1)服務器模式
為了進行服務器端程序的設計,首先要確定服務器的工作模型。我們知道,Linux系統網絡服務器主要分為兩種:循環服務器(Iterative Server)和并發服務器(ConcurrentServer)。循環服務器在同一時刻只能處理一個客戶機請求,而并發服務器在同一時刻可以處理多個客戶機請求。TCP套接字大多采用并發服務器提供服務。TCP并發服務器有多種實現方法:
·服務器對每個接收到的客戶連接都創建一個新的子進程來處理客戶請求;
·服務器預先創建多個子進程,由這些子進程處理客戶機的請求。這種方式稱為“預創建(prefork)”服務器;
·服務器用函數select實現對多個客戶機連接的多路復用;
??? ·由超級服務器(Inetd)激活的服務器。
其中,一個子進程對應一個客戶機的服務器模型很簡單,父進程完成接收連接和創建子進程的任務,子進程處理客戶機的具體請求,每個子進程的處理過程完全獨立。
這種服務器可以同時處理的客戶機數目受到系統所允許的最大子進程數目的限制。這種服務器的缺點是,為每一個客戶創建一個子進程的開銷比較大。但如果我們能考慮到實際情況,并加以適當的變化,就會發現,它很適合我們的系統。首先,該系統是一個監控系統,決定了不會有過多客戶同時發出監控命令,所以無須擔心出現系統資源被耗盡的情況;其次,客戶一旦進行監控,一般會持續較長時間,這種創建子進程的開銷對服務器效率影響不大;最后,如果系統在Internet上運行,可能會有許多外來的好奇者想進入,為了減少開銷,在系統設計中,并不是一旦建立連接就創建子進程,而是當口令通過后并向系統發出ASP請求才建立子進程。
?? (2)程序設計
根據我們的方案,服務器所需做的工作是:通過串口對設備進行數據的收發;對數據進行處理;將處理的數據交給Web Server子進程;子進程將數據顯示到Web頁下傳給客戶,并接收客戶的參數設置命令,將參數設置上傳到遠程設備。
服務器程序結構如圖4所示,父進程首先創建一個子進程專門處理數據,然后再根據用戶的請求創建相對應的子進程。用戶子進程與串口數據處理子進程之間采用進程間通信來實現數據交換。
服務器啟動之后的第一件事,就是創建專用子進程來收發數據。服務器任何時刻都在監聽用戶請求。若用戶發出監控請求,而且通過了密碼校驗,服務器就會產生一個子進程來處理該用戶的請求:發送數據,接收設置等。
4 結束語
身處信息社會,人們已經能夠利用網絡資源快捷方便地獲得信息,并能利用網絡資源進行各種設備的遠程監控。本文提出的基于嵌入式Linux的遠程監控系統的方案已在小型局域網中得到實現。該系統在工業現場、遠程診斷、信息家電中有著很好的應用前景。
參考文獻
1 張斌,高波等.Linux網絡編程.北京:清華大學出版社,2000
2 袁友偉,廖建勇.基于B/S模式的存儲過程的技術性能及實現.計算機工程與應用,2001(22)
??? 關鍵詞:嵌入式Linux,B/S模式,Web服務器,遠程監控,進程
1 引 言
單片機和微控制器在工業現場控制領域已得到廣泛的應用,但這些控制系統通常采用RS232或RS485組網,作用距離短。如今,Internet飛速發展,已成為信息交流的重要渠道。而且,基于Web的B/S遠程監控模式技術也越來越成熟。如果將這種模式應用于工業現場控制領域,則用戶只要在有Internet接入的地方,就可以對工業現場設備進行遠程監控。將其應用于家庭,則可以朝家電信息化邁出關鍵的一步。
上述系統的實現離不開嵌入式操作系統。后PC時代,隨著嵌入式系統的廣泛應用,嵌入式操作系統也越來越受到重視。嵌入式操作系統具有結構小巧、實時性強、穩定性高等特點。目前,商用嵌入式操作系統比較多,如Vxworks,QNX,Nucleaus,WinCE等,但價格都很昂貴,并不適合廣泛應用。
嵌入式Linux為這個問題提供了良好的解決方案,其開放的源代碼、強大的技術支持、良好的可擴展性及對眾多硬件的支持都是它嵌入化的優勢。所以我們選擇嵌入式linux為操作平臺,結合成熟的Web技術來進行遠程監控系統的設計。
2 系統結構
?? 該遠程控制系統利用Internet/Intranet網絡資源,只需一臺聯網的PC客戶機,就可實現對遠程設備狀態的監視和控制。這里,我們提出系統結構的兩種設計方案,如圖1、2所示。
兩種方案都利用了Internet/Intranet網絡資源。不同的是,在方案一中,使用了一臺PC機作為代理服務器接入Internet網絡,這樣便可利用代理服務器提供強大的數據庫功能。該方案適用于測量設備較多,相對集中的場合。嵌入式設備可通過以太網線直接與服務器相連,這樣,嵌入式設備實際上只需要實現一個以太網到RS232的轉換。但是,在某些嵌入式的應用環境中,并不適合單獨使用一臺PC機作服務器,因此,我們提出方案二,嵌入式設備作為Web Server直接接入Internet/Intranet。嵌入式設備運行一個操作系統并在此基礎之上實現WebServer的功能,這對系統硬件要求比較高,再加上小型嵌入式數據庫技術的不成熟,使得它在數據管理方面稍有欠缺。盡管如此,我們仍采用方案二,因為我們認為它代表著嵌入式系統的發展方向,其應用范圍更為廣泛,并且,隨著軟硬件水平的不斷提高,上述的缺點都是可以克服的。
我們的方案中,硬件上采用32位Motorola微處理器,2M Flash,16M SDRAM,及必要的外圍設備即可滿足系統的要求。
3 系統軟件設計
3.1 Linux的選擇
由于Linux過于龐大,要將它應用于小巧的嵌入式系統,首先必須將其小型化。目前,出現了各種不同的嵌入式Linux版本,有一些還具有一定的實時性。我們首先依據自己所選擇的CPU類型,以公開的嵌入式Linux源代碼為基礎,根據自己設計的主板情況編寫相應的bootloader程序或BIOS,運行自己的系統。一旦加載上了嵌入式Linux,則對于上層應用軟件的編程與在運行普通Linux的PC機上一樣,所有的程序都可以先在Linux的PC機上調試通過,然后只需要修改MakeFile文件,就可以完全移植到嵌入式Linux設備上運行。如果編譯嵌入式Linux時選擇網絡文件系統(NFS),則調試的時候可利用gdbserver,省去了無數次下載程序的麻煩。這種方法有很大的靈活性與自由度,但也要注意到,由于硬件的配置不同,或程序本身原因,網上下載的源代碼未必都合適,這需要自己對照源碼去調試與發現。
3.2 應用程序設計
3.2.1 C/S(Client/Server)模式與B/S(Browser/Server)模式傳統的C/S模式采用兩層設計,客戶應用層負責提供交互界面,實現應用邏輯以發送數據、請求并處理返回數據;數據庫服務器層負責處理客戶數據請求并返回結果,有效管理系統資源。該模式需獨立開發和安裝每個應用,系統升級維護困難,客戶機負擔重。此外,與數據庫的直接交互導致應用程序對數據結構有很強的依賴性,且浪費數據庫連接資源。
基于二層結構的C/S模式無法適應Internet網絡的特性,因此出現了一種新的體系結構——B/S模式。B/S是一種基于Hyperlink,HTML,Java的三級或多級C/S,客戶端僅需要單一的瀏覽器軟件,其它大量工作都由Web Sever完成。B/S模式使用簡單、易于維護、擴展性好,已逐漸成為主流。
3.2.2 客戶端工作過程
該系統使用的是B/S模式,對客戶端幾乎沒有特別要求。客戶端只要基于普通Windows視窗系統,安裝IE或Netscape即可。換句話說,任何一臺上網的計算機,都可能成為客戶端。
客戶端的工作過程如下:通過Internet/Intranet網絡訪問監控中心的主頁,根據需要輸入用戶名和密碼,檢驗成功則進入Web Server系統的監控界面,點擊相應的設備按鈕可以獲得該設備的運行狀態并可以對設備的參數進行設置。
3.2.3 服務器端程序的設計
?? (1)服務器模式
為了進行服務器端程序的設計,首先要確定服務器的工作模型。我們知道,Linux系統網絡服務器主要分為兩種:循環服務器(Iterative Server)和并發服務器(ConcurrentServer)。循環服務器在同一時刻只能處理一個客戶機請求,而并發服務器在同一時刻可以處理多個客戶機請求。TCP套接字大多采用并發服務器提供服務。TCP并發服務器有多種實現方法:
·服務器對每個接收到的客戶連接都創建一個新的子進程來處理客戶請求;
·服務器預先創建多個子進程,由這些子進程處理客戶機的請求。這種方式稱為“預創建(prefork)”服務器;
·服務器用函數select實現對多個客戶機連接的多路復用;
??? ·由超級服務器(Inetd)激活的服務器。
其中,一個子進程對應一個客戶機的服務器模型很簡單,父進程完成接收連接和創建子進程的任務,子進程處理客戶機的具體請求,每個子進程的處理過程完全獨立。
這種服務器可以同時處理的客戶機數目受到系統所允許的最大子進程數目的限制。這種服務器的缺點是,為每一個客戶創建一個子進程的開銷比較大。但如果我們能考慮到實際情況,并加以適當的變化,就會發現,它很適合我們的系統。首先,該系統是一個監控系統,決定了不會有過多客戶同時發出監控命令,所以無須擔心出現系統資源被耗盡的情況;其次,客戶一旦進行監控,一般會持續較長時間,這種創建子進程的開銷對服務器效率影響不大;最后,如果系統在Internet上運行,可能會有許多外來的好奇者想進入,為了減少開銷,在系統設計中,并不是一旦建立連接就創建子進程,而是當口令通過后并向系統發出ASP請求才建立子進程。
?? (2)程序設計
根據我們的方案,服務器所需做的工作是:通過串口對設備進行數據的收發;對數據進行處理;將處理的數據交給Web Server子進程;子進程將數據顯示到Web頁下傳給客戶,并接收客戶的參數設置命令,將參數設置上傳到遠程設備。
服務器程序結構如圖4所示,父進程首先創建一個子進程專門處理數據,然后再根據用戶的請求創建相對應的子進程。用戶子進程與串口數據處理子進程之間采用進程間通信來實現數據交換。
服務器啟動之后的第一件事,就是創建專用子進程來收發數據。服務器任何時刻都在監聽用戶請求。若用戶發出監控請求,而且通過了密碼校驗,服務器就會產生一個子進程來處理該用戶的請求:發送數據,接收設置等。
4 結束語
身處信息社會,人們已經能夠利用網絡資源快捷方便地獲得信息,并能利用網絡資源進行各種設備的遠程監控。本文提出的基于嵌入式Linux的遠程監控系統的方案已在小型局域網中得到實現。該系統在工業現場、遠程診斷、信息家電中有著很好的應用前景。
參考文獻
2 袁友偉,廖建勇.基于B/S模式的存儲過程的技術性能及實現.計算機工程與應用,2001(22)
評論
查看更多