OPC在数据交互系统中的应用

2012-09-19 13:24孙学华
自动化仪表 2012年10期
关键词:装车储罐服务器

鲍 坤 孙学华

(南京工业大学电子与信息工程学院,江苏 南京 211816)

0 引言

目前,工业控制中的各种仪器、仪表、地磅系统和装车系统等都提供了计算机通信协议。但是,由于不同的厂商提供的协议不同,所以与这些设备和系统交换数据、编写接口程序比较复杂。OPC技术能够很好地解决这个难题[1]。

某企业环氧乙烷衍生精细化工生产采用霍尼韦尔的Experion PKS系统进行控制,其生产产品需要通过储罐车进行运输。涉及到运输则需要使用另一个独立的系统——装车台系统。装车台系统主要用来计量并记录一些装车信息,例如装车时间、物料名称、提料单位、预发量、实发量和累积量等信息,这些信息在发车时都会被打印出来。

为了确保安全,装车台需要远离控制室,因此在装车过程中,主控制室是监控不到装车台系统信息的。但是由于生产监控的需要,在监控室内也需要对装车台系统的一些信息进行监控,所以就需要建立生产系统与装车台系统之间的数据传输通道。

1 设计思路

实现生产系统与装车台系统之间的数据交互,首先需要分析了解装车台系统。通过与第三方厂家的沟通,了解到装车台系统的数据信息存储在SQL数据库中。因此,可以通过以太网远程连接数据库并对数据库进行读写操作。如果在PKS生产系统中直接编程以远程读写数据库,会给生产系统带来很大的负担,这是因为PKS生产系统只支持VB、C等简单的语言,所以不太方便在PKS生产系统中直接编程并远程读写数据库。

由于PKS控制系统支持先进的第三方接口OPC,通过OPC接口可以对生产系统中的数据进行读写操作,因此只需开发一个第三方程序。可通过远程连接数据库来读取数据库中的数据,再通过OPC接口将数据传输到生产系统中;也可以通过OPC接口读取生产系统中的数据,再将数据写到装车台数据库中,以此实现生产系统和装车台系统之间的数据交互。

第三方程序采用C#进行开发,通过ADO.NET远程连接数据库并进行相应的读写操作;利用OPC接口实现对生产系统中的数据进行操作。数据交互框图如图1所示。

图1 数据交互图Fig.1 Schematic of data interaction

在数据交互过程中,还需在装车台系统中增加装车起始时的储罐储量以及装车结束后的储罐储量。虽然装车台系统中有自己的计量系统,可以计量出实际装车量,但是却不能测得储罐现有的实际储量;而且在装车前后计量储量也可起到一个参考作用。

2 功能实现

2.1 OPC服务器对象模型OPC

技术作为控制领域中的第一接口标准,具有举足轻重的地位,广泛应用在工业生产自动化主要生产装置DCS(集散型控制系统)中,使得原本复杂的通信过程变得统一化、标准化。

本系统设计了基于C#的OPC客户端,实现了生产系统与装车台系统之间的数据交互。OPC的接口分为自动化接口(automation interface)和自定义接口(custom interface)[2],由于程序选用的开发语言是 C#,所以在此选用自动化接口。

使用C#进行客户端程序的开发,就必须了解服务器对象模型。OPC自动化服务器对象的组织为层次结构,自动化接口对象的分层结构如图2所示。

图2 OPC自动化接口对象的分层结构Fig.2 Hierarchic structure of the OPC automation interface objects

OPC服务器对象不仅包含服务器的信息,而且它也是组对象(Group)的容器。OPC组对象提供了OPC客户程序用于组织数据的方法,客户通过组对象进行读写操作[3]。当服务器缓冲区内的数据发生变化时,OPC将向客户发出通知,客户得到通知后进行必要处理,而无需浪费大量时间进行查询[4]。一般情况下,客户和服务器的连接对应一个组对象即可。OPC数据项(Item)是服务器端定义的对象,是OPC中最小的数据单位。每个组对象中,可以加入多个OPC数据项,每个OPC项指向设备的一个寄存器单元。OPC客户对设备寄存器的操作是通过其数据项来完成的,通过OPC数据项,OPC规范隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强[5]。OPC客户端是通过OPC组对象进行操作的,OPC项并不提供对外接口,客户不能直接对其进行操作。每个数据项包含3个成员变量:数据值、数据质量和时间戳。一个OPC服务器最多有一个OPC浏览器对象,方便客户程序浏览OPC服务器上的相关信息。

2.2 装车台系统

装车台系统提供了一个实时数据库供访问,在实时数据库中加入了装车前储量和装车后储量两个信息,以便将计量得到的储罐储量记录到装车台系统中。装车台系统中部分数据信息表如表1所示。

表1 装车台数据信息Tab.1 Data information of loading platform

从表1中所示数据信息可以得知,可以通过ms_state(装车状态)标志位来确定哪个装车台正在装车。

2.3 数据交互程序开发

C#开发自动化接口具有许多优点,如自动初始化COM库、自动释放接口指针等,这些都不需要开发者自己动手操作。采用C#开发自动化接口,首先要建立一个服务器对象;接着根据OPC服务器的ProgID连接OPC服务器,实现从客户端启动OPC服务器;然后再按顺序添加组、添加项;最后,就可以实现同步或者异步读写操作[6]。这些操作都是通过OPCGroup即组对象进行操作的。通信完毕后,客户端退出时必须断开与OPC服务器的连接,释放接口与内存。此处使用OPCdotNETLib.dll动态链接库[7]。

以上为OPC客户端访问服务器的过程。在实际生产系统中,还需要考虑到装车台和罐容计量等因素。实际生产系统中有2个装车台,2个装车台的数据存放在同一个数据库表中,因此在程序设计过程中需要判断2个装车台的标志位。为确保装车信息的实时性,不采用循环轮询的方式来读取装车信息。当2个装车台的标志位处于装车状态时,采用并发的形式对其进行操作。单个装车台的程序设计流程图如图3所示。

图3 程序流程图Fig.3 Flowchart of the program

装车台的服务器名称为ZCT/SQL,数据库名称为Zct_Database,装车信息表的名称为ms_state。连接装车台数据库的部分程序代码如下。

当装车标志位为1后,连接控制系统的OPC服务器,读写控制系统的数据。程序代码如下。

连接完OPC服务器并读取到相关数据后,先要计量储罐储量,储罐储量的计量由一个函数完成,通过直接调用函数完成即可。将储量结果存入数据库,读取数据库,更新OPC项,判断装车标志位。如果标志为1,装车进行中,则继续更新数据;否则装车结束。再次调用储量计量函数,并将结果存入数据库。最后断开OPC服务器连接,程序跳转至开头,继续循环。至此即实现了生产系统与装车台系统之间的数据交互功能。

3 结束语

本文主要阐述了如何实现生产系统与装车台系统之间的数据交互功能。由于PKS系统提供了OPC接口,装车台系统提供了数据库,因此利用C#开发第三方程序,通过OPC接口与生产系统进行数据交互,通过ADO.NET与装车台数据库进行数据交互,最终实现了两个生产系统之间的数据交互。

[1]陈曦,李鹏.OPC服务器在SCADA系统中的应用研究[J].机械设计与制造,2010(11):59 -61.

[2]李梁.基于OPC技术的自动化软件的研究[D].成都:电子科技大学,2000.

[3]王燕,王健.OPC接口技术在DCS数据交换中的应用[J].微计算机信息,2010,26(11):48 -50.

[4]梅晓东,颜烨青.Visual C#网络编程技术与实践[M].北京:清华大学出版社,2008.

[5]罗刚.基于OPC技术的工业控制系统的研究与开发[D].南京:南京工业大学,2005.

[6]王艳艳.大型石化企业OPC技术的研究与应用[D].北京:北京化工大学,2009.

[7]穆群英.动态连接库(DLL)及其应用[J].石油仪器,2001(3):49-51.

猜你喜欢
装车储罐服务器
大型LNG储罐设计计算关键技术
在役球形储罐埋藏缺陷的监测方式探讨
大型LNG储罐珍珠岩在线填充技术实践
JCB推出新型全电动版525-60E伸缩臂叉装车
基于地震响应分析的大型LNG全容式储罐储罐基础方案设计
服务器组功能的使用
2020年1-5月客车动力电池装车量表现各异:纯电动同比下降,燃料电池同比大增
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
3月份我国动力电池装车量5.09GWh,环比增长126.98%