国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

直流配用電系統(tǒng)可靠性評估軟件開發(fā)

2020-11-04 01:22郝向軍李勝文侯采彤
山西電力 2020年5期
關(guān)鍵詞:數(shù)組支路潮流

郝向軍,趙 軍,李勝文,侯采彤,李 祺

(1.國網(wǎng)山西省電力公司,山西 太原 030013;2.國網(wǎng)山西省電力公司電力科學研究院,山西 太原 030001;3.國網(wǎng)山西送變電工程有限公司,山西 太原 030001;4.國網(wǎng)山西省電力公司輸電檢修分公司,山西 太原 030001)

0 引言

目前,配電系統(tǒng)的可靠性評估手段主要有解析法和模擬法,關(guān)于可靠性評估方法的論述,大多都是理論方法結(jié)合算例分析,而在實際工程應用中,還需要另外一步工作,即可靠性評估軟件開發(fā)。本文使用的軟件編譯平臺是VS(Visual Studio),VS 是一個相當全面的開發(fā)工具集,包括了整個軟件生命周期中所需要的大部分工具,整個軟件用C++進行編譯。無論是什么樣的軟件開發(fā),在編譯之前都要有一個整體的架構(gòu)觀,具體到本文介紹的可靠性評估軟件,在設計階段,規(guī)劃了3 個模塊,包括數(shù)據(jù)庫模塊、直流潮流模塊以及可靠性評估模塊。下面將依次介紹這3 個模塊的設計理念及其編譯、功能實現(xiàn)的過程。

1 數(shù)據(jù)庫模塊設計

1.1 類中對象的設定

在一個復雜直流配用電系統(tǒng)的可靠性評估過程中涉及大量的數(shù)據(jù)存取,而在主函數(shù)中去定義、輸入數(shù)據(jù),會使得函數(shù)主體冗雜,降低編程的可讀性,不利于后期程序的維護,所以在進行主函數(shù)的編譯之前,建立一個數(shù)據(jù)庫模塊,主要承擔數(shù)據(jù)的輸入、輸出功能,主函數(shù)部分需要的數(shù)據(jù)可以直接從數(shù)據(jù)庫模塊獲取,這樣就可以使得函數(shù)主體更加明確。

數(shù)據(jù)庫模塊的建立,考慮使用C++中類的功能來實現(xiàn)。類在本質(zhì)上也屬于數(shù)據(jù)類型,只不過不是編譯器內(nèi)置的數(shù)據(jù)類型,是用戶根據(jù)自己需要的功能,自定義的一種數(shù)據(jù)類型。類用于指定對象的形式,它包含了數(shù)據(jù)表示法和用于處理數(shù)據(jù)的方法。對于包含內(nèi)容較多的類,一般會考慮分文件編寫,即在頭文件中定義一個類,在類中定義所需要的對象,具體的實現(xiàn)轉(zhuǎn)到相應的源文件中進行。分文件編寫是為了讓類中實現(xiàn)的功能可以更加清晰地展現(xiàn)出來,既方便程序員檢查自己的程序,進行修改和維護,又可以使讀者更加直觀地理解編程的功能。本文所介紹的可靠性評估軟件,其數(shù)據(jù)庫模塊的類里包含諸多函數(shù)作為對象,下面將依次介紹類中的對象定義以及各個函數(shù)的功能、實現(xiàn)過程。

先在頭文件中定義一個類,在該類的public 作用域下,定義幾個非函數(shù)型對象,分別是網(wǎng)絡中的設備個數(shù)、網(wǎng)絡中的節(jié)點數(shù),將這些數(shù)據(jù)作為原始數(shù)據(jù)進行輸入。然后需要定義一些指針,指針的作用是維護數(shù)組,該軟件需要開辟存儲故障率(包括設備故障率和線路故障率) 的數(shù)組、存儲平均故障持續(xù)時間的數(shù)組以及存儲年平均故障持續(xù)時間的數(shù)組,數(shù)據(jù)類型為double 類型,所以開辟的數(shù)組也是double 類型的數(shù)組,相應地,維護數(shù)組的指針也是double 類型的指針。

1.2 類中函數(shù)對象的實現(xiàn)

首先介紹類中必不可少的構(gòu)造函數(shù)。該軟件需要用戶自己聲明有參構(gòu)造函數(shù),因為需要對整型數(shù)據(jù)以及數(shù)組做初始化的操作。有參構(gòu)造中的參數(shù)即為網(wǎng)絡中的設備個數(shù)以及節(jié)點數(shù),將傳入的參數(shù)賦值給類中定義的整型對象。1.1 節(jié)提到的幾個數(shù)組,需開辟在堆區(qū),在堆區(qū)開辟的空間由程序員手動開辟、手動釋放,維護數(shù)據(jù)比較方便,而數(shù)組的長度即為有參構(gòu)造中傳入的節(jié)點數(shù)。

下一個函數(shù)的功能是獲取文件中的原始數(shù)據(jù),這個文件一般由實際工程方提供,編程需要讀取該文件來獲得所需要的原始數(shù)據(jù),讀取的方法一般按行讀取,以空格為分隔符,把軟件編程所需要的原始數(shù)據(jù)讀取完畢,存放到由指針維護的對應數(shù)組中即可。

C++運行完畢后,在堆區(qū)開辟的數(shù)組中的數(shù)據(jù)會被釋放掉,軟件計算得到的數(shù)據(jù)就會消失,所以需要在堆區(qū)數(shù)組釋放之前,將計算得到的數(shù)據(jù)由數(shù)組輸入文件中保存,該操作需要用到C++中的寫文件函數(shù),無論是文字信息還是數(shù)字信息,都可以通過C++的輸出流函數(shù),由左移運算符寫入到文件中,這樣軟件計算得出的數(shù)據(jù)就可以永久地保存。

當所需原始數(shù)據(jù)或是計算得到的各項指標輸入到數(shù)組以后,還需要提供1 個可以查看數(shù)組中數(shù)據(jù)的函數(shù):使用while 語句生成1 個菜單,顯示用戶能夠查看的數(shù)據(jù)種類并按順序進行編號,然后使用switch 語句,將對應編號的數(shù)組進行遍歷,供用戶查詢,方便用戶查看輸入的原始數(shù)據(jù)是否正確,判斷是否需要修正代碼。

最后需要編譯析構(gòu)函數(shù),上文曾提及,在堆區(qū)開辟的數(shù)組需要程序員手動釋放,釋放的代碼就可以放在析構(gòu)函數(shù)中。

2 直流潮流模塊設計

直流潮流模塊依然采用C++中類與對象的功能進行實現(xiàn)。首先要明確類中的非函數(shù)型對象,在該模塊中需要定義整型數(shù)據(jù),如網(wǎng)絡中的節(jié)點數(shù)、支路數(shù)以及平衡節(jié)點的編號,需要在堆區(qū)開辟double 型和int 型的數(shù)組,其中屬于double 型的數(shù)組有存放各節(jié)點注入功率的數(shù)組、存放各條支路阻抗值的數(shù)組、存放各條支路潮流的數(shù)組,屬于int 型的數(shù)組有存放發(fā)生停電故障的節(jié)點編號的數(shù)組、存放支路編號的數(shù)組等。

在有參構(gòu)造函數(shù)中,需要傳入網(wǎng)絡中的節(jié)點數(shù)、支路數(shù)、平衡節(jié)點的編號,來給類中的非函數(shù)型對象賦初值,數(shù)組的開辟仍然選擇在堆區(qū),用對應數(shù)據(jù)類型的指針進行維護,數(shù)組的長度可以用網(wǎng)絡中的節(jié)點數(shù)、支路數(shù)等數(shù)據(jù)進行定義。在構(gòu)造函數(shù)中將原始數(shù)據(jù)存放到對應數(shù)組中,包括各個節(jié)點的注入功率、各條支路的阻抗值。

2.1 系統(tǒng)正常運行時的潮流計算

計算系統(tǒng)在正常運行狀態(tài)下的潮流分布情況,需要在類中定義一個函數(shù)。潮流計算函數(shù)涉及很多矩陣方面的計算,需要用到C++的矩陣庫Eigen。Eigen 是一個基于C++模板的線性代數(shù)庫,其接口清晰、運行穩(wěn)定且效率較高,直接將庫下載后放在項目目錄下,包含頭文件就能使用。計算系統(tǒng)的潮流分布,首先需要定義一個行數(shù)為系統(tǒng)的支路數(shù),列數(shù)為4 的矩陣,該矩陣第一、二列存放支路的首、末節(jié)點編號,第三列存放各支路的電納值,第四列存放各節(jié)點的相角,其中前三列的數(shù)據(jù)可以直接輸入,第四列的數(shù)據(jù)需要經(jīng)過計算進行賦值[1]。接下來生成系統(tǒng)的節(jié)點電納矩陣,該矩陣的賦值分為兩部分,第一部分為主對角線元素的賦值,位于主對角線上的元素,在數(shù)值上等于各個節(jié)點的自電納;第二部分為非對角元素的賦值,由于節(jié)點電納矩陣為對稱稀疏矩陣,只對矩陣的上三角或是下三角部分賦值即可。該位置上的元素,在數(shù)值上等于節(jié)點之間的互電納[2]。這兩部分的賦值操作,使用for 循環(huán)語句,借助之前定義的支路信息矩陣便可實現(xiàn)。

接下來需要借助節(jié)點電納矩陣,求取各節(jié)點的相角,計算公式為

其中,P 為各節(jié)點注入功率的列向量,B0為節(jié)點電納矩陣;δ 為各節(jié)點相角的列向量[3]。

為求取各節(jié)點的相角,需要求取節(jié)點電納矩陣的逆矩陣。在Eigen 庫中,有專門求取逆矩陣的函數(shù)inverse(),求出的相角對應存放入上文定義的支路信息矩陣中。最后一步就是計算各條支路的潮流分布,計算公式為

其中,i、j 表示首、末節(jié)點的編號;P、x 是由首末節(jié)點確定的支路潮流、支路阻抗;δ 為各節(jié)點的相角[4]。

將支路信息矩陣中的相角信息和支路信息帶入式(2) 中,就可以依次求出各條支路的潮流分布。

2.2 系統(tǒng)開斷一條線路時的潮流計算

利用枚舉法使系統(tǒng)中的線路依次斷開一條,求對應狀態(tài)下的系統(tǒng)潮流分布[5]。該部分編程的目的是確定節(jié)點的故障信息。先要尋找出系統(tǒng)中與其他部分只有1 條支路連通的特殊節(jié)點,這些節(jié)點所在支路如果斷開,會導致節(jié)點電納矩陣降階,必須做特殊處理。然后利用for 循環(huán),遍歷支路信息矩陣的前兩列,只出現(xiàn)一次的節(jié)點,即為特殊節(jié)點,將該節(jié)點的編號以及所在支路編號存放進相應的數(shù)組中;出現(xiàn)多次的節(jié)點,說明所在支路不止1 條,斷開1 條支路并不會導致節(jié)點電納矩陣降維,正常處理即可。正常節(jié)點所在支路斷路,需重新生成支路信息矩陣,其中斷路的支路,電納置為零,然后按正常狀態(tài)下系統(tǒng)潮流計算的步驟進行即可;特殊節(jié)點所在支路斷路,也需重新生成支路信息矩陣,因節(jié)點電納矩陣要降一維,所以該支路信息矩陣也要減少1 行,將斷路支路的信息刪除,相應地,存放各節(jié)點注入功率的列向量以及存放各支路相角的列向量,也要把對應節(jié)點的信息刪除[6]。

編程中潮流計算的目的是為了確定節(jié)點故障信息,具體通過追蹤平衡節(jié)點發(fā)出的功率來實現(xiàn)。平衡節(jié)點本質(zhì)上是負荷節(jié)點,不存在功率輸出,而在潮流計算過程中,通常需要平衡節(jié)點向系統(tǒng)中輸入功率,這一部分輸入功率就可以看作系統(tǒng)中缺乏的功率,這些功率輸入到哪些節(jié)點,就說明哪些節(jié)點會因為實際功率供給不足而停電。

先要建立輔助矩陣存放各條支路的潮流信息,矩陣的階數(shù)和系統(tǒng)中的節(jié)點數(shù)保持一致,矩陣的行數(shù)代表支路的首節(jié)點,列數(shù)代表支路的末節(jié)點。位于對角線上的元素,代表各個節(jié)點注入功率的絕對值,位于非對角線上的元素,代表各條支路之間的潮流分布,潮流的方向由正負號和首末節(jié)點來確定。然后借助該矩陣追蹤平衡節(jié)點發(fā)出的功率,對平衡節(jié)點所在列進行遍歷,找出其中的負值,即為該平衡節(jié)點向其他節(jié)點輸出的功率,當追蹤到平衡節(jié)點的功率輸入到某一個節(jié)點時,要判斷該節(jié)點是否會停電,此時就要轉(zhuǎn)到該節(jié)點所在列,將該列中的正值遍歷出來,這些正值即代表了其他節(jié)點向該節(jié)點輸入的功率,將遍歷到的數(shù)值相加,和自身的注入功率比較,如果該節(jié)點從其他負荷節(jié)點(平衡節(jié)點除外) 獲取的功率足夠支撐自身的消耗,該節(jié)點就不會停電,反之就會出現(xiàn)停電故障。判斷完該節(jié)點是否會停電后,重復上述步驟,繼續(xù)由該節(jié)點追蹤平衡節(jié)點發(fā)出的功率。由于平衡節(jié)點輸出的功率一般只能傳遞到附近的幾個節(jié)點,所以該追蹤過程持續(xù)5 次,基本可以追蹤到所有的停電節(jié)點。

3 可靠性評估模塊設計

由直流潮流模塊的計算可以得知某條線路故障時,對應負荷的停電信息,計算這些負荷的可靠性指標。首先,在對應系統(tǒng)中的設備產(chǎn)生隨機數(shù),通過比較隨機數(shù)的大小來確定哪個設備最先發(fā)生故障[7],找出該設備所在支路,該支路發(fā)生故障時,對應負荷點的停電情況就可以通過直流潮流模塊確定,對發(fā)生故障的負荷點進行可靠性指標計算;然后重新生成隨機數(shù),進行第二次的隨機數(shù)大小比較,確定第二個發(fā)生故障的設備;重復上述步驟,直到超出模擬時限為止[8]。將各節(jié)點的可靠性指標累加并取平均值,即可得到各負荷點的可靠性指標,再根據(jù)設備在系統(tǒng)中的連接方式,選擇不同的公式,計算出整個系統(tǒng)的各項可靠性指標。如果設備為串聯(lián)方式,可以采用式(3) ~式(5) 進行計算;如果設備為并聯(lián)方式,可以采用式 (6) ~式 (8) 進行計算。

其中,λ 為負荷點故障率,次/a;r 為負荷點每次故障平均停電持續(xù)時間,h/次;U 為負荷點的年平均停電時間,h/a。

4 結(jié)束語

直流潮流求解線性方程組的速度快,不存在收斂問題,適用于需要大量計算或運行條件不十分理想的場合。本文所介紹的軟件編程涉及大量的計算,而計算的目的是故障定位,因此不需要計算精確潮流,直流潮流正好可以滿足此次軟件設計的要求[9]。使用直流潮流計算出系統(tǒng)潮流后,創(chuàng)造性地使用追蹤平衡節(jié)點發(fā)出功率的方法,實現(xiàn)了系統(tǒng)的故障定位,提高了系統(tǒng)可靠性的計算效率。

猜你喜歡
數(shù)組支路潮流
JAVA稀疏矩陣算法
JAVA玩轉(zhuǎn)數(shù)學之二維數(shù)組排序
基于解方程組的替代定理的證明方法
支路不對稱發(fā)電機故障下定子電磁力仿真分析
更高效用好 Excel的數(shù)組公式
抽水蓄能機組定子支路數(shù)應用與研究
潮流
潮流
潮流
寶馬加裝Click和Drive系統(tǒng)