第29卷第2期 电力学报 JOURNAL 0F ELECTRIC POWER Vo1.29 No.2 Apr.2014 2014年4月 ・自动化与信息化・ 中图分类号:TM753 文献标志码:B 学科分类号:47040 文章编号:1005—6548(2014)02-0160-05 基于Matlab的输电线路杆塔倾斜监测分析软件的 设计与实现 郝一川,苏小林,赵巧娥,阎晓霞 (山西大学工程学院,太原030013) The Design and Implementation of an Inclination Monitoring and Analysis Software for Transmission Line Tower based on Matlab HAO Yi—chuan,SU Xiao-lin,ZHAO Qiao—e,YAN Xiao—xia (Engineering College ofShanxi University,Taiyuan 030013) ABSTRACT:UsingMatlabGUIDE andRS232 serial CO[DATt_U- 基于MEMS加速度计的输电线路杆塔的倾斜检测 装置(ZE)实时测量三轴加速度数据,测量数据通过 Zigbee网络传送到Zigbee协调器(zc),经zc串 nicafion object and its AP1,inclination monitoring and analysis software for transmission line tower is designed and developed. The software get the original data of an inclination detection de- vice of transmission line tower through serial port RS232 using nterirupt manner,and shows the raw data and the results ofanal— ysis graphically in real—time. KEY WORDS:transmission line tower;inclination detec. tion;data acquisition;serial communication;Matlab GUI 行发送到倾斜监测计算机(Pc),在PC上运行监 测分析软件对杆塔倾斜 ZigBee网络通讯 倾斜检测装置ZE ZigBee协调器zc 倾斜监测计算机Pc 一 摘要:利用Matlab GUIDE和串口RS232对象seiral及其通 信API,设计开发了一个输电线路杆塔倾斜监测分析软件, 实现了以中断方式采集输电线路杆塔倾斜检测装置经串口 传输的原始数据的功能,实现了以图形化方式实时显示原 始数据以及分析处理结果的功能。 关键词:输电线路杆塔;倾斜检测;数据采集;串行通讯; Matlab GU1 图1输电线路杆塔倾斜监测系统的构成示意图 Fig.1 Schematic diagram of the transmission line tower inclination monitoring system 本系统的监测分析软件的主要功能模块包括: 串行通信、数据采集、数据存储、数据处理、越 限报警、分析显示、人机交互、ZigBee网络和节 0引言 输电线路经过的许多地区属于采空区或地质条 件复杂的地区,杆塔随时可能发生倾斜,而输电线 点管理、定值管理等。 本软件的开发工具选用Maflab,采用Matlab GUIDE开发了输电线路杆塔倾斜监测分析系统的 图形用户界面,基于Matlab串口对象serial的中断 方式实现ZC与PC的人机交互串行通讯功能,实 现了实时显示原始检测数据和杆塔倾斜角分析计 算结果等功能。 本文重点介绍软件开发中的关键问题以及处 路杆塔倾斜多为隐性故障,定期巡线不易及时发 现,因此需要对杆塔进行监测以便及时发现倾斜等 异常情况。 本文所述杆塔倾斜监测系统如图1所示,采用 基金项目:山西省自然科学基金项目(201201 1012—2)。 Project Supposed by Shanxi Science Foundation Committee 理办法,并提供了关键代码。 1 Matlab GUI图形化用户界面 Matlab是一种基于矩阵运算的交互式数值计算 (201201 1012—2). 第2期 郝一川,等:基于Matlab的输电线路杆塔倾斜监测分析软件的设计与实现 161 软件,作为一种技术语言,它提供了大量的专用函 数,其权威性在科学研究和工程计算中得到广泛认 可。Matlab同时提供了强大的图形绘制函数,不仅 可以绘制函数图形、进行图形图像处理、动画和视 频制作,方便研究者实现数据可视化功能,而且提 供了一个面向对象的图形用户界面(GUI)开发工 具GUIDEt 。 GUIDE将Matlab GUI对象以可视化控件的形 式提供给开发者,开发者可以在GUIDE中以交互 方式完成GUI的设计,以控件回调函数的形式将 控件与用户的自定义函数相联系,实现以交互式可 视化的方式展示分析研究的数据和结论的功能。 Matlab GUI采用面向对象的设计模式,通过图 形句柄设置或修改图形对象的有关屙l生,从而将图 形对象定制为所需要的样式以及所需要的功能。图 形对象既可以用编程的方式在m文件中创建,也 可以利用Matlab GUIDE用交互的方式在GUI开发 环境中创建,图形对象的属性即可以在GUIDE中 设置,也可以在m文件中设置和修改,图形对象 与用户的交互功能通过图形对象的Callback属性中 指定的回调函数来实现。 本软件的用户界面设计,采用在Matlab GUIDE中用交互的方式创建图形对象、在In文件 中设置和修改图形对象屙陛的方式实现,设计完成 的“串行口设置及数据发送和接收”用户界面如图 2所示。 图2“串行口设置及数据发送和接收”用户界面 Fig.2 User Interface of serial port settings and data transmission and reception 2倾斜测量数据的采集和接收 通过RS 232C串行口进行串行通讯是数据采集 系统中广泛采用的通讯方式,现场的数据采集设备中 的传感器件取得现场的数据,通过串行方式送出,上 位机通过串行口获得来自数据采集设备的数据。 本系统中,倾斜测量数据通过Zigbee网络传 送到Zigbee协调器(ZC),经ZC串行发送到倾斜 监测计算机(PC),在PC上运行监测分析软件对 数据进行分析处理,并对杆塔倾斜角进行监测。因 此,在Matlab中实现实时收发串行数据是本系统 的关键之一。 Matlab在其外部接口中,实现了映射RS一232C 串口功能的串口对象serialt3 ̄,通过对串口对象 serila的打开、读写、关闭等API函数的调用,实 现了对RS一232C串口的打开、读写、关闭等操作, 下面对开发中涉及的serial使用问题进行深入介绍。 2.1 串行口的打开和配置 实现串行通讯,必须指定串行口、正确配置串 行口通讯的波特率、数据位、停止位、校验方式、 缓冲区大小等参数,在Matlab中,以创建串口对 象serila的方式指定通讯所用的串行口,以指定串 口对象serila的属性BaudRate、DataBits、StopBits、 Parity、InputBufferSize的方式来配置串行口通讯的 参数。 为了适应系统联合调试的需要,串行口通讯的 参数可由用户在用户界面中选择指定,由m程序 将用户指定的配置参数读人中间变量中,在创建指 定串行端口对象后将中间变量值赋给串口对象的相 应属性。创建指定串行端口对象、配置通讯参数、 打开指定串口的代码及注释如下: comPort=serial(sComNo);%创建串口对象comPort,指 定串行通讯端口,默认值为COM1; comPort.InputBufferSize=50000;%指定缓冲区大小,默 认值为50000; comPort.BaudRate=s ̄2num(sBaudrate);%指定波特率, 默认值为9600; comPotr.Parity=sParityBit;%指定校验方式,默认值为 ’none’; comPort.StopBits=str2num(sStopBit);%指定停止位, 默认值为1; comPotr.DataBits=str2num(sDataBit);%指定数据位, 默认值为8; fopen(comPort);%打开指定的串行口; 2.2 串口中断方式进行数据的发送和接收 Matlab的串口对象,既支持查询方式进行串行 数据的发送和接收,也支持中断方式进行收发。为 了实现在后台自动收发串行数据,本文选用中断方 162 电力学报 第29卷 式收发数据,这就需要定义串口中断处理函数以及 触发串口中断的方式。 if strcmpi(EventType,’BytesAvailable’)%判断是不是 Bytes Available触发的串口中断 sReeeived--fscanf(ohj);%是,则把接收缓冲区的数据 读入sReceived中间变量 …Matlah通过检测串口通信事件,来触发串口中 断。与串口数据接收相关的通信事件是Bytes Available,当串口收到指定字符或者接收到的字符 数达到预先设定的数目时Bytes Available事件发 生,可用来触发串口数据接收程序。Bytes Available 事件的触发模式由serial对象的Bytes Available Fcn %对接收到的数据进行处理 end if strcmpi(EventType,’OutputEmpty’)%判断是不是 Output Empty触发的串口中断 fprinff(obj,sToSend);%是,则把变量sTo Send中的 Mode属性来指定,所触发的中断处理程序由serila 待发送的字符串从串口发出 对象的Bytes Available Fcn属性来指定。与串口数 据发送相关的通信事件是Output Empty,当系统检 测到输出缓存区为空时,产生该事件,可用来触发 串口数据发送程序,所触发的中断处理程序由 serila对象的Output Empty Fcn属性来指定。 本文选择收到指定终止字符触发接收中断的模 式,来触发串口数据接收服务程序,串口数据接收 中断服务程序和发送中断服务程序均包括在 callback—ComX函数中。相关代码及注释如下: comPort.BytesAvailableFcnMode=’terminator’;%指定接收 中断模式 comPort.BytesAvailableFcn={@callback—ComX,handles}; %指定接收中断服务程序 comPort.OutputEmptyFcn={@callback ComX,handles};% 指定发送中断服务程序 这些代码需要在fopen打开串行口对象serial 之前执行,才能使串行口工作在中断模式。 本文在中断服务程序callback—ComX中完成串 行数据的收发。在Matlab中,串行数据的收发函 数采用了与文件读写函数类同的模式来实现,函数 的名称完全相同:串行口接收数据的函数有fgetl、 fgets、fread、fscanf等,串行口发送数据的函数有 fwrite、fprintf,其区别在于所接收和发送的串口数 据的类型不同,本文的串行通讯的规约选用基于 ASCII码的文本模式,故采用fseanf函数接收字符 串、fprinff函数发送字符串。 在中断服务程序callback—ComX的入口,通过 event事件对象的Type属性,区分是接收到数据触 发的中断还是发送缓冲区空触发的中断,选择相应 的处理程序进行数据接收或发送。相关代码及注释 如下: function callback—ComX(obj,event,handles) EventType=event.Type;%取出event事件对象的Type 属性 …%其他代码 end 2.3 串行口对象serial的事件记录 在实际的监测系统中,上位机往往需要接人多 种检测设备,需要解析多种通讯协议(或规约), 而实时监测系统中,多数采用的是事件驱动的中断 模式来实现相应功能,因此无法预知经串口接收和 发送的命令字符/响应字符的具体收发次序,当系 统未能按照预期实现相应的通讯功能时,就需要按 照实际串口收发的记录时序进行分析,查找原因, 通常的做法是通过编程将串口事件逐一写入文件进 行记录。 为了方便通讯规约的调试,Matlab的串行口对 象还提供了监测串行端口事件、把事件信息和经串 行口发送和接收的字符记录到文本文件的功能,只 需要在打开串行口对象之前给RecordName属性指 定文件名,用RecordMode和RecordDetail属性指 定记录模式,用record函数启动/终止串口记录功 能,无须用户编码即可把经指定串行口发生的事件 以及发送和接收的字符按照时间顺序自动记录到指 定文件中,通过文件中的记录可以清楚地看到事件 顺序和串行数据的收发次序,给串口通讯的调试工 作带来极大的便利。相关代码及注释如下: comPort.RecordName=’sComRecord.txt’;%指定串口事件 记录文件名为sComRecord.txt comPort.RecordMode=’append ;%指定记录模式为添加 模式 comPort.RecordDetail=’verbose’;%指定记录模式为详细 模式 record(comPort,’on’);%启动串口对象的收发记录功能 …%其他功能代码 record(comPort,’ofe);%关闭串口对象的收发记录功能 2.4关闭串口以及释放串口对象 当需要关闭串行口时,可使用函数fclose关闭 串口,使用函数delete删除串口对象、释放其占用 164 电力学报 第29卷 据开始,通过大量数据的分析来发现规律,找到解 业性较强、数据分析处理较多、目标市场较小的软 件项目,采用Matlab进行开发是一个很好的选择。 决问题的办法,Matlab提供的实现常用功能的专用 函数,使研究人员可以集中精力于研究项目中的特 殊问题,从而大大提高编程效率、缩短研究周期。 Matlab的serial对象功能强大,不仅能够实现传统 监控软件开发工具所提供的全部功能,而且更为简 参考文献 【1J The MathWorks,Inc.Matlab Graphics R201lb 2011. [2】张德丰,雷小平,周燕.详解Matlab图形绘制技术[M].北京: 电子工业出版社,2010. [3]The Math Works,Inc.Matlab External Interfaces R201 lb 201 1. 洁方便高效,实验证明,串口通讯程序稳定可靠。 Matlab对GUI开发的细节方面的支持,目前 比VisualStudio、Eclipse等软件开发工具稍弱,灵 活型稍差,但是Matlab GUI在数据可视化功能的 开发上,则要强大得多,这是因为在GUI设计时, 可以直接调用Matlab的丰富强大的图形(二维、 三维)绘制函数、图像动画视频处理函数,而在其 他软件开发工具中这些图形图像功能需要程序员自 行开发实现。 [4】FISHER C J.Using an Accelerometer for Inclination Sensing【JJ AN一1O57,Application note,Analog Devices,2010. 收稿日期:2014一O1—09 作者简介: 郝一川(1962-),男,讲师,主要研究方向:电力系统及其 自动化,haoyichuan@sina.corn; 苏小林(1963--),男,教授,主要研究方向:电力系统运行 与控制、智能电网,xiaolin5759@sina.com; 赵巧娥(1963一),女,教授,主要研究方向:新能源发电技 术,测控技术; 阎晓霞(1963一),女,副教授,主要研究方向:电力系统运 行与控制。 本项目采用Matlab作为分析工具对采集的数 据进行分析研究,也作为软件开发工具开发应用软 件,使得研究过程与软件的开发过程协同进行,大 大提高了效率,取得了较好的效果。因此,对于专 (责任编辑:王静) (上接第144页) 的BP算法和PSO.BP算法,无论是在收敛速度上 还是在诊断精度上都有显著的提高。同时,针对配 电网发生故障时存在误动、拒动等情况,当配电网 测试样本有一定错误信息时,能准确判断其故障区 域,为走向实用化提供了理论支持。 Fault Location Analysis fJ].Journal of Chongqing University of Science and Technology(Natural Science),2010,12(3): 127.130. [4】牛东晓,王建军,李莉,等.基于粗糙集和决策树的自适应神 经网络短期负荷预测方法[J].电力自动化设备,2009,29 (1O):3O一34. NIU Dong—xiao,WANG Jian-jun,LI Li,et a1.Shoa-term Load Forecasting Using Adaptive ANN Based on Rough Set and 参考文献 [1]唐金锐,尹项根,张哲,等.配电网故障自动定位技术研究综 述『J1.电力自动化设备,2013,33(5):7-13. TANG Jin—ni,YIN Xirang—gen,ZHANG Zhe,et a1.A Surey of Decision Tree[J】_Electirc Power Automation Equipment,2009, 29(1O):30—34. [5]KENNEDY J,EBERHART R C.Particle Swarm Optimization[C]// Proceedings of IEEE International Conference on Neural Networks, Fault Location Methods in Distribution Network[J].Electirc Power Automation Equipment,2013,33(5):7-13. 1995.4(2):1942.1948. [2]成蓬勃,袁福科,刘灿萍,等.改进BP网络算法在配电网故 障诊断中的应用研究I J1.电力系统保护与控制,2007,35(12): 27—31. 收稿日期:2013—12—18 作者简介: CHENG Peng-bo,YUAN Fu—ke,LIU Can-ping,et 1.Appliacation of an Improved BP Network Calcultiaon to the Fault Diagnosis of 徐康(1989一),男,硕士研究生,研究方向为电力系统配 电网故障诊断,xukang__home@163.com; 张江滨(1962一),男,教授,研究方向为发电机组自动控制、 Distirbution Network[J].Relay,2007,35(12):27—31. 【3]李洪扬.一种用于配电网故障定位的粒群算法分析『J1_重庆科 技学院学报(自然科学版),2010,12(3):127—130. LI Hong—yang.Particle Swarm Algorithm for Distibutiron Network 电力系统运行与控制等方面的研究; 陶海龙(1981--),男,硕士研究生,研究方向为水电机组控制。 (责任编辑:王静)