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