学历提升辅导,就找秀文网,秀文网欢迎您!
当前位置:首页 >  学历提升 >  论文修改 > 内容页

电力双视监控管理平台的设计与实现(毕业论文范文)

2021-11-28 20:37:54论文修改访问手机版220
 
 
摘  要:电力设备在运行时会产生热量,利用红外热成像技术监视电力设备运行时的温度信息,可以准确了解该设备的运行状况。红外摄像头可以自动采集电力设备的温度信息。本文主要论述了一个管理该温度记录的信息管理平台,通过该平台对这些信息进行统计分析,将数据以更加科学形象的方式展现在用户面前,并提供信息的检索功能,这将对电力设备的预防性维护提供很大的帮助。
关键词:电力设备;红外热成像;温度记录;信息管理;

1 引言

本论文描述了一个用于管理电力设备运行记录的信息管理平台的设计与实现。电力设备在运行时,根据焦耳定律会产生一定的热量。在电器设备出现异常时,这种发热会更加明显。根据电力设备的发热情况,可以判断设备的故障信息[1]。利用红外热成像技术生产的红外摄像头监控电力设备的发热情况,可以判断设备的运行状态[2]。对红外摄像头采集的电力设备运行记录进行统计分析,能够对设备的预防性维护提供数据支持。本平台正是在红外摄像头采集电力设备的温度信息之后,对这些信息进行的科学管理。

2 需求分析

2.1电力双视监控管理平台项目的背景和说明

随着中国社会的工业化发展,人们对电力能源的需求越来越大,电力系统的安全性关乎国民生计,社会发展对变电站的远程监控提出了更高的要求。网络信息技术的发展,使人们对信息的收集和检索有了强大的工具。将信息管理系统应用到变电站监控数据的分析上,将大大提高变电站工作人员的效率,增加电力设备维护的可靠性。近年来,随着红外热成像技术的发展,利用红外热成像技术监视电网设备的温度情况越来越受到人们的关注,出现了很多红外监测仪,用来采集电网设备的温度系数[3]
针对市场上出现的很多红外监控前端,却没有与之相应的后端信息管理平台,用于对红外监测仪采集到的温度系数进行统计分析。利用计算机强大的计算能力和信息处理能力,对电网设备的温度记录进行信息化的管理,成为电力系统的发展方向之一[4]。电力双视监控管理平台的设计与开发,正是在变电站红外监控和可见光监控的基础上,对系统采集到的电网设备温度信息、图像信息和视频信息进行统计分析,以更加直观明了的方式展现在工作人员面前,并提供信息的检索功能,在大大减轻了工作人员劳动量的同时,让工作人员以一种更加简单科学的方式监控电网设备的运行情况。

2.2 电力双视监控管理平台项目整体系统概述

本平台针对的是广州飒特电力红外技术有限公司提供的SAT-MC602C热像仪,该热像仪能够提供的数据包括:工作站信息(工作站即指当前系统所运行的变电站的相关信息)、云台信息(云台即指一个用于双视监控的双视设备)、监控面信息(监控面指摄像头在特点的角度所照的照片)、监控区域信息(监控区域信息指监控面上多个重点监测的部位所作的图形化标识)、监控任务信息(监控任务确定了热像仪一次巡视的工作内容)和任务巡视记录(一次巡视采集到的温度系数)等。
根据硬件设备提供的数据内容,平台设计功能应包括以下几点:
  1. 监控分析曲线图,用于显示选定区域的温度曲线;
  2. 温度报表,用于显示选定监测区域的温度报表信息;
  3. 报警记录信息,用于显示所有的报警记录信息,并提供查看报警信息的超链接,还应该提供报警查询功能;
  4. 查看报警信息,用于查看指定的报警记录所对应的详细报警信息,包括相应的报警图像,设备温度,报警温度等数据;
  5. 监控记录信息(以区域为单位),以监控区域为单位显示一段时间内的监控记录信息,支持分页查看,显示信息包括监控是否正常,是否有报警,区域信息,记录时间等;
  6. 远程监控,厂家提供了用于对远程红外摄像和可见光摄像进行查看和控制的ActiveX控件。平台在开发时应考虑将该控件嵌入到平台中,以实现对远程红外摄像和可见光摄像的查看和控制;
  7. 相关下载,提供对该平台使用文档、远程监控ActiveX控件等相关资料的下载。
另外,对于一个完整的信息管理系统,还应有一整套的用户及权限管理规则,用于区别不同的管理人员对信息拥有不同的管理权限。

3 平台设计

3.1 电力双视监控管理平台总体架构设计

该平台属于典型的Web开发,平台设计采用B/S的三层模式,即客户端的表现层、Web服务器端的业务层和数据库服务器端的持久层[5]。平台采用J2EE技术架构设计,使用了Spring MVC + MyBatis的框架[6] [7]。采用分层设计的思想,可以降低各个功能模块的耦合度,提高平台的可维护性。

3.1.1 系统总体层次结构设计

考虑平台要处理的实际业务,平台的数据应该位于各个变电站的本地服务器上,平台服务器要从各个变电站的本地服务器上读取数据,然后展现在用户面前。这是一个典型的分布式系统,所以平台结构设计采用一个新的领域驱动插件Takia[8],如图1所示。该插件可以更好的适应分布式系统开发。持久层采用了比较轻的MyBatis,平台设计采用分层结构,在业务功能上面,把权限管理和远程站点管理独立出来,而其他的业务模块划分到一类中。

图1 平台总体层次结构图

3.1.2系统细分层次结构设计

监控平台的技术层次细分如图2所示。平台的表现层以HTML网页的WEB-UI为主,基于JQuery为核心,合理应用AJAX技术来实现分级数据加载,FLAH用于图标展示,而远程数据监控采用ActiveX嵌入方式。逻辑层主要负责业务模块划分,分为用户权限模块,日志系统,报表和图标系统,以及远程监控系统。在该平台上,对报表和图标系统需要进行功能增强,根据用户的需求增加报表种类,优化报表参数选择功能等。数据来源分为三个部分,本地管理数据库,数据备份数据库,和外部数据。其中跟权限,站点信息相关的参数保存在本地管理数据库中,数据备份保存从站点提取的经过处理分析的温度数据,而外部数据是直接通过远程接口从站点读取数据。
领域驱动层是基于内存的建模组件,可以将不同的数据来源进行屏蔽,对业务模块提供统一服务[9]。领域框架提供了缓存系统以保证系统的性能。
远程组件目前规划了两种形式,一种是基于hessian的远程数据接口[10],还有一种是基于第三方供应商提供的dll开发库。在dll能够满足需求的情况下使用dll来提取站点数据,如果没有提供相应功能,平台会使用hessian远程接口,直接到站点数据库读取需要的数据。

图2 平台细分层次结构图

3.1.3 系统逻辑架构设计

由图3所示,整个平台由三大部分构成。一部分是服务器上的监控平台,一部分是工作站上的第三方监控系统,另外一部分是平台的骨架系统。平台用户均通过浏览器对系统进行访问。

图3 平台逻辑架构图
与以往不同,该平台设计将数据库进行了隔离,即平台和工作站各自维护自己的数据库系统,独立维护各自的数据。
数据交换方面采用Dll控件时。服务器程序通过JNI调用Dll控件,网络数据传输由Dll负责,Dll控件直接连接到工作站系统中,提取需要的数据,并使用Socket通过网络完成数据传输工作;对于一些功能如果dll没有提供相应接口,我们使用Hessian方式通过工作站骨架程序,直接提取数据库中需要的数据给平台使用,数据通过Hessian(基于Http的序列化)协议进行传输。
 

3.2 电力双视监控管理平台模块设计

3.2.1 用户及权限管理模块设计

用户及权限管理模块,用于设置平台的安全规则,根据平台设置的规则,不同的用户拥有不同的权限,不同的权限对应不同的软件功能。该模块设计主要包括以下功能。
  1.   用户账号管理
用户信息包括用户名,密码,以及姓名等,其中用户名将作为登陆名使用,全系统唯一。用户信息管理包括信息的录入修改、删除、浏览和查询等功能。系统管理员有权限修改其他用户的密码信息。
平台可以为每个用户分配不同的操作角色,每个用户只能对应一种操作角色。在登陆至系统之后,将按照所对应角色显示相应的操作界面以及功能按钮。
可以为每个用户进行不同的资源信息分配,以限制操作人员所能够操作的信息范围,比如分配变电站资源信息等。
用户账号管理的界面设计如图4所示:

图4 用户账号管理界面
  1. 密码管理
操作人员能够修改自己的密码信息。
  1. 权限管理
定义整个系统内的操作权限信息。每个操作权限信息包括所要执行的方法,权限名称信息等。
在具体实现时,每个操作权限将与相对应的功能相对应。没有权限的操作人员将无法看到相应的功能部件,也无法进行相应的操作。
  1. 菜单管理
定义整个系统内的菜单信息,每个菜单均涉及到相对应的操作,包括菜单链接信息以及菜单名称。
在具体实现时,每个菜单将与能看到的系统菜单相对应,没有权限的操作人员将不能看到相应的菜单,也不能进入相应界面进行操作。
  1. 角色管理
角色管理包括角色信息的录入,修改,删除,浏览和查询等功能,每种角色都有指定的菜单信息和对应的操作权限。还需要对某些角色指定是否需要限制某一类操作信息,在该类操作信息限制下,被分配此角色的操作人员仅可操作限定的信息(比如变电站)。
  1. 日志管理
对应平台运行的日志,也需要有不同的管理权限,只是具有权限的操作人员才能够查看系统内记录的一切操作信息。平台能够按操作人员,时间,操作类型对日志信息进行查询操作。系统管理员可以针对日志信息进行删除操作,删除过期的日志信息。系统管理员可以配置日志删除策略,在时间过期时(以天计),平台自动删除系统内的日志信息。

3.2.3 平台业务模块设计

该模块是平台功能的主要展示部分,用于对数据库中保存的温度记录信息进行统计分析,以一种简单直观的方式展现在用户面前,并提供信息的检索功能。该模块主要包括以下几个部分:
  1. 监控记录:以区域为单位显示一段时间内的监控记录信息,显示信息包括监控是否正常,是否有报警,区域信息,时间等,还需要提供监控记录的查询功能,可以按照云台、监控点、监控区域、时间等条件进行查询。
  2. 报警记录:显示所有的报警记录信息,提供分页功能,默认显示当天的报警记录信息。报警信息可按云台,监测点,监测区域,时间进行过滤显示。可点击详细地报警记录信息查看详细情况。具有一定操作权限的操作人员,可以对报警记录信息进行修正,以确认此并不是一个有效的报警信息,并且注明相应的修正说明。
  3. 温度报表:选定监测区域的温度报表信息,按天(以小时计),月,年进行分别统计报表,显示报表名称(可修改),每个区间温度信息,最终显示最高温度,最低温度,平均温度,以及温升数据等。提供打印功能。
  4. 监控曲线图:按天(默认为当天),显示选定的监测区域的温度曲线图信息,并显示最高温度,最低温度,最高温度区域,时间,最低温度区域,时间,以及平均温度信息。显示标题(可修改),并提供打印功能,将曲线图打印出来。

3.3 数据库设计

根据电力双视监控平台的需求分析,在跟硬件提供商沟通之后,对电力双视监控平台进行数据库设计。在保证平台有更好的扩充性和完整性的情况下,主要设计了如下数据库表:工作站表(Station)、云台表(Monitor)、监控点(监控面)表(Point)、监控区域表(Area)、监控任务(Task)、监控任务点(TaskPoint)、监控任务执行记录(TaskLog)、监控点执行记录(TaskPointLog)、监控区域执行记录(TaskAreaLog)、报警记录信息(Alarm)等共24张表。数据库表整体表间关系图如图5所示。

图 5 数据库表间关系

3.3.1 监控区域表(Area)

监控区域即在一个监控点上,对于多个重点监测的部位所作的图形化标识。一个图形化标识称之为一个监控区域,此区域可以由不同的形状进行标识,如三角形,四边形,多边形等,监控区域表设计如表 1。
属性名 类型 字段名 字段类型 描述
id long area_id int(11) 区域主键
monitor R monitor_id int(11) 引用的云台
point R point_id int(11) 引用的监控点
sn String area_sn varchar(64) 图形sn
name String area_name varchar(64) 名称
alarmMaxTemp float area_alarmMaxTemp float 上限报警温度
alarmMinTemp float area_alarmMinTemp float 下限报警温度
emissivity float area_emissivity float 辐射率
ambTemp float area_ambTemp float 环境温度
distance float area_distance float 距离
humidity float area_humidity float 相对温度
tempAdjust float area_tempAdjust float 温度校正
description String area_description varchar(512) 描述
layerId int area_layerid int(11) 图层类型id
layertypeid int area_layertypeid int(11) 标识区域类型
points String area_points varchar(256) 区域点集
normolTemp float area_normolTemp float 一般报警温度
seriousTemp float area_seriousTemp float 严重报警温度
criticalTemp float area_criticalTemp float 紧急报警温度
redueType int area_redueType int(11)  
showTmepInfo int area_showTmepInfo int(11) 是否显示温度(1为是,0为否)
表 1 监控区域表Area(area_table)

3.3.2 监控任务(Task)

整个双视监控是以任务的方式进行工作,即通过任务设置使监控按照特定的任务设置运行。监控任务即描述云台设备在一天内或几天内的监控,因为云台不能时时在监控(当然也可以设置)。监控任务即描述一次运行的监控信息的设置,任务由操作人员进行设置。监控任务可以重用,即多次运行。监控任务表设计如表2。
表 2 监控任务表Task(task_table)
属性名 类型 字段名 字段类型 描述
id long task_id int(11) 任务主键
monitor int monitor_id int(11) 引用的云台
name String task_name varchar(64) 任务名称
description String task_description varchar(128) 任务描述
alarmRecordFlag boolean task_alarmRecordFlag bit(1) 是否报警录像
recordTime int task_recordTime int(11) 报警录像持续时间
runTime Date task_runTime datetime 任务启动时间
activeFlag boolean task_activeFlag bit(1) 任务是否有效
detectType int task_detectType int(11) 任务检测类型(定检或巡检)

3.3.3 监控区域执行记录(TaskAreaLog)

即在一次任务执行记录中,每一个监控点中的每一个监控区域的监控情况,包括各种数据。该表用于保存电力设备重点监测部位的温度记录。监控区域执行记录表字段设计如图表3。
属性名 类型 字段名 字段类型 描述
id long taskarealog_id int(11) 主键
taskPointLog R taskpointlog_id int(11) 引用的监控点任务
recordType int taskarealog_type int(11) 记录类型
minTemp float taskarealog_minTemp float 最低温度
maxTemp float taskarealog_maxTemp float 最高温度
alarmTemp float taskarealog_alarmTemp float 达到报警点的温度
time Date taskarealog_time datetime 当前时间
area R area_id int(11) 引用的区域
表 3  监控区域执行记录表TaskAreaLog(taskarealog_table)

3.3.4 报警记录信息(Alarm)

记录一次报警信息。监控任务在执行过程中,若某个监控区域采集到的最高温度超过该区域设置的报警温度,即产生一次报警记录。报警记录信息表字段设计如表4。
属性名 类型 字段名 字段类型 描述
id long alarm_id int(11) 主键
monitor R monitor_id int(11) 引用的云台
point R point_id int(11) 引用的监控点
area R area_id int(11) 引用的区域
reportFileName String alarm_reportFileName varchar(64) 警告报告路径(pdf文档)
taskName String alarm_taskname varchar(256) 警告任务名
time Date alarm_time datetime 报警时时间
temp float alarm_temp float 报警的温度
realTemp float alarm_realTemp float 报警时实际温度
snapFilePath String alarm_snapFilePath varchar(512) 抓拍文件名(红外)路径
recordingFilePath String alarm_recordingFilePath varchar(512) 录像文件名路径
alarmType int alarm_type int(11) 报警级别(1,2,3)
description String alarm_description varchar(512) 报警描述
表 4 报警记录信息表 Alarm(alarm_table)

4 平台实现

4.1用户及权限管理模块的实现

4.1.1 登录界面

平台登陆界面设计如图6。

图 6 平台登录界面
前端通过JQuery的表格提交将用户名和密码提交到后台[11]。代码路径如下:
$("#loginForm").ajaxSubmitForm("${pageContext.request.contextPath}/user/login/validate",后台通过Spring注解扫描到对应的方法。

4.1.2登录Action

在UserAction.java文件中,程序通过判断上送的user在数据库能否找到对应的Id来确定该用户是否可用,判断方法如下:
@Controller
@RequestMapping("/user")
public class UserAction extends BaseAction{
   @RequestMapping(value="/login/validate")
   @ResponseBody
   public Map<String,Object> userValidate(@FormParam(value="user")User user,HttpServletRequest request){
       if(user==null){
           return MessageUtils.getMapMessage(false);
       }
       String loginName = user.getUserName();
       String password = user.getPassword();
       user.setId(null);//设置id为null,此后用id是否为空判断是否成功登录
       user = userService.login(user);
       if(user==null||user.getId()==null){
          logService.log(new Log(loginName,-1L,"登录失败","{userName:"+loginName+",password:"+password+"}"));
          return MessageUtils.getMapMessage(false);
       }else{
           request.getSession().setAttribute(User.CURRENT_USER_ID, user.getId());
           logService.log(new Log(user.getUserName(),user.getId(),"成功登录系统"));
           return MessageUtils.getMapMessage(true);
       }
   }
}

4.1.2 权限管理

用户登录进主页之后,平台通过查找该用户对应的权限表tab_role_permission来判断用户具有哪些权限。若用户没有的权限,系统将不显示相应的菜单。主页index.jsp的菜单控制代码如下:
   <div class="ui-layout-west">
      <div id="menu">
          <c:forEach items="${menus}" var="s">
              <h3 id="${s.id}">${s.menuName}</h3>
              <ul></ul>
          </c:forEach>
      </div>
  </div>

4.2 平台业务模块的分层实现

平台业务的实现框架是Spring MVC+ MyBatis。Spring MVC是Spring针对Web开发实现的一个基于模式-视图-控制器模式实现的框架,能够帮助人们构建灵活和松耦合的Web应用程序。MyBatis是一个存储过程和高级映射的优秀持久层框架,相比Hibernate而言更加轻量级,它不但提供了对象与关系数据库之间的映射,同时提供操作方法与SQL间的直接影射,这样对设计者而言有更大的灵活性。平台业务模块的实现采用Spring MVC作为请求控制器,MyBatis作为持久化层。请求进入系统时,通过Spring MVC的DispatcherServlet将请求发送给不同的Controller控制器,Controller控制器再调用相应的Service层,service层调用Dao层与数据源交互。整个模块的框架图如图7所示。

 图 7 平台业务模块实现框架
业务模块主要是是对数据库中各种数据的查询,包括对监控记录的查询、报警记录的查询、温度报表的查询等,视图层则通过表格、曲线图等方式显示查询的数据。下面主要以报警记录部分的查询过程来说明业务模块的实现过程。

4.2.1 搭建Spring MVC

首先要在Web应用程序的web.xml文件中配置Spring MVC的核心控制器DispatcherServlet,DispatcherServlet将把请求分配给相应的控制器。
<servlet>
  <servlet-name>spring</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>

4.2.2 编写查询报警记录的控制器

@Controller
@RequestMapping("/record")
public class RecordAction {
@MenuMapping(name = "报警记录", url = "/record/alarm", code = "200004", parentCode = "200000")
  @RequestMapping("/alarm")
  public ModelAndView alarmRecord() {
      return new ModelAndView("pages/dlssjk/alarmRecord");
  }
 
  @RequestMapping("/alarm/search")
  @ResponseBody
  public Map<String, Object> getAlarmRecord(
          @RequestParam("stationId") Long stationId,
          HttpServletRequest request) throws MalformedURLException,
          NumberFormatException, ErrorServerException {
      String time = request.getParameter("time");
      String queryType = request.getParameter("queryType");
      String[] areaIds = request.getParameterValues("areaIds");
      // pointIds
      Map<String, Object> m = ParamUtils.getParamsMap(request);
      if (queryType != null && queryType != "")    //设置查询类型,按天?按月?按年?
          m.put("queryType", queryType);
      if (time != null && time != "")        //设置查询时间
          m.put("time", time);
      Collection<String> areas = new ArrayList<String>();
      if (areaIds != null) {                        //设置查询监控区域的Id
          for (String id : areaIds) {       
              areas.add(id);
          }
          m.put("areaIds", areas);
      }
      return MessageUtils.toFlexGridPager(
              alarmHessianServiceCaller.getAlarms(stationId, m),
              Integer.parseInt(m.get("cp").toString()),
              alarmHessianServiceCaller.getAlarmsCounts(stationId, m));
  }
}
@Controller注解表明RecordAction类是一个控制器类,@RequestMapping("/record")是一个类级别上的注释,该注释定义了这个控制器所处理的根URL,getAlarmRecord()方法上的注释@RequestMapping("/alarm/search")定义了该方法处理的请求路径,加上类级别上定义的根URL,getAlarmRecord()方法将处理"/record/alarm/search "的路径请求,该方法将用HttpServletRequest作为参数去调用调用相应的Service层的类alarmHessianServiceCaller中的方法。

4.2.3 编写查询报警记录的Service层

public interface AlarmHessianService {
  public List<Map<String, Object>> getAlarmRecords(Criteria criteria);
}
Service层使用的是MyBatis的Criteria查询方式,Criteria类提供按条件查询的方式,可以直接通过 add(Criterion criterion) 方法来添加查询条件。查找报警记录的Criterion查询条件构造方法如下:
   Criteria criteria = new Criteria();    //创建查询方式
      Integer cp = Integer.parseInt(params.get("cp").toString());
      Integer ps = Integer.parseInt(params.get("ps").toString());
      criteria.add(Restrictions.limit(((cp - 1) * ps) + "", ps + ""));
 
      if (params.get("groupby") != null)
          criteria.add(Restrictions.group(params.get("groupby").toString()));
      if (params.get("time") != null) {         //添加时间查询条件
          String type = (String) params.get("queryType");
          if (type == null || "D".equals(type)) {
              criteria.add(Restrictions.eq(
                      "DATE_FORMAT(alarmtable.alarm_time,'%Y-%m-%d')", params
                              .get("time").toString()));
          } else if ("M".equals(type)) {
              criteria.add(Restrictions.eq(
                      "DATE_FORMAT(alarmtable.alarm_time,'%Y-%m')", params
                              .get("time").toString()));
          } else if ("Y".equals(type)) {
              criteria.add(Restrictions.eq(
                      "DATE_FORMAT(alarmtable.alarm_time,'%Y')",
                      params.get("time").toString()));
          }
      }
      if (params.get("areaIds") != null)       //添加监控区域Id查询条件
          criteria.add(Restrictions.in("areatable.area_id",
                  (Collection<Object>) params.get("areaIds")));
 
      if (params.get("time_order") != null) {
          criteria.add(Restrictions.order("alarm_time",
                  "" + params.get("time_order")));
      }
该查询条件主要通过areaIds(报警发生的部位)和time_order(报警发生的时间)来找到相应的报警记录,最后返回一个List的数据类型,里面盛放了查询到的Alarm实例。

4.2.4 编写查询报警记录的视图

视图是一个.jsp文件,通过使用JQuery实现对报警记录表格的重载,报警记录视图层方法如下:
function search(pageIndex){
      var areas = $("select","#areaSelect").multiselect("getChecked");
      var areaIds =[];
      $.each(areas,function(index,e){
          areaIds.push({name:"areaIds",value:$(e).val()});
      });
      var queryType = $("#queryType").multiselect("getChecked");
      queryType=$(queryType).val();
      queryType=(queryType==1?'D':(queryType==2?'M':'Y'));
      var params = areaIds||[];
      //pointId
      params.push({name:'stationId',value:stationId});
      params.push({name:"queryType",value:queryType});  //queryType                                                                   
      params.push({name:"time",value:$("#time").val()});
      $("#monitorRecord").flexOptions({
          url: contextPath+'/record/alarm/search',
          dataType: 'json',
          newp:1,
          params:params
      }).flexReload();
  };
最终前端视图层的效果如图8。

图8 报警记录查询结果

4.3 远程监控模块的实现

4.3.1 远程监控模块控制过程

平台的远程监控模块是通过嵌入了硬件提供商提供的ActiveX控件实现的,该嵌入控制过程如图9。

图9 远程监控模块实现图
主站系统通过Web页面嵌入视频播报ActiveX控件的方式与视频系统进行集成。视频系统厂商负责提供符合统一接口的视频播放ActiveX控件,并由ActiveX控件负责与视频系统的视频服务器进行通信;主站系统负责视频监视应用功能的实现,系统Web页面内嵌ActiveX控件,页面通过JavaScript脚本与ActiveX控件的接口函数进行交互。
针对各个厂商提供的ActiveX控件的接口有可能不同,也可能进行修改,为了屏蔽ActiveX控件层的技术接口,加入视频控制对象这个层的功能(JavaScript),Web页面创建视频控制对象,然后通过视频控制对象进行ActiveX控件的创建和ActiveX控件接口功能的调用。

4.3.2 视频控制对象层对象实现

视频控制对象包括红外视频控制对象irActiveX和可见光视频控制对象ccdActiveX,这两个对象都封装了硬件提供商提供的视频播报ActiveX控件,下面以红外视频控制对象irActiveX为例,简单介绍视频控制对象层对象的主要方法。
irActiveX对象用于实时显示当前云台监控画面的主要方法:
    setServerIP(str)   设置主机ip
       setServerPort(port)     设置主机端口
       setMonitor(str)     设置云台ip
       setMonitorPort(port)          设置云台端口
       startMonitor()      开始监控
       stopMonitor()      停止监控
       photoIR()      红外光拍照,将弹出本地保存信息,以保存拍照图片
       getErrorText()      得到最近发生的错误信息(如果有,无则为空字符串)
irActiveX对象用于实时操作云台的主要方法,这些方法主要用于控制云台的转向,以及镜头焦距的远近:
   setServerIP(str)     设置主机ip
       setServerPort(port)     设置主机端口
       setMonitor(str)     设置云台ip
       setMonitorPort(port)          设置云台端口
       connect()      连接监控器
       startOp()       开始手动监控
       stopOP()       停止手动监控
       opLeft()        云台向左
       opRight()      云台向右
       opTop()        云台向上
       opDown()     云台向下
       opIRNear()   红外镜头拉近
       opIRFar()     红外镜头拉远
       opAuto()       红外自动对焦
       photoIR()      红外光拍照,将弹出本地保存信息,以保存拍照图片
       getErrorText()      得到最近发生的错误信息(如果有,无则为空字符串)
 

5 总结

  1.  随着红外热成像技术的发展成熟,利用红外摄像头监控电力设备的运行温度,逐渐成为变电站远程监控的发展方向之一。对红外摄像头采集到的变电站各种信息进行科学化的管理,利用信息管理技术对这些数据进行统计分析,对于电力工作人员更加科学便利的利用红外测温技术监控变电站提供了数据支持。
  2.  本平台完成了监控变电站在线的增加和删除,电力设备运行温度记录报表的管理和查询,电力设备运行温度报警记录的管理和查询,电力设备运行温度统计曲线的绘制,远程监控插件的嵌入使用,监控数据的定时备份,操作人员的权限管理。通过该平台的使用,变电站工作人员能够随时了解变电站电力设备的运行温度,电力设备运行的温度变化,查看电力设备的运行视频,并能够实时的接收到电力设备的温度报警。该平台的使用进一步推动了电力系统的信息化管理。
  3.  因为时间和设备的原因,该平台在设计和实现过程中还存在着一些能够改进的地方,有待进一步的研究。该平台需要改进的部分主要有以下几方面:首先,对电力设备运行温度进行分析应当考虑到当时的环境温度,夏季和冬季环境温度的极大差别,对电力设备的运行温度有很大的影响;其次,平台应当能够排除红外摄像头采集的错误信息,因为硬件本身的不稳定,系统在运行时会出现一些明显的错误数据,对于这些数据,平台应当排除在外。

6 参考文献

[1]崔红淼,梁波. 提高远红外测温技术对电力设备故障判断的准确度[J]. 电工电气. 2010(02)
[2]韦强. 红外技术在电力设备状态检修故障诊断中的应用[J]. 机械研究与应用. 2011(01)
[3]张赢. 电力设备故障的红外热成像诊断[J]. 东北电力技术. 2010(12)
[4]翟高粤,魏娜. 一种基于MVC框架的校园管理系统的设计[J]. 计算机时代. 2010(08)
[5]李刚.轻量级Java EE企业应用实战(第3版)[M]. 北京:电子工业出版社. 第1版(2012年4月1日). 612-715.
[6] 沃尔斯 (Craig Walls). Spring实战(第3版)[M].狄渊. 北京:人民邮电出版社. 第1版 (2013年6月1日). 163-196.
[7]艾里特 (James elliott). 精通Hibernate[M].刘平利. 北京:机械工业出版社. 第1版(2009年4月1日). 251-296.
[8]黄强 穆炯 李军等.一种领域驱动开发插件系统:中国,201210428875.2[P].2012-10-25
[9]王非. 领域驱动模型的WEB软件系统设计研究[J].微型电脑应用.2012(01):36-39
[10]董婕,覃华. ASP.NET环境下Hessian协议Web服务技术的研究[J]. 计算机与现代化. 2011(07)
[11] 比伯奥特. jQuery实战(第2版) [M].三生石上.北京:人民邮电出版社; 第1版 (2012年3月1日).215-254
[12] Clive Begin. iBATIS in Action [M]. Manning (2007年2月17日).57-267
[13] 张宇,王映辉,张翔南. 基于Spring的MVC框架设计与实现[J]. 计算机工程. 2010(04)
[14] JESSE JAMES GARRETT.Ajax:A New Approach to Web Application. http://adaptivepath.com/ideas/ajax-new-approach-web-applications . 2011
[15]   Research and Implementation of Assist Developed Platform Based on SSH Framework[A]. Proceedings of 2011 3rd IEEE International Conference on Information Management and Engineering(ICIME 2011) VOL.06[C]. 2011

7 致谢

在此,我衷心的感谢###老师。该项目的设计开发是在###老师的细心指导下完成的。在此工作中,##老师教授了我很多软件开发的流程模式和代码知识。我从一个没接触过实际生产的学生到完成自己职业生涯的第一个项目,学到了作为一个程序员基础的知识。###老师在软件开发方面知识渊博,技术过硬,思维很活跃,这些都使我受益匪浅。在论文的写作过程中,###老师给了我很大的帮助,从论文的选题、构思直至论文的整个结构,老师在百忙之中总是抽出宝贵的时间,认真对我的论文进行讨论指导。老师是一个治学要求严格,工作实事求是的导师。论文能够保证质量的完成和老师的严格要求是分不开的。
最后,我要感谢我的母校,感谢母校对我的教育之恩。感谢所有帮助过我的同学,是你们让我的大学有了更多的精彩,谢谢!