(宝钢集团有限公司梅山钢铁公司设备部,江苏 南京 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=
|