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