APP下载

基于OpenGL的架空输电线路电气距离三维校验系统的实现

2012-08-09刘旭李占岭郭志涛

电力建设 2012年2期
关键词:链线风偏铁塔

刘旭,李占岭,郭志涛

(河北省电力勘测设计研究院,石家庄市,050031)

0 引言

目前架空输电线路行业使用的塔型种类及导、地线布置方式越来越多,如双回路与单回路、双回路与四回路、六回路与双回路、双回路与架构等。传统的架空输电线路线间距离计算精度低,计算效率已不能满足现在的设计要求。为了提高架空输电线路电气距离计算精度和效率,开发了输电线路三维电气校验程序,通过简化数据输入,使用动态交互设计修改铁塔、绝缘子串等的参数,提高了输电线路线间电气距离的计算精度,以三维的形式直观地显示输电线路线间电气距离等相关内容,也可为施工提供精确的指导数据。

1 关键理论与技术

1.1 悬链线状态方程

架空输电线路中的导、地线是以杆塔为支撑物而悬挂起来的,其悬挂线可认为是“悬链线”。在输电线路三维电气校验程序设计过程中,按照悬链线的计算公式[1]来计算导、地线。本计算选用坐标点O点位于电线悬挂点A的悬链线方程式[1]来计算导线,如图1所示。

图1 悬链线示意图Fig.1 Schematic diagram of catenary

按照文献[1]中的风偏公式计算风偏角。

按照文献[6]中的风偏平面内的参数计算公式得出风偏参数与垂直平面内各参数之间的关系。

1.2 电气距离校验采用的方法

将空间坐标系中的xoy面作为地面,x轴正向指向屏幕外,z轴正向指向天空。采用右手坐标系。将yoz平面作为悬链线旋转平移前所在平面。已知悬链线两端点的空间坐标点的位置A'、B',计算方法如下:

(1)设A'在平面xoy平面中的投影为O',求得垂直于地面(即 xoy平面)的平面 A'O'B',根据 A'、B'的坐标点求得档距L、高差h;

(2)根据L、h的值求得位于yoz平面内右悬挂点B,左悬挂点A位于原点,通过使用悬链线方程式(1)获取位于yoz平面内的悬链线L的取样点。

(3)将悬链线L绕oz轴旋转至与A'O'B'所在平面平行的平面内得到旋转之后的悬链线L';

(4)将L'所有取样点平移至A'O'B'所在的平面内即为所得到的最终悬链线L″。

对于有风偏的工况,需要根据风偏公式计算风偏平面内的档距L、高差h、风偏角,然后根据以上(2)~(4)求得悬链线L″,绕A'B'轴旋转对应的风偏角得到最终的悬链线。

根据各悬链线的取样点的空间坐标,计算出悬链线间最近距离及最近距离点坐标并显示出来。

2 实现方法

2.1 模型基础

2.1.1 OpenGL的三维空间变换

OpenGL图形库中包含平移、旋转、缩放等操作的函数[7],使用这些函数可以看做在照相机位置不动的情况下移动物体位置。

void glTranslate*(TYPE x,TYPE y,TYPE z):平移函数,其中x,y,z组成平移向量。

void glRotate*(TYPE angle,TYPE x,TYPE y,TYPE z):绕轴旋转函数,其中 x、y、z组成旋转向量轴,angle为绕该旋转轴旋转的角度,该旋转函数以逆时针方向为正方向。

2.1.2 对象操作

在添加任意对象的时候获取唯一对象ID,该ID标识用于对象查找、编辑、删除等操作。详细操作流程如图2所示。

图2 对象操作流程Fig.2 Operation procedure

OpenGL选择对象函数[7]如下。

void glInitNames(void):初始化名字堆栈。

void glPushName(GLuint name):将当前的name压栈。

void glPopName(void):将之前压栈的名字弹出。

void glLoadName(GLuint name):将当前的name载入到名字堆栈的栈顶。

void glSelectBuffer(GLsizei size,GLuint*buffer):生成选择缓冲区,其中size为缓冲区大小,buffer为指定的缓冲区数组指针。

GLint glRenderMode(GLenum mode):选择使用何种模式绘制场景,包括GL_RENDER(默认)、GL_SELECT(选择)、GL_FEEDBACK(反馈)模式,返回值为选择的记录个数。

void gluPickMatrix(GLdouble x, GLdouble y,GLdouble width,GLdouble height,Glint viewport[4]):指定需要选取的区域,其中x、y为在窗口中被选择区域的中心坐标,width、height为选择区域大小,viewport为当前的OpenGL窗口的显示大小。

void gluPerspective(GLdouble fovy,Gldouble aspect,GLdouble near,GLdouble far):创建一个表示对称透视视图平截头体的矩阵。

操作步骤如下:

(1)要实现选择功能,需要对于每个绘制对象设置唯一ID,首先调用 glInitName初始化,然后调用glPushName压入名字堆栈栈顶,在绘制时使用glLoadName载入该唯一ID至名字堆栈中;

(2)使用glSelectBuffer设定选择缓冲区;

(3)使用glRenderMode(GL_SELECT)设置当前绘制场景模式为选择模式;

(4)使用gluPickMatrix设定选择的矩形区域,把当前的投影矩阵与该选择矩阵相乘;

(5)使用 gluPerspective(glOrtho、glFrustum)设置标准的投影矩阵;

(6)调用RenderScene()函数绘制场景;

(7)绘制完成之后再次调用glRenderMode(GL_RENDER),得到选择的对象个数,查询选择缓冲区,对于选择的结果有可能会有多个,根据需要实现单选还是拖选。

2.1.3 使用显示列表

由于在三维显示界面中可以实时拖动以不同的视角观察物体,如果采用立即模式每次都重新计算物体位置再绘制,尤其是对于需要多次操作模型视图矩阵的绘制会严重导致画面刷新频率下降。使用显示列表,对于包含有多个矩阵操作、使用光源、材料属性、光照模型的对象将只保存最终的计算结果,即只需要进行1次操作就可以完成对象的绘制,可以提高绘制效率。显示列表在生成之后无法修改,如要绘制的对象有变化需要修改显示,则需要将显示列表删除之后重新创建。使用到的函数及功能如下。

GLuint glGenList(GLsizei range):创建显示列表,其中range为显示列表数量,返回值为连续分配的显示列表中的第1个数。

void glNewList(GLuint list,GLenum mode):开始显示列表定义,list为 glGenList返回列表中的值,mode值为GL_COMPILE(只保存到显示列表)和GL_COMPILE_AND_EXECUTE(立即执行并保存到显示列表)。

void glEndList(void):结束显示列表定义。

void glCallList(GLuint list):调用显示列表,其中list为显示列表值。

2.1.4 高质量截图

在实际的生产设计过程中,可能需要获取比当前窗口显示图像结果更精细的图像效果以用于展示等。

实现原理:如图3所示,在保持视点不变的情况下,改变视线的方向,按照顺序将视景体依次定位到a、b、c、d区域并绘制场景到帧缓存对象(frame buffer object,FBO),读取FBO中的绘制结果数据并将该结果保存到图像文件中,最终生成高质量图片。

图3 高质量截图原理Fig.3 Principle of high quality snapshot

2.2 铁塔、绝缘子、悬链线模型的三维模拟

铁塔模型文件格式为dxf格式,该格式可以通过AutoCAD或其他的设计工具生成,具有较强的通用性,读入的铁塔模型使用圆柱体来模拟铁塔框架连接。

绝缘子串使用圆锥组合而成,依据绝缘子串的长度修改需要的圆锥的数量。

为使绘制的空间悬链线模型平滑,使用B样条曲线模拟绘制出悬链线模型。

铁塔与绝缘子串的三维模拟近景效果实例如图4~5所示。

3 结语

本文以既有设计规范为基础,经过空间模型的算法分析,给出铁塔、绝缘子串、悬链线的三维模拟,使用VC6、VS2008、OpenGL开发库开发出了架空输电线路三维电气校验系统,该系统解决了线路在不同工况(高温、低温、大风、平均温、覆冰等)档距中任意1点导线与导线、导线与地线间的距离计算的问题,计算结果精确,显示效果直观,具有良好的实用性和操作性。

[1]张殿生.电力工程高压送电线路设计手册[M].2版.北京:中国电力出版社,2002.

[2]DL/T 5217—2005 220 kV~500 kV紧凑型架空送电线路设计技术规定[S].北京:中国电力出版社,2005.

[3]DL/T 620—1997 交流电气装置的过电压保护和绝缘配合[S].

[4]DL/T 5154—2002 架空送电线路杆塔结构设计技术规定[S].北京:中国电力出版社,2002.

[5]GB 50545—2010 110~750 kV 架空输电线路设计规范[S].北京:中国计划出版社,2010.

[6]邵天晓.架空送电线路的电线力学计算[J].2版.北京:中国电力出版社,2003.

[7]Shreiner D.The Khronos OpenGL ARB Working Group.OpenGL 编程指南[M].7版.李军,徐波,译.北京:机械工业出版社,2010.

[8]朱鼎勋.空间解析几何学[M].上海:上海科学技术出版社,1981.

猜你喜欢

链线风偏铁塔
东方铁塔:氯化钾产品供应紧张
500 kV紧凑型输电线路覆冰厚度对导线布置的影响分析
磁与铁的故事
关于钢框架悬链线效应研究的探讨
悬链线
500k V超高压输电线路风偏故障的预防举措探寻
500kV线路绝缘子串风偏跳闸故障分析及对策
基于悬链线方程的系泊系统分析
连续多跨输电线路动态风偏特征及计算模型
基于QT的跨平台输电铁塔监控终端软件设计与实现