卡斯柯信號有限公司 職文超 呂新軍 李付軍
本文使用開源軟件Scilab/xcos進行列車動力學建模、仿真,采用開源軟件X2C將模型生成嵌入式C代碼,結合部分手寫驅動代碼,以開源FreeRTOS為實時操作系統,運行在ESP32硬件模組之上,搭建了列車動力學半實物仿真平臺,用以自動駕駛控制算法測試,在保證性能的基礎上,大幅降低系統成本。
列車自動控制系統(ATC)一般由列車自動監控系統(ATS)、列車超速防護系統(ATP)、列車自動駕駛系統(ATO)構成。而自動駕駛算法是ATO系統的核心,直接關系到軌道交通系統的運營效率和乘客舒適度,列車的牽引和制動是其主要控制對象。在具體工程項目的實施過程中,因為不同列車的性能存在偏差,尤其是列車停站過程中電制動、空氣制動的切換,引入了非線性因素,列車模型整定和自動駕駛算法調試工作量大、耗時長。為縮短現場調試時間、提高調試效率,降低項目實施成本,可以提前在實驗室,根據項目所用列車的牽引和制動的動靜態特性參數,搭建動力學模型,用來進行算法調整、參數整定并驗證算法的性能。
而純軟件的仿真也有其缺點,比如沒有考慮模型的浮點運算和MCU上面整形運算的區別、電流或電壓輸出時的精度局限、TIMS控制列車時的通訊延遲等等因素,因此,即便在PC仿真時,得到了滿意的列車控制算法,也要在真實的ATO控制器運行列車控制算法,控制仿真列車,來進一步驗證ATO算法的有效性。也就是說采用半實物仿真,取代部分數學模型,更接近實際情況,從而獲取更確切的信息。
商業軟件Labview或者Matlab/Simulink可以完成列車動力學建模、算法仿真和半實物仿真的全過程,但價格不菲,且可能面臨被國外公司禁止使用的風險。本文探索使用開源軟件、低成本硬件搭建自主可控的列車動力學半實物仿真測試平臺。
仿真平臺由兩部分組成,分別是上位機和下位機。
上位機負責對列車運動學進行建模、仿真,仿真過程中可以對動力學模型的結構(一階時滯模型、二階時滯模型)、參數(延時大小、時間常數等)進行調整,在得到滿足項目要求的模型后,通過工具把模型自動轉換為C代碼,最后把模型代碼編譯成可執行的程序,下載到下位機。
下位機負責與ATO控制器的物理接口、運行列車運動學模型,對于ATO控制器來說,下位機就相當于列車,是ATO控制器的控制對象。列車的運動學模型需要在下位機中實時運行,其實時性直接影響到仿真效果是否足夠真實。因此,嵌入式實時操作系統的選用、驅動程序的設計,就需要考慮到滿足實時性要求。
本文選用ESP32作為主控制芯片,ESP32是自主化的IOT芯片,主頻可達240MHz,可滿足列車模型的計算需求;片上資源豐富,可滿足列車模型外部連接的要求,開源開發環境ESP-IDF基于FreeRTOS開源操作系統,驅動代碼可以GITHUB上直接下載。4MB的Flash模塊為模型程序提供了足夠的保存空間。
FreeRTOS提供了基于優先級的任務調度機制,可以保證模型的實時執行。另外ESP32是雙核的CPU,將列車運動學模型單獨運行在其中一個核,保證模型的實時性,不受其他任務的影響。
ATO自動駕駛系統可以通過里程計、雷達等傳感器獲得列車的運行速度或者位移,ATO控制器(Carbone controller,以下簡稱CC)通過安裝在車軸上的里程計獲知列車的位移、速度、加速度,更新列車在軌道上的位置,經過自動駕駛算法運算之后,得到的牽引或者制動命令通過繼電器、電流環、TIMS網絡接口(MVB、TRDP)輸出給列車。列車控制器的執行周期為100ms。本文中CC與測試平臺之間經過電平轉換,通過硬線連接。如圖1所示。
圖1 仿真平臺與列車控制器的接口
MDR/BDR/MBC分別為牽引命令/制動命令/牽引制動等級,C1/C2/C3分別為里程計的輸入脈沖。
ESP32通過PWM模塊輸出控制三個引腳,輸出相差120°的速度脈沖,分別對應里程計的C1/C2/C3,里程計正向旋轉時,C1/C2/C3依次成120°;里程計反向旋轉時,C1/C3/C2依次成120°。通過改變引腳輸出順序、定時器頻率,即可模擬車輪的正反轉、轉速變化;動力學模型的輸出速度,是編碼里程計模塊的輸入。每個仿真周期,根據仿真列車的速度,通過設置分頻器,調整定時器的輸入時鐘頻率,模擬列車速度的變化。里程計轉過一個齒,代表車輪轉過的實際距離為teeth_dist,那么freq=speed/teeth_dist。這里的freq即為PWM輸出的頻率。
通過邏輯分析儀可以看到,從左到右,列車速度逐漸降低,而C1/C2/C3的周期在逐漸增加的同時,C1/C2/C3之間保持了嚴格的相位差。如圖2所示。
圖2 里程計C1/C2/C3的仿真圖
ESP32從數字引腳GPIO獲取MDR/BDR輸入線的電平高低,從模擬數字轉換器ADC獲取MBC值,模型的輸入可以用以下邏輯表示
Scilab/xcos是由法國國家信息自動化研究所開源的科學計算軟件,在功能上分別與Matlab/Simulink類似,可以方便地進行模型建模與仿真。X2C為Xcos提供了一個工具箱,支持將Xcos搭建的列車運動學模型轉換成嵌入式C代碼,并不與特定硬件平臺綁定,只要對應平臺支持C編譯器即可。整體實現過程如圖3所示。
圖3 運動學模型編譯下載流程
列車運動學模型采用一階帶延遲模型,模型的輸入是ATO控制器向列車請求的加速度命令,模型的輸出是仿真列車的速度,列車速度是對列車加速度積分而來,列車動力學模型如圖4所示。
圖4 列車運動學模型
模型的仿真周期為10ms,使用X2Code工具生成模型的軟件后,使用ESP32提供的高精度定時器釋放信號量,周期性運行模型軟件,模型的輸出為列車速度。
在該平臺上使用ATO駕駛模式,CC控制列車運行在兩站之間,仿真曲線如圖5所示,其中紅色曲線為列車速度、淺綠色曲線為CC輸出的牽引制動命令、深綠色曲線為根據列車仿真平臺給出的C1/C2/C3里程計輸出計算出的列車實際加速度,可以看出仿真平臺較好地模擬了列車的動力學特性。
圖5 ATO駕駛站間仿真
X2C可以生成模型的定點數代碼,對于沒有浮點運算單元FPU的CPU來說,可以有效減輕仿真平臺的計算負擔,以10ms周期性運行模型軟件,對ESP32的CPU利用率進行監測,約在30%左右,計算裕量較大,可支持更復雜的列車模型,為以后模型的精細化留下空間。
本文使用開源軟件,在ESP32硬件平臺,搭建了一套列車運動學仿真平臺,測試表明性能滿足要求,成本大幅下降。根據本文提供的建模方式,不同地鐵項目建立不同的列車動力學模型,是一種快速低成本搭建仿真平臺的方式。后續可以在交互性(比如提供友好的WEB界面)、列車速度的精度、TIMS網絡連接等方面,繼續優化拓展。