杨东升郑炜吴宏
(1.驻上海沪东中华造船(集团)有限公司军事代表室 上海 200129)
(2.中国船舶重工集团公司第七○一研究所湖北 武汉 430064)
VB与组态软件集成监控解决方案研究
杨东升1郑炜2吴宏1
(1.驻上海沪东中华造船(集团)有限公司军事代表室 上海 200129)
(2.中国船舶重工集团公司第七○一研究所湖北 武汉 430064)
组态软件;VB;远程监控;软件接口
研究了组态软件与VB的集成方法,提出了VB与组态软件集成监控方案。该方案克服了组态软件本身功能性的不足,并结合具体应用,以MCGS为例进行了方案的实施和验证。
郑炜(1971.11-),男,汉族,高级工程师,主要从事船舶电气设计研究工作。
吴宏(1975.12-),男,汉族,工程师,主要从事船舶电气工作。
随着控制技术、通讯技术和网络技术的发展,远程监控系统在工业过程控制中的应用越来越广泛。组态软件由于功能强大、良好的人机界面、模块化、编程简便、开发成本低、周期短等优势,成为工业现场远程监控方案的首选[1]。
使用组态软件,能够快速构造计算机监控系统,而且能够通过对现场数据的采集处理,实现动画显示、报警处理、流程控制、实时曲线、历史曲线和报表输出等。然而,组态软件在实际应用中也存在一些不足,那就是组态软件为数据采集和控制提供的大量底层设备驱动程序,主要是针对有名厂商的板卡和模块,对于较小厂商开发的各种智能化仪表及用户自己设计的板卡,却没有现成的驱动程序提供。此外,组态软件往往不支持对计算机底层设备如串口的直接操作,给用户的使用带来了诸多不便[2]。
针对以上问题,本文提出了一种组态软件与VB混合编程的集成解决方案,由VB实现底层通用设备的部分功能,并通过软件接口与组态软件实现数据交换。该方案的技术特点是充分利用了组态软件图形功能完备、界面一致性好、易学易用的特点和VB语言简洁、功能强大、开发效率高等诸多优点,比以往使用专用机开发的工业控制系统更具有通用性,在自动化领域有着更广泛的应用。
目前,主流组态软件都致力于提高本身的开放性,大量采用“标准化技术”,如DDE、OPC、ODBC、ActiveX控件、COM/DCOM等,使组态软件演变成软件平台,在软件功能不能满足用户特殊需要时,用户可以根据自己的需要进行二次开发[3]。
DDE(Dynamic Data Exchange,动态数据交换)是开放的、与语言无关的、基于消息的协议,是在Windows系统下使用共享内存在两个应用程序之间进行数据交换的方式。采用DDE方式,可以利用计算机上的丰富资源来扩充组态软件的功能,使计算机上的多种应用程序通过DDE的方式与组态软件进行数据交换。DDE通讯的双方根据数据的流向可以分为客户端和服务器端,服务器程序与客户端程序之间的数据交换被称为一个“会话”,其中客户端程序初始化链接和发送请求,而服务器程序通过执行自身的命令和发送数据来响应客户程序。DDE协议将控制通讯对象划分为应用程序名(Application)、主题名(Topic)和项目名(Item)。每次DDE会话由应用程序名和主题名唯一确定。客户端程序可以通过DDE协议与服务器程序的一个或多个项目建立链接[4]。
本机DDE地址由三部分构成,其形式为:
应用程序名|主题名!项名
网络DDE地址同样由三部分构成,其形式为:
\计算机名NDDE$|DDE共享名.DDE!项名
OPC(OLE for Process Control,过程控制的OLE)是一个新兴的通用工业应用软件标准,大多组态软件提供了标准的OPC接口,既可作为OPC客户端,也可以作为OPC服务器,因而,可以方便地与其他具有OPC标准接口的工业应用程序或外部控制设备连接,实现数据交互,完成对现场数据的处理维护和对设备的有效控制。
组态软件把其核心作为对象封装起来,把组态软件的大多数功能作为对象的属性和方法暴露出来,使其他程序可以通过OLE自动化操作直接操作组态软件的属性和方法。
组态软件支持标准的ODBC(Open Database Connectivity,开放数据库互连)接口,用户可以使用标准的ODBC接口将数据登录到Oracle、Microsoft SQL Server、Microsoft Access、Sybase等数据库中,方便地进行历史和实时数据的分析、处理和维护。
在某些组态软件中可以插入标准的Windows ActiveX控件,用户也可以根据需要开发自己的ActiveX控件或者选用其他厂商开发的ActiveX控件。这样,大大丰富了组态软件的控件工具箱,使系统组态时更加灵活和方便。
多数组态软件的设备驱动程序的实现方法和原理与标准VB的ActiveDLL完全一致,但组态软件规定了一套接口规范,遵守这些接口规范,用户可以开发自己的ActiveDLL用作组态软件的设备驱动构件。用户开发组态软件设备驱动的过程,实际上就是根据设备的特性和含义来完成方法功能的编程过程。
MCGS(Monitor and Control Generated System,通用监控系统)是一套用于快速构造和生成计算机监控系统的组态软件,它能够在基于Microsoft的各种32位Windows平台上运行,通过对现场数据的采集处理,以动画显示、报警处理、流程控制和报表输出等多种方式向用户提供解决实际工程问题的方案,它充分利用了Windows图形功能完备、界面一致性好、易学易用的特点,比以往使用专用机开发的工业控制系统更具有通用性,在自动化领域有着更广泛的应用。
由于语言简洁、功能强大、开发效率高等诸多优点,VB作为一种通用的Windows环境开发环境,已经被全球数以百万计的程序员所接受。下面以VB和MCGS为例,对组态软件二次开发进行研究。
利用DDE技术实现VB与MCGS的数据交换,需要对通讯的双方进行必要的配置。例如:
图1 “DDE连接管理”对话框
2.1.1 MCGS作为DDE服务器向VB传送数据Output CurSet
在MCGS程序中,通过“工具”→“DDE连接管理”,在“DDE连接管理”对话框中,将OutputCurSet设置为DDE输出。
MCGS程序的服务器名为MCGSRun,主题名为DataCentre,项目名为变量名。
在VB程序中,在窗体中添加DDE链接控件,如Label,设置该控件的LinkTopic属性为MCGSRun|DataCentre,Link Item属性为OutputCurSet,LinkMode属性为1,Link Timeout属性为合适值。
2.1.2 VB作为DDE服务器向MCGS传送数据SysState
在VB程序中,将应用程序名改为DDETestVB,在窗体中添加TextBox1作为DDE项目,设置窗体的LinkTopic属性为Form1,LinkMode属性为1。
在MCGS程序“DDE连接管理”对话框中,将SysState变量设置为DDE输入,并为其建立服务器节点VB:服务名为DDETestVB,主题名为Form1,然后在“连接项目”输入框中输入TextBox1。
VB程序可以通过引用MCGS公开的OPC接口,以对象的形式直接引用MCGS的属性和方法,下例为VB程序操作MCGS程序变量Data1和Data2的主要语句:
Private DataObj As Object
Set
DataObj=GetObject(,”McgsRun.DataCentre”)
Text1=Format$(DataObj.GetValueFromName(“Data1”))
DataObj.SetValueFromName
“Data2”,Val(Text2)
ODBC是一种分层结构,包括驱动程序管理器和多个数据库的ODBC驱动程序.驱动程序管理器根据应用程序的指令,调用相应的ODBC驱动程序,把应用程序的SQL语句或函数调用传送到数据库管理系统,从而实现对数据库的访问和操作.ODBC的最大优点是能以统一的方式处理所有的数据库.一个完整的ODBC由下列部件组成:
(1)应用程序(Application);
(2)ODBC管理器(Administrator):主要任务是管理安装的ODBC驱动程序和管理数据源;
(3)驱动程序管理器(Driver Manager):驱动程序管理器包含在ODBC32.DLL中,对用户是透明的,其任务是管理ODBC驱动程序,是ODBC中最重要的部件;
(4)ODBC API;
(5)ODBC驱动程序:主要是一些DLL,提供ODBC和数据库之间的接口;
(6)数据源:数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。
VB和MCGS可用SQL语句访问同一ODBC数据库,从而实现VB与MCGS数据交换。
VB用户可以创建自己的ActiveX控件和ActiveX DLL,具体方法见参考文献2。MCGS可以将这些ActiveX控件和ActiveX DLL作为动画构件和设备驱动程序添加到项目中。其中,MCGS设备驱动程序的开发必须遵循规定的接口规范,具体包括5个和8个方法:属性DevType(标识设备的类型)、属性DevChannel(标识设备的通道个数)、属性DevBaseIO(标识设备所用IO的基地址)、属性DevIONumber(标识设备所用IO地址的个数)、方法GetDevName(读取设备构件类型名称)、方法GetDevHelp(调用设备构件的在线帮助内容)、方法SetDevPage(调用设备的内部属性页)、方法(InitNewDev)初试化设备的初始值、方法GetChlType(读取设备构件各通道的数据类型和注释)、方法InitDevRun(运行时对设备进行初始化工作)、方法RunDevCommand(执行指定的设备命令)、方法CollectDevDat(定时操作设备,采集或输出数据)。
上述方法已经在某大功率船用直流可编程电源的监控程序中得到成功应用。该监控系统的结构框图如图2所示。
在该项目中,VB程序作为后台程序运行,通过485接口与设备的DSP控制器进行Modbus协议通讯,通过PCI板卡实现设备数据采集,并通过DDE、OPC和ODBC技术与MCGS程序通讯。MCGS程序作为系统的监控主程序,通过与VB的通讯实现指令的下达,并对VB程序通过Modbus通讯和采集卡获得的参数、状态、故障报警等数据进行进一步处理,并以友好的HMI呈现给用户。图3为MCGS程序主画面。
图3 MCGS监控主画面
本文提出了一种组态软件与Windows高级编程语言混合编程的集成解决方案,充分利用了组态软件和高级语言各自的优点,通过DDE、OPC、ODBC和ActiveX自动化等软件接口规范,可以方便地实现组态软件与高级语言的集成。该方案突破了单纯应用工控组态软件的不足,极大地扩展了其应用范围,为快速灵活的构建监控系统提供了解决方案,该方案和关键技术已经在项目中得到成功应用,其有效性和开发效率得到充分验证。
[1]Yong Xiao,Tie-jun Liu.Development of a new power quality monitoring terminal based on configuration[J].Electricity Distribution,2008.CICED 2008.International Conference.
[2]刘燕,夏建全等.基于VB实现的组态王与单片机间通信[J].自动化与仪器仪表,2006(5).
[3]A SKravchenko,Yu V Vilkov.A power supply for simulting lightning current pulses[J].Instruments and Experimental Techniques,2006,49(4).
[4]施建强.InTouch、VB和Matlab之间的DDE接口方法[J].南京工程学院学报(自然科学版),2003,(3).
[5][美]Bob Reselman,Richard Peasley.何键辉,董方鹏,冯毅.实用Visual Basic 6教程[M].北京:清华大学出版社,2001.03.
[6]曹辉等.组态软件技术及其应用[M].北京:电子工业出版社,2009.01.
Research on monitoring&control scheme based on VB and the configuration software
Yang Dong sheng Zheng Wei Wu Hong
configuration software;VB;Remote Monitoring&Control;software interface
This paper researches on the integration means of the configuration software and VB,and puts forward to an industrial Remote Monitoring&Control System scheme.This novel scheme gets over the disadvantages of the configuration software and is validated in practice with the case of MCGS.
TP311.52
A
1001-9855(2011)01-0061-04
2010-08-31
杨东升(1979.09-),男,汉族,工程师,主要从事船舶电气设计研究工作。