(寶鋼集團有限公司梅山鋼鐵公司設備部,江蘇 南京 210039) 孫建林
孫建林(1966-)
男,高級工程師,主要從事冶金過程控制計算機系統的設計、開發工作。
1 前言
隨著數據庫技術和網絡技術的發展,應用于金融、ERP等管理領域的大型數據庫技術,目前正逐步應用于控制領域。眾所周知,帶鋼熱連軋生產是各種新技術應用最為廣泛的一個領域。在冶金行業中,帶鋼熱連軋計算機控制系統是公認的技術含量最高、系統最復雜并且也是發展最為迅速、成熟和效果最明顯的一個領域。它不僅提高了生產效率,而且大大的改進了產品尺寸精度和性能,給企業帶來了巨大的經濟效益。近幾年,Oracle數據庫在國內冶金行業,如:寶鋼集團有限公司、鞍山鋼鐵集團公司等企業的管理系統中得到了應用,但數據庫技術用于實時性非常高的熱連軋控制領域,并不多見,而且微軟的大型數據庫 SQL Server在這之前還沒有在國內熱連軋企業中有應用先例。這次寶鋼集團有限公司梅山鋼鐵公司(以下簡稱為梅山)熱連軋控制系統分別采用了大型數據庫Oracle 8i和SQL Server 2000,也就是說異類數據庫共存于一個熱連軋控制系統中,這在國內同行業中是首次。因此,在進行數據庫設計、異類數據庫信息流交換設計時尤為重要,它對控制系統的實時、可靠和穩定性等方面的影響至關重要。
2 異類數據庫體系結構
異類數據庫系統是相關的多個數據庫系統的集合,可以實現數據的共享和透明訪問,每個數據庫系統擁有自己的DBMS。異類數據庫的各個組成部分具有自身的自治性,實現數據共享的同時,每個數據庫系統仍保有自己的應用特性、完整性控制和安全性控制。異類數據庫系統主要體現在以下幾個方面:
(1) 計算機體系結構的異類:各個參與的數據庫可以分別運行在大型機、小型機、工作站、PC或嵌入式系統中;
(2) 基礎操作系統的異構:各個數據庫系統的基礎操作系統可以是Unix、OpenVMS、Windows NT、Windows 2000、Linux等;
(3) DBMS本身的異構:可以是同為關系型數據庫系統的Oracle、SQL Server等,也可以是不同數據模型的數據庫,如關系、模式、層次、網絡、面向對象,函數型數據庫共同組成一個異構數據庫系統。
異類數據庫系統的目標在于實現不同數據庫之間的數據信息資源、硬件設備資源和人力資源的合并和共享。其中關鍵的一點就是以局部數據庫模式為基礎,建立全局的數據模式或全局外視圖。這種全局模式對于協調熱連軋各個控制區域,建立核心的事件動作和分配系統尤為重要。
熱連軋過程控制系統基本可分為加熱爐控制區域、軋線控制區域、平整分卷控制區域及更高層次的生產管理區域。每一區域的數據庫中都有著自己的信息數據,而通常核心的事件動作和分配系統只關心主要的、為全局控制模式所描述的信息。一種數據庫通過接口技術獲取另外一種數據庫的實時信息,以驅動相應進程執行相應的動作,這種全局控制模式是一種好的解決方案。異類數據庫系統相互實時交換信息,并各自執行自己的任務,從而完成對對象的正確控制。
3 數據的透明訪問
異類數據訪問是困撓很多企業的問題。許多企業運行幾個不同的數據庫系統,每一個系統都存儲數據并有一套相應運行的應用程序。將這些數據合并于一個數據庫系統往往是困難的,主要是因為:在一個數據庫中運行的許多應用程序在另一個數據庫中或許沒有相應的版本。在移植到一個統一的數據庫系統變得切實可行之前,各種異類數據庫需要協同工作。所面臨的挑戰就是要迅速、有效和經濟地通過單一的應用程序部署那些可能存在于許多不同系統中的數據,從而提供一個全面的數據視圖而無需考慮是什么數據庫或者操作系統。
對于異類數據庫系統,實現數據共享應當實現數據的透明訪問。在異類數據庫系統中實現了數據的透明訪問,用戶就可以將異類數據庫系統看成普通的分布式數據庫系統,用自己熟悉的數據處理語言去訪問數據庫,如同訪問一個數據庫系統一樣。
Oracle 提供了兩種連通性解決方案以滿足迥然不同的數據訪問的需要。它們是 Generic Connectivity(一般連通性)和 Oracle Transparent Gateways(透明網關)。有了這兩種解決方案,在異類分布式環境中從 Oracle 系統訪問任意數量的非 Oracle 系統成為可能。
注:1、2均為異類數據庫之間的透明存取操作;3、4為利用通訊程序
實現數據庫信息到其他進程的事件傳遞,以完成事件驅 動任務
圖1 異類數據庫在一個控制系統內通訊示意圖
4 異類數據庫的互訪
梅山熱軋加熱爐區域控制系統,采用 Alpha ES40、OpenVMS 操作系統,數據庫系統為Oracle 8.1.7;軋線區域、生產管理采用PC高檔服務器、Windows Advance Server 2000,數據庫系統為SQL Server 2000,Cluster結構;平整分卷控制區域,采用PC 服務器、Windows NT4.0,數據庫系統為Oracle 8.1.7。
加熱爐區域與軋線區域、生產管理之間需要實時交換大量信息。
軋制計劃數據、板坯數據、裝爐實際數據、板坯吊銷、休爐數據、出爐數據、粗軋出口溫度數據、鋼卷軋制完成數據等等。由于有網關技術的支持,在一種數據庫中,我們可以按如下方法對另一種數據庫進行透明訪問:
從SQL Server 2000 向 Oracle 8i 數據表中寫入數據:
INSERT INTO FURN2..FUR2.X_PDI_RPDT SELECT *, INS_TIME = GETDATE() FROM Furnace.dbo.D02R_View WHERE roll_prg_no = @schedID
從Oracle 8i向SQL Server 2000數據表中寫入數據:
insert into x_fce_discharge_slab@furnace
(roll_prg_no?slab_no?coil_no?discharge_time?
furnace_num?column_no?slab_no_next?coil_no_next?
furnace_num_next?column_no_next? values(var_roll_prg_no,var_slab_no,var_coil_no,
var_lift_time_char,var_fce_no,var_fce_column,
var_slab_no_next,var_coil_no_next,
var_fce_num_next,var_fce_column_next);
COMMIT;
正常情況下,上述操作會正確的完成異類數據庫的訪問。但如果發生目的數據庫的計算機處于斷電或數據鏈路存在故障的情況下,此操作將會導致任務異常終止。因此,異類數據庫互訪中的容錯設計就顯得非常重要。在Oracle中可以采用如下方法:
先對要操作的數據表進行查詢操作,以測試該鏈路是否暢通,如鏈路不通,做相應的動作。
select count(*) into mem_count from x_fce_discharge_slab@furnace;
EXCEPTION
WHEN others THEN
ROLLBACK;
5 由異類數據庫信息觸發應用進程
在異類數據庫實現成功訪問的基礎上,必須將相應信息轉化為事件,從而驅動其他應用進程工作。該機制是實現控制的關鍵。如加熱爐出鋼信息從加熱爐Oracle數據庫寫入到軋線SQL Server 數據庫后,為了能實時的處理,采用數據庫觸發器技術,利用句柄(Handle),將對應的信息通過擴展存貯過程傳遞給其他控制進程,如IODbService、Piece Director等,從而啟動模型course 0計算。
EXECUTE dbo.sp_sendevent @handle=