專利名稱:電力系統(tǒng)數(shù)值仿真開放式應用程序接口的制作方法
技術領域:
本發(fā)明涉及一種電力系統(tǒng)數(shù)值仿真開放式應用程序接口。
背景技術:
數(shù)值仿真在電力系統(tǒng)規(guī)劃、運行以及安全防御等方面發(fā)揮著不可替代的作用。完備的模型、可接受的計算精度和效率是對電力系統(tǒng)數(shù)值仿真程序的基本要求。隨著電力系統(tǒng)規(guī)模不斷增大、用戶分析需求多樣,為使用戶能快速、靈活地分析和解決各種問題,提供具有良好開放性的電力系統(tǒng)仿真程序具有十分重要的意義。軟件開放性本質(zhì)上為一種符合規(guī)范的接口,該規(guī)范可能是軟件本身定義并獨有,也可能是一種公共采用的標準。就電力系統(tǒng)分析軟件而言,用戶自定義建模(User-Defined Modeling, UDM)、應用程序接口(Application Program Interface, API)、不同分析軟件數(shù)據(jù)格式的轉(zhuǎn)換以及計算結(jié)果按規(guī)定格式的導入\導出等功能都是開放性的表現(xiàn)。其中,前二者是軟件與用戶之間的接口,其余的為軟件與軟件之間的接口。在這些接口中,最為體現(xiàn)開放性的就是UDM功能和API功能,因為兩者對于用戶而言都是強大的二次開發(fā)工具。對于UDM,已有文獻研究了其描述形式和求解算法,并以電廠和電力系統(tǒng)數(shù)字仿真軟件為例,分析了不同建模技術的優(yōu)缺點,還介紹了 UDM技術的具體應用,從而呈現(xiàn)了 UDM技術實現(xiàn)原理的整體架構(gòu)。對于API,在電力系統(tǒng)分析中已有諸多的應用或者類似功能的應用,例如PSAT/command line usage、PSASP/UPI、PSSE/API,從應用結(jié)果可知,基于API的二次開發(fā)功能在電力系統(tǒng)仿真分析中發(fā)揮著重要作用,它對于實驗各種新算法、處理各種分析問題都有極大的幫助,其好壞是衡量軟件開放性的一個重要標準,然而,盡管在電力系統(tǒng)分析中已有諸多應用,但其技術的具體實現(xiàn)原理往往作為商業(yè)機密,并未見公開報道。
基于API的二次開發(fā)功能的本質(zhì)是通過函數(shù)命令對計算引擎進行調(diào)用,傳遞參數(shù)并處理返回結(jié)果,因此其基本架構(gòu)如圖1,折線表示語句、函數(shù)接口、功能函數(shù)之間的對應關系,一個用戶程序的語句對應一個函數(shù)接口,但函數(shù)接口所實現(xiàn)的某個功能可能需調(diào)用軟件計算引擎的一個或多個功能函數(shù)(圖中為兩個)。這樣,用戶就可以通過編寫程序調(diào)用軟件的接口函數(shù),實現(xiàn)與軟件計算引擎的交互,從而快速、方便地進行二次開發(fā),完成特定的高級分析任務。上述基本架構(gòu)十分簡單,按此架構(gòu)進行開發(fā),可以實現(xiàn)具有類似PSSE/API功能的電力系統(tǒng)分析軟件,這種傳統(tǒng)式的軟件完全安裝于用戶端,具有兩個明顯的缺點,一是受限于用戶的設備條件,無法達到最佳計算速度和精度,無法應用一些基于硬件的前沿技術(如需要運行在NVIDIA專門顯卡上的GPU并行計算技術);二是不便于計算引擎的升級,每次都需要用戶更新軟件,如果計算引擎改變較大,可能導致軟件更新十分繁瑣甚至發(fā)生不兼容的情況
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明引入了客戶端/服務器(C/S)模式,圖2和圖3分別是基于C/S模式架構(gòu)的網(wǎng)絡結(jié)構(gòu)圖和應用程序接口架構(gòu)圖,其基本工作原理為用戶在各種硬件設備上,包括個人計算機、筆記本、PDA、智能手機等,通過網(wǎng)絡將計算命令發(fā)送給服務器,月艮務器收到消息后,分析語句并調(diào)用對應的計算引擎函數(shù)接口從而完成計算,最后將計算結(jié)果返回。顯然,此架構(gòu)將計算引擎完全放在服務器端,具有兩個優(yōu)點首先,使計算引擎獨立于用戶的硬件設備,解決了上述因客戶端硬件設備水平參差不齊而帶來的問題;其次,使得計算引擎的升級維護獨立于用戶,只要函數(shù)接口不變,當軟件的計算引擎需要改進時,只需更新服務器端的分析軟件,或是改動內(nèi)部代碼重新生成可執(zhí)行程序EXE,或是更為簡單地替換一個動態(tài)鏈接庫(Dynamic Link Library, DLL),即完成了更新,使用戶從計算引擎的升級管理中解脫出來。因此,此接口方案基于C/S模式將原本的基本架構(gòu)在物理上進行分割,實現(xiàn)了用戶和軟件職能的分離,使用戶能更專注于高級分析功能的開發(fā),而軟件計算引擎也能得到 的更高效的應用和簡便的維護、更新。為實現(xiàn)上述目的,本發(fā)明采用如下技術方案一種電力系統(tǒng)數(shù)值仿真開放式應用程序接口,基于C/S模式的網(wǎng)絡架構(gòu),在客戶端與服務器端之間設置消息打包單元、消息傳輸單元、消息分析單元,實現(xiàn)兩端的交互;其中,消息打包單元負責將需要發(fā)送的信息按照規(guī)定的統(tǒng)一格式進行整理和打包;消息傳輸單元負責將已打包的消息通過TCP/IP傳送到接收端;消息分析單元設有一張規(guī)范化的函數(shù)表,用于對接收到的消息進行查表、確定函數(shù),從而處理消息中的參數(shù)或者返回值,其中函數(shù)表的結(jié)構(gòu)為函數(shù)名I參數(shù)個數(shù)I各參數(shù)類型I返回值個數(shù)I各返回值類型。對于客戶端而言,所述消息打包單元負責分析不同語言編寫的語句,提煉出函數(shù)名、參數(shù)個數(shù)和具體參數(shù),再按此順序打包發(fā)送;對于服務器端而言,此單元負責整理計算結(jié)果,按照函數(shù)名、參數(shù)個數(shù)、具體返回值的順序打包發(fā)送;不論客戶端還是服務器端,打包消息的開頭都是函數(shù)名和參數(shù)個數(shù),它們是消息接收端查表的依據(jù),因為只有函數(shù)名和其參數(shù)個數(shù)同時給定才能唯一確定一個函數(shù)。所述消息分析單元首先提取消息的前兩個信息即函數(shù)名和參數(shù)個數(shù)用于查表確定函數(shù),再根據(jù)查表結(jié)果正確地提取出消息的其他內(nèi)容;就客戶端而言,此單元負責根據(jù)查表所確定的各返回值的類型讀入計算結(jié)果;就服務器端而言,此單元負責根據(jù)查表所確定的各參數(shù)值的類型讀入所有參數(shù),為函數(shù)的調(diào)用做好準備。本發(fā)明提出了一種電力系統(tǒng)仿真計算程序開放式應用程序接口實現(xiàn)方案基于C/S模式,在客戶端和服務器端建立相同的制定結(jié)構(gòu)的數(shù)據(jù)庫(一張規(guī)范化的函數(shù)表),通過查表實現(xiàn)開放式應用程序接口 ;基于TCP/IP,實現(xiàn)兩端的通訊。在客戶端,開發(fā)了全新的客戶端二次開發(fā)平臺以及基于C++、Matlab和Python環(huán)境的接口軟件包;在服務器端,開發(fā)了具有牛拉法潮流計算、動態(tài)潮流計算、暫態(tài)穩(wěn)定計算等功能的計算引擎及其接口。最后,基于開發(fā)的電力系統(tǒng)分析軟件,通過實例演示了進行二次開發(fā)的思路和方法,證明此架構(gòu)方案具有很好的開放性和靈活性,增強了仿真程序的綜合計算分析功能。本發(fā)明的有益效果是本發(fā)明基于C/S模式的開放式應用程序接口架構(gòu)實現(xiàn)了用戶和軟件的職能分離。對于客戶端而言,使用戶能更專注于高級分析功能的開發(fā),且這種二次開發(fā)獨立于用戶所使用的計算機語言,即面向使用不同編程語言的用戶,具有很好的靈活性和推廣性;對于服務器端而言,軟件計算引擎的修改或者升級獨立于客戶端,與傳統(tǒng)的將軟件完全安裝于用戶的方式相比,不僅使用戶從軟件的維護和更新中解脫出來,更使計算引擎能基于服務器端在最優(yōu)配置的條件下,利用服務器端各種普通用戶不具備的軟硬件資源高效運行;對于電力系統(tǒng)高級分析而言,此種架構(gòu)有利于快速、靈活地實驗各種新算法、處理各種分析問題,其強大的開放性能很好地適應電力系統(tǒng)日益龐大的電網(wǎng)和日新月異的電力技術。
圖I為應用程序接口的基本架構(gòu); 圖2為基于C/S模式的網(wǎng)絡結(jié)構(gòu);圖3為基于C/S模式的應用程序接口架構(gòu);圖4為函數(shù)表的格式;圖5為假定的函數(shù)表;圖6為命令執(zhí)行過程;圖7為基于C/S模式的架構(gòu)方案實現(xiàn)原理;圖8為軟件的整體架構(gòu)圖;圖9為算例的示意圖;圖10為程序編寫流程圖。
具體實施例方式下面結(jié)合附圖與實施例對本發(fā)明做進一步說明?;贑/S模式的API架構(gòu)方案關鍵在于實現(xiàn)客戶端與服務器端之間的交互,通過建立制定結(jié)構(gòu)的數(shù)據(jù)庫(一張規(guī)范化的函數(shù)表),要求客戶端、服務器端在發(fā)送和接收消息時都“依表查表”,可以方便地實現(xiàn)兩者之間的交互。因此,客戶端、服務器端都有一張相同的函數(shù)表,其格式如圖4所示?;诖吮?,客戶端和服務器端之間的交互過程可以分為三步消息打包、消息傳輸和消息分析,其實現(xiàn)對應于消息分析單元、消息傳輸單元和消息分析單元。“消息打包”單元按照規(guī)定的統(tǒng)一格式整理好需要發(fā)送的內(nèi)容,以便接收端查表并處理。就客戶端而言,此環(huán)節(jié)負責分析不同語言編寫的語句,提煉出函數(shù)名、參數(shù)個數(shù)和具體參數(shù),再按此順序打包發(fā)送;就服務器端而言,此環(huán)節(jié)負責整理計算結(jié)果,按照函數(shù)名、參數(shù)個數(shù)、具體返回值的順序打包發(fā)送。不論客戶端還是服務器端,打包消息的開頭都是函數(shù)名和參數(shù)個數(shù),它們是消息接收端查表的依據(jù),因為只有函數(shù)名和其參數(shù)個數(shù)同時給定才能唯一確定一個函數(shù)?!跋鬏敗眴卧梢岳每蛻舳撕头掌鞫烁髯蚤_發(fā)平臺的Socket模塊實現(xiàn)基于TCP/IP的通訊?!跋⒎治觥眴卧紫忍崛∠⒌那皟蓚€信息(函數(shù)名和參數(shù)個數(shù))用于查表確定函數(shù),再根據(jù)查表結(jié)果正確地提取出消息的其他內(nèi)容。就客戶端而言,此環(huán)節(jié)負責根據(jù)查表所確定的各返回值的類型讀入計算結(jié)果;就服務器端而言,此環(huán)節(jié)負責根據(jù)查表所確定的各參數(shù)值的類型讀入所有參數(shù),為函數(shù)的調(diào)用做好準備。為清晰地描述上述消息打包、消息傳輸和消息分析的具體執(zhí)行過程,假定現(xiàn)要執(zhí)行一條命令Fun (I, 2. 3),已知對應的函數(shù)表如圖5所示,計算結(jié)果返回值為9. 85、7、‘y’,則執(zhí)行此命令的過程如圖6所示。顯然,這種基于查表的執(zhí)行機制具有規(guī)范化和易擴展的優(yōu)點,而且易應用于各種不同的語言環(huán)境,所以整體的基于C/S模式的架構(gòu)方案實現(xiàn)原理如圖7所示。就服務器端而言,此架構(gòu)將計算引擎完全放在服務器,優(yōu)點如前所述。就客戶端而言,此架構(gòu)不限于客戶端具體的語言實現(xiàn)形式,面向使用不同語言的用戶。假使每種編程語言或主流編程語言都實現(xiàn)了對應的客戶端開發(fā)平臺,那么對于計算 引擎而言,這種資源利用將獨立于客戶端語言,使得對于軟件整體而言,擁有了強大的開放性優(yōu)勢。需要指出的是,架構(gòu)的核心是圖7中的函數(shù)表,實際使用按此架構(gòu)開發(fā)的軟件時,客戶端需要及時更新數(shù)據(jù)庫(函數(shù)表),才可以使用服務器端新添的接口函數(shù)。上述架構(gòu)基于規(guī)范化的函數(shù)表,將C/S模式配合應用程序接口,充分結(jié)合并利用了各自的優(yōu)勢,使軟件整體不論對客戶端還是服務器端都具有很好的開放性和獨立性。值得一提的是,這種基于C/S模式的應用程序接口方案可以升級成基于“云計算”模式的方案,即將C/S模式中的服務器擴展為云,可由通過網(wǎng)絡連接的具有計算分析功能的各種硬件設備構(gòu)成,從而擁有更加豐富、強大的資源,通過把計算任務放在云上,利用云上的各種資源,完成分析計算任務,而客戶端仍然只起到調(diào)用、通信的作用。根據(jù)本發(fā)明的接口方式,對于客戶端,可以開發(fā)全新的編程平臺,也可以基于現(xiàn)有的編程平臺開發(fā)專用軟件包。軟件包需要實現(xiàn)圖7中①⑥的功能,而全新開發(fā)的編程平臺除了這些功能外,還要實現(xiàn)用戶編程界面。對于服務器端,可以開發(fā)全新的計算引擎,也可以基于現(xiàn)有的分析程序進行修改和封裝,但軟件的接口部分都需實現(xiàn)圖7中③④的功能,而且軟件的計算引擎應模塊化,一個模塊對應于一個DLL,譬如潮流計算模塊就對應于潮流計算DLL,其中包含所有潮流計算需要用到的函數(shù),便于計算引擎的維護、修改和擴充。軟件的整體架構(gòu)如圖8所示,不論客戶端是基于現(xiàn)有平臺開發(fā)軟件包,還是開發(fā)的全新客戶端編程平臺,其接口實現(xiàn)方法都完全對應于圖7的基于C/S模式的架構(gòu)實現(xiàn)原理。實施例I :測試如圖9的輸電線路極限功率,原理為不斷增加母線2處的負荷,然后求解潮流,一旦母線2處電壓低于0. 9 (p. u)時,就進行電容補償,使電壓滿足要求,重復這一過程,直到潮流不再收斂,那么最后一次潮流收斂時的負荷功率就是此線路的傳輸極限(受端)。在C++、Matlab和Python的開發(fā)環(huán)境下,按圖10流程圖編寫代碼,其中Matlab平
臺下代碼如下
權(quán)利要求
1.一種電力系統(tǒng)數(shù)值仿真開放式應用程序接口,其特征是基于C/s模式的網(wǎng)絡架構(gòu),在客戶端與服務器端之間設置消息打包單元、消息傳輸單元、消息分析單元,實現(xiàn)兩端的交互;其中,消息打包單元負責將需要發(fā)送的信息按照規(guī)定的統(tǒng)一格式進行整理和打包;消息傳輸單元負責將已打包的消息通過TCP/IP傳送到接收端;消息分析單元設有一張規(guī)范化的函數(shù)表,用于對接收到的消息進行查表、確定函數(shù),從而處理消息中的參數(shù)或者返回值,其中函數(shù)表的結(jié)構(gòu)為函數(shù)名I參數(shù)個數(shù)I各參數(shù)類型I返回值個數(shù)I各返回值類型。
2.如權(quán)利要求I所述的電力系統(tǒng)數(shù)值仿真開放式應用程序接口,其特征是對于客戶端而言,所述消息打包單元負責分析不同語言編寫的語句,提煉出函數(shù)名、參數(shù)個數(shù)和具體參數(shù),再按此順序打包發(fā)送;對于服務器端而言,此單元負責整理計算結(jié)果,按照函數(shù)名、參數(shù)個數(shù)、具體返回值的順序打包發(fā)送;不論客戶端還是服務器端,打包消息的開頭都是函數(shù)名和參數(shù)個數(shù),它們是消息接收端查表的依據(jù),因為只有函數(shù)名和其參數(shù)個數(shù)同時給定才能唯一確定一個函數(shù)。
3.如權(quán)利要求I所述的電力系統(tǒng)數(shù)值仿真開放式應用程序接口,其特征是所述消息分析單元首先提取消息的前兩個信息即函數(shù)名和參數(shù)個數(shù)用于查表確定函數(shù),再根據(jù)查表結(jié)果正確地提取出消息的其他內(nèi)容;就客戶端而言,此單元負責根據(jù)查表所確定的各返回值的類型讀入計算結(jié)果;就服務器端而言,此單元負責根據(jù)查表所確定的各參數(shù)值的類型讀入所有參數(shù),為函數(shù)的調(diào)用做好準備。
全文摘要
本發(fā)明公開了一種電力系統(tǒng)數(shù)值仿真開放式應用程序接口,即基于C/S模式的網(wǎng)絡架構(gòu),通過在客戶端與服務器端設置的消息打包單元、消息傳輸單元、消息分析單元實現(xiàn)兩端的交互;其中,消息打包單元負責將需要發(fā)送的信息按照規(guī)定的統(tǒng)一格式進行整理和打包;消息傳輸單元負責將已打包的消息通過TCP/IP傳送到接收端;消息分析單元設有一張規(guī)范化的函數(shù)表,用于對接收到的消息進行查表、確定函數(shù),從而處理消息中的參數(shù)或者返回值,其中函數(shù)表的結(jié)構(gòu)為函數(shù)名|參數(shù)個數(shù)|各參數(shù)類型|返回值個數(shù)|各返回值類型。本發(fā)明基于C/S模式的網(wǎng)絡架構(gòu)實現(xiàn)了用戶和軟件的職能分離,使用戶(客戶端)能更專注于高級分析功能的開發(fā),軟件計算引擎(服務器端)也能得到更高效的應用和簡便的維護、更新,因此,這種開放式的架構(gòu)能大大提高開發(fā)電力系統(tǒng)高級分析功能的效率和靈活性。
文檔編號G06F9/46GK102750183SQ20121022902
公開日2012年10月24日 申請日期2012年7月3日 優(yōu)先權(quán)日2012年7月3日
發(fā)明者劉玉田, 呂文欣, 孫華東, 張恒旭 申請人:山東大學