岳宗敏 黄金波 朱玉
摘 要:探讨了如何通过OPC来访问WinCC系统的实时数据。并根据串口设备通讯协议要求,通过Visual Studio平台下的C#语言编程,把采集到的实时数据按通讯协议组织后通过串口发送给串口设备。结合实际应用给出了具体的实现步骤。某煤矿水处理系统应用结果表明,系统运行稳定可靠,效率高,具有很强的实用性和推广价值。
关键字:WinCC 实时数据 OPC 串口通信
中图分类号:TP273 文献标识码:A 文章编号:1674-098X(2012)12(a)-0-02
随着企业信息化进程的推进,无论是哪个管理相关部门,都希望从工作的现场得到最新的数据,并对这些新的数据进行综合的分析。然而,不同的控制器来自不同的厂商,通过不同的标准,组成各自需要的系统,并进行控制,各个控制系统形成了互不相连的自动化孤岛,因为很多数据无法整体的采集到并进行整体的分析与研究。从而更无法建立统一的生产过程数据平台,难以实现管理控制的一体化 [1]。
该文通过OPC来访问WinCC系统的实时数据。并根据串口设备通讯协议要求,通过Visual Studio平台下的C#语言编程,把采集到的实时数据按通讯协议组织后通过串口发送给串口设备。
1 OPC(OLE for Process Control)技术介绍
OPC(OLE for Process Control)用于过程控制的对象链接嵌入技术,是基于微软的OLE、COM(组件对象模型)和DCOM(分布式组件对象模型)技术为基础,采用客户/服务器模式,在基于Windows操作平台的工业应用程序之间提供交互功能和高效信息集成的组件。利用OPC 技术,可以对现场设备及其驱动程序进行封装,形成OPC(OLE for Process Control)服务器,向上与OPC客户应用程序通信以完成数据交换,向下则是对设备数据进行采集。因此,它的出现为基于Windows 的应用程序和现场过程控制之间做好了铺垫。这种既开放又高效的通信机制提供了一种从数据源提取数据并且传输到应用程序的标准途径,它能够有效地整合各类控制器和控制系统,众多不同的厂商生产的都能用统一的开口进行传输与控制,很容易解决由不同类型自动化设备构成的大中型系统中的数据交换和传输问题[2]
2 OPC(OLE for Process Control) 客户机应用程序开发
2.1 OPC开发工具包
模块化开发工具包提供了软件设计的基本工具。OPC工具包由Delphi语言编写,以标准动态库(dl1)形式提供二次开发接口,完全封装了COM技术实现细节,降低用户端程序开发的复杂程度。用户可以通过调用工具包所提供的动态库函数,完成客户机应用程序的开发。且工具包还支持多种语言的开发,如:VC、C#、VB、BC和Delphi等。因为考虑开发的周期与速度,本系统选用C#进行二次开发。
2.2 OPC服务器简介
OPC数据存取规范规定的基本对象有三类:OPC服务器(OPC Server)、OPC项对象(OPC Item)和OPC组对象(OPC Group)。OPC服务器维护有关服务器的信息并用作OPC组对象的容器,OPC组对象中可以定义一个OPC或多个对象。OPC项对象代表了与服务器中的数据的连接。而OPC组对象提供包容OPC项对象机制,并管理OPC项对象,提供了客户程序组织数据的手段。客户程序对OPC项的操作都是通过包容此项的OPC组对象来进行的。每个OPC项对象都三个属性:品质(Quality)、值(Value)和时间戳(Time Stamp)。人们想要就是这些的点,即PLC的I/O点、仪表的数值等[3]
2.3 OPC客户机的开发步骤
从OPC的工作机制可以知道,OPC客户端的开发必须按下面的步骤进行。
(1)对DCOM进行初始化设置,保证OPC服务器端的回调函数不会被堵塞;
(2) 创建OPC服务器,并连接;
(3) 为OPC服务器创建OPC组对象;
(4) 为OPC组对象创建多个OPC项对象;
(5) 实现对OPC项对象数据的读写操作;
(6)在客户端工作结束时,清除OPC服务器的所有组对象及其项对象,断开与服务器的连接,释放资源。
3 串口通信技术介绍
3.1 串口通信简介与通信协议
串行通讯是计算机与其他设备进行交换数据的桥梁之一。在工业监控、数据采集和实时监控系统中应用广泛。因为他具有使用方法简便,数据传输可靠,灵活性强等优点。
串口通信的协议标准目前应用最广泛的是RS一232标准,RS一232标准已被内置于从微控制器到主机的多种类型的计算机及其相连接的设备中,在工控系统及硬件设计中有着广泛的应用。RS一232对电器特性、逻辑电平和各种信号线功能都作了
规定[4]。
3.2 发送数据报文
在VC#环境下,添加串口控件,按协议初始化串口,开串口后,添加OnComm()中的处理代码。按照串口设备通信协议根据实时读取到的WINCC项数据组织报文,每发送一组报文就引发以下程序。
Byte[] yxx = new byte[9];
for(int i=0;i<8;i++) yxx[i] = System.Convert.ToByte(yxss[i],10);
给每一位赋值其中yxss(i)为串口设备通信协议报文格式对
应值。
Byte intResult1
for (int i = 0;i < 8;i++)
intResult1 = System.Convert.ToByte(intResult1 ^ System.Convert.ToByte(yxx[i]));
yxx[8] = System.Convert.ToByte(intResult1);给校验位赋值
if (!mycom1.IsOpen)
mycom1.Open();打开串口 mycom1.DiscardInBuffer();清除接收缓冲区
mycom1.Write(yxx,0,9);发送报文。
4 实例应用
某煤矿水处理系统采用PLC可编程逻辑控制器,对整个水处理过程进行全自动化控制,但须要把整个系统监控的实时数据及相对应的开关状态发送到模拟屏上供管理人员方便查看,监督,
决策。
4.1 系统分析
系统主要分为三个部分,第一个部分是整个水处理系统的数据实时采集,实时数据采集遵循OPC工业标准,规范实时数据获取,对各现场设备、位号进行统一编号,避免获取数据冲突,同时对模拟量,开关量信息区别对待。第二个部分是数据的处理,首先对采集到的实时数据进行分类、截位、正化处理,然后根据串口通信协议和模拟屏报文协议要求,分类组织遥测报文与遥信报文。
模拟屏报文格式如图1所示:
字头 命令 字节长 序号H 序号L 数据… …….. 校验码
…………字节长…………………
……………………………校验码长………………………...
图1
第三个部分是数据发送与现实,利用串口通信把组织好的报文发送给模拟屏,根据相应地址显示在对应的位置上。实现整个系统功能。
4.2 系统实现
系统在Microsoft Visual Studio 2008 开发平台,利用C#语言开发完成。系统通过OPC接口从WINCC读取实时数据并存入内部变量内,通过处理把实时数据编制成调度盘能够识别的报文格式,然后进行串口通信。建立串口连接前,系统串口参数设置与计算机参数设置必须一致,才能保证通信数据正常传输。系统界面图如图2所示:
图2
5 结语
本系统经多次试验,稳定可靠,已正常运行一年有余。对WICC实时数据的读取并通过串口通信发送给其他设备提供很好实例。有很高的使用价值和很广阔的推广市场。
参考文献
[1] 赵红,韩建国.流程工业CIMS现场实时数据传输的OPC解决方案[J].北京化工大学学报,2001,28(3):61-62.
[2] 张俊彪,王鸿辉,何长安.基于OPC Server的PC与S7-300/400的通信[J].电力自动化设备,2007(4):83-84.
[3] 花新峰,负卫国.Delphi 环境下使用定制接口开发OPC数据访问客户程序[J].自动化博览,2005(S1):91一97.
[4] 李现勇.Visual C++串口通信与工程实践[M].北京:人民邮电出版社,2005.