基于Linux的WEB服務器的設計與實現
在本系統中為了滿足不同工業控制系統的需要,設計有串口、CAN總線接口、Modem接口和 RS-485接口。系統在啟動時,從系統的 FLASH中讀取 120個字節的初始化信息,并據此來判斷是否開啟接口,并對所開啟的接口進行初始化。由于各個模塊的初始化函數己經存在,因此系統初始化時,只要調用相應的函數就夠了。PPP已經在網絡模塊部分介紹,而 RS-485的使用和普通串口的初始化相似,本部分主要介紹 RS-232和 CAN。
2.3.1 RS-232串口驅動函數設計
系統的開發語言是 Java,但 Java本身不提供對串口操作的類,要實現對串口的讀寫操作,需要用第三方 API函數完成,實際的開發過程中,使用串口通訊協議開發包 comm.jar,它是 J2SE的標準擴展,支持 RS-231串口,并提供了一種與平臺無關的串口通信機制。
串口驅動主要實現對串口的讀寫操作,給應用程序提供發詢接收數據的接口。串口正常工作之前,需要進行初始化設置,因此驅動中還有初始化函數。串口的驅動函數串口的驅動函數主要包括: serialInit()用來初始化 UART、serialRead()用來接收字節組、 serialWrite()用來發送字節組。
2.3.2 CAN總線模塊 CAN接口在工業控制系統的運用越來越廣泛,操作系統提供了對 CAN進行操作的
dalsem.com.CanBus類,如要對 CAN進行操作,首先要建立一個 CAN的對象。
CanBus canTest = new CanBus(CanBus.CANBUS0);
由于 DS80C400只提供一個 CAN控制器,所以只能選用 CANBUS0。一旦對象被初始化,就需要設置 CAN的速率。 CAN速率的設置通過設置 Prescaler,TSEGI,TSEGZ和同步段來完成。CAN的計算速率為:CAN波特率=晶振頻率/Prescaler+(TSEG1+TSEG2)。
將上述設置完成后,就可以使 CAN控制器使能了:canTest.enableController();要想完成幀的發送和接收,除了在信息中心設置接收和發送模式外,還必須先定義一個 CanFrame的對象即 CanFrame frame =new CanFrame();要接收一個 CAN的幀時,信息是以 CanFrame對象的形式進行接收,并且調用 canTest.receive(frame);如要發送數據,也必須將數據封裝層 CanFrame對象的形式進行發送,并且調用 canTest.sendFrame(frame)。
2.4人機接口模塊
本系統將瀏覽器/服務器(B/S)結構和客戶端/服務器(C/S)結構相結合,客戶端仍只需使用易于操作的 Web瀏覽器,使用該模式不僅統一了用戶界面,為用戶對系統的查詢和操作提供了極大的方便,系統還通過 Java Applet平衡了服務器端與瀏覽器端的負載狀況。
為了對控制對象進行遠程操作, Web頁面需要給用戶提供三個功能:一是現場設備查詢,主要是對現場設備的運行狀態和采集數據進行查詢;二是設備遠程控制,提供對運行現場某些參數的修改能力;三是報警 (如高限報警、下限報警等 ),如果現場設備超過設定的報警值,一方面會在網頁上發出聲音警報。此外還會在后臺向指定的郵箱發送報警郵件。
2.4.1 網頁的交互方式
Web系統主要采用 HTTP協議。HTTP采用請求/響應的握手方式,每個 HTTP交互都由從客戶端發往服務器的請求和從服務器發往客戶端的響應組成。HTTP采用 TCP連接,而且該連接狀態僅在此次連接中保持,無論服務器或是瀏覽器都不會記憶上次的連接狀態。在設計中首先采用 com.dalsemi.tininet包中的 http類,實現在 80端口等待客戶端的請求。其主要實現如下:
HTTPServer httpd = new HTTPServer(80); 然后給出將對應的 HTML頁面返回到瀏覽器。 httpd.setIndexPage(“index.html”);初始化結束后,Web服務器進入正常的工作狀態以輪詢的方式來進行處理。
2.5 系統的遠程加載和調試
為了使系統滿足不同任務的需要,有時需要對嵌入式系統中運行的軟件進行動態更新。本系統可以直接將新版本的監控軟件通過計算機網絡傳送到現場的嵌入式系統,對原有的軟件進行更換,從而實現軟件的遠程動態更新。利用操作系統自帶的 FTP和 Telnet功能,就可以實現系統的遠程更新和調試。在系統初始化結束后開始運行,一個線程創建了服務器套接字(Server Socket)來偵聽客戶端的 FTP和 Telnet連接請求。我們利用 Telnet和 FTP技術,可以實現在 Internet上對嵌入式節點的遠程操作,包括程序的運行和停止、程序下載、在線更新、調試、配置等。
3 總結
本文的創新點是采用 Java技術進行軟件開發,在實現傳統的數據采集和發布的基礎上,還增加了電子郵件功能,使得系統保存日志更為方便,增加了遠程文件的上傳和下載,使得系統可以遠程更新;其次,對原有的操作系統進行重新編譯,實現了對 Rash的加載。從而省去了傳統的通過電池保護電路來完成掉電后的數據保存;最后,系統設計了多個接口可以和不同接口的控制設備相連,增強了系統的通用性。在網絡接入模式上以太網和 PPP相結合使得系統的靈活性大為增強。
評論