文章编号1 1001—9944(2010)05—0039—04 基于VB和组态王的远程环境监测平台 陈立定.林子杰 (华南理工大学自动化科学与S-程学院,广州510641) 摘要:远程监测平台负责远程数据的接收和转发.同时要给用户提供丰富的界面及信息管 理功能 如果采用单一的开发X-具通常不能很好地兼顾两方面需求 文中介绍了一种使用 Visual Basic和组态王混合编程的技术方案,不仅能保证可靠地满足功能需求.并且能够大 大缩短开发周期 基于此技术组合构建的远程环境监测平台目前已投入实际运行.实践表 明本技术方案在相关的应用领域具有一定借鉴意义 关键词:远程监测;数据收发;VB:组态王 中图分类号:TP273.5 文献标志码:A Remote Enviromental Monitoring Platform Based on Visual Basic and KingView CHEN Li—ding,LIN Zi-jie (College of Automation Science and Engineering,South China University of Technology,Guangzhou 510641,China) Abstract:The remote monitoring platform is responsible for receiving and sending remote data,meanwhile,it needs to supply the nice interface and the function of information management for the users.The single development tools usual— ly doesn’t meet the needs above,SO we propose a solution basing on Visual Basic and KingView.This solution not only meets the functional requirement effectively,but also reduces the development period.It has been found that the proposal may be helpful in some similar fields. Key words:romote monitoring;data transfer;Visual Basic(VB);KingView 国家环境保护“十一五”科技发展规划明确指 介绍了一种基于VB和组态软件构建远程监测平台 出要加强环境监测、控制与信息管理系统的建设。 在国家的指引下.随着移动通讯技术的发展. 基于GPRS的分布式远程环境测控技术已经得到了 的技术组合.一方面利用VB强大易用的数据收发 和数据库操作功能.一方面则利用组态王软件方便 快捷的界面设计功能.二者相结合.不仅有效保证 了软件稳定性.而且大大缩短了软件开发周期 目 较好的发展 在该系统中.远程环境监测平台负责 接收终端采集仪数据和对数据的进一步处理和转 发.扮演了中间数据节点的角色.在整个系统中起 着至关重要的作用 目前.实现监测平台的技术方案有多种 本文 收稿日期:2010—01—18:修订日期:2010—01—22 前该平台已投入实际应用.长时间的运行结果表明 该平台能够连续、可靠地收发远程采集仪数据,并 且该平台简便实用、功能强大,收到了良好的预期 效果 基金项目:广东省科技计划项目(2006B12301002);佛山市产学研专项资金项目(2007CB009);佛山市南海环境保护局项目 (2007B08D8073570) 作者简介:陈立定(1964一),男,副教授,硕士生导师,研究方向为网络化控制系统理论与应用;林子杰(1986一),男,在读硕士 研究生,研究方向为网络控制与智能化集成系统。 自动化s仪表2010(5) 四 1 远程监测平台的设计 1.1 监测平台的功能 一个省份的环境监控系统通常采用分布式和 集中式的架构相结合…。如图1所示。 广卅I市 污染源1污染源2污染源3 重度污染源 图1省级环境监控系统 Fig.1 Architecture of whole system 本文所指远程环境监测平台即为每个市 的污染源自动监控系统。因此.该平台所需要实现 的功能主要有[21 ]: (1)接收多个采集仪终端通过GRPS网络实时 报送上来的数据:对接收到的数据进行解析,存人 数据库: (2)按照信息交互规范对相应的数据进行封装, 通过H1TrP与省级监控平台进行通讯: (3)在监测平台上建立管理信息系统用户界 面,包括登录、设置、实时查询、历史查询和报警功 能等: (4)管理信息系统采用WEB发布,支持移动办 公等。 1.2监测平台的结构 监测平台的系统结构示意图如图2所示 采用上述系统结构的优点是显而易见的。VB 具备强大的网络通讯和数据处理能力.将数据接 收、存储和转发的功能交由VB后台程序负责,然后 以SQL SERVER数据库为中介.在组态王中实现用 户界面及各种统计记录功能 组态王具有丰富的图 田 远程环境 怦台 LJH1Tr一 P P0ST童装 DWi0Mns封A0ck数组 D装O XML 譬 监登录查询统计报警… 测(组平态台王界) 面 图2远程环境监测平台结构 Fig.2 Architecture of remote monitoring system 库和图库开发工具.能够模拟现场运行情况;而且组 态王将统计和报警功能封装成控件.只需做简单设 置即可实现预定功能:另外组态王能够实现WEB 发布.用户在浏览器端就可以访问该系统,进行移动 办公 VB和组态王的相互结合.可以弥补二者各自 的不足:并且这种方案在给用户提供良好简便可靠 的功能之外.软件开发周期也大大缩短。 2技术上的实现 2.1 数据收发和存储 2.1.1使用Winsock接收数据 现场采集仪通过GPRS模块(DTU)与监测平台 VB后台程序的Winsock进行通信 由于采集仪有多 台.所以在VB中必须通过Winsock控件数组实现, 其中一个Winsock专门负责侦听下位机的请求,一 旦有连接请求则触发连接请求事件ConnectionRe— quest,VB程序中载入新的Winsock数组成员,调用 Winsock(i)Accept接受连接请求.这样就建立了监 测平台与监控终端的数据通信链路。通信链路建立 后.一旦有数据到达则触发数据到达事件DataAr— riva1.接着调用GetData接收数据或调用SendData 发送数据 程序流程图如图3所示。 2.1.2使用ADO操作数据库 ADO(ActiveX data objects,ActiveX数据对象) 是Micr(】soft提出的应用程序接口(API)用以实现访 问关系或非关系数据库中的数据。在VB中使用 ADO对象服务数据库.必须先建立对ADO对象库 的引用,接着照如下步骤使用: (1)创建Connecti0n对象,建立数据库源连接, Automation&Instrumentation 2010(51 图3 Winsock控件数组工作流程 Fig.3 Flow chart of Winsock arrays 代码如下: Set conn=New ADODB.Connection Conn open”Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial— Catalog=monitor” (2)6'1建数据Recordset对象,获得记录集,代码 如下: Set rstRD=New ADODB.Recordset rstRD.Curs0rLocation=adUseClient‘设置临时 表位置 rstRD.Open ”select from RealData where MoCode= ’&MoCode&” ORDER BY Eq———ID Asc”,conn,adOpenKeyset,adLockOptimistic 获得记录集之后即可以进行插入、查询、删除、 更新等操作 (3)数据库使用完毕,断开连接,释放对象,代 码如下: conn.Close Set rstRD=Nothing 2.1.3使用DOM封装XML数据 XML DOM(document object modal,文档对象 模型)使开发者能够以编程方式读取、操作和修改 XML文档.是最常见的XML工具之一 由于是 W3C的标准.DOM被许多的开发平台所支持.结合 使用这些平台提供的数据库操作工具.可以有效准 自动化与仪表2010(5) 确地生成符合统一格式的XML文档 在VB中生成一个XML文件.必须先创建一个 DOMDocument实例.再使用createProcessinglnstruc— tion设置XML文档的头,标识编码和版本号:在元 素和节点的操作中.必须先创建一个根元素.一般使 用createElement创建顶层(根)元素.使用createN— ode创建子节点(元素),使用SetAttribute设置属性, 使用text设置节点内容,将创建的节点使用Ap. pendChild插入到合适的位置.最后使用save方法 保存该XML实例,则一个XML就创建完毕。 2.1.4使用XMLHTrP对象报送XML数据 本监测平台采用H1TrP—POST方式将封装好的 XML文件主动报送到省级监控中心.数据发送发生 类似于文件上传方式[3]。上传一个XML文件时,先 使用一个ADO流对象将文件内容读出.再将读出的 内容POST到指定URL。在VB中的代码实现过程 如下: Dim oStream Dim strText As String Set oStream =CreateObjeet(”ADODB.Stream”) With oStream .Type=2 .Charset="utf_8”‘以UTF一8的方式来读取文件 .Open .LoadFromFile(strFileName) strText=.ReadText .Close End With Dim ClientH,rI’P As MSXML2.XMLHTI/P60 Set ClientHTFP= CreateObject(”Msxml2.XMLHTFP”) On Error Resume Next ClientHTrP.Open”POST”,url,False‘指定POST 的目标URL ClientHTTP.setRequestHeadeI』’Content -Type”, ”muhipart/form—data:‘设置H1TrP协议头 On Error Resume Next ClientHTYP.send strText‘开始发送 2.1.5后台运行的实现 本监测平台中可以调用一个API程序 Shell—Notifylcon(即托盘程序)实现VB程序作为一 团 个后台程序运行 在调用该函数之前,必须先对函 数和结构类型进行定义.代码如下: 函数声明: Public Declare Function ShellNotifyIcon Lib’’ —(4)使用SQLSelect函数调用每一个组态王变 量在数据库中对应的变量。 界面的具体实现过程与通常的组态过程相类 似,这里不做赘述。图4为界面的一个截图范例。 shell32.dll” (ByVal dwMessage As Long,lpData As N0TIFYICONDATA 1 As Long 结构类型定义: Public Type NOTIFYICONDATA cbSize As Long 该数据结构的大小 hWnd As L0ng 处理任务栏中图标的窗口句柄 uId As Long 定义的任务栏中图标的标识 uFlags As IJ0ng 任务栏图标功能控制,可以是 以下值的组合(一般全包括) &H1表示发送控制消息: 四 Automation&Instrumentation 201o(s1