白小偉,段成剛,郭 磊
Matlab 在電氣工程及牽引供電系統計算中應用廣泛,尤其是在電路網絡模型的構建、方程求解、數據處理等方面,具有簡單、智能、高效等優點。由于牽引計算專業性強、模型復雜、數據量大,早期通過編寫腳本語言進行的計算多采用過程式的編程,但是面對系統規模的增加,用戶數據交互頻繁,這種過程式編程在模型創建、算法分析、數據交互等方面局限性很大,無法滿足工程需求。如果采用面向對象的編程(OOP)方式,將極大地簡化整個工程的仿真計算,降低計算難度。
列車牽引計算仿真以研究列車牽引運動力學及電氣特性為基礎,借助算法實現列車牽引過程的模擬,最終得到工程預期結果。本文采用基于Matlab 的面向對象編程(OOP)方式,將機車、線路、控制策略進行抽象,采用UML 圖對機車牽引仿真計算的關鍵步驟進行說明,其方案的代碼實現相比采用C#、Java 等編程更加簡單高效。
在Matlab OOP 中實現類設計,其方法與采用C#、Java 等語言類似,同樣離不開類的封裝、繼承、多態的特性,只是代碼實現上發生了變化。Matlab 的OOP 代碼更加簡單。
Matlab 類定義采用“classdef…end”語句,其中屬性定義采用“properties...end”,方法定義采用“methods...end,最后采用腳本對類實現封裝。程序中采用“<”符號實現繼承,提高代碼的復用性;在設計結構中,采用類的層次化設計,從虛擬到具體逐步演化,靈活應用多態增強程序的擴展性能。
采用Matlab 類實現機車類的定義示例如圖1所示。由于類腳本編程中省略了變量類型的定義,相比C#和Java 要智能很多,便于用戶將精力集中于本專業算法編程。

圖1 Mat lab 類設計程序示意圖
列車牽引計算軟件的操作過程通過輸入機車、線路、編組、運行等數據,實現牽引仿真計算。采用UML 圖對模塊進行說明,如圖2 所示。

圖2 軟件模塊化示意圖
在本軟件中,線路數據是通過Matlab 讀取Excel 表格數據,完成線路的車站、坡道、彎道等數據提取,存儲在“cell”數組中。“cell”元包數據類型是Matlab 獨有,便于多維數據操作。線路數據表示意如表1 所示。

表1 線路數據表示意
應用Matlab 構建機車、車輛類,如圖3 所示。采用 UML 類圖簡明直觀展示了類的構建方法,及類之間的泛化關系,利于機車模型多態的實現,提高代碼復用性。

圖3 機車類
除了線路、機車信息數據的建模,列車牽引計算中最重要的是列車運動控制邏輯的實現,即對發車、停站、加速、勻速、制動等進行控制。本文采用給定速度曲線的跟蹤算法,控制列車的運行速度在目標速度值附近。其控制邏輯中,關鍵點是通過實時提取線路位置信息、列車運行狀態,與列車實際位置進行對比,經過信息綜合后,調用牽引計算算法,如圖4 所示。例如,在仿真過程中,機車位置處于下坡區段,速度未達到目標值,則列車牽引狀態標志位置1,否則置0。這樣可以實時調整機車牽引狀態,兼顧停站、限速、信號機等實際控制條件。所有邏輯判斷均在牽引算法庫中實現。

圖4 列車運行邏輯判斷時序圖
機車類型為SS4,車輛類型為滑動軸承DG4,限于篇幅,機車牽引特性、制動特性曲線、車輛閘瓦壓力等數據參見《TB/T 1407.1-2018 列車牽引計算 第1 部分 機車牽引式列車》。特性曲線擬合采用Matlab 線性擬合函數。列車牽引質量為100 t,停站時分300 s,仿真步長為0.1 s。
機車運行速度仿真曲線如圖5 所示,圖中顯示全線車站分布及里程,機車在車站發車、停站的過程模擬在速度曲線中可以看出。區間限速80 km/h,采用速度跟蹤算法,使機車速度保持恒定。

圖5 機車牽引計算速度仿真曲線
牽引計算的合力曲線如圖6 所示,為說明機車運動過程中出力狀態,圖中將坡道數據放大10 倍后疊加在合力曲線中,驗證在上/下坡道過程中機車的出力,仿真結果顯示正確。
按照牽引計算原理計算得到機車合力后,通過推導計算可得到機車瞬時功率、電流值,同時可以得出功率及電流的統計值等,本文不做重點論述。
由于本研究中列車運行控制是基于給定速度曲線的跟蹤控制,速度曲線、合力曲線出現類似脈寬特性實屬正常。

圖6 機車牽引合力/速度結果
本文采用Matlab 面向對象(OOP)編程,給出了電氣化鐵路牽引計算算法的設計方案,實現了列車運行建模與運動控制計算,最終得到了列車合力、速度曲線。通過對列車牽引過程的仿真計算,了解機車出力狀況,可為后續計算提供依據。由于面向對象的編程技術靈活性高,文中尚有諸多不足之處,待將來進一步完善。