北京首鋼自動化信息技術有限公司 李亮舉,郭雨春
進入20世紀90年代以來,世界各工業發達國家,集中全力進行工業綜合自動化技術的研究。所謂綜合自動化,就是在自動化技術、信息技術、計算機控制和各種生產加工技術的基礎上,從生產過程的全局出發,通過生產活動所需的各種信息的集成,把控制、優化、調度、管理、經營、決策融為一體,形成一個能適應各種生產環境和市場需求、多變性的、總體最優的高質量、高效益、高柔性的管理生產系統 。本文中冶金過程控制系統是這一類管理生產系統中計算機應用軟件的總稱,而冶金過程控制系統開發平臺(下文簡稱開發平臺)是為開發此類軟件而定制開發的軟件開發環境。通過在冶金過程控制系統的開發過程中使用開發平臺可以降低軟件開發難度、標準化軟件開發過程、規范設計并精簡代碼。使用開發平臺開發出的軟件具有更高的可靠性、可用性、可擴展性和可維護性。通過學習和總結冶金過程控制軟件系統開發經驗,發現C/S結構(客戶機/服務器結構)在冶金過程控制系統中非常普遍,但是由于C/S結構自身的特點,開發者通常會使用自定義標準來定義設備間的協議,這不僅增加了系統的設計難度,而且在后期系統集成和維護過程中因為系統與系統間缺乏統一的集成標準,不便于系統的集成和信息的共享。但是如果使用二次開發的辦法解決系統集成和擴展的問題,又會給系統的運行和維護帶來大量的工作。
為了解決這一問題,參考對象請求代理(Object Request Broker縮寫ORB)技術和面向服務(Service-Oriented Architec ture縮寫SOA)的原則,結合冶金過程控制系統開發實踐,在開發冶金過程控制系統開發平臺的過程中,開發了服務請求代理構件,該構件和冶金過程控制系統開發平臺一起,在京唐鋼鐵公司1580過程控制系統研究項目中得以成功應用,運行效果良好。
對象請求代理是一個中間件(MIDDLEWARE),它可以建立對象之間的CLIENT/SERVER關系。通過對象請求代理,一個CLIENT可以透明的引用同一臺機器上或網絡上的一個SERVER對象的方法。對象請求代理解釋該調用并負責查找一個實現該請求的對象,把參數傳給該對象,調用它的方法,最后返回結果。CLIENT并不清楚該對象的位置、編程語言、操作系統以及其它不是對象接口等系統信息。對象請求代理能實現分布式環境中位于不同機器上的應用之間的互操作以及多對象系統之間的無縫連接 。在一個面向對象的分布式環境中,一個對象請求代理可以為應用程序、服務器、網絡設施之間分發消息、提供關鍵通信設施。開發人員可以將對象請求代理想象成一組軟件總線、支柱,它提供了一個公用消息傳遞接口然后通過這個接口,許多不同類型的對象可以以對等層策略進行通信。
SOA架構是一種進行系統開發的新的體系架構。在基于SOA架構的系統中,具體應用程序的功能是由一些松耦合并且具有統一接口定義方式的組件(也就是SERVICE)組合構建起來的,它因對迅速變化的業務環境具有良好適應力而備受關注。正是因為這個特點,采用面向服務的架構去搭建開發平臺的底層,從而使開發平臺具有更好的適應性和可擴展性。
服務請求代理構件,在參考對象請求代理技術和面向服務的原則下,結合冶金過程控制系統開發的經驗而定制開發,它由一組服務請求代理標準和一個服務請求代理工具組成。考慮到在過程控制環境下通常對系統的響應速度和穩定性有較高的要求,在服務請求代理構件中使用靜態連接方式來規劃網絡中服務的分布。一方面設計者可以精確地控制服務的訪問權限,另一方面系統在初始化的過程中完成網絡拓撲結構的建立工作,避免了在業務邏輯發生時等待客戶機與服務器建立連接和重復連接的情況,不僅可以縮短服務器接收客戶機請求和服務器向客戶機發送處理結果所需的時間,還可以提高開發平臺底層網絡連接控制部分的穩定性。
服務請求代理構件標準部分包括通訊對象定義標準和通訊對象部署標準兩部分。
3.1.1 通訊對象定義
結合冶金過程控制系統開發平臺中的參數管理構件,將通訊對象的信息保存在相應的csv文件中。通訊對象標準如表1所示。

表1 通訊對象定義標準
如上表所示,在該標準中,網絡中所有的計算機由唯一的站名xsStationName標識,服務對象用服務名xsServiceName標識,該服務能夠處理的最大信息長度用緩沖區大小lSize標識,對該服務的說明用xsDescription標識。通訊對象定義實例如表2所示。

表2 通訊對象定義實例
在表2 通訊對象定義實例中,可以看出在站點L2-APP00中存在4個服務分別是:xParameterService、xLoggerWriter Service00、xCommunication Servcie00和xShmSynchronize Service00;在站點L2-APP01站點中存在3個服務xLoggerWriter Service01、xCommunication Service01和xShmSynchronize Service01。lSize和xsDescription分別給出了服務緩沖區的大小和說明。
3.1.2 通訊對象部署
和通訊對象的定義相同,通訊對象的部署也是通過相應的csv文件來實現。通訊對象部署標準如表3所示。

表3 通訊對象部署標準
上表定義了通訊對象部署標準:服務在網絡中的分布情況,站名xsStationName和服務名xslObjectName、xsrObjectName與通訊對象定義標準中的定義相關,服務類型iType用于指明服務在該計算機中的工作模式,網絡地址lIp、rIp和端口lPort、rPort用于指明服務在不同模式時的網絡地址,bHeartBeat、xsHead、xsTail是通訊代理器進行報文交換時所需的控制信息,描述xsDescription是對通訊對象部署的一個說明。通訊對象部署實例如表4所示。

表4 通訊對象部署實例
在表4 通訊對象部署實例中,我們以第三行、第七行、第十行為例分別說明三種不同類型的服務工作模式:第三行“L2-A P P00,1,xParameter Service,,10200,,,,1,HEAD,TAIL,監聽”定義了以下關鍵信息:在站點L2-APP00上,存在一個xParameter Servcie服務,該服務處于監聽模式可以為網絡中的相關站點提供相應的服務,服務工作在L2-APP00的10200端口。
第七行“L2-APP00,2,,,,xCommunication Service01,10.5.30.218,10202,1,HEAD,TAIL,連接”定義了以下信息:在站點L2-APP00上,存在xCommunication Service01服務的一個代理,該代理從10.5.30.218:10202獲得服務。
第十行“L2-APP01,0,xLoggerWriter Service01,,10201,,,,1,HEAD,TAIL,監聽”定義了以下信息:在L2-APP01站點上,存在一個xLoggerWriter Service01服務,該服務在私有模式下工作,只為本機提供服務,不能被網絡上其它站點訪問。
服務請求代理構件的作用是搭建分布式服務通信網絡,為網絡中的服務提供透明的同步過程調用和異步過程調用方法。在本方法中參考SOA架構,將能夠提供具體應用功能的進程(或線程)視為服務,通信資源的管理以服務為單位,以適應迅速變化的業務環境。在本地過程調用(LPC)過程中,系統為進程提供面向服務的過程調用中間件,負責進程(或線程)間事件和數據的傳遞;在遠程過程調用(RPC)過程中,由過程調用中間件將事件和數據傳遞給過程調用服務,過程調用服務根據上面提及的配置參數創建和維護分布式過程調用服務網絡,實現與網絡上其他節點間的遠程過程調用 。
在過程調用中間件中,過程調用接口分為三種:
(1)等待接口:負責為服務提供在中斷模式下工作的事件和數據接收,特點是基于事件、低CPU消耗和高響應速度;
(2)請求接口:負責為服務調用者提供事件和數據的發送和調用結果的接收,特點是在異步過程調用中只提供發送功能,在同步過程調用中提供發送、同步和調用結果接收功能。異步過程調用和同步過程稱調用使用統一的接口形式;
(3)應答接口:在同步過程調用中,服務完成業務處理后,該接口負責將調用結果發送給服務的調用者。
在過程調用服務中,提供進程(或線程)通信功能的線程分為四種:監聽線程、接入線程、接收線程、代理線程。
(1)監聽線程:負責為本地進程(或線程)提供監聽功能,響應遠程節點的接入操作,遠程節點接入后,監聽線程為遠程節點上的進程(或線程)創建專用的接收線程和代理線程。
(2)接入線程:負責為本地進程(或線程)提供接入遠程節點的功能,接入成功后,接入線程為遠程節點上的進程(或線程)創建專用的接收線程和代理線程。
(3)接收線程:負責接收遠程節點的過程調用,并通過過程調用中間件的請求接口將調用傳遞給本地進程,在同步過程調用中接收線程還負責將調用結果發送給遠程節點。
(4)代理線程:負責為遠程節點上的進程(或線程)創建過程調用中間件的本地代理,并通過過程調用中間件的等待接口接收本地進程(或線程)對遠程進程(或線程)的調用,并負責將調用發送給遠程節點上的接收線程。
在分布式網絡環境中,服務請求代理負責建立計算機與計算機之間的連接,客戶端通過通訊中間件透明的向服務發送請求和接收應答,客戶端(CLIENT)調用服務器(SERVER)提供的服務時經過以下步驟:
(1)客戶端來調用通訊中間件
(2)中間件將消息傳遞給代理線程
(3)代理線程將數據封裝后發送給服務器上的接收線程
(4)接收線程解包數據后將自己扮演為模擬客戶端再次調用通訊中間件
(5)服務器收到調用數據后執行約定的業務處理過程
(6)服務器調用通訊中間件將處理結果返回
(7)接收線程將處理結果封裝后發送給代理線程
(8)代理線程通過中間件將結果返回給客戶端
借助于服務請求代理構件,客戶端(計算機A)和服務器(計算機B)客戶端像調用本地服務一樣調用在網絡上分布的服務,服務請求代理就像一條“通訊總線”一樣,它為連接在網絡上的客戶端和服務器提供一個透明的通訊環境,圖1為“通訊總線”示意圖,是在這個網絡環境中客戶端和服務器進行通訊的示意圖。

圖1“通訊總線”示意圖
服務請求代理開發完成后已經作為標準組件與冶金過程控制計算機應用系統開發平臺其他構件一起應用到了京唐鋼鐵公司1580項目研究中,經測試,該系統已經穩定運行3個多月,系統穩定可靠。通過使用自主開發設計的服務請求代理組件,為1580項目實施帶來了以下好處:
(1)客戶端與服務器之間的接口使用統一的標準,規范化了接口設計,減少了設計人員的工作量;
(2)編程人員無需關心開發出的程序究竟部署在何處,給調試和測試工作帶來了巨大的便利;
(3)當網絡環境發生變化時,無論是重新部署應用程序還是調整服務器網絡參數,都可以通過修改相應的參數來完成,降低了系統維護難度。
經過多次對分布式網絡系統搭建過程的測試和在1580熱軋項目中的具體應用,發現該服務請求代理構件運行穩定,且成為冶金過程控制系統開發平臺中不可或缺的一個組成部分。該構件體現出了無比巨大的優越性,方便、簡單、輕松快速的實現分布式系統的搭建,減少開發人員代碼編寫、統一編程接口、規范化接口設計,易于維護,大大減少了系統搭建完成后
[1] 邵裕森,戴先中主編. 過程控制工程[M]. 北京:機械工業出版社,2 0 0 1.
[2] 孫昌平,顧冠群. 通用對象請求代理體系結構[J]. 計算機集成制造系統-C I MS,1 9 9 8 ,(2).
[3] 胡丕俊,李亮舉等. 冶金過程控制開發平臺中進程通信系統的開發及應用[J]. 冶金自動化,2 0 1 1, (5).