发明内容
本发明的目的,是为了解决上述现有技术的缺陷,提供一种电网模型潮流计算的可视化构建方法,能明确地对三机九节点电网模型进行可视化显示,图形显示清晰、稳定,且能准确反映电网的潮流分布,直观观察到潮流的动态流动效果,能全面对电网监控。
在较短的运行时间内取得最优电力调度方案,能高效准确对电网进行检测配送,通过显示窗口进行调试状态直观显示。
本发明的目的可以通过以下技术方案达到:
一种电网稳态模型的可视化构建方法,其特征在于包括以下步骤:
1)对电网进行图像建模,构建三机九节点的电网图像模型;
2)采用函数封装对电网模型进行搭建,为每一种电力设备模型建立一个封装函数;
3)确定三机九节点的电网图像模型的阻抗值等基本参数,形成节点导纳矩阵参数和发电机功率负荷参数,并通过所述节点导纳矩阵参数和发电机功率负荷参数得到在潮流计算中需要使用的计算参数值;
4)采用牛顿-拉弗森算法,通过C语言对步骤1)所述三机九节点的电网图像模型进行潮流分布计算,包括对九处母线电压幅值、相角、负载百分比、母线功率和线路损耗的计算,求得电网模型参数;
5)将步骤4)计算得出的电网模型参数,融入到步骤1)建立的电网图像模型,通过OpenGL图形库在电脑屏幕上搭建和显示,形成参数的数值显示和潮流的动态流动效果;
6)当数据更新后,重新执行步骤1)-步骤4),如此不断循环,构成可视化电网稳态模型。
本发明的目的还可以通过以下技术方案达到:
作为一种优选方案,步骤1)所述三机九节点是指三个发电机和九条母线,用圆形表示发电机组,矩形表示变压器,竖条结构表示母线,两条直线以及直线范围内的小圆形表示线路,用箭头表示负荷。
作为一种优选方案,步骤3)所述节点导纳矩阵参数包括电导值和电纳值,所述发电机功率负荷参数包括发电机负荷值和运算功率值,具体数值如表说明书表1、表2所示。
作为一种优选方案,步骤4)所述通过C语言对步骤1)所述三机九节点的电网图像模型进行潮流分布计算,具体步骤如下:
4-1)给定各节点电压的初值U(0),δ(0)
4-2)求取修正方程式中的误差函数值ΔP(0)及ΔQ(0);
在含有n个节点的系统中,设PQ节点有m个,平衡节点有1个,PU节点则有n-(m+1)个。由于各节点已知量不同,则相应的节点方程也有所不同,
对于PQ节点,Pi及Qi是给定的,记为PiF和QiF,则有
式中,i=1,2,3……m,ΔPi和ΔQi为修正方程式中的误差函数值,从上式得出,有m个PQ节点,有2m个方程;
对于PU节点,Pi和Ui为给定值,记为PiF及UiF,代入(1)有
式中,i=m+1,m+2,…,n-1,ΔPi为修正方程式中的误差函数值,从上式得出,有n-(m+1)个PU节点,有n-(m+1)个误差方程;对于平衡节点,设为第n个节点,Un、δn为给定值,记为Us、δs,无需要参加迭代计算;
4-3)将节点电压初值代入节点Jacobian矩阵中求该矩阵的各元素,并形成列;
式中,节点Jacobian矩阵的各个元素分别为
以上为潮流算法的理论求解过程,从中得出在节点Jacobian矩阵中,共有4类参数,分别是H参数,N参数,J参数和L参数,对节点Jacobian矩阵中的参数进行分块处理,写出这样的形式:
通过分别计算4类参数值再写回节点Jacobian矩阵后,确定参数之间的相互位置关系,以进行迭代运算;进迭代运算时,根据分块的节点Jacobian矩阵,通过行列式的移位来确定其他计算参数的位置;
变换后的修正方程如下:
4-4)解修正方程,求出节点电压修正量ΔU(0)/U(1),Δδ(0);
修正各节点电压
δ(1)=δ(0)-Δδ(0)
U(1)=U(0)-ΔU(0)
将δ(1)、U(1)代入公式,求ΔP(1)及ΔQ(1);
检验收敛与否:
max|ΔP(γ)、ΔQ(γ)| <ε
若收敛,计算平衡节点功率计线路功率等,输出结果;
若不收敛,执行步骤4-2),以δ(1)、U(1)代替δ(0)、U(0)进行下一次迭代计算,直至收敛;
其中,线路功率计算如下:
ΔSij=Sij+Sji=ΔPij+jΔQij
作为一种优选方案,步骤5)所述通过OpenGL图形库在电脑屏幕上搭建和显示,形成参数的数值显示和潮流的动态流动效果,是采用openGL中idle回调函数的形式来实现,先用idle回调函数改变重绘需要的参数,调入绘图缓冲区进行绘图,完成之后,使用OpenGL库内置函数glutSwapBuffers()将该绘图缓冲区得到的画面在显示缓冲区中显示。
作为一种优选方案,步骤5)所述通过OpenGL图形库在电脑屏幕上搭建和显示,形成参数的数值显示和潮流的动态流动效果,是采用键盘上回车触发的方式,设置一个键盘触发的函数,当键盘输入的值是回车键时,调用封装好的潮流计算函数,计算完成后,调用idle回调函数,结合计算出的数据进行模型的重绘。
作为一种优选方案,定义一个单精度浮点型(float)的theta变量,通过theta值的正负来确定潮流的流向,theta的大小来实现位置的改变;根据潮流计算的结果值,正方向运动时,theta为正值,并且每次重绘加上一个常量;负方向运动,theta为负值,并且每次重绘减去一个常量,从而产生动态流动的效果。
本发明具有如下突出的有益效果:
1、本发明以三机九节点为电网模型,通过C语言函数进行潮流分布计算,并形成图形进行可视化显示,能准确反映电网的潮流分布情况,以及直观观察到潮流的动态流动效果。改变了传统的通过手工绘制电力系统拓朴结构图和潮流分布图,来对电网进行监控的方式,具有节约人力和时间、高效率和准确度高等突出的有益效果。
2、本发明通过计算机对潮流算法进行可视化程序运算,且潮流计算的算法准确度和精度较高,电压幅值误差控制在0.005%以内,相角误差控制在0.4%以内;可以实现在一天24小时内,对高达96个观测点数据的输入和电网模型的显示,且图形显示稳定,适用于电网的可视化监控。
具体实施方式
以下结合附图及实施例对本发明作进一步的详细描述:
具体实施例1:
本实施例涉一种电网稳态模型的可视化构建方法,其特征在于包括以下步骤:
1)对电网进行图像建模,构建三机九节点的电网图像模型;
2)采用函数封装对电网模型进行搭建,为每一种电力设备模型建立一个封装函数;
3)确定三机九节点的电网图像模型的阻抗值等基本参数,形成节点导纳矩阵参数和发电机功率负荷参数,并通过所述节点导纳矩阵参数和发电机功率负荷参数得到在潮流计算中需要使用的计算参数值;
4)采用牛顿-拉弗森算法,通过C语言对步骤1)所述三机九节点的电网图像模型进行潮流分布计算,包括对九处母线电压幅值、相角、负载百分比、母线功率和线路损耗的计算,求得电网模型参数;
5)将步骤4)计算得出的电网模型参数,融入到步骤1)建立的电网图像模型,通过OpenGL图形库在电脑屏幕上搭建和显示,形成参数的数值显示和潮流的动态流动效果;
6)当数据更新后,重新执行步骤1)-步骤4),如此不断循环,构成可视化电网稳态模型。
本实施例可简化为如下五个具体步骤:
第一步,对电网模型进行图像建模,并通过OpenGL图形库在电脑屏幕上搭建和显示。
其中,三机九节点是指三个发电机和九条母线,用圆形表示发电机组,矩形表示变压器,竖条结构表示母线,两条直线以及直线范围内的小圆形表示线路,用箭头表示负荷,除此之外,每条负荷可以用三种颜色来表示线路两端母线的负载情况,绿色表示线路两端母线正常运行状态,橙色表示母线处于重载运行状态,红色表示负载即将接近极限值。而对这些电网模型的搭建是采用C语言函数封装的形式,依次为每一种电力设备模型建立一个封装函数,列表及说明如下:
备注,以上函数中centerX,centerY均表示设备的坐标值形参
第二步,确定电网线路上的阻抗值等基本参数,实现节点导纳矩阵等基本数学计算。
由于在进行潮流计算之前,需先得到一些电网结构的基本参数,并由这些基本参数计算得到在潮流计算中需要使用计算参数值。其中最重要的两类参数是节点导纳矩阵参数和发电机功率负荷参数。
本例中使用的节点导纳矩阵参数和发电机功率负荷参数列表如下:
表1:节点导纳矩阵(实部,虚部的形式表示,实部是电导值,虚部是电纳值):
表2发电机功率负荷参数:
第三步、采用C语言编程实现,对三机九节点的潮流分布计算,包括对9处母线电压幅值、相角、负载百分比、母线功率和线路损耗的计算。采用的计算机算法是潮流计算的牛顿-拉弗森法,并做一定的改进和增强,以方便计算机代码的实现。
3-1)在含有n个节点的系统中,设PQ节点有m个,平衡节点有1个,PU节点则有n-(m+1)个,由于各节点已知量不同,则相应的节点方程也有所不同;
对于PQ节点,Pi及Qi是给定的,记为PiF和QiF,则有
式中,i=1,2,3……m,ΔPi和ΔQi为修正方程式中的误差函数值,从上式可以看出,有m个PQ节点,则有2m个方程;
对于PU节点,此时Pi和Ui是给定的,记为PiF及UiF,代入(1)有
式中,i=m+1,m+2,…,n-1,ΔPi为修正方程式中的误差函数值,从上式表明可以看出,有n-(m+1)个PU节点,从而有n-(m+1)个误差方程。
对于平衡节点,设为第n个节点。Un、δn是给定的,记为Us、δs,不需要参加迭代计算;
3-2)将节点电压初值代入节点Jacobian矩阵中求取该矩阵的各元素,并形成列;
式中,节点Jacobian矩阵的各个元素分别为
以上为潮流算法的理论求解过程中,从中可以看出在节点Jacobian矩阵中,共有4类参数,分别是H参数,N参数,J参数和L参数,可以对节点Jacobian矩阵中的参数进行分块处理,即写出这样的形式:
通过分别计算4类参数值再写回节点Jacobian矩阵后,就容易确定参数之间的相互位置关系,便于进行之后进行的迭代运算;而迭代运算里,也只需根据分块的节点Jacobian矩阵,通过行列式的移位来确定其他计算参数的位置即可;
变换后的修正方程如下:
3-3)解修正方程,求出节点电压修正量ΔU(0)/U(1),Δδ(0);
修正各节点电压
δ(1)=δ(0)-Δδ(0)
U(1)=U(0)-ΔU(0)
将δ(1)、U(1)代入公式,求ΔP(1)及ΔQ(1);
检验收敛与否:
max|ΔP(γ)、ΔQ(γ)|<ε
若收敛,计算平衡节点功率计线路功率等,输出结果;
若不收敛,执行步骤3.1.2),以δ(1)、U(1)代替δ(0)、U(0)进行下一次迭代计算,直至收敛;
其中,线路功率计算如下:
ΔSij=Sij+Sji=ΔPij十jΔQij
3-4)变量及数组的定义,用8个一维的数组定义初值和参数值,分别为电压的幅值U[],相角a[],功率误差dP[]和dQ[],运算功率Pif[]和Qif[],以及参数数组,用来存储节点Jacobian矩阵,G[]和B[];
通过循环结构计算迭代初值和Jacobian参数值,然后按3.1.2)中叙述的矩阵分块方法将Jacobian矩阵写成一维数组形式,经过矩阵可逆变换后与初值相乘,得到需要迭代的结果值,同样储存在一个一维数组中;利用求得的一维数组做下一次的迭代计算,当满足收敛条件,即停止迭代,得到了潮流计算的节点电压和相角,并储存在开始定义的一维数组U[]和a[]中,通过这些结果值再计算母线有功和无功功率和线路有功和无功损耗,分别存储在nodeP[][]、nodeQ[][]和deltaP[][]、deltaQ[][]中;
函数定义如下:
第四步,采用openGL中idle回调函数的形式来实现,openGL双缓冲机制,其原理是提供了两个完整的颜色缓冲区,当一个缓冲区显示时,另一个缓冲区正在进行绘图。当一个帧绘制完成之后,两个缓冲区就进行交换。这里利用这一思路来实现线路潮流的动画效果,与一般的调用系统时间函数来实现定时功能有所不同,先用idle回调函数改变重绘需要的参数,调入绘图缓冲区进行绘图,完成之后,利用交换将该绘图缓冲区得到的画面在显示缓冲区中显示,其中交换需要使用OpenGL库内置函数glutSwapBuffers()来实现;
而从具体实现上来讲,定义了一个单精度浮点型(float)的theta变量,而theta的值决定了线路上小圆形的位置,根据潮流计算的结果值,决定theta的值应该如何改变,正方向运动时,theta为正值,并且每次重绘加上一个常量,负方向运动,theta为负值,并且每次重绘减去一个常量。本步骤就是通过theta值的正负来确定潮流的流向,theta的大小来实现位置的改变,从而产生动态流动的效果;
使用的函数列表如下:
在CreateLineHor()和CreateLineVer()中的参数b即为变量theta的形参;
在搭建好模型之后,还需要将参数值在屏幕画布上显示,由于计算出的参数值都是float类型,所以先用sprintf()格式化输出将其转换成文本指针类型(char*),再用windows内置函数drawString(char*)将其在窗口上显示,并且可以用glRasterPos2f()来指定其在窗口上显示的位置;
使用的函数如下:
单精度浮点类型转换的使用方法是,以电压幅值为例
sprintf(buffer,"%0.3f",U);
drawString("U:");
drawString(buffer);
先利用sprintf函数转换成字符串类型(char*),再利用drawString()函数实现在窗口画布上的显示。
第五步,采用了键盘上回车触发的方式,设置一个键盘触发的函数,当键盘输入的值是回车键时,调用封装好的潮流计算函数,计算完成后,调用idle回调函数,结合计算出的数据进行模型的重绘;
函数列表如下:
综上所述,依据上述步骤,成功搭建了一个三机九节点的电网模型,并且可以实现对9个母线节点的潮流计算,与其他经典仿真软件做出的潮流计算结果相比较,误差控制在很小的范围内。
通过本方法得到的母线数据如下:
通过PowerWorld经典仿真软件得到的母线数据如下:
对两种方法电压幅值的标幺值和相角角度制的数据进行比较分析:
对比数据结果,可得到电压幅值误差控制在0.005%以内,相角误差控制在0.4%以内。所以本潮流计算的算法具有较高的精度。
所述OpenGL图形库、openGL中idle回调函数、OpenGL库内置函数glutSwapBuffers()为常规技术。
以上所述,仅为本发明较佳的具体实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都属于本发明的保护范围。