荊俊峰,蒯 亮,房志奇,劉 凱,靳書云
(中國電子信息產業(yè)集團有限公司第六研究所,北京 100083)
在信息管理系統(tǒng)中,最常見的是MIS 管理系統(tǒng),它一般主要關注的是宏觀層面的信息管理,如原材料管理、財務管理、質量管理、計劃管理、人力資源管理等[1]。但對于機組運行實時數據以及實時工藝要素的信息推送,在管理者的角度來看是一個迫切需求,管理者不用親臨操控室,在辦公室就可以實時監(jiān)控機組運行系統(tǒng)圖和數據曲線,從而能夠及時、準確地掌握機組運行狀況,以便做出科學決策。尤其對于機組分散在不同地域的情況,對每個機組的運行狀況的獲取更為迫切。本文從實際需求出發(fā),設計了一種機組運行信息遠程瀏覽的實現(xiàn)方法,為工廠管理者提供了一套便捷、快速、準確的信息獲取方式,從而實現(xiàn)科學管理、科學決策、科學運行。
遠程瀏覽系統(tǒng)分為服務端和客戶端兩個體系,其中服務端可以支持多個機組,每個都配有一個遠程瀏覽服務器,專門負責向客戶端提供動態(tài)數據,每個機組都支持多個客戶同時遠程瀏覽。系統(tǒng)在服務端對每一個客戶端進行注冊登記,以保證每個客戶的合法性。客戶端的數量按需配備,可以分散分布于廠區(qū)的不同位置,根據具體需求配備相應的防火墻和交換機,但需要開放相應的通信端口。系統(tǒng)體系結構如圖1 所示[2]。
遠程瀏覽系統(tǒng)是依附于SCADA 系統(tǒng)而進行設計的,SCADA 系統(tǒng)設計的原則是分為系統(tǒng)軟件層和驅動層兩個層次,系統(tǒng)軟件層主要部署系統(tǒng)級軟件以及一些通用型軟件,驅動層主要實現(xiàn)多種數據源的組態(tài)和通信功能,包括控制器、MIS 通信、OPC、MODBUS、PLC 等各種數據源。遠程瀏覽系統(tǒng)相對于SCADA 系統(tǒng)來說可以作為一個數據源驅動來看待,因此屬于驅動層的軟件;對于客戶端來說原則上保留系統(tǒng)軟件的部署,但通用軟件層不排除產品有特殊功能的要求。因此在單元機組側也就是服務端的SCADA 軟件中增加與遠程站通信的接口驅動WebServer 通信模塊,而遠程瀏覽側作為單獨的軟件產品安裝,如圖2 所示[3]。
圖2 遠程瀏覽系統(tǒng)的軟件地位
遠程瀏覽系統(tǒng)服務端和客戶端的模塊劃分如圖3 所示,其中服務端有注冊模塊、通信管理模塊、測點提取模塊、文件服務模塊、證書模塊、下載列表模塊,客戶端有登錄管理模塊、客戶端通信模塊、文件下載模塊、公共接口模塊等。
圖3 遠程瀏覽系統(tǒng)的軟件模塊劃分
服務端的注冊模塊實現(xiàn)遠程客戶端名稱、密碼、IP地址的注冊,對注冊數據庫進行備份和恢復,以及注冊數據庫全網一致化等功能;通信管理模塊實現(xiàn)客戶端的登錄驗證、與客戶端通信交互、周期調度等功能;測點提取模塊進行系統(tǒng)圖上測點信息的提?。晃募漳K實現(xiàn)FTP 文件下載服務功能;證書模塊實現(xiàn)License 相關的功能;下載列表模塊為遠程瀏覽客戶端生成下載系統(tǒng)圖的列表,為遠程瀏覽客戶端提供系統(tǒng)圖號替換功能。
客戶端登錄管理模塊實現(xiàn)與服務器握手信息的管理;客戶端通信模塊與服務端進行數據交互通信,包括客戶端顯示系統(tǒng)圖的請求與接收、周期接收系統(tǒng)圖測點的動態(tài)信息、系統(tǒng)圖的更新等;文件下載模塊提供客戶端文件下載服務;公共接口模塊實現(xiàn)客戶端進行系統(tǒng)圖顯示所需的公共函數的接口服務。
系統(tǒng)圖的顯示原理是顯示程序首先讀取本地系統(tǒng)圖在線文件,從在線文件中獲取系統(tǒng)圖的顯示圖素以及動態(tài)Tag 點的信息,然后根據圖素把系統(tǒng)圖顯示出來,其中的動態(tài)信息一部分來自于共享內存中的動態(tài)Tag 信息,包括動態(tài)Tag 點的實時值、實時狀態(tài)、上下限值、報警信息等;另一部分是動態(tài)圖素信息,包括交替圖形、動畫、動態(tài)顏色、動態(tài)數值等。因此服務端和客戶端的交互需要兩種方式,一種是進程間的數據交互,另一種是服務端和客戶端之間的文件交互。WebServer 端部署在SCADA 系統(tǒng)軟件基礎上,作為SCADA 軟件的一個驅動模塊,同時也是WebClient 的數據源,WebClient 作為一個單獨的系統(tǒng)軟件,部署在遠程瀏覽的客戶端。服務器端的WebServer 驅動程序首先通過讀取注冊數據庫獲取登錄請求的遠程瀏覽用戶的合法性,登錄成功后,通過進程間的通信技術與進程GetGrbPIDList 交互從而獲取客戶端需要顯示的Tag 點列表,通過UDP 協(xié)議周期發(fā)送數據差分信息,保證客戶端數據的實時性。服務器端的WebFTPServer 通過注冊數據庫獲取需要下載的用戶信息,并完成客戶端需要的系統(tǒng)圖在線文件的FTP 下載;客戶端的WebClientComm 負責與服務器端的驅動程序進行通信交互,周期獲取動態(tài)數據,同時負責診斷信息的發(fā)送,另外WebClientComm 通過預處理隊列和輸入處理隊列把數據寫入客戶端實時表,供顯示模塊進行系統(tǒng)圖的顯示,其總體處理流程如圖4 所示。
圖4 遠程瀏覽系統(tǒng)的總體處理流程圖
UDP 協(xié)議是一個無連接協(xié)議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,并盡可能快地把它扔到網絡上。在發(fā)送端,UDP 傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。由于傳輸數據不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺服務機可同時向多個客戶機傳輸相同的消息,這個正好可以滿足本系統(tǒng)一個服務器可以登錄多個客戶端的需求[4]。同時因為服務端和客戶端的通信交互是周期性的,所以采用無連接的UDP 協(xié)議來實現(xiàn)正好可以揚長避短??蛻舳耸状蔚卿浐?,顯示首張系統(tǒng)圖時,首先向服務端發(fā)送請求,服務端會先發(fā)送該系統(tǒng)圖的所有Tag 點的定義信息,確保發(fā)送成功后,再周期發(fā)送這些Tag 點實時值、實時狀態(tài)的差分信息,從而達到減少網絡負荷的目的[5]。
WebServer 端的通信模塊主要完成如下功能:(1)實時監(jiān)聽客戶端通信請求,并給出應答;(2)最多可同時并發(fā)接收20 個客戶端請求;(3)向測點提取模塊發(fā)消息生成通信使用的點列表,并按照請求的更新周期向客戶端周期發(fā)送系統(tǒng)圖上Tag 的實時值和狀態(tài);(4)接收客戶端的診斷信息包,在5 個發(fā)送周期沒有收到診斷信息(客戶端的診斷包發(fā)送周期可定制),則認為客戶端異常,服務器終止周期發(fā)送。服務端的處理流程如圖5所示[6]。
圖5 服務端的流程設計
客戶端登錄成功后,首先創(chuàng)建套接字,啟動接收線程,然后向服務器發(fā)送接收數據的請求,在接收到數據包后把實時數據寫入預處理隊列,通過本地數據處理流程然后寫入實時表,具體流程設計參見圖6 所示。
圖6 客戶端的流程設計圖
由于UDP 無連接,不像TCP 一樣做了所有的事情,因此對于采用UDP 協(xié)議的遠程瀏覽系統(tǒng)需要設計一套交互管理辦法,對于發(fā)送的各種類型的數據包需要進行辨別。針對這種需求,本文設計了一套包頭標識符的識別方法,當服務端或者客戶端收到UDP 數據包時,首先讀取包頭標識符,通過標識符后的數字來確定該數據包的類型,從而確定該數據包是登錄請求包,數據包、或者其他類型。表1 為標識符的定義說明。
表1 UDP 包頭標識設計
服務端和客戶端除了進程間的數據交互之外,還需要進行文件交互,因為客戶端需要從服務端下載系統(tǒng)圖的在線文件來進行顯示。在客戶端首次登錄時,首先下載顯示系統(tǒng)圖需要的基本在線文件,在顯示某幅系統(tǒng)圖時還需要判斷該系統(tǒng)圖是否服務器端有更新,如果有更新就需要重新下載,然后才能通過服務器傳送系統(tǒng)圖上Tag 點的實時值和狀態(tài),實現(xiàn)客戶端系統(tǒng)圖的動態(tài)呈現(xiàn)。
FTP(File Transfer Protocol)是用于在網絡上進行文件傳輸的一套標準協(xié)議,它工作在OSI 模型的第七層,TCP 模型的第四層,即應用層,使用TCP 傳輸而不是UDP,客戶在和服務器連接前要經過一個“三次握手”的過程,能夠保證連接可靠,而且是面向連接,為文件傳輸提供可靠保證。因此本文設計了一套FTP 文件下載系統(tǒng),來實現(xiàn)該項功能。FTP 服務啟動時首先檢測本機是否是預先定義的服務器,如果是則根據注冊的客戶端信息為客戶端提供FTP 下載服務,如果設備組態(tài)發(fā)生變更,收到變更消息需要重新初始化FTP 服務。圖7 為FTP 的服務端和客戶端的流程模型[7]。
圖7 FTP 文件下載系統(tǒng)流程模型圖
圖8 為服務端各個類之間的關系,其中數據管理類CFtpServer 為實現(xiàn)類,主要完成FTP 服務端的綁定IP 地址、設定FTP 數據端口范圍、設定FTP 客戶名和密碼、設定最大客戶端數、綁定監(jiān)聽端口、啟動FTP 服務等功能。
圖8 服務端類關系圖
圖9 為客戶端各個類之間的關系,其中類CSetGrb-Path、CSetServerIPAddress 分別設置下載文件的路徑和IP 信息,CFtpCLient 完成FTP 文件下載客戶端的具體操作流程,包括初始化、建立連接、登錄、創(chuàng)建路徑、文件重命名、文件下載、文件傳輸等[8]。
圖9 客戶端類關系圖
客戶端的系統(tǒng)圖顯示需要顯示軟件進行顯示,而通信模塊也需要對顯示內容進行周期維護,因此對于多個進程需要訪問的內存,本系統(tǒng)采用共享內存的方式進行設計。由于客戶端支持最多同時顯示4 張系統(tǒng)圖,因此共享顯示內存最多存儲4 張系統(tǒng)圖的實時數據,每張圖由機組單元號和圖號作為索引,每張系統(tǒng)圖最多支持1 000 個Tag 點的顯示,包括邏輯點、顏色變更等,如果系統(tǒng)圖關閉,對應的內存區(qū)也隨之清零。這個內存是個動態(tài)變化緩存區(qū),其動態(tài)信息由預處理隊列進行維護[9],圖10 為該共享內存的存儲設計。
圖10 客戶端共享內存設計圖
本文立足于SCADA 數據采集系統(tǒng),設計了一種基于UDP 和FTP 通信協(xié)議的遠程瀏覽系統(tǒng),為管理者的科學決策、生產分析提供了便利,尤其對于分散于不同地域的控制系統(tǒng)的監(jiān)控具有現(xiàn)實意義。該系統(tǒng)設計方法簡潔,信息獲取及時準確,已獲得廣泛推廣和應用。