基于Web的網絡儲油罐群遠程監控系統研究
4.3 中間層軟件設計
中間層的主要功能是:對來自底層的數據信息進行讀取、分解(解析)、運算處理(包括對數據庫存儲),并且響應來自上層的客戶請求,對該請求分析處理后轉發相應的信息給底層,以達到對底層的監視和控制。其系統軟件應用結構如圖3所示。本文引用地址:http://cqxgywz.com/article/152452.htm

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







評論