Transactions on Computer Science and Technology June 2014, Volume 3, Issue 2, PP.65-72
Power Supply System Client Query Methods Based on Tree Structure Database Jiangtao He1, Zhiguo Lu2, Ruidong Zhang1, Qiujing Gong 2, Fei Long 1 1. Nanan Power Supply Bureau of Chongqing Power Grid Corporation, Chongqing 400000, China 2. College of Electrical Engineering, Chongqing University, Chongqing 400030, China
Abstract On the basis of employing the Microsoft Visual Studio 2010 and SQL Server 2008 and other softwares, this paper proposed the power supply system client query methods based on the tree structure database. Inputted the electrical diagram node information of distribution network in the TreeView tables of database by the database software, and then used the WPF programming and TreeView function module to display the information in tree structure. Meanwhile, we can also turn on the electrical diagram in WPF by programming the electrical diagram to realize the function of adding the annotation. When the power supply system fails, the personnel of the power network dispatching operational control click a branch can show the detailed information of breakdown maintenance personnel, and note maintenance personnel by short message. Thereby this method improves the work efficiency and achieves standardized management of the distribution network. Keywords: Power System; Tree Structure; Database; TreeView; WPF
基于树形结构数据库的供电系统客户查询方法 何江涛 1,陆治国 2,张瑞东 1,龚秋憬 2,龙飞 1 1. 国网重庆市电力公司南岸供电分公司,重庆 400000 2. 重庆大学 电气工程学院,重庆 400030 摘 要:阐述了建立供电系统故障诊断可视化系统的必要性,在应用 Microsoft Visual Studio 2010 和 SQL Server 2008 等软 件技术的基础上,提出了基于树形结构数据库的供电系统客户查询方法。将配电网的电气图节点信息录入数据库的 TreeView 表格中,再通过编程将信息以树形结构形式在 WPF 上显示出来。同时,也可以将电气图在 WPF 中打开,通过 编程实现对电气图添加注释信息的功能。当供电系统出现故障时,电网调度运行控制人员输入故障点,就能显示出故障 的详细信息,并以短信方式通知维修人员和用户,从而缩短了断电时间,实现了配电网的规范化管理。 关键词:电力系统;树形结构;数据库;WPF
引言 随着社会经济的发展,生活水平的提高,人们对供电质量要求越来越高。这对供电稳定性,故障解决 的时效性提出了挑战。本文针对这种情况提出了一种基于树形结构数据库的供电系统客户查询方法。此方 法能及时地通知用户停电消息,并及时地通知故障维修人员排除故障、恢复供电,缩短停电时间,在达到 用户要求的同时大大的提高了经济效益。因此,对基于树形结构数据库的供电系统客户查询方法的研究, 具有很大的现实意义。
1
相关概念简介 C#是 Microsoft 在 2000 年 7 月推出.NET Framework 的第 1 版时提供的一种全新语言。C#派生于 C/C++
简洁明了的语法,这种语法在保持 C++原有功能的基础上,还简化了以前一些给程序员带来困扰的问题。 - 65 http://www.ivypub.org/cst
Visual Studio 的最新版本 Visual Studio 2010 和开发工具的 Express 系列(包括 Visual C# 2010 Express)也有许 多变化和改进,这大大简化了编程工作,显著提高了效率[2]。 Windows Presentation Foundation(WPF)是一种统一的技术,利用它编写的应用程序可以在桌面和 Internet 之间搭起桥梁。利用 WPF 技术可以编写出独立于平台的应用程序,它清晰地定义了设计和功能之间的界限, 它借用并扩展了以前许多技术的概念和类,包括 Windows 窗体、ASP.NET、XML、数据绑定技术和 GDI+ 等。WPF 4 包含了在生产力,性能和功能方面的重大改进,特别是在控件(Controls),XAML,文本(Text), 图 形 ( Graphics ) , Windows 7 集 成 ( 多 点 触 摸 ( multitouch ) , 任 务 栏 集 成 等 ) , 核 心 基 础 ( Core Fundamentals),以及部署这几个方面。在 Visual Studio 2010 中有一部分是对 WPF 4 的支持[3]。
1.1 C#中的名称空间 C#中用名称空间来组织程序。名称空间在程序“内部”组织系统,用在“外部”组织系统时,表现输 出到其他程序的元素。C#中的类是利用名称空间组织起来的,名称空间为所有类创建了等级结构,防止命 名冲突。这样两个类在不同的名称空间,就可以具有相同的名称。 名称空间分别用 namespace 关键字声明和 using 关键字引用。其中,using 指令用来导入其他名称空间和 类型的名称,直接地而不是通过限定名来引用它们。值得注意的是: (1) using 名称空间指令将一个名称空间中所包含的类型导入到编译单元或命名空间体中,从而可以直接 使用这些被导入的类型的标识符而不必加上它们的限定名。 (2) using 名称空间指令导入包含在给定名称空间中的类型,但要注意,它不导入嵌套的名称空间。 (3) using 名称空间指令导入的名称会被编译单元或名称空间体中具有相同名称的成员所隐藏。 (4) 同一编译单元或命名空间体中的 using 名称空间指令导入多个名称空间时,如果它们所包含的类型 中有重名的,则直接引用该名称就被认为是不明确的。
1.2 C#中的类 C#的类是一种对数据成员,函数成员和嵌套类型进行封装的数据结构。C#中的一切类型都是类,所有 的语句都必须位于类内,不存在任何游离于类以外的语句。因此,类是 C#语言的核心和基本构成模块。除 了某些导入的外部方法,类及其成员在 C#中的声明和实现通常要放在一起。 在 C#中,类包含若干个组成成员,这些组成成员包括字段、事件、属性和方法等,这些组成成员能够 彼此协调用于对象的深入描述。字段是包含在类中的对象的值,它使类可以封装数据。字段的存储可以满 足类设计中所需要的描述。属性是类中可以像类的字段一样访问的方法。属性可以为字段提供保护,避免 字段在用户创建的对象不知情的情况下下被更改。属性机制非常灵活,提供了读取、编写或计算私有字段 的值,可以像公共数据成员一样使用属性。方法用来执行类的操作,方法是一段小的代码块。在 C#中,方 法接收输入的数据参数,并通过参数执行函数体,返回所需的函数值。事件是一个对象向其他对象提供有 关事件发生的通知的一种方式。在 C#中事件是使用委托来定义和触发的。类或对象可以通过事件向其他类 或对象通知发生的相关事情。发送或引发事件的类称为“发行者”,接收或处理事件的类称为“订阅者”。 集合类是指实现集合功能的类。集合与数组很相似,都能存储多个数据,但集合的优点是:能够动态 地扩大或收缩大小。在 C#中,集合类用 list<string> names 语句声明。 SqlConnection 类表示一个到 SQL Server 数据库的打开的连接。 此类不能被继承。SqlConnection 对象表 示单个会话中对 SQL Server 数据源。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。 当连接到基于 SQL Server 数据库时,SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用来提高性能。
1.3 WPF中的一些重要控件 与我们经常打交道的控件可以分为以下 6 类[3]: - 66 http://www.ivypub.org/cst
(1) 布局控件 可以容纳多个控件或嵌套其他布局控件,用于在 UI 上组织和排列控件。StackPanel、Grid、DockPanel 等控件都属此类,他们拥有共同的父类 Panel。 (2) 内容控件 只能容纳一个其他控件或布局控件作为它的内容。Window、Button 等控件属于此类,因为只能容纳一 个控件作为其内容,所以经常需要借助布局控件来规范其内容。它们的共同父类是 ContentControl。 (3) 带标题内容控件 相当于一个内容控件,但可以加一个标题,标题部分亦可容纳一个控件或布局。GroupBox、TabItem 等 是这类控件的典型代表。它们的共同父类是 HeaderedContentControl。 (4) 条目控件 可以显示一列数据,一般情况下这列数据的类型相同。此类控件包括 ListBox、ComBox 等。它们的共 同基类是 ItemsControl。此类控件在显示集合类型数据方面功能非常强大。 (5) 带标题条目控件 相当于一个条目控件加上一个标题显示区。TreeView、MenuItem 都属于此类控件。这类控件往往用于 显示层级关系数据,结点显示在 Header 区域,子级节点则显示在其条目控件区域。此类控件的共同基类是 HeaderedItemsControl。 (6) 特殊内容控件 比如 TextBox 容纳的是字符串、TextBlock 可以容纳可自由控制格式的文本、Image 容纳图片类型数据, 这类控件相对比较独立。
1.4 TreeView控件的使用 TreeView 控件用来显示信息的分级视图,如同 Windows 里的资源管理器的目录。TreeView 控件中的各 项信息都有一个与之相关的 Node 对象。TreeView 显示 Node 对象的分层目录结构,每个 Node 对象均由一 个标签和其相关的位图组成。TreeView 控件一般用来显示文件和目录结构、文档中的类层次、索引中的层 次和其他具有分层目录结构的信息[5]。 创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添 加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。在代码中可通过检 索对 Node 对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW 键和 DOWN ARROW 键向下 循环穿过所有展开的 Node 对象。从左到右、从上到下地选择 Node 对象。若在树的底部,选择便跳回树的 顶部,必要时滚动窗口。RIGHT ARROW 键和 LEFT ARROW 键也穿过所有展开的 Node 对象,但是如果选 择了未展开的 Node 之后再按 RIGHT ARROW 键,该 Node 便展开;第二次按该键,选择将移向下一个 Node。相反,若扩展的 Node 有焦点,这时再按 LEFT ARROW 键,该 Node 便折回。如果按下 ANSI 字符 集中的键,焦点将跳转至以那个字母开头的最近的 Node。后续的按该键的动作将使选择向下循环,穿过以 那个字母开头的所有展开节点。
2
基于树形结构数据库的供电系统客户查询方法的实现 在供电系统发生故障时,基于树形结构数据库的供电系统客户查询方法的提出,可以使调度人员及时
的通知用电客户的停电信息,并及时通知故障维修人员以便于尽快的恢复供电[4]。本节主要讲的是利用树形 结构和在配电网电气图中添加注释的方法来实现上述功能。
2.1 TreeView控件节点生成算法的选取 静态树形图是由开发人员根据系统数据结构的需要在编写代码时生成,若树形图的结构发生改变,则 - 67 http://www.ivypub.org/cst
需修改系统的源代码,将对系统的维护带来麻烦。但借助数据库来保存树形图的节点信息,借助 TreeView 控件实现动态树形图,当节点信息发生改变时,只须维护数据库而无须修改源代码。所以本文选用了基于 数据库的客户查询方法。文献[9]介绍了一种递归算法,可以通过递归算法实现树形结构,其数据库的结构 设计相对简单。与文献[9]相比,文献[8]提出了一种新的算法,解决了递归算法效率低下的问题,但它需要 对数据库的结构进行精心的设计。通过比较这两种算法的优劣,再结合供电系统客户查询的实际情况,同 时考虑到普通电路图所包含的数据较少,则运算效率低下的问题在计算机速度如此之快的今天完全可以忽 略。同时为了使电力系统结构发生改变的时候对数据库信息的更新比较容易,提出了一种新的递归算法, 虽然他的算法和[9]差不多但它的数据库结构比[8]和[9]的结构都简单的多,便于非专业人员输入新的数据。 图 1 就是所用算法的流程图,再算法确定后后面就是如何编程实现树形结构和在数据库中录入数据。 开始
连接数据库
将数据库的信息 赋值给一个新建 节点类的集合
父节点 是否为零?
Y
N
调用递归函数 寻找其父节点
配电网络的根节点
分层集合
将该集合与 TreeView控件的 ItemSource绑定
结束
图 1 递归算法创建树形图流程
2.2 树形结构的生成 要得到一张 XPS 电气图的树形结构,可以先用数据库软件 SQL Server 2008 将图形中节点信息录入数据 库的 TreeView 表格中,再通过 Microsoft Visual Studio 2010(以下简称 VS)软件平台编程,可以将数据库 表格的信息读取出来,最后通过 VS 里的 TreeView 功能模块,将数据库的表格信息以树形结构的形式显示 出来。图 2 所示的是某供电系统一配网的部分电气图,经过数据库表格信息的录取和 WPF 编程后,可以得 到其树形结构图。 - 68 http://www.ivypub.org/cst
图 2 某配电系统部分电气图
图 3 SQL 中表格的选取
图 4 录取后的 TreeView 表格信息
2.2.1数据库表格信息的录取 打开数据库软件 SQL Server 2008 后, 选择数据库中的 TreeView,右击新建表格,如图 2 所示,选择 dbo.TreeView 表格。 表格选取时,需要对列进行设置,第一列为序号,第二列为电网中每个节点的实际名称,第三列则为 每个节点的父节点的序号。第四列对应的为节点出现故障时的维修人员的姓名和联系电话。列设置完之后, 根据电气图录入父节点和子节点的信息,例如:部分坪团电气图中,南坪变电站则为根节点,序号为 0,其 子节点为坪团#14,序号为 1,父节点序号为 0。坪团#14 的子节点为 10kV 坪团 1#(花园)环网柜,序号为 2,父节点序号为 1。以此类推,10kV 坪团 1#(花园)环网柜的子节点为团灯#13、湖五#12 和联络#11。节 点信息录取后所得到的 TreeView 表格如图 4 所示。 2.2.2树形结构的生成 首先添加名称空间 using System.Data 和 using System.Data.SqlClient 并且建立节点类,其中节点类包括了 字段序号、名称、父节点序号、负责人和 list<节点>。然后通过 SqlConnection 类将 SQL Sever 2008 数据库 - 69 http://www.ivypub.org/cst
与 WPF 相连,连接后通过 VS 编程将数据库录取后的 TreeView 表格信息提取到 WPF 中,再将这些信息赋 予一个 list<节点>集合,然后通过一定的编程方式将该集合分层。最后将该集合赋予控件 TreeView 的 Itemsource 属性,这样就将分层的集合与 TreeView 控件绑定在一起,通过运行便能够形成树形结构。所得 的树形结构如图 5 所示。
图 5 部分电气图的树形结构
2.3 停电区域和故障点负责人的显示 在 Window 控件中添加 Button 和 Textbox 控件,将 Button 控件命名为故障点,双击 Button 后在其 Button-click 事件中添加显示停电区域树形结构的方法,通过编程当 Textbox 控件中输入故障点名字时,就 会显示停电区域的树形结构,并且在另一个 Textbox 控件中会显示维修人员的姓名和电话。 如图 6 所示,在故障点栏里输入“坪团#14”,右下角区域表示:“坪团#14”发生故障时,其节点以下 区域都会停电,并会在右上方显示故障点负责人及其联系方式。
图 6 停电区域和故障点负责人信息的显示图
2.4 在电气图中添加注释信息 XPS(XML Paper Specification)是微软公司开发的一种文档保存与查看的规范。这个规范本身描述了 这种格式,以及分发、归档、显示以及处理 XPS 文档所遵循的规则。最为显著的特点是,XPS 所用的置标 语言是 WPF 所用的 XAML 的一个子集,因此显示 Windows 应用程序所用的方法可以用于 XPS 文档。 XPS - 70 http://www.ivypub.org/cst
是一个静态文档格式,其本身不包括类似于 PDF 所具有的动态特性。对 XPS 文档可以实现缩放、反转、添 加注释等页面处理的功能[6]。 在 WPF 平台中,使用 DocumentViewer 控件可以打开 XPS 格式的电气图,通过 VS 编程可以实现文本 注释、墨迹注释和删除注释的功能如图 7 所示。图 7 中,在绿色文本框中即可添加所需要的注释[7]。其注释 可以为各个设备和线路的基本信息以及它们之前所发生的故障、故障类型、维修方式和维修所持续的时间。
图 7 添加注释信息图
3
结语 (1)使用了TreeView控件来显示信息的分级视图,使故障点与故障区域一目了然。 (2)在TreeView控件节点生成算法的选取上,借助数据库来保存树形图的节点信息,借助TreeView控 件实现动态树形图,当节点信息发生改变时,只须维护数据库而无须修改源代码,该算法简单易操作
便于非专业人员输入新的数据。 (3)树形结构数据库的供电系统客户查询方法,能及时通知用电客户的停电信息,并及时的通知故障 维修人员排除故障、恢复供电,可以大大的提高调度人员的工作效率和准确率,对提升配电网调度安全管 理和提供优质服务水平起着很大的作用,同时也能大大的提高供电系统的经济效益。
REFERENCES [1]
Huang Shan, Wu Zhumei, “Construction of Visualized Management System for Distribution Network” [J]. Guan Dong Electric Power, 2007, 20 (3): 61-63
[2]
Qi Libo. “Beginning Visual C# 2010.” [M]. (5th edition). Beijing: Tsinghua University Press, 2010
[3]
Liu Tiemeng. “Head First WPF.” [M]. Beijing: China Water Power Press, 2010
[4]
Zhang Jun. “Transmission and Distribution Line Fault Location and Repair Visualization Support System.”[J]. Science & Technology Information, 2013, 18:111
[5]
Cui Xiaoyang. “The Accomplishment of Tree Shaped MIS Using Treeview Control.” [J]. Agriculture Network Information, 2007, 11: 135-136
[6]
Gu Jiali., “Applied Research on Varying Page layout of XML Paper Specification Format Document.” [J]. Control & Automation, 2007, 23: 166-168
[7]
Wang Decai. “WPF Programming Bible C#2010 Edition.” [M]. Beijing: Tsinghua University Press, 2011
[8]
Li Junfeng, Fang MingNode. “Generating Algorithm of TreeView Control Basing on Code.” [J].Computer Knowledge and - 71 http://www.ivypub.org/cst
Technology, 2007, 11: 847-852 [9]
Chu Yuezhong. “Plementation of Dynamic TreeView Based on Recursion Algorithm and TreeView WebControl.” [J].Computer Technology and Development, 2007, 11 (6): 87-93
【作者简介】 1
何江涛(1982-),男,汉族,国家电网
2
陆治国(1964-),男,汉族,博士,重庆大学电气工程学
重庆南岸供电公司从事配电管理,主持或
院硕士生导师,副教授,主要研究领域为电力电子在电力系
参与电网规划、配电线路故障在线监测等
统中的应用。Email: zglu@cqu.edu.cn
多项课题研究。
- 72 http://www.ivypub.org/cst