李良威,鄧云川,高 宏
AT供電方式牽引供電系統(tǒng)計(jì)算是高速電氣化鐵路供電設(shè)計(jì)的基礎(chǔ),是進(jìn)行變壓器容量選擇、牽引網(wǎng)電壓水平和電能質(zhì)量評(píng)估的基本依據(jù)。為了更加精確地計(jì)算牽引供電系統(tǒng)各項(xiàng)技術(shù)指標(biāo),本文建立了AT供電方式的牽引供電系統(tǒng)模型,包含復(fù)雜的牽引網(wǎng)阻抗參數(shù)輸入模塊、牽引供電設(shè)施設(shè)置模塊以及數(shù)量龐大的行車實(shí)時(shí)數(shù)據(jù)處理及計(jì)算模塊。
該軟件開發(fā)具有以下特點(diǎn):龐大的數(shù)據(jù)處理、豐富便捷的圖形處理和輸出、大量數(shù)據(jù)的分析。經(jīng)過多方案對(duì)比分析,決定采用混合編程技術(shù),利用Visual C++豐富的人機(jī)界面、高效的執(zhí)行效率、強(qiáng)大的底層交換數(shù)據(jù)能力和 Matlab強(qiáng)大的數(shù)值計(jì)算功能、便利的數(shù)據(jù)分析處理能力、優(yōu)秀的系統(tǒng)分析和圖形顯示技術(shù)。該技術(shù)充分利用了兩者優(yōu)勢(shì),大大提高了工程分析計(jì)算、圖形處理的能力。軟件的開發(fā)提高了中鐵二院工程集團(tuán)有限責(zé)任公司AT牽引供電系統(tǒng)的設(shè)計(jì)質(zhì)量、設(shè)計(jì)水平和生產(chǎn)效率,降低了設(shè)計(jì)人員的勞動(dòng)強(qiáng)度,為設(shè)計(jì)工作提供強(qiáng)有力的技術(shù)支持。
Matlab是由美國mathworks公司發(fā)布的主要面對(duì)科學(xué)計(jì)算、可視化以及交互式程序設(shè)計(jì)的高科技計(jì)算環(huán)境。它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語言(如 C、Fortran)的編輯模式,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。
Matlab的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)、工程中常用的形式十分相似,故用Matlab來解算問題要比用C、FORTRAN等語言完成相同的事情簡(jiǎn)捷得多,在該平臺(tái)上,用戶只需寥寥數(shù)語就可以完成十分復(fù)雜的功能,大大提高了工程分析計(jì)算、圖形處理的效率。
但是,單獨(dú)編寫的 Matlab程序不能脫離其環(huán)境運(yùn)行,只能在其所提供的平臺(tái)上使用,即用戶必須在安裝了 Matlab系統(tǒng)的計(jì)算機(jī)上執(zhí)行。并且Matlab在循環(huán)處理、可視化界面設(shè)計(jì)和程序設(shè)計(jì)的靈活性方面遜色于其他高級(jí)語言(C/C++)。
Visual C++是 Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不但具有程序框架自動(dòng)生成、靈活方便的類管理、代碼編寫和界面設(shè)計(jì)集成交互操作、可開發(fā)多種程序等優(yōu)點(diǎn),而且通過簡(jiǎn)單的設(shè)置就可使其生成的程序框架支持?jǐn)?shù)據(jù)庫接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面。
然而,Visual C++對(duì)于復(fù)雜的數(shù)值運(yùn)算和繪圖功能的實(shí)現(xiàn)能力較弱,需要編制大量繁瑣復(fù)雜的函數(shù)。
Visual C++是當(dāng)前 Windows下的主要編程語言之一,其豐富的人機(jī)界面,高效的執(zhí)行效率能方便地形成應(yīng)用軟件中所需要的各種用戶界面和工具,并直接與系統(tǒng)及底層硬件交換數(shù)據(jù);而Matlab作為當(dāng)今世界上應(yīng)用最為廣泛的數(shù)學(xué)軟件,具有非常強(qiáng)大的數(shù)值計(jì)算、數(shù)據(jù)分析處理、系統(tǒng)分析、圖形顯示甚至符號(hào)運(yùn)算的功能。采用 Visual C++與Matlab混合編程技術(shù),將兩者的優(yōu)勢(shì)完美結(jié)合,可以大大提高工程分析計(jì)算、圖像處理的效率,實(shí)現(xiàn)包含復(fù)雜數(shù)學(xué)計(jì)算的工程應(yīng)用性軟件的快速開發(fā)。
實(shí)現(xiàn)Visual C++和Matlab混合編程技術(shù)的方法有多種,根據(jù)其適用程度與功能范圍,常用的方法有以下幾種:
(1)通過Matlab引擎(Engine):采用C/S(客戶機(jī)/服務(wù)器)模式,Matlab作為后臺(tái)服務(wù)器,而Visual C++程序作為前臺(tái)客戶機(jī),通過Windows的動(dòng)態(tài)控件與服務(wù)器通信,實(shí)現(xiàn)Matlab Engine數(shù)據(jù)信息處理。用戶通過 Visual C++實(shí)現(xiàn)對(duì) Matlab Engine的控制。采用該方法幾乎能利用Matlab全部功能,但是需要在機(jī)器上安裝Matlab軟件。
(2)通過Matlab C/C++數(shù)學(xué)函數(shù)庫:Matlab中提供了可以供C/C++語言調(diào)用的數(shù)學(xué)函數(shù)庫,其中的函數(shù)涉及到線形代數(shù)、數(shù)值分析、傅立葉變換、多項(xiàng)式計(jì)算、解微分方程等,通過它們可以在Visual C++中靈活、方便地實(shí)現(xiàn)Matlab中矩陣運(yùn)算功能,但要求讀者對(duì)C/C++語言非常熟悉,該模式不能包括所有的 Matlab函數(shù),尤其是無法充分使用Matlab提供的詳盡的繪圖函數(shù)。
(3)通過 Matlab 編譯器(Compiler):Matlab編譯器(Compiler)能將*.m文件轉(zhuǎn)化成C/C++等不同類型的源代碼,并在此基礎(chǔ)上根據(jù)需要生成動(dòng)態(tài)鏈接庫文件(*.dll),從而大大提高代碼的執(zhí)行效率。尤其是可獨(dú)立運(yùn)行的應(yīng)用程序文件,不需要Matlab環(huán)境的支持,沒有安裝Matlab也能運(yùn)行。
基于易用性、實(shí)用性、高效性和保密性的原則,針對(duì)AT牽引供電系統(tǒng)供電仿真計(jì)算軟件的特性,采用了本文討論的第3種方法。
AT供電方式牽引供電系統(tǒng)計(jì)算軟件是一個(gè)交流電氣化鐵道牽引供電的計(jì)算軟件,能夠完成變壓器容量、牽引網(wǎng)電壓水平、20 min電流分布、電能質(zhì)量評(píng)估、短路電流、軌地電位計(jì)算和仿真;并能為用戶顯示仿真實(shí)時(shí)曲線,便于設(shè)計(jì)分析。
該系統(tǒng)采用Visual C++與Matlab混合編程技術(shù),軟件的Visual C++界面是用戶操作的平臺(tái),采用 Windows風(fēng)格,根據(jù)用戶輸入的行車參數(shù)、系統(tǒng)參數(shù)、牽引網(wǎng)參數(shù)以及設(shè)置供電布局方案,生成2 h的時(shí)實(shí)均勻分布負(fù)荷的牽引供電數(shù)據(jù),實(shí)現(xiàn)AT牽引供電系統(tǒng)的可視化編輯和運(yùn)行。
軟件的核心數(shù)據(jù)處理和圖形繪制由 Matlab接口實(shí)現(xiàn),采用 Matlab語言為實(shí)現(xiàn)變壓器容量、牽引網(wǎng)電壓水平、電流分布、電能質(zhì)量評(píng)估、短路電流、軌地電位編寫的*.m文件,經(jīng)Matlab編譯器轉(zhuǎn)換生成相應(yīng)的動(dòng)態(tài)鏈接庫文件(*.dll),在Visual C++主界面調(diào)用相關(guān)的功能函數(shù),利用Matlab強(qiáng)大的數(shù)值計(jì)算、數(shù)據(jù)分析處理、圖形顯示功能實(shí)現(xiàn)軟件的核心算法。實(shí)現(xiàn)整個(gè)系統(tǒng)的計(jì)算仿真,見圖1。
圖1 軟件系統(tǒng)主體結(jié)構(gòu)示意圖
以新建成都至貴陽鐵路樂山至貴陽段為例,成貴鐵路為雙線電氣化客運(yùn)專線;列車設(shè)計(jì)行車速度200 km/h及以上;限制坡度20‰,個(gè)別地段30‰;牽引供電系統(tǒng)采用單相工頻(50 Hz)25 kV交流制AT供電方式,全線新建11座AT牽引變電所、11座 AT分區(qū)所和 19座 AT所;牽引變電所采用220 kV三相Vx牽引變壓器,接觸網(wǎng)采用全補(bǔ)償彈性鏈形懸掛JTMH-120 +CTMH -150+ LBGLJ -240(正饋線);行車采用250 km/h動(dòng)車組CRH1(16輛編組),按3 min追蹤計(jì)算能力。根據(jù)以上條件及行車運(yùn)量數(shù)據(jù)在VC++程序主界面設(shè)置相關(guān)的參數(shù),如圖2所示。
圖2 Visual C++程序主界面圖
通過 Matlab建立大型的矩陣,采用稀疏矩陣算法,大大提高了軟件的核心數(shù)據(jù)處理能力,計(jì)算精度高,并能方便地輸出各種實(shí)時(shí)曲線和統(tǒng)計(jì)圖形。其主要功能實(shí)現(xiàn)示例如圖3所示。
圖3 Matlab接口程序輸出結(jié)果示意圖
AT供電方式牽引供電系統(tǒng)計(jì)算采用 Visual C++與Matlab混合編程技術(shù),充分將兩者的優(yōu)勢(shì)結(jié)合起來,大大提高了工程分析計(jì)算、圖形處理的效率,實(shí)現(xiàn)了包含復(fù)雜數(shù)學(xué)計(jì)算的工程應(yīng)用性軟件的快速開發(fā)。其精確的計(jì)算能力和良好的圖形輸出界面為AT供電方式牽引供電系統(tǒng)的設(shè)計(jì)提供了強(qiáng)有力的技術(shù)支持。
[1]趙耀,呂運(yùn)鵬.基于COM接口的VC++與MATLAB混合編程[J].計(jì)算機(jī)與信息技術(shù),2008,27(57):57-59.
[2]李傳軍.C語言與 MATLAB接口[M].北京:北京郵電大學(xué)出版社,2004.
[3]曹建猷.電氣化鐵道供電系統(tǒng)[M].北京:中國鐵道出版社,1987.
[4]鐵道部電氣化工程局電氣化勘測(cè)設(shè)計(jì)院.電氣化鐵道設(shè)計(jì)手冊(cè)-牽引供電系統(tǒng).北京:中國鐵道出版社.
[5]李群湛,賀建閩.牽引供電系統(tǒng)分析[M].成都:西南交通大學(xué)出版社,2007.