OPC技术在污水处理控制系统中应用
1 引言
随着经济发展和科技进步,生活水平不断提高,人们将会面临着环境保护问题。近年来环境污染已严重制约了经济的可持续发展和威胁人类的生存。随着人类对环境保护意识的增加,污水处理行业已经得到普遍关注。污水处理厂的广泛兴建对其监控系统也进一步提高,由于当前污水处理监控系统的控制规模不断扩大、监控设备日益复杂和性能日益提高,工厂需要对现场设备进行更新或二期投入,而传统的控制方式加大了资金投入。同时监测部门以人工的方式进行污水样本的采集与化验,不能共享实时监测数据,不能及时掌握污水水质的变化趋势。本文以蛋粉厂排放的污水处理工艺为主,如图1为其工艺流程图,开发了一套基于OPC技术的污水处理监控系统,解决了污水处理厂监控设备更新问题。同时,监测部门通过连接在计算机网络中的OPC客户端在线监控污水处理过程实时数据,及时掌握污水处理效果。
2 OPC技术介绍
OPC(OLE for process controlling)是微软公司的对象连接和嵌入技术(OLE)在过程控制方面的应用,是为工业自动化软件面向对象开发而提供的一项统一标准。OPC规范包括OPC服务器和OPC客户端两个部分。硬件设备驱动程序和通信程序被封装为一个独立的OPC服务器,应用软件(OPC客户端)可以不用开发硬件的驱动程序,通过标准的OPC接口访问OPC服务器,能够与现场的PLC、工控网络和数据采集模块等硬件设备连接,快速有效地获取现场实时数据。每一个OPC客户端应用程序可以连接若干个OPC服务器,每个OPC服务器也可以为若干个OPC客户端应用程序提供数据。
OPC客户端访问OPC服务器需要实现定制接口(custom interface)和自动化接口(automation interface)。如图2所示,VB等编写的客户端应用程序通过自动化接口访问OPC服务器,可使客户端应用程序变得简单。VC++等高级语言编写的客户端应用程序通过定制接口访问OPC服务器,可发挥OPC服务器的最大性能。
OPC服务器的组成主要有以下3个部分。
1)服务器对象(server)。拥有服务器的所有信息,是组对象的容器。一个服务器只能对应一种硬件设备的驱动程序。
2)组对象(group)。提供了客户组织数据的一种方法,拥有本组的所有信息,包容并逻辑组织OPC数据项。完成对组同步与异步读写方式的管理,还可设置客户端的数据更新速率。当服务器缓冲区内数据发生改变时,OPC组将向客户发出通知,客户得到通知后进行应用处理。
3)数据项(item)。用来存储具体数据项的定义、数据值、质量值、采样时间等信息。数据项是在服务器端定义的对象,一个数据项对应硬件设备的一个寄存器单元,客户不能直接对其操作,所有对数据项操作都是通过组对象完成。
3 监控系统结构设计
根据污水处理工艺要求,污水处理过程可分为几个子过程,每个子过程的功能由控制系统的各个单元来完成,主要为调节池pH值控制单元、厌氧池温度控制单元、好氧池曝气控制单元、混凝剂控制单元和污泥循环控制单元。每个控制单元作为一个智能控制节点分布在污水处理现场,负责污水处理过程中各参数的监控。现场通信网络采用CAN现场总线,CAN总线是当前最有影响的现场总线之一,广泛应用在各个工控网络中,其总线规范现已被ISO国际标准组织制定为国际标准。CAN总线是一种串行通讯网络,与一般的通讯总线相比,具有成本低、可靠性高和灵活性好等特点。
在基于OPC技术的CAN总线控制网络中,OPC服务器将污水处理现场各参数按照OPC标准与监控软件连接起来,把系统硬件设备和监控软件有效地分离开。监控系统的结构如图3所示,CAN总线适配器连接在监控计算机中,它与现场各控制节点相连,实现与分布在污水处理现场的各智能监控节点进行数据交换。OPC服务器通过硬件驱动程序访问CAN总线适配器,连接在计算机网络中的所有客户端应用程序均可通过OPC接口与OPC服务器进行数据交换,间接获取现场信息。OPC服务器包括OPC标准接口和硬件驱动程序,根据不同网络适配器的接口形式选择不同的硬件驱动程序。当污水处理控制系统要增加其他的监控设备或进行当前硬件设备升级时,只需要改动服务器程序中硬件驱动程序部分即可,不会影响客户端程序。考虑到污水处理现场的数据对传输速率要求不高,故CAN总线适配器采用了周立功公司的ZCAN232智能CAN接口卡,它通过PC的COM端口连接到CAN总线网络,可以实现CAN2.0B(A)协议的数据通讯,通信速率可在10kb/s~1Mb/s之间选择。OPC服务器采用周立功公司提供的ZOPC Server,它支持周立功公司的所有CAN总线接口卡。实现的功能是通过ZLGCAN接口卡获取现场的各CAN总线上的节点采集到的数据传给监控软件或其他OPC客户端。同时将监控软件或其他OPC客户端写入的数据和控制命令通过OPC服务器传给污水处理现场的各CAN总线节点。
4 OPC接口开发
监控软件只有通过OPC接口才能访问OPC服务器。若监控软件采用组态软件开发,由于组态软件本身即可作OPC客户端也可作OPC服务器,直接将组态软件的数据点连接到OPC服务器的数据项上即可实现访问,不用另外开发OPC标准接口。若监控软件采用VB6.0或其他的高级语言开发,需要开发访问OPC服务器的OPC接口。开发出符合OPC规范的接口方法有2种:①按照OPC DA的标准规范,利用VC++高级语言等开发工具开发符合标准的OPC接口,但开发难度大,需要开发人员对OPC技术和COM技术有深入了解;②利用专用开发工具包,由于开发包已经实现了OPC标准的底层封装,既无需涉及烦琐的OPC协议,也不必掌握复杂的COM技术,直接调用相关函数即可,减少了开发周期和难度,但开发出的OPC标准接口功能依赖于开发包。
由于VB6.0具有应用简单、开发速度快的优点,笔者利用VB6.0实现了访问OPC服务器的OPC接口开发。具体的开发步骤是,首先安装由OPC基金会提供动态连接库OPCDAAuto.dll文件,将该文件放在系统盘的System32文件夹下,然后在VB6.0里引用OPC Automation 2.0,就可以编写相应的程序,它采用的是以自动化接口形式访问OPC服务器,下面是对OPC接口开发程序的介绍。
4.1 定义全局变量
Dim WithEvents MyOPCServer As OPCServer’定义OPC服务器
Dim MyOPCGroup As OPCGroups’定义OPC组
Dim WithEvents MyOPCGroupOut As OPCGroup
Dim WithEvents MyOPCGroupIn As OPCGroup
Dim MyOPCItemIn As OPCItems ’定义OPC标签组
Dim MyOPCItemOut As OPCItems
Dim HandlesIn()As Long ’定义句柄
Dim HandlesOut()As Long
Dim ErrorsIn()As Long’定义错误句柄
Dim ErrorsOut()As Long
Dim ClientHandlesl(13)As Integer’句柄索引
Dim ReadItemNum As Integer’定义读出数据项个数
Dim WriteIemNum As Integer’定义写入数据项个数
Dim DataReadItem(13)As String’记录OPC读出数据项名称
Dim DataReadValue(13)As Variant’存放读取OPC数据项的值
Dim DataWriteItem(13)As String’记录OPC写入数据项名称
Dim DataWrite Value(13)As Variant’存放写入OPC数据项的值
4.2 连接服务器程序
ZOPC Server的数据存储模式有字符串存储和数值存储两种,在字符串存储模式中,服务器会把从CAN总线接收到的CAN帧数据组合成一个字符串传送到客户端;反之,服务器也会把从客户端接收到的字符串转换为CAN帧数据发送到CAN总线网络中。在数值存储模式中,服务器会把接收到的CAN帧数据分解为单个数值存放到13个读通道数据项中,由客户端读取;同理,服务器把从客户端发过来的13个写通道数据项的数值组合为CAN帧数据发送到CAN总线网络中。笔者采用数值存储模式,用两个组对服务器进行访问。
Private Sub Connect_Click()
NodeName=Node.text ’远程计算机名
ServerName=Server.text ’OPC月服务器名
Set MyOPCServer=New OPCServer ’生成OPC对象,
MyOPCServer.Connect ServerName,NodeName ’连接服务器
Set MyOPCGroup=MyOPCServer.OPCGroups ’生成组对象
MyOPCGroup.DefaultGroupIsActive=True ’组为激活状
MyOPCGroup.DefultGroupDeadband=0 ’设置组死区
Set MyOPCGroupIn=MyOPCGroup.Add(”MyGroupIn”)
Set MyOPCGroupOut=MyOPCGroup.Add(”MyGroupOut”)
MyOPCGroupIn.UpdateRate=1000 ’设置数据刷新时间
MyOPCGrouvIn.IsActiVe=True ’设置组为激活状态
MyOPCGroupIn.IsSubscribed=True’设置组为后台后刷新
Set MyOPCItemIn=MyOPCGroupIn.OPCItems
Set MyOPCItemOut=MyOPCGroupOut.OPCItems
FOr i=0 To 13
ClientHandlesl=i ’配置句柄索引
Next i
将ZOPC Server输入通道数据项名写入到DataReadItem数组中
ReadItemNum=13
MyOPCItemIn. AddItems ReadItemNum, DataReadItem,ClientHandlesl,HandlesIn,ErrorsIn’连接输入数据项
MyOPCGroupIn.IsSubscribed=True
将ZOPC_Server的输出通道数据项名写入到DataWriteItem
WriteItemNum=13
MyOPCItemOut.AddItems WriteItemNum,DataWriteItem,ClientHandlesl,HandlesOut,ErrorsOut’连接输出数据项
MyOPCGroupOut.IsSubscrlbed=True
End Sub
4.3 数据更新函数
当OPC服务器的数据项数据发生变化,即污水处理控制现场的控制单元发回数据时,自动触发该函数,将现场数据读出存放到DataReadValue数组中,数据质量值和采样时间也可以读出,供客户端或监控软件应用。
Private Sub MyOPCGroupIn_DataChange(ByVal TransactionID As Long,ByVal NumItems As Long,ClientHandles()As Long,ItemValues() As Variant, Qualities() As Long,TimeStamps()As Date)
For i=O To NumItems
DataReadValue(i)=ItemValues(i)’将现场数据读入数组
对DataReadValue数组的数值进行应用处理………
Next i
End Sub
4.4 OPC数据项写数据程序
客户端把要向现场发送的数据一定要按ZOPC SERVER数值存储模式写入到DataWriteValue数组中,否则可能造成数据错误。通过下面程序可将数据传给OPC服务器,传给污水处理控制现场CAN总线网络的指定节点上。
WriteItemNum=13
MyOPCGroupOut.SyncWrite WriteItemNum,HandlesOut,DataWriteValue,ErrorsOUt
在运行前首先要启动ZOPC SERVER,通过读取计算机内注册的OPC服务器,选择ZOPCSERVER服务器,远程连接要输入计算机名称。在进行远程连接前,要配置DCOM的访问权限,具体办法参考DCOM配置。连接成功后监控软件或客户端应用软件即可对OPC服务器进行读写操作,从而实现了对污水处理过程的分散控制和集中管理。
5 结束语
本文介绍了基于OPC技术和CAN现场总线的分布式污水处理控制系统的结构,并采用VB6.0开发了访问OPC服务器的标准接口,通过此接口监控软件或客户应用程序可对OPC服务器的数据进行读写操作,提高了污水处理控制系统的开放性,兼容性和管理水平。OPC客户端可运行在计算机网络中的任一台计算机上,实现污水处理参数的远程监控,及时掌握污水水质变化趋势。本文所阐述的控制系统的结构也为其他的工业控制领域的应用提供参考。