楊小波,冉德強,張 楊,李 偉
(中車株洲電力機車有限公司,湖南 株洲 412000)
目前軌道交通車輛列控軟件設計集成開發環境主要有Multiprog、IsaGRAF、CodeSys等,根據開發環境不同各開發平臺的軟件設計方式略有差異,但平臺內使用的編程語言均遵循IEC61131-3標準。本文研究對象為IsaGRAF環境下,列控軟件的設計與實現方法,IsaGRAF軟件由芬蘭EKE電子公司開發。EKE電子有限公司致力于列車通信管理系統(TCMS)和列車通信網絡(TCN)設備的設計與生產。
ISaGRAF是行業內領先,同時符合IEC61131-3標準和IEC61499標準的,用于創建工業自動化產品的固件和工作臺[1]。
ISaGRAF是一套與硬件無關,并以視窗為開發環境的可編程控制語言設計開發的軟件。在ISaGRAF3.3版中更將流程圖語言(Flow Chart,FC)納入成為第六種程序設計語言,使得ISaGRAF完全支持世界上自動化行業的六大程序設計語言,成為最強大的可編程開發工具[2]。ISaGRAF 支持IEC61131-3標準中的5種編程語言[3]。IEC61131-3定義了5種編程語言的語法和描述它們的表示法以及語言元素,如表1所示。

表1 IEC61131-3中的編程語言
開發列車網絡控制系統(以下簡稱:TCMS)軟件時,采用的組件有操作系統、固件和TDB文件以及車輛控制單元(以下簡稱:VCU),遠程輸入輸出模塊(以下簡稱:RIOM)。
TDBuild為ISaGRAF的自帶工具,用于定義I/O硬件類型或增加新的數據結構、函數以及功能模塊。TDBuild工具可將子系統的所有變量組成一個結構體,每個信號變量的字位偏移都能根據數據類型自動計算,在編碼時直接調用生成的結構體即可,無需逐一命名軟件中所用的變量,極大地提高了開發效率。
ISaGRAF是基于多子程序(以下簡稱:PRG)的開發環境,軟件執行嚴格按照程序循環周期執行。并且軟件執行的順序與PRG的先后順序完全對應,如圖1所示。VCU程序周期可由用戶按需自行配置,在實際項目程序執行周期一般為50 ms。

圖1 程序執行示意圖
在軟件開發時,子程序的前后順序按圖2所示的數據流圖進行設置。

圖2 程序執行數據流圖
設備間通信需要將傳輸的字節包轉化成具有實際意義的信號,這類工作在TDBuild里完成。在TDBuild建立數據結構,并為數據結構里的每個信號都確定偏移量,當該數據結構獲取到相應長度的數據后,將按偏移量自動分解成每個信號的數值。
1.3.1 TCMS與MVB子系統
VCU與MVB子系統采用MVB端口的結構,每個端口根據預先定義的數據量的不同體現為2字節、4字節、8字節、16字節或32字節的數據包,如圖3所示。

圖3 MVB端口的數據結構圖
1.3.2 TCMS與其他子系統
其他子系統包含非MVB/CAN通信的子系統,主要有SPDS、無線主機等。這些子系統通信所采用的數據結構定義與MVB/CAN子系統類似,區別在于MVB/CAN的數據包大小固定,即使沒有足夠的數據也仍需要以0填充,而非MVB/CAN子系統則根據子系統數據接口規范文件的需求定義數據結構長度。
完整的網絡控制系統軟件主要由參數、變量組、程序和功能塊組成。參數主要包括I/O配線和已定義的字,I/O配線是硬件設備板卡地址或各子系統的地址與結構體變量綁定的體現。變量組程序則是按系統將變量分為不同的組,便于調試。程序是實現列車的邏輯控制功能。包括網絡初始化、數據輸入、數據輸出和對各子系統診斷與控制。列車的邏輯控制部分的程序有的需要調用功能塊來實現其功能。如司機室占有、加減速度測試等。可根據項目需要自定義功能塊實現軟件功能。
2.2.1 軟件架構
VCU由CPU板卡、MVB板卡以及電源板卡組成。板卡之間通過背板總線VME總線連接。VCU軟件結構主要由7個模塊組成:硬件輸入輸出模塊、輸入輸出映射模塊、邏輯控制模塊、故障診斷模塊、記錄模塊、協議/時間管理模塊以及變量字典組成,如圖4所示。

圖4 VCU軟件架構圖
根據TCMS系統要求,VCU軟件須滿足主從自動切換功能,主從設備互為熱備冗余。
TCMS中存在2個VCU,正常情況下只有一個VCU為車輛管理的主節點,稱之為強主,而另一個VCU則為備份的主節點,為弱主。強主和弱主的區別僅針對子系統而言,通常由主設備完成對車輛的控制。以六編組地鐵車輛為例,默認1車的VCU為強主。軟件啟動時,1車先給6車的VCU發送累加值,6車的VCU比1車VCU則慢1 s。所以6車的VCU先判斷出1車的VCU已在線,并且為強主,則6車VCU將不再給1車VCU發送累加值。主從VCU的判斷流程如圖5所示。

圖5 VCU主從判斷流程圖
ISaGRAF軟件應用工程的組織結構如圖6所示。在鏈路架構中,用戶可定義程序使用的參數、變量組、程序、函數和功能塊;在硬件架構中,用戶可配置程序的網絡屬性(連接到Target的總線類型)、Target配置屬性和資源屬性;在數據字典中,用戶定義變量和參數、定義函數和功能塊的變量屬性以及引用由TDB工具生成的數據結構體;I/O配線實現了本地變量與其他TCMS設備的數據交換,首先I/O配線將本地變量映射至相應協議的數據包中,再通過UDP、MVB或CAN協議邏輯將數據包發送至總線或以太網,UDP、MVB或CAN協議的實現封裝在底層庫。

圖6 ISaGRAF軟件應用工程架構圖
2.2.2 變量字典
軟件程序中使用到的所有變量均在變量字典中定義,包括全局變量、結構體實例化等。VCU的變量字典依據列車各子系統數據接口規范(MVB通信協議)進行設計。
2.2.3 硬件輸入輸出
硬件輸入輸出是VCU與其他子系統進行通信的鏈接,VCU為每個子系統設定通信參數以及配置數據映射。如前述的輸入輸出變量通過綁定相應的IO配線通道進行數據交換。
2.2.4 輸入輸出映射
輸入輸出映射是以ISaGRAF程序的POU形式體現的,輸入輸出映射塊用于數據的匯總及篩選。加速度測試由P_AccTest程序進行輸入輸出映射。
2.2.5 邏輯控制
邏輯控制是VCU軟件的核心功能,軟件的所有控制功能均在這部分完成。
2.2.6 循環記錄
循環記錄功能主要用于記錄周期性的數據,數據包括數字信號和模擬信號,具體的數據列表根據項目確定,記錄功能由TDB文件提供的底層C功能塊LogData實現。
2.2.7 故障檢測
故障檢測模塊是將VCU獲取的各子系統故障信號判定是否觸發或恢復,并記錄至本地內存,需要記錄的信號列表根據項目需求確定。
本文以加速度測試程序開發為例,主要講述列控軟件設計的邏輯控制部分。加速度測試程序使用FBD語言實現。在該程序中調用AccTest功能塊來計算列車運行時的加速度。AccTest功能塊需要計算列車運行的加速度,利用ST語言來編寫更加簡潔、容易。加速度測試的程序開發使用FBD語言與ST語言相結合的方式,很好地利用了2種編程語言的優勢,提高了開發者的工作效率。加速度測試功能塊的參數定義如表2所示。

表2 加速度測試功能塊的參數定義
說明:如圖7所示,HMI占有端設置的加速度測試起始速度和加速度測試終止速度均有乘以10的運算,此處為單位換算(1=0.1 km/h)。輸入變量及其含義如表3所示。

圖7 加速度測試程序框圖

表3 加速度測試輸入變量及其含義
輸出變量及其含義如表4所示。

表4 加速度測試輸出變量及其含義
車輛操作人員在HMI屏上設置加速度測試的起始速度和終止速度并點擊開始測試時,VCU將通過如圖7所示的程序計算出列車在該測試區間內的實時加速度、平均加速度和加速距離,再將三者的數據值發送給HMI進行顯示。AccTest是加速度測試功能塊,其內部流程如圖8所示。

圖8 加速度測試功能塊實現流程圖
加速度測試功能塊將加速度相關量計算的具體實現過程封裝在一起,這樣該功能塊具有更好的移植性,并且可以對其單獨加密,在必要時可以增強技術的安全性。
本文利用ISaGRAF實現了列車加減速度計算程序,該程序僅僅是列控軟件中的一個子程序,其他程序開發遵循相同的開發規范及設計流程,共同完成車輛的邏輯控制。此外,文中提到的FBD和ST兩種編程語言結合的軟件開發方式,提高了軟件開發效率,便于軟件調試,也為軌道交通領域軟件模塊化設計思想提供了參考。該設計方式已在寧波、昆明等地鐵車輛中運用,能高效、可靠地完成車輛控制功能,具有良好的實際應用效果。