蔣 爽 袁成奎
隨著鐵路的飛速發(fā)展,平交道口日益增多,道口的安全問題逐漸提上日程。目前,道口控制系統(tǒng)軟件設(shè)計主要是基于單片機微控制器實現(xiàn)的,單片機的實時性較差,利用一個調(diào)度程序完成多任務(wù)的處理,增加了道口控制軟件設(shè)計的難度與復(fù)雜度,隨之而來的一些不可預(yù)測的故障也成為了道口控制的安全隱患。
VxWorks操作系統(tǒng)是一個實時、多任務(wù)的操作系統(tǒng),采用了中斷驅(qū)動和基于優(yōu)先級的搶占式調(diào)度方式,擁有豐富的任務(wù)間通信機制。由于其具有高可靠性和高安全性,目前在許多工業(yè)領(lǐng)域得到應(yīng)用。道口控制系統(tǒng)要求實時準(zhǔn)確地反映列車接近、到達(dá)、離去的道口作業(yè)過程,是一個典型的實時、多任務(wù)、安全苛刻的控制系統(tǒng)。
本文提出的基于 VxWorks道口控制軟件的設(shè)計方法,就是將復(fù)雜的道口控制處理任務(wù)交給 Vx-Works操作系統(tǒng)進(jìn)行處理,以滿足道口控制的實時多任務(wù)的要求,并簡化了道口程序設(shè)計的復(fù)雜性。
道口控制軟件是根據(jù)檢測到的傳感器信息,進(jìn)行邏輯運算來判斷列車在道口中的行進(jìn)過程。根據(jù)列車行進(jìn)進(jìn)程對道口設(shè)備進(jìn)行控制,在保證效率的同時,協(xié)調(diào)公路和鐵路的安全問題。
列車經(jīng)過道口主要分為 3個階段:接近、到達(dá)和離去。道口控制軟件不斷采集各個傳感器的狀態(tài)信息,以確定列車的行進(jìn)階段,進(jìn)而控制道口防護(hù)設(shè)備。對于不同的行車階段,軟件上要有相應(yīng)的進(jìn)程變量,保證各種關(guān)系和時序的順序執(zhí)行。
在實際的復(fù)雜道口作業(yè)中,經(jīng)常是多輛車同時作業(yè),有的列車接近、有的列車到達(dá)、有的列車出清等。道口圖形如圖 1所示。
圖 1 道口圖
圖 1中 J1至 J11是兩個方向的列車接近傳感器和離去傳感器,D1至 D4是到達(dá)通知傳感器??赡軙嬖谙旅孢@種情況:列車 A剛越過接近傳感器 J1,此時列車 B在到達(dá)通知傳感器 D2位置,而列車 C已經(jīng)到達(dá)離去傳感器 J10的位置。復(fù)雜道口經(jīng)常會出現(xiàn)多車進(jìn)行作業(yè),并且所處的進(jìn)程也是不同的。
根據(jù)復(fù)雜道口控制程序的實時、多任務(wù)的特點,必須設(shè)計一套安全、可靠的調(diào)度程序來完成各個任務(wù)之間的操作?;趩纹瑱C的處理方法是為每個過程設(shè)計一個進(jìn)程標(biāo)志,通過對進(jìn)程標(biāo)志進(jìn)行賦值來調(diào)用下一個進(jìn)程模塊。該方法的主要問題是無法實現(xiàn)高優(yōu)先級任務(wù)的實時調(diào)度,只能按照設(shè)計的順序執(zhí)行程序,這樣就降低了任務(wù)的響應(yīng)速度和程序的執(zhí)行效率,而且還容易產(chǎn)生數(shù)據(jù)的誤操作。
VxWorks操作系統(tǒng)是一個實時多任務(wù)操作系統(tǒng),基于優(yōu)先級搶占的任務(wù)調(diào)度特性剛好滿足道口控制軟件的特點與要求??梢詫⒌揽诳刂栖浖澐殖?VxWorks的系統(tǒng)任務(wù),交由該操作系統(tǒng)內(nèi)核調(diào)度便可實現(xiàn)道口軟件控制功能。信號量是提供任務(wù)間通信的最優(yōu)選擇,也是提供任務(wù)間同步和互斥的主要手段,可以實現(xiàn)道口數(shù)據(jù)的保護(hù)。Tornado是 VxWorks的集成開發(fā)環(huán)境,內(nèi)部帶有 VxSim仿真器和交叉調(diào)試器CrossWind,這樣可以在不依賴硬件的情況下對道口控制軟件進(jìn)行開發(fā)和調(diào)試。因此,基于VxWorks的道口控制軟件的開發(fā)是可行的。
VxWorks操作系統(tǒng)的多任務(wù)處理中,可以對 C語言程序進(jìn)行模塊劃分,將模塊函數(shù)作為taskSpawn()一個參數(shù),調(diào)用 taskSpawn()就可以觸發(fā)相應(yīng)的函數(shù)。根據(jù)道口軟件的功能需求將其分解成不同的功能模塊,并將它們設(shè)置成 VxWorks操作系統(tǒng)下的任務(wù)。
VxWorks具有 256個系統(tǒng)優(yōu)先級,優(yōu)先級 0最高,255最低。在對道口任務(wù)進(jìn)行劃分時就對每個任務(wù)進(jìn)行優(yōu)先級等級設(shè)計,不同模塊的優(yōu)先級應(yīng)有所不同。對于進(jìn)行邏輯判斷的模塊優(yōu)先級可以設(shè)置高一些,對于驅(qū)動和采集接口模塊可以設(shè)置成較低的優(yōu)先級。程序中包括以下幾個任務(wù):
1.中斷任務(wù)處理。中斷任務(wù)實現(xiàn) 2個功能。一是可以通過上位機界面的功能按鈕來單獨控制道口設(shè)備;二是將道口設(shè)備狀態(tài)信息傳送到上位機。
2.傳感器信息采集任務(wù)。采集傳感器狀態(tài)信息,并將其轉(zhuǎn)化成道口控制軟件能識別的數(shù)據(jù)信息。
3.驅(qū)動道口設(shè)備任務(wù)。通過輸出設(shè)備將驅(qū)動變量輸出到相應(yīng)的驅(qū)動電路上,以驅(qū)動聲光報警設(shè)備和欄木機。
4.單獨控制按鈕信息接收任務(wù)。接收上位機的操作信息,對操作命令進(jìn)行命令解析。如果符合操作要求就執(zhí)行相應(yīng)的任務(wù)模塊。
5.邏輯運算模塊。邏輯運算模塊是道口控制軟件的核心,主要是根據(jù)傳感器信息判斷列車的走行階段,自動進(jìn)行聲光報警和欄木機的控制。
各個任務(wù)優(yōu)先級及與操作系統(tǒng)之間的關(guān)系如圖2所示。
圖 2 道口軟件優(yōu)先級劃分與確定
系統(tǒng)上電啟動后,VxWorks首先會執(zhí)行系統(tǒng)任務(wù),如根任務(wù),之后根據(jù)各個任務(wù)不同優(yōu)先級來執(zhí)行軟件的各個模塊。
VxWorks提供了多種任務(wù)間通信機制,如信號量、消息隊列和管道等。在道口控制程序中采用的就是信號量,并且各個狀態(tài)標(biāo)志都采用全局變量,存在于內(nèi)存中。因此,可以采用共享內(nèi)存的通信方式,并以二進(jìn)制信號量方式實現(xiàn)對共享數(shù)據(jù)的互斥訪問。
在邏輯處理過程中需要一個嚴(yán)格的時序,并且需要滿足一定的條件才能執(zhí)行。因此可以為邏輯運算的每個模塊設(shè)置相應(yīng)的二進(jìn)制信號量,當(dāng)條件滿足時啟動該任務(wù),任務(wù)結(jié)束后再釋放下一個任務(wù)的信號量。這樣實現(xiàn)了任務(wù)按一定時序的獨立運行,并且實現(xiàn)了道口數(shù)據(jù)的互斥訪問,提高了道口控制軟件的安全性。
在基于VxWorks的操作系統(tǒng)中,道口控制機采用 Motorola生產(chǎn)的 PowerPC系列的微處理器自制開發(fā)板。開發(fā)板上集成了串口、并口、以太網(wǎng)口及固態(tài)電子盤接口,通信卡、CAN卡、底層硬件驅(qū)動程序和板級支持包都是出廠時已設(shè)置好的,只要將 VxWorks操作系統(tǒng)移植到固態(tài)電子盤中,進(jìn)行相應(yīng)配置就可以應(yīng)用。
根據(jù)軟件開發(fā)流程,對該道口進(jìn)行功能需求分析和詳細(xì)設(shè)計之后,在集成開發(fā)環(huán)境 Tornado2.0下進(jìn)行基于 C語言的軟件開發(fā)。通過其集成的ViSim和 CrossWind仿真調(diào)試之后,將 VxWorks操作系統(tǒng)和應(yīng)用程序代碼一同下載到道口控制機中。通過實際的調(diào)試,系統(tǒng)運行穩(wěn)定,能夠?qū)崿F(xiàn)道口控制的基本功能。
與基于單片機的道口控制系統(tǒng)相比,該系統(tǒng)具有以下優(yōu)點:
1.不用設(shè)計單獨的任務(wù)調(diào)度函數(shù)。
2.具有高可靠性的運行環(huán)境。
3.系統(tǒng)實時性好,響應(yīng)速度快。
4.采用結(jié)構(gòu)化、模塊化設(shè)計思想,程序簡單清晰。
與基于單片機的道口控制系統(tǒng)相比,基于 Vx-Works實時多任務(wù)操作系統(tǒng)的道口控制系統(tǒng)具有更多的優(yōu)點。不僅提高了整個系統(tǒng)的可靠性和安全性而且減少了程序設(shè)計的復(fù)雜性,使程序結(jié)構(gòu)更加清晰,提高了數(shù)據(jù)的安全性。因此將 VxWorks應(yīng)用在對實時性、安全性要求苛刻的復(fù)雜道口控制系統(tǒng)中具有一定的現(xiàn)實意義。
[1] 秦滎英.DX 3型道口信號設(shè)備[M].北京:中國鐵道出版社,1994.
[2] 周啟平.VxWorks開發(fā)指南與 Tornado使用手冊[M]北京:中國電力出版社,2004.
[3] 李方敏.VxWorks高級程序設(shè)計[M].北京:清華大學(xué)出版社,2004.
(責(zé)任編輯:張 利)