蔣 爽 袁成奎
隨著鐵路的飛速發展,平交道口日益增多,道口的安全問題逐漸提上日程。目前,道口控制系統軟件設計主要是基于單片機微控制器實現的,單片機的實時性較差,利用一個調度程序完成多任務的處理,增加了道口控制軟件設計的難度與復雜度,隨之而來的一些不可預測的故障也成為了道口控制的安全隱患。
VxWorks操作系統是一個實時、多任務的操作系統,采用了中斷驅動和基于優先級的搶占式調度方式,擁有豐富的任務間通信機制。由于其具有高可靠性和高安全性,目前在許多工業領域得到應用。道口控制系統要求實時準確地反映列車接近、到達、離去的道口作業過程,是一個典型的實時、多任務、安全苛刻的控制系統。
本文提出的基于 VxWorks道口控制軟件的設計方法,就是將復雜的道口控制處理任務交給 Vx-Works操作系統進行處理,以滿足道口控制的實時多任務的要求,并簡化了道口程序設計的復雜性。
道口控制軟件是根據檢測到的傳感器信息,進行邏輯運算來判斷列車在道口中的行進過程。根據列車行進進程對道口設備進行控制,在保證效率的同時,協調公路和鐵路的安全問題。
列車經過道口主要分為 3個階段:接近、到達和離去。道口控制軟件不斷采集各個傳感器的狀態信息,以確定列車的行進階段,進而控制道口防護設備。對于不同的行車階段,軟件上要有相應的進程變量,保證各種關系和時序的順序執行。
在實際的復雜道口作業中,經常是多輛車同時作業,有的列車接近、有的列車到達、有的列車出清等。道口圖形如圖 1所示。

圖 1 道口圖
圖 1中 J1至 J11是兩個方向的列車接近傳感器和離去傳感器,D1至 D4是到達通知傳感器。可能會存在下面這種情況:列車 A剛越過接近傳感器 J1,此時列車 B在到達通知傳感器 D2位置,而列車 C已經到達離去傳感器 J10的位置。復雜道口經常會出現多車進行作業,并且所處的進程也是不同的。
根據復雜道口控制程序的實時、多任務的特點,必須設計一套安全、可靠的調度程序來完成各個任務之間的操作。基于單片機的處理方法是為每個過程設計一個進程標志,通過對進程標志進行賦值來調用下一個進程模塊。該方法的主要問題是無法實現高優先級任務的實時調度,只能按照設計的順序執行程序,這樣就降低了任務的響應速度和程序的執行效率,而且還容易產生數據的誤操作。
VxWorks操作系統是一個實時多任務操作系統,基于優先級搶占的任務調度特性剛好滿足道口控制軟件的特點與要求。可以將道口控制軟件劃分成 VxWorks的系統任務,交由該操作系統內核調度便可實現道口軟件控制功能。信號量是提供任務間通信的最優選擇,也是提供任務間同步和互斥的主要手段,可以實現道口數據的保護。Tornado是 VxWorks的集成開發環境,內部帶有 VxSim仿真器和交叉調試器CrossWind,這樣可以在不依賴硬件的情況下對道口控制軟件進行開發和調試。因此,基于VxWorks的道口控制軟件的開發是可行的。
VxWorks操作系統的多任務處理中,可以對 C語言程序進行模塊劃分,將模塊函數作為taskSpawn()一個參數,調用 taskSpawn()就可以觸發相應的函數。根據道口軟件的功能需求將其分解成不同的功能模塊,并將它們設置成 VxWorks操作系統下的任務。
VxWorks具有 256個系統優先級,優先級 0最高,255最低。在對道口任務進行劃分時就對每個任務進行優先級等級設計,不同模塊的優先級應有所不同。對于進行邏輯判斷的模塊優先級可以設置高一些,對于驅動和采集接口模塊可以設置成較低的優先級。程序中包括以下幾個任務:
1.中斷任務處理。中斷任務實現 2個功能。一是可以通過上位機界面的功能按鈕來單獨控制道口設備;二是將道口設備狀態信息傳送到上位機。
2.傳感器信息采集任務。采集傳感器狀態信息,并將其轉化成道口控制軟件能識別的數據信息。
3.驅動道口設備任務。通過輸出設備將驅動變量輸出到相應的驅動電路上,以驅動聲光報警設備和欄木機。
4.單獨控制按鈕信息接收任務。接收上位機的操作信息,對操作命令進行命令解析。如果符合操作要求就執行相應的任務模塊。
5.邏輯運算模塊。邏輯運算模塊是道口控制軟件的核心,主要是根據傳感器信息判斷列車的走行階段,自動進行聲光報警和欄木機的控制。
各個任務優先級及與操作系統之間的關系如圖2所示。

圖 2 道口軟件優先級劃分與確定
系統上電啟動后,VxWorks首先會執行系統任務,如根任務,之后根據各個任務不同優先級來執行軟件的各個模塊。
VxWorks提供了多種任務間通信機制,如信號量、消息隊列和管道等。在道口控制程序中采用的就是信號量,并且各個狀態標志都采用全局變量,存在于內存中。因此,可以采用共享內存的通信方式,并以二進制信號量方式實現對共享數據的互斥訪問。
在邏輯處理過程中需要一個嚴格的時序,并且需要滿足一定的條件才能執行。因此可以為邏輯運算的每個模塊設置相應的二進制信號量,當條件滿足時啟動該任務,任務結束后再釋放下一個任務的信號量。這樣實現了任務按一定時序的獨立運行,并且實現了道口數據的互斥訪問,提高了道口控制軟件的安全性。
在基于VxWorks的操作系統中,道口控制機采用 Motorola生產的 PowerPC系列的微處理器自制開發板。開發板上集成了串口、并口、以太網口及固態電子盤接口,通信卡、CAN卡、底層硬件驅動程序和板級支持包都是出廠時已設置好的,只要將 VxWorks操作系統移植到固態電子盤中,進行相應配置就可以應用。
根據軟件開發流程,對該道口進行功能需求分析和詳細設計之后,在集成開發環境 Tornado2.0下進行基于 C語言的軟件開發。通過其集成的ViSim和 CrossWind仿真調試之后,將 VxWorks操作系統和應用程序代碼一同下載到道口控制機中。通過實際的調試,系統運行穩定,能夠實現道口控制的基本功能。
與基于單片機的道口控制系統相比,該系統具有以下優點:
1.不用設計單獨的任務調度函數。
2.具有高可靠性的運行環境。
3.系統實時性好,響應速度快。
4.采用結構化、模塊化設計思想,程序簡單清晰。
與基于單片機的道口控制系統相比,基于 Vx-Works實時多任務操作系統的道口控制系統具有更多的優點。不僅提高了整個系統的可靠性和安全性而且減少了程序設計的復雜性,使程序結構更加清晰,提高了數據的安全性。因此將 VxWorks應用在對實時性、安全性要求苛刻的復雜道口控制系統中具有一定的現實意義。
[1] 秦滎英.DX 3型道口信號設備[M].北京:中國鐵道出版社,1994.
[2] 周啟平.VxWorks開發指南與 Tornado使用手冊[M]北京:中國電力出版社,2004.
[3] 李方敏.VxWorks高級程序設計[M].北京:清華大學出版社,2004.
(責任編輯:張 利)