基于Web的網(wǎng)絡(luò )儲油罐群遠程監控系統研究
4.3 中間層軟件設計
中間層的主要功能是:對來(lái)自底層的數據信息進(jìn)行讀取、分解(解析)、運算處理(包括對數據庫存儲),并且響應來(lái)自上層的客戶(hù)請求,對該請求分析處理后轉發(fā)相應的信息給底層,以達到對底層的監視和控制。其系統軟件應用結構如圖3所示。本文引用地址:http://dyxdggzs.com/article/152452.htm
CAN適配卡的控制程序模塊將來(lái)自CAN適配卡的數據進(jìn)行解析、存儲到數據庫,以及把來(lái)自Web服務(wù)器應用程序傳遞來(lái)的信息進(jìn)行處理并向CAN適配卡發(fā)送相應數據;Web服務(wù)器應用程序模塊:負責系統的全局調度,接收客戶(hù)端請求并響應,它擔當著(zhù)對客戶(hù)控制命令的下傳和對上傳數據信息的處理;而Windows消息處理模塊則建立了Web服務(wù)器應用程序和基于CAN適配卡的控制程序的一種溝通機制。
其中,Web服務(wù)器應用程序編程使整個(gè)系統軟件設計的關(guān)鍵部分。在WebSnap中,可以創(chuàng )建五種標準類(lèi)型的Web服務(wù)器應用程序,它們是ISAPI和NASPI類(lèi)型、獨立于操作系統的CGI類(lèi)型、獨立于操作系統的WinCGI類(lèi)型、Apache類(lèi)型和Web服務(wù)器應用程序調試器類(lèi)型。為了方便調試服務(wù)器應用程序起見(jiàn),我們采用了Web服務(wù)器應用程序調試器類(lèi)型。它可以利用本地機虛擬的Web服務(wù)器所開(kāi)發(fā)的應用程序結合到一起運行并通過(guò)C++ Builder強大的調試功能,方便地發(fā)現程序中存在的邏輯錯誤。
由于WebSnap具備了嵌入腳本的能力,因此我們采用Dreamweaver來(lái)制作HTML頁(yè)面文件并將其作為模板集成到C++ Builder的Web服務(wù)器應用程序中,構成一個(gè)完美的服務(wù)器網(wǎng)站。WebSnap應用程序與數據庫的連接主要通過(guò)ADO組件技術(shù)和SQL。在WebSnap應用程序的主窗體上嵌入ADOConnection組件,使WebSnap應用程序與數據庫總保持邏輯連接[6]。
5 數據交互路徑
系統中的數據流向大體可分為上行數據和下行數據。上行數據就是從現場(chǎng)采集的數據上傳給服務(wù)器,下行數據就是服務(wù)器接收來(lái)自客戶(hù)瀏覽器的命令請求下傳到相應的現場(chǎng)設備。
5.1 下行數據
當遠程客戶(hù)通過(guò)身份(用戶(hù)名和口令)驗證進(jìn)入控制主頁(yè)時(shí),選擇任務(wù),如“關(guān)閉1號儲液罐進(jìn)油閥”,點(diǎn)擊提交按鈕,這樣服務(wù)器便接收來(lái)自客戶(hù)瀏覽器的控制命令請求??蛻?hù)瀏覽器把地址欄中的URL(http://192.168.1.238:1024/chuyeguan.LhjSnap/Command)內容傳給了Web服務(wù)器,將URL 第二部分服務(wù)器名(192.168.1.238:1024)解碼與Web服務(wù)器相連,Web服務(wù)器應用程序通過(guò)WebDispatcher將URL 第四部分路徑名(Command)解析,從它的動(dòng)作項列表中選取【PathInfo】屬性值與Command相同的動(dòng)作項。該動(dòng)作項觸發(fā)其對應的頁(yè)面制作器PageCommand。如果沒(méi)有找到匹配的動(dòng)作項,WebDispatcher將調用默認的動(dòng)作項。PageCommand的屬性【HTMLFile】標記著(zhù)對應的HTML文件地址,其事件屬性【OnHTMLTag】標記著(zhù)PageCommandHTMLTag。當關(guān)閉1號儲液罐進(jìn)油閥事件被觸發(fā)時(shí),頁(yè)面制作器PageCommand開(kāi)始構造HTML頁(yè)面,當發(fā)現透明書(shū)簽〈#IsIn進(jìn)油閥〉(HTML文件代碼中)時(shí),用相應的解析函數PageCommandHTMLTag中的替換文本替代。與此同時(shí),我們在解析函數PageCommandHTMLTag中自定義Windows消息(關(guān)閉1號進(jìn)油閥)并且發(fā)送它,當基于CAN適配卡的控制程序截獲這個(gè)消息時(shí),把關(guān)閉1號進(jìn)油閥編制成命令碼“1101100000”封裝成CAN信息幀數組的結構成員ID發(fā)送到CAN適配卡。經(jīng)CAN適配卡(轉換成CAN協(xié)議能識別的數據格式)傳到CAN總線(xiàn)時(shí),經(jīng)驗收碼和屏蔽碼辨別,被CAN總線(xiàn)智能節點(diǎn)1接收,表明要控制的對象是1號大型儲液罐。與此同時(shí),CAN控制器產(chǎn)生接收中斷,單片機把ID分解后知道被控量是進(jìn)油閥,然后運行關(guān)閉進(jìn)油閥子程序滿(mǎn)足該控制要求,經(jīng)執行器執行關(guān)閉進(jìn)油閥命令。至此,客戶(hù)瀏覽器把控制命令下傳給了1號大型儲液罐進(jìn)油閥。
評論