任玉辉 邹修铁
摘 要:目前,DCS系统已经在工业控制领域被广泛应用,大大提高了工业控制的自动化水平,但是DCS系统给出的是实时数据,如何快速及时地采集这些实时数据将其存储,形成历史数据并作为管理人员进行考核评比的标准,成为摆在管理人员面前的一个问题。通过OPC技术与DCS系统通讯实现数据采集,使用数据库完成对数据的存储,开发报表系统能够很好的解决这一问题。基于此,本文结合OPC通讯技术,详细介绍了某烧结厂报表系统的开发与应用过程。
关键词:OPC;烧结;报表
1.引言
随着烧结工业生产规模的扩大和对产品质量的要求的不断提高,如何高效准确的完成对烧结过程的管理考核,成为了摆在管理人员面前的一个问题。目前,各个烧结厂管理人员只能通过定时的人工抄写各项指标值,再一项一项的录入到EXCEL表格中,通过一系列的计算,形成生产报表,完成考核。这种方式不仅繁琐,而且很大程度上依赖人工操作,缺乏可靠性和准确性。因此,开发能够与DCS系统通讯高效准确地生成生产管理报表的报表系统就显得尤为重要。
本文提出的基于OPC通讯技术的报表管理系统是根据某烧结厂的需求完成开发的。系统的数据处理层通过采集模块完成对DCS系统指定数据的采集,并将数据存储在数据库服务器中,数据库服务器完成对历史的数据的抽取挖掘,形成报表所需要的数据,系统客户端通过与数据库服务器通讯,生成所需要的报表。
2.相关技术介绍
系统是基于OPC通讯技术来完成开发的。OPC(OLE for Process Control, 用于过程控制的OLE)是一个工业标准,它基于微软的OLE(现在的Active X)、COM (部件对象模型)和DCOM (分布式部件对象模型)技术,包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
OPC数据访问主要由服务器对象、组对象、和项对象组成:
(1) OPC Server(服务器):OPC启动服务器,获得其它对象和服务的起始类,并用于返回OPC Group类对象,可以动态创建和释放组对象;
(2) OPC Group(组):存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。
(3) OPC Item(项):存储具体Item 的定义、数据值、状态值等信息。每个OPC项代表了OPC服务器到数据源的一个物理连接。数据项是读写数据的最小逻辑单位。OPC项不可以由OPC客户直接操作,所有对OPC项的操作都是通过包含该项的OPC组进行的。
OPC服务器对象和组对象是聚合关系,即OPC服务器对象产生OPC组对象后,将组对象的指针传递给客户,由客户之间操作对象。这样既提高了数据存取的速度,也易于功能扩展,体现了组件软件的重用性。
3.系统的开发与应用
系统以VS2005为开发平台,ORACLE作为数据库服务器,采用了基于三层结构的多层架构开发模式,结合OPC通讯技术完成与DCS系统的通讯。系统结构图如图3-1所示:
3-1系统结构图
3.1 数据采集模块
为了增强系统的实用性,在实现数据采集模块的过程中将OPCServer和OPC项的信息存储在数据库中,用户可以根据自己的需要,把OPCServer对象信息和OPC项对象信息配置在数据库中,这样处理后,用户可以根据自己的需要,配置OPC项对象,避免了加载不需要的项对象而造成的系统资源的浪费。
实现此OPC客户端主要通过以下几个步骤:
(1) 导入OPC自动化接口服务。将OPCAutomation.dll添加到项目引用中;
(2) 连接OPC服务器。OPC提供的连接服务器的接口需要两个参数:OPC服务器名和OPC服务器IP地址;
(3) 添加组。
(4)添加数据项。
(5) 读取OPC数据。在客户端有两种方式获得服务器端的数据。一种是定时的主动去读取服务器上的值,另一种是同通过组对象的DataChange事件触发来获得,当服务器上的数据发生变化时,会触发DataChange事件,本项目中是采用主动读取的方式来获得数据的;
在每次关闭数据采集模块的时候,要释放OPCServer对象的组对象和项对象。因为每台OPCServer对连接点数是有限制的,如果不释放这些对象,会使连接点数积累而达到限制值。
3.2 数据库设计
系统采用ORACLE 数据库作为数据库服务器,数据库设计主要分为三个部分:
(1) 数据表部分
数据表分为系统表、数据抽取表、报表数据表三部分,其中系统表记录整个系统的相关信息,包括OPC配置信息表、OPC点信息表、数据总表、系统日志信息表等;数据抽取表分为小时数据抽取表、班数据抽取表,小时数据抽取表将数据总表中的数据每小时做一次平均、求和等处理后逐条记录,数据抽取表主要为日报表提供数据来源,班数据抽取表将小时数据表的数据每班做一次平均、求和等处理后逐条记录,为月报表、年报表提供数据来源;报表数据表是按照客户端所需报表的格式定义的数据表,将客户端报表的数据项与报表数据表对应的字段进行绑定,最终生成所需要的数据报表。
(2) 作业部分
数据库服务器中的作业按照指定的周期完成指定的命令,主要完成数据的定时抽取。如(1)中的小时数据抽取表、班数据抽取表都是依靠作业来定时完成的。
(3) 存储过程部分
在生成报表的时候,需要对基础数据进行平均、求和、求最值以及类似作业率、一级品率等相关计算,这些操作都是通过编写存储过程来完成的,通过存储过程处理形成最终的数据写入到对应的报表数据表中,采用存储过程完成这些计算速度更快性能更好,系統在客户端直接调用存储过程,形成最终的数据报表。
3.2客户端开发
系统的客户端是采用多层架构设计模式来实现的,实现动态创建不同的数据层对象接口。整个架构包括UI(表示层)、 BLL(业务逻辑层)、DAL(数据库访问层)、Model(模块层)四个软件层次模块。
各部分的具体功能如下:
(1)UI:表现层。人机交互界面,调用业务逻辑层的接口。
(2)BLL:业务逻辑层组件。调用接口实现数据层的访问。
(3) DAL:数据访问层,实现BLL中的接口,完成与数据库的数据操作。
(4)Model: 业务实体模型。数据库是关系型,不是面向对象的,要实现面向对象那就得把平面的表结合业务规则抽象成类。此层在各个层间传递参数。
4 结论
本文提出的报表管理系统是在Visual C#环境下,结合OPC通讯技术,数据库技术完成开发的。系统在上海某烧结厂运行使用,系统运行正常稳定,可以快速准确的生成生产报表,大大提高了管理者的工作效率,达到预期目的,有较大应用价值。