1 引言
目前,在监控系统软件的开发中,比较常见的方法主要有两种。一种是利用面向对象的可视化编程语言如vb、vc来开发,其中包括数据通讯、界面实现、数据处理和数据库功能等部分内容;另一种是利用组态软件来完成,利用组态软件提供的硬件驱动功能直接访问硬件进行通信,同时利用其图形化工具实现监控界面。前一种方法的程序设计任务比较重,特别是要实现工业生产中复杂的流程和工艺的逼真显示要花费大量的时间;后一种方法对硬件的依赖比较大,当组态软件不支持相关的硬件时就会受到限制。将两种方法结合起来则是一种很好的选择。利用vb、vc提供的强大的数据通讯和处理功能实现数据采集、控制及处理,利用组态软件的图形化工具来实现界面设计,二者的结合将使监控系统软件的设计更加简单和灵活。
2 系统概述
在某油田生产监控系统设计中,笔者采用vb和组态王的结合设计了整个系统的监控软件。在该系统中有多种测控点,其中一部分需要控制(如压力),利用plc的模拟量输入输出模块来完成;另一部分只需测量,如现场的液位、流量等,采用光纤液位计、智能流量计等仪表测量,这些仪表具有模拟和数字通信能力,但不能和组态王直接通信。因此,采用vb编写通讯程序与plc和仪表通信,对数据进行分析处理,利用vb和组态王之间的动态数据交换(dde)实现数据共享,并在组态王中设计相应的监控界面。
整个系统采用多级分布式结构,分为2个分控站和1个主控站并要求实现远程监控功能,系统结构如图1所示。由底层plc控制系统、分控室过程监控系统和主控室管理系统以及网络化远程监控系统构成。
其中,plc控制系统主要完成现场需要控制设备的控制,plc主要包括模拟量输入模块和模拟量输出模块及pid控制模块。
分控室过程监控系统作用是与底层的plc和仪表通讯,获取生产过程的数据,显示工艺流程,历史曲线图,实时曲线图,报警画面,生成数据库等。
图1 系统结构图
主控室与分控室工业控制机通讯,获取生产工艺参数报表,报警记录等资料信息,为管理人员了解总体生产状况,调整生产计划提供帮助。
分控室和主控室系统以ethernet相连,共享数据和信息。分控室计算机的信息通过网络送到主机,由主控室完成数据处理的任务,自动生成各种报表,并在指定的时间打印输出。主控室可以根据操作人员的选择切换同步监视各个分控室系统的运行情况。主控室计算机还完成网络服务器的功能,将这些生产参数上网传输,与局域网和internet相连,实现网络化远程监控。
主监控室和远程监控局域网之间选择快速以太网;分控室和主控室之间由于通信距离较远和有干扰源存在,选择rs485串行通信标准。分控室和plc仪表及之间则选择简单可靠的rs232串行通信标准。
3 数据采集与通讯程序
数据采集与通讯程序作为与仪表和plc以及与上位机监控软件的接口,在系统软件中占据了重要的地位,其功能结构如图2所示。数据采集与通讯程序在分控室监控计算机上主要包括与智能仪表、plc的通讯和与主控室的通讯三部分,均用vb编写,采用vb6.0提供的mscomm通信控件。mscomm控件通过定时查询来控制串行端口,每隔一段时间读取或发送一次数据,包括定时读取智能仪表、plc数据和定时向主控室计算机传送数据。对plc控制参数的写入,则采用事件驱动方式来处理,在程序中设置相关的标志位,需要写入时由相应事件引起标志位改变,再调用相应的处理和写入子程序。需要进行图形化显示的数据则在vb中定义为dde变量,并作为组态王中相应数据变量的dde数据服务器。采集和通讯程序生成可执行程序,监控系统软件启动时自动后台运行。主控室计算机接收分控室定时传来的数据,存储到数据库中,作为远程监控页面访问的数据源,利用flash、asp等生成动态网页并向局域网和internet发布实现远程监控。
图2 通讯程序功能结构
4 组态王与vb的dde实现
基于windows消息机制的dde(dynamic data exchange)是windows实现其应用程序彼此之间通信的一种手段,通过在运行的应用程序之间建立客户/服务器(client/ server)关系实现在彼此之间交换数据或指令。dde可以作为连接监控系统现场信号与监控软件的桥梁,允许在两个windows应用程序间通过相互传递dde消息进行会话,从而完成数据的请求、应答和传输。这样,若需实现监控数据与监控界面相集成,可事先编写好具有通用功能的dde服务软件,为用户规定好应用程序名(server)、标题名(topic)和项目名(item),让用户自己按提供的规范去完成监视画面的组态功能。
dde提供对不同程序在运行期间实现对数据的动态交换,它是建立在windows内部消息系统和共享全局内存基础上的一种协议,用来协调windows应用程序之间的数据交换和命令调用。dde协议使用三级命名:服务(service)、主题(topic)和数据项(item)来标识dde所传递的数据单元。服务使应用程序具有了提供给其他程序的数据交换能力,一般服务就是应用程序的文件名;主题是对服务器有意义的信息单元,许多服务器都有默认的主题。每次dde客户与服务程序之间的对话都是先由客户启动的,所以在每次客户启动之前,dde服务器必须先投入运行。dde支持 3种数据交换模式:冷链结,客户(client)应用程序请求来自服务器(server)的数据;温链结,客户应用程序请求来自服务器的一个通知,以便知道某些特定的数据项在何时发生了变化;热链结,当特定数据项发生变化时,服务器向用户同时发送通知和数据本身。dde协议在vb和组态王中都进行了很好的封装,可以很容易的实现数据的动态交换。
为了建立dde连接,需要在组态王的数据词典里建立dde变量,并登记3个标识名。组态王运行系统的程序名是“view”,主题规定为“tagname”,项目是在定义dde变量时的项目名称。变量名是组态王使用的,“连接对象名”用来定义服务器程序的信息。组态王作为客户向vb请求数据时需要在定义变量时说明服务器程序的3个标识名。应用程序名为vb中可执行程序的名字,话题为vb中可执行程序窗体的linktopic属性值,项目名设为窗体中控件的名字。
在vb中dde连接是通过控件的属性和方法来实现的。需要设置linktopic、linkitem和linkmode3个属性。当vb软件担任客户时: linktopic属性指的是服务器软件的名称以及在它下面所建立的文件名称; linkitem属性指的是服务器软件的linkmode属性下指定要传给vb控制的那些项目。
linkmode属性有三种设定:“0”为none,无dde功能;“1”为hot,当服务器数据变动时客户数据会随时更新;“2”为cold,客户数据只有在请求dde时才更新。当vb担任服务器时,只需设置linktopic和linkitem属性。linktopic属性指的是要对客户请求做出反应的窗体,而窗体中的控件就是客户所请求对象的项目。
linkmode属性有两种:“0”为none;“1”为server。当设为“1”时,窗体上的控件就可以供应数据给已建立dde管道的客户软件;设为“0”时,则无dde连接。
分控站监控程序与数据采集程序之间存在大量的数据交换,由在后台运行的数据采集程序和组态王之间的dde连接来实现。其中数据采集程序作为dde服务器,组态王作为客户向其请求数据。组态王与数据采集程序的dde连接在组态王启动时自动完成。
5 结束语
通过dde连接实现了数据采集程序与监控软件之间的信息集成和共享。利用组态王提供的丰富的图形和组态工具,可以实现工艺流程图的实时数据刷新、各种曲线和报警等的显示。这种方法可以充分发挥vb和组态王各自的优势,利用vb的数据通讯、处理能力和组态王的图形化工具,使监控系统软件的开发更加简单和灵活。