- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于COM 的过程控制系统通信组件的研究与开发
过程控制系统是工业计算机控制系统中极为重要的一部分,它面向整个生产线,中心任务是对生产线上各个设备进行优化设定。过程控制计算机设有数据跟踪、初始数据输入、在线数据采集以及模型自学习等为设定模型服务及配套的功能,设定值计算后下送基础自动化各控制器,由其执行并显示在相应的人机界面(Human Machine Interface)上,同时操作员可通过HMI对过程控制服务器进行监视和干预,如图1所示[1]。目前,HMI和基础自动化各控制器通过特定驱动程序或者OPC接口与各种型号控制器进行通信,并且配置方便、运行可靠。但是HMI与过程控制服务器的通信却非常困难,不管是软件实现技术还是通信数据的管理都比较复杂和繁琐,软件复用率较低。即使采用像VB、VC这类高级语言来开发,也同样面临这些困难。因此,迫切需要开发一套用于过程控制级的通信组件,向外部应用系统提供通用和统一的编程接口,使工程开发人员可以不必关心数据管理和通信过程的实现细节,集中精力实现过程控制功能。
COM编程技术是一种跨应用和语言共享二进制代码的方法,它扩展了基于对象的编程优势,如封装、多态性和软件复用等。基于COM体系结构的通信组件将更容易与HMI组态软件和外部应用系统集成。我们于2003年开始设计开发基于COM的通信组件,目前正在调试过程中。
1 基于con 的通信组件结构设计
为使过程控制通信组件具有清晰的结构层次和良好的可扩展性,并能降低子系统的开发和维护难度,本设计采用3层软件结构,分为服务器(数据)层、中间层和客户层,各层均以COM组件实现,层与层之间只能通过COM组件所提供的接口进行通信(数据交换和控制信息交换),如图2所示。[2~3]
服务器(数据)层封装了访问数据的操作,它接收中间层访问数据的请求,完成实际的数据访问过程,并将数据结果返回中间层。
中间层是连接客户与服务器的桥梁,为客户层模块提供对过程控制服务器数据基本的读、写、简单的处理等功能[2]。中间层响应用户的请求,将这些请求转化为对实际过程控制服务器数据的访问操作,并调用相应的数据层操作,然后将数据结果返回给客户层。
客户层是将由中间层模块处理得到的结果通过一定格式进行封装,使之与客户层的数据模型定义相对应,供OCX和脚本与用户交互[2]。一方面,客户层接收用户输入,根据用户的输人操作调用中间层内相应的接口通知过程控制服务器;另一方面,客户层接收中间层返回的过程变量数据,并将之正确地显示出来。
基于COM编程技术,采用Visual C++作为底层开发语言,分别设计每个层次的组件模型,并构建同上下相邻层交互的接口。
2 服务器(数据)层组件
服务器(数据)层组件TagCenter负责过程控制变量列表的生成和维护,并允许各HMI、外部应用系统和过程控制程序以变量名的方式对过程控制变量进行更新和读取。TagCenter在过程控制服务器中开辟一块内存作为变量信息存储缓冲区,并同时在硬盘上以数据文件的方式对该缓冲区进行实时映射,以保证程序或服务器重启后变量过程值不丢失。
HMI组态软件一般都允许对组态进行动态修改,这对控制系统的开发和调试非常必要,因为这种技术降低了各子系统的耦合程度,能大大节省调试时间。为了使TagCenter也支持动态组态功能,TagCenter组件设计了对过程变量列表进行动态添加、修改和删除的接口,对过程变量列表组态的任何修改都将立即广播到各HMI客户端。
为了保证多客户访问时数据的统一性和完整性,变量更新信息将按照先后顺序在TagCenter服务器请求消息队列中排队,这样同一时刻只有1个改写请求被处理。另一方面,HMI大多数情况下需要频繁读取和显示过程值,为了提高读取变量操作响应速度,采取了如下几项措施:
(1)采用多线程,允许多客户并发读取。
(2)TagCenter采用哈希(Hash)表结构存储过程变量,提高变量的检索速度。
(3)在客户端动态缓存变量值,提高本地访问的命中率,以减少从网络上读取数据所造成的延时和通信量增加。试验表明,该措施对提高响应速度非常有效。
3 中间(通信)层组件
中间层(通信)组件DataLinker主要负责过程服务器与客户端之间通信,实现变量过程值的订阅和发布。
DataLinker组件在底层采用TCP协议接收、发送客户的请求并将处理结果通知各客户端。对于系统广播信息(比如变量列表组态变化信息、变量的过程值更新信息、数据服务器状态消息等)则采用UDP协议的组播通信方式。
DataLinker提供的接口有:
(1)ReadTag 支持异步或同步读取变量的过程值;
(2)WriteTag 支持异步或同步修改变量的过程值;
(3)DataArrival 变量的过程值发生变化时通知客户端;
(4)ModStatus 向客户端广播数据服务器状态消息。
4 客户层组件
客户层组件包括3个OCX控件:
(1)IOField 用于基本数据类型变量(Long,Double,String)。通过指定其绑定的变量名称即可完成变量与过程控制服务器的连接,用户可以动态改变过程变量的值,并将其广播到所有的客户端。
(2)IOStruct 用于自定义的结构体变量(结构体成员的数据类型也是上述3种基本类型)。用户通过属性页选择结构体及其变量名称来确定行和列,这样可以同时连接多个相互关联的变量,功能与IOField类似。
(3)Alarm 显示过程控制服务器上应用程序的报警信息,由此可以实时监控各程序的运行状态。
图3是该组件在Siemens-Wincc6.0中的实际应用效果图(实验证明,也可通用于GE-iFix)。表的格式并对报表进行组态。另外,调用组态王中的系统函数实现报表的打印功能。
4.1 数据通信及处理的实现
远程监控系统中,采用VB6.0的MSComm串行通信控件实现数据的发送和接收[2],并以事件驱动方式响应OnComm事件,对上位机接收的数据包进行处理,具体实现过程如下。
第1步,初始化。系统运行时,上位机采取主叫的方式,由VB程序设置通信参数、握手信号(从站的站地址)和通信采样时间等信息,负责建立主、从站之间的通信联接。
第2步,请求数据。VB程序生成数据请求指令,该指令通过连接在串口上的无线传输装置以广播通信的方式向远端从站发送。在正常情况下,利用Timer控件设置上位机采样时间,上位机定时轮流向从站请求数据。然后,上位机处于数据等待状态。
第3步.接收数据。当从站接收到握手信号并判断准确后,将现场采集的数据以数据包的形式,通过无线传输装置送至上位机中。
第4步,数据处理。上位机的串口定时接收到数据包后,促发VB的OnComm事件,对数据包进行解包,然后进行相应的数据处理,例如表度变换、FFT等。
第5步,数据交换。VB与组态王之间以文件的形式进行数据的动态交换。VB将指定的字符串变量写入文本文件中;组态王在应用程序命令中定时更新读取该文本文件,然后存入组态王定义的变量中,供组态王以各种形式(如文本、颜色、动画和棒图等)反映现场设备的状态,达到远程监控的目的。在利用VB实现无线通信的过程中,除了定义合理的通信协议外,每次发送传输指令后,需要适当地增加延时,等待一段时间后再从串口的输入缓冲区读取数据,以此保证通信的正确性。
5 结束语
本文应用VB编程扩充了组态王串口通信和数据处理的功能,实现了一种适用于工业现场的监控系统。该系统集现场监控、数据采集和远程传输于一体,便于扩展,2004年初成功用于武钢工业港,达到了令人满意的监控效果。
[参考文献]
[1]江剑,李永新,牛国柱.基于组态软件与VB的远程通信的实现[J].微计算机信息,2002,18(9):69-70.JIANG Jian,LI Yong-xin,NIU Guo-zhu.The realization of the remote communication based on configuration software and VB[J].Microcomputer and Information,2002,18(9):69-70.
[2]Albert W L,C H Ku.Developing a PC—based automated monitoring and control platform for electric power systems[J].Electric Power Systems Research,2003,64(2):129-136.
上一篇:基于无线发射芯片A7105的RF短距离通信
下一篇:重型卡车的EBS系统设计