关键字:组态王; 闸群; 监控
Abstract:Under the background of the development of the real-time monitoring control system of drawgate-group,the application of Kingview6.51 in the upper configuration software of the system and its programming are introduced in detail upon the basis of descriptions of the makeup,functions and main features of this system.
Key words:Kingview;drawgate-group;monitoring and control
1. 引言
本系统是F1摩托艇世界锦标赛中国成都站赛道水闸闸群监控系统。这项国际比赛赛道的拦河坝坝轴线长284.774m,其中水闸群段长240.4m,共设水闸17孔,单个闸孔宽和高分别为12m和4.5m。该监控系统是为一项国际赛事服务,要求它有很高的可靠性和稳定性,能够在监控主机屏幕上实时显示闸群信息,如闸门高度、升降状态、故障报警等,使操作人员对其运行状态一目了然,还可以存储、查询、打印历史数据报表和操作记录报表等。并且要求数据处理支持实时计算,能够精确的获取赛道的水位信息,所有闸门都可以准确及时做出升、降、停的反应,从而确保赛道水位在大赛允许的小范围内波动。
2. 监控系统结构
系统的硬件部分主要有PLC、通信模块、UPS、水位计、行程开关、监控主机、显示屏、打印机等组成。组态软件选用组态王6.51进行开发人机对话界面,实现监控功能。本监控系统采用分层式管理,网络结构图如图1:
图1 系统网络结构图
每孔闸门都采用OMRON PLC CP1H 作为现场控制单元,17个现场控制单元就构成了现地控制层。现地控制层与主控PLC是通过CompoBus/S高速总线进行通信。主控PLC选用OMRON PLC CJ1G,它与监控主机一起就构成了集中控制层,它们之间采用HostLink通信方式。
3. 基于组态王的监控软件开发
用组态王进行开发包括以下步骤:(1)定义变量,将监控主机的I/O变量与设备地址相连。(2)设计监控画面,主要包括操作画面、记录画面、报警画面等。(3)动画连接,建立画面图素和变量的对应关系。(4)构造数据库,数据库是监控系统的核心部分。(5)运行和调试,逐步完善系统使其达到设计要求。
3.1 主控PLC与监控主机的通信
在本监控系统中,主控PLC和监控主机采用RS232通信方式,接口选用COM1,设备地址为0;通信波特率:9600Bit/s;通信数据格式:7个数据位、2个停止位;采用偶效验方式。
3.2监控系统界面及其功能实现
监控系统的界面主要有:监控操作界面、历史数据记录界面、操作记录界面、报警界面和用户界面。监控操作界面是直接面向操作人员,主要起监控和向现地控制层发送操作命令等作用,如图2所示。历史数据记录和操作记录界面,用于存储和查询各项历史记录。报警界面是向操作人员反馈各种设备的运行状况,显示相关故障信息,为操作人员排除故障提供参考。用户界面是为用户交接班时提供“签到”作用。一般工程中,针对每个分散的监控对象都会有一个独立的监控操作界面,那么要设计的画面繁多,工作量大,而且在定义诸多变量时容易混淆出错。在这里,采用了一种对普通变量进行引用的办法,实现只用一个监控操作界面去监控17孔闸门。
图2 监控操作界面
首先建立一组与所有监控操作有关的内存变量,在画面中使用这一组内存变量实现动画连接,再在组态王提供的自定义函数命令语言中,定义一个没有返回值的函数ChangeVariable,最后利用组态王中的VarRefAddress函数实现普通变量间的引用。ChangeVariable 函数定义如下:
Void ChangeVariable(String 开环和复位指令,String 闸门高度,String 闭环设定值,String 状态故障信息,String 标题)
VarRefAddress(\\本站点\内存_开环和复位指令,开环和复位指令);
VarRefAddress(\\本站点\内存_闸门高度,闸门高度);
VarRefAddress(\\本站点\内存_闭环设定值,闭环设定值);
VarRefAddress(\\本站点\内存_状态故障信息,状态故障信息);
\\本站点\内存_标题=标题;
例如,当要监控操作第八孔闸门时(其他孔闸门类似),在监控主界面上点击触发“8号闸门”按钮,该按钮命令语言连接中的ChangeVariable(开环和复位指令_八,闸门高度_八,闭环设定值_八,状态故障信息_八,标题_八) 函数,就会使监控界面中所有内存变量和第八孔闸门实际定义的I/O变量相关联,于是当前的实时监控和操作就是针对第八孔闸门。这种方法实现了监控多个类似对象时保持监控界面不变,而在监控操作时其内部变量的关联发生变化,从而达到监控各个对象的目的。该方法新颖简洁,可靠性高,也在很大程度上减轻了开发人员的工作量。
3.3数据库的设计和报表的实现
数据库是监控系统数据处理中心,也是联系现地控制层和集中控制层的纽带。该监控系统要求实时显示闸门高度、闸门前后的水位,而且要有操作记录和报警记录并且都能产生报表,还具有查询和打印功能。在本监控系统中,采用Windows的ODBC动态的将数据保存到ACCESS数据库中,用户可以通过报表输出查询结果。
具体实现步骤如下:首先,建立一个ACCESS数据库,在本监控系统中命名为“闸群监控”,并且建立相应的数据表“闸群监控系统”。然后在控制面板中的ODBC数据源中添加一个基于驱动程序Microsoft Access Driver的数据源,在本系统中取名为“赛道闸群监控系统”,并将该数据源连接到刚才建立的ACCESS数据库“闸群监控”。在组态王的应用命令语言中添加语句SQLConnect (DeviceID,“dsn=赛道闸群监控系统”)实现和数据库的连接。接着在组态王的“SQL访问管理器”中创建对应的记录体。建好记录体后,可以在组态王应用程序命令语言的“启动时”中,使用SQLInsert(DeviceID,“闸群监控系统”,“闸群监控系统”)语句,将组态王的数据保存到ACCESS数据库中。当系统退出运行时,由SQLDisconnect(DeviceID)断开和数据库的连接。
这里以历史记录报表为例,给出具体的编程过程。在组态王的“自定义函数命令语言”中定义一个没有返回值的HistoryRecord函数:
Void HistoryRecord(RealTag rTag,String Name)
String GroupName;Long Time;
Time=HTConvertTime(\\本站点\$年, \\本站点\$月,\\本站点\$日, \\本站点\$时, \\本站点\$分, \\本站点\$秒);
GroupName=GetGroupName("",rTag.Group);
\\本站点\历史记录_日期字符型=Time;
\\本站点\历史记录_日期=StrFromTime(Time, 3);
\\本站点\历史记录_操作员=\\本站点\$用户名;
\\本站点\历史记录_闸门名称=Name;
\\本站点\历史记录_闸门高度=rTag;
\\本站点\历史记录_闸门前水位=\\本站点\闸门前水位;
\\本站点\历史记录_闸门后水位=\\本站点\闸门后水位;
SQLInsert(\\本站点\DeviceID,"闸群监控系统","闸群监控系统");
监控系统要求每隔一定时间将数据保存到ACCESS中,所保存的数据还可以通过EXCEL进行查询和二次处理。本监控系统的历史数据报表有时报表、班报表和日报表,以满足三种不同的查询需求。下图就是其中某一孔闸门的时报表查询结果:
图3 数据记录报表
操作记录报表主要记录操作人员的具体操作情况,比如值班人员登陆和离开时间、对闸门进行了那些操作、向现地控制层发出了那些控制信号等。报警报表主要记录系统运行中的各种报警事件、报警状态值,并可根据事件的轻重缓急设定报警优先级以及报警阀值。操作报表和报警报表的产生和查询功能的实现都类似于上面的历史记录报表。
4.结束语及本文创新点
本监控系统是以组态王Kingview6.51作为开发平台,用于拦河水坝闸群的实时监控。实现了实时监控、故障报警、历史数据的存储和查询、报表的显示和打印等功能,准确、客观地反映了闸群的实时运行状况,数据刷新速度快,精度高,操作界面精简,具有友好的人机交互界面。系统投入使用以来,运行状况安全稳定可靠,深得用户好评,在2006年10月的F1摩托艇世界锦标赛中国成都站的比赛中发挥了重要作用。本文创新点主要有:(1)在上位机组态软件设计中,采用一个界面去监控多个类似的对象,克服了一般工程中监控界面重复设计的弊端。(2)利用对普通变量进行引用的方法,在I/O变量动画连接方面有新颖之处。(3)数据库设计方法简洁高效,不必采用专业的SQL、Oracle等大型数据库就可以满足系统要求,节约开发成本。
参考文献:
[1]北京亚控科技发展有限公司.组态王Kingview6.51使用手册.2005.11
[2]林勇,余永权.组态王在工业锅炉吹灰系统中的应用.微计算机信息.2004.9
[3]龚荣,黎洪生.组态王6.5在油井实时监测系统的应用.工业控制计算机.2005.7
[4]钟玲玲,周浩敏.基于组态王6.5和PLC的水压控制系统.自动化与仪表.2006.4