白小偉,段成剛,郭 磊
Matlab 在電氣工程及牽引供電系統(tǒng)計(jì)算中應(yīng)用廣泛,尤其是在電路網(wǎng)絡(luò)模型的構(gòu)建、方程求解、數(shù)據(jù)處理等方面,具有簡(jiǎn)單、智能、高效等優(yōu)點(diǎn)。由于牽引計(jì)算專(zhuān)業(yè)性強(qiáng)、模型復(fù)雜、數(shù)據(jù)量大,早期通過(guò)編寫(xiě)腳本語(yǔ)言進(jìn)行的計(jì)算多采用過(guò)程式的編程,但是面對(duì)系統(tǒng)規(guī)模的增加,用戶(hù)數(shù)據(jù)交互頻繁,這種過(guò)程式編程在模型創(chuàng)建、算法分析、數(shù)據(jù)交互等方面局限性很大,無(wú)法滿(mǎn)足工程需求。如果采用面向?qū)ο蟮木幊蹋∣OP)方式,將極大地簡(jiǎn)化整個(gè)工程的仿真計(jì)算,降低計(jì)算難度。
列車(chē)牽引計(jì)算仿真以研究列車(chē)牽引運(yùn)動(dòng)力學(xué)及電氣特性為基礎(chǔ),借助算法實(shí)現(xiàn)列車(chē)牽引過(guò)程的模擬,最終得到工程預(yù)期結(jié)果。本文采用基于Matlab 的面向?qū)ο缶幊蹋∣OP)方式,將機(jī)車(chē)、線路、控制策略進(jìn)行抽象,采用UML 圖對(duì)機(jī)車(chē)牽引仿真計(jì)算的關(guān)鍵步驟進(jìn)行說(shuō)明,其方案的代碼實(shí)現(xiàn)相比采用C#、Java 等編程更加簡(jiǎn)單高效。
在Matlab OOP 中實(shí)現(xiàn)類(lèi)設(shè)計(jì),其方法與采用C#、Java 等語(yǔ)言類(lèi)似,同樣離不開(kāi)類(lèi)的封裝、繼承、多態(tài)的特性,只是代碼實(shí)現(xiàn)上發(fā)生了變化。Matlab 的OOP 代碼更加簡(jiǎn)單。
Matlab 類(lèi)定義采用“classdef…end”語(yǔ)句,其中屬性定義采用“properties...end”,方法定義采用“methods...end,最后采用腳本對(duì)類(lèi)實(shí)現(xiàn)封裝。程序中采用“<”符號(hào)實(shí)現(xiàn)繼承,提高代碼的復(fù)用性;在設(shè)計(jì)結(jié)構(gòu)中,采用類(lèi)的層次化設(shè)計(jì),從虛擬到具體逐步演化,靈活應(yīng)用多態(tài)增強(qiáng)程序的擴(kuò)展性能。
采用Matlab 類(lèi)實(shí)現(xiàn)機(jī)車(chē)類(lèi)的定義示例如圖1所示。由于類(lèi)腳本編程中省略了變量類(lèi)型的定義,相比C#和Java 要智能很多,便于用戶(hù)將精力集中于本專(zhuān)業(yè)算法編程。
圖1 Mat lab 類(lèi)設(shè)計(jì)程序示意圖
列車(chē)牽引計(jì)算軟件的操作過(guò)程通過(guò)輸入機(jī)車(chē)、線路、編組、運(yùn)行等數(shù)據(jù),實(shí)現(xiàn)牽引仿真計(jì)算。采用UML 圖對(duì)模塊進(jìn)行說(shuō)明,如圖2 所示。
圖2 軟件模塊化示意圖
在本軟件中,線路數(shù)據(jù)是通過(guò)Matlab 讀取Excel 表格數(shù)據(jù),完成線路的車(chē)站、坡道、彎道等數(shù)據(jù)提取,存儲(chǔ)在“cell”數(shù)組中?!癱ell”元包數(shù)據(jù)類(lèi)型是Matlab 獨(dú)有,便于多維數(shù)據(jù)操作。線路數(shù)據(jù)表示意如表1 所示。
表1 線路數(shù)據(jù)表示意
應(yīng)用Matlab 構(gòu)建機(jī)車(chē)、車(chē)輛類(lèi),如圖3 所示。采用 UML 類(lèi)圖簡(jiǎn)明直觀展示了類(lèi)的構(gòu)建方法,及類(lèi)之間的泛化關(guān)系,利于機(jī)車(chē)模型多態(tài)的實(shí)現(xiàn),提高代碼復(fù)用性。
圖3 機(jī)車(chē)類(lèi)
除了線路、機(jī)車(chē)信息數(shù)據(jù)的建模,列車(chē)牽引計(jì)算中最重要的是列車(chē)運(yùn)動(dòng)控制邏輯的實(shí)現(xiàn),即對(duì)發(fā)車(chē)、停站、加速、勻速、制動(dòng)等進(jìn)行控制。本文采用給定速度曲線的跟蹤算法,控制列車(chē)的運(yùn)行速度在目標(biāo)速度值附近。其控制邏輯中,關(guān)鍵點(diǎn)是通過(guò)實(shí)時(shí)提取線路位置信息、列車(chē)運(yùn)行狀態(tài),與列車(chē)實(shí)際位置進(jìn)行對(duì)比,經(jīng)過(guò)信息綜合后,調(diào)用牽引計(jì)算算法,如圖4 所示。例如,在仿真過(guò)程中,機(jī)車(chē)位置處于下坡區(qū)段,速度未達(dá)到目標(biāo)值,則列車(chē)牽引狀態(tài)標(biāo)志位置1,否則置0。這樣可以實(shí)時(shí)調(diào)整機(jī)車(chē)牽引狀態(tài),兼顧停站、限速、信號(hào)機(jī)等實(shí)際控制條件。所有邏輯判斷均在牽引算法庫(kù)中實(shí)現(xiàn)。
圖4 列車(chē)運(yùn)行邏輯判斷時(shí)序圖
機(jī)車(chē)類(lèi)型為SS4,車(chē)輛類(lèi)型為滑動(dòng)軸承DG4,限于篇幅,機(jī)車(chē)牽引特性、制動(dòng)特性曲線、車(chē)輛閘瓦壓力等數(shù)據(jù)參見(jiàn)《TB/T 1407.1-2018 列車(chē)牽引計(jì)算 第1 部分 機(jī)車(chē)牽引式列車(chē)》。特性曲線擬合采用Matlab 線性擬合函數(shù)。列車(chē)牽引質(zhì)量為100 t,停站時(shí)分300 s,仿真步長(zhǎng)為0.1 s。
機(jī)車(chē)運(yùn)行速度仿真曲線如圖5 所示,圖中顯示全線車(chē)站分布及里程,機(jī)車(chē)在車(chē)站發(fā)車(chē)、停站的過(guò)程模擬在速度曲線中可以看出。區(qū)間限速80 km/h,采用速度跟蹤算法,使機(jī)車(chē)速度保持恒定。
圖5 機(jī)車(chē)牽引計(jì)算速度仿真曲線
牽引計(jì)算的合力曲線如圖6 所示,為說(shuō)明機(jī)車(chē)運(yùn)動(dòng)過(guò)程中出力狀態(tài),圖中將坡道數(shù)據(jù)放大10 倍后疊加在合力曲線中,驗(yàn)證在上/下坡道過(guò)程中機(jī)車(chē)的出力,仿真結(jié)果顯示正確。
按照牽引計(jì)算原理計(jì)算得到機(jī)車(chē)合力后,通過(guò)推導(dǎo)計(jì)算可得到機(jī)車(chē)瞬時(shí)功率、電流值,同時(shí)可以得出功率及電流的統(tǒng)計(jì)值等,本文不做重點(diǎn)論述。
由于本研究中列車(chē)運(yùn)行控制是基于給定速度曲線的跟蹤控制,速度曲線、合力曲線出現(xiàn)類(lèi)似脈寬特性實(shí)屬正常。
圖6 機(jī)車(chē)牽引合力/速度結(jié)果
本文采用Matlab 面向?qū)ο螅∣OP)編程,給出了電氣化鐵路牽引計(jì)算算法的設(shè)計(jì)方案,實(shí)現(xiàn)了列車(chē)運(yùn)行建模與運(yùn)動(dòng)控制計(jì)算,最終得到了列車(chē)合力、速度曲線。通過(guò)對(duì)列車(chē)牽引過(guò)程的仿真計(jì)算,了解機(jī)車(chē)出力狀況,可為后續(xù)計(jì)算提供依據(jù)。由于面向?qū)ο蟮木幊碳夹g(shù)靈活性高,文中尚有諸多不足之處,待將來(lái)進(jìn)一步完善。