淺談基于UML的城軌列車超速防護系統建模_PHP教程
推薦:關于php的職業分析--如何成為一名優秀的phper最近經常有朋友跟我講,很想來學習php,但又不敢來學,為什么?說是有人跟他講,php沒前途,程序員一大把,php程序員日益呈現白菜價趨勢。我對我的朋友講:只要你有技術過硬的信心,你完全可以按照自己的職業規劃前行。 不錯,現在的php程序員很多,但這個群
摘要:分析I-Logix公司的Rhapsody軟件的主要特性在Rhapsody開發環境下對北京地鐵1號線的ATP系統車載設備進行UML建模,并介紹系統級調試功能。
統一建模語言UML(UnifiedModelingLanguage)是迄今為止最好的面向對象的統一建模語言,它取代了以往各種面向對象表示法,可以全面、細致地同時描敘業務和軟件系統,實現軟件開發全生命周期建模的無縫統一。UML與OOAD(面向對象分析和設計)工具的結合,更使軟件工程思想的實現往前走了一大步。
美國I-Logix公司的Rhapsody是一種基于UML2.0的面向嵌入式應用開發的集成可視化環境,它為嵌入式軟件的開發提供了一個“四化”的支撐平臺,即可視化、工程化、自動化和團隊化。Rhapsody正在迅速成為國防/航空航天領域首選的MDD(模型驅動開發,ModelDrivenDevelopment)開發環境,在一系列項目中(如FutureCombatSystems(FCS)andF22等)被作為主要開發工具來使用。
列車自動防護系統(ATP系統)是城市軌道交通運行控制系統的組成部分之一。它主要保證提供速度限制信息以保持列車間的安全間隔,使列車在符合限制速度的標準下運行。ATP車載設備是列車自動防護系統的一個重要組成部分,負責完成ATP車載部分的功能。北京地鐵1號線所采用的LCF100DT型車載設備是保證列車運行安全、提高運輸能力的地鐵信號專用技術的行車安全控制設備。本文首先介紹了Rhapsody的主要特性———實時框架,然后分析了ATP系統的工作原理,并在Rhapsody基礎上對北京地鐵1號線的ATP系統車載設備軟件系統進行建模,最后分析了系統級調試功能。
1 Rhapsody框架特性
Rhapsody的實時框架是一個垂直框架,嵌入式和實時應用專門選擇和優化的設計模板,實現了用于內務處理(如狀態機的實現、容器類的實現等)代碼的重寫,實時框架使得設計的模型與操作系統無關,通過實時框架,應用程序可以方便地從一個實時操作系統移植到其他的操作系統。
實時框架包含4個主要部分,如圖1所示。對象執行框架提供UML模型執行的基本結構管理線程狀態機的執行,對象間關聯模式管理對象間的一對多、多對多關系,抽象操作系統與框架自身和實時操作系統無關,便于框架的移植動畫,調試框架可以使用戶進行基于模型的調試,如基于狀態圖的斷點設置、捕捉不同對象間消息映射等。下面分析對象執行框架中的主要元素。

2 自動超速防護系統
2.1 自動超速防護系統概要
ATP(AutomaticTrainProtection,列車自動防護系統)具有超速防護、零速度檢測和車門限制等功能,提供速度限制信息,以保持列車間的安全間隔,使列車在符合限制速度的標準下運行。超速防護車載設備是列車超速防護系統的一個重要組成部分,它是依據從ATP地面設備接收到的列車運行控制命令,對列車進行實時速度監督的一種安全保障設備。
2.2 北京地鐵1號線ATP系統
ATP子系統實現所需的設備包括地面設備和車載設備。地面設備主要由集中設置的地面軌道電路FS2500無絕緣軌道電路構成,由發送器、接收器、碼發生器及調諧單元組成;其發碼由微機聯鎖設備及控制中心控制,以保證安全追蹤間隔及臨時限速等。車載設備的功能由地面信息接收部分、測速部分、速度比較控制部分等完成,當列車運行速度超過允許速度時,自動完成減速控制,車載設備由以微處理器為基礎的安全子系統和非安全子系統、速度表、天線及裝在不同軸上的測速電機組成。
ATP系統的功能包括:在設置區間閉塞分區時,保證列車追蹤運行時的最小安全間隔,防止列車尾追事故;列車按線路最大允許安全速度運行,防止列車超速運行;確保所排進路正確、安全;確保提供車門正確開閉條件;區間臨時限速。
2.3 利用軟件Rhapsody對ATP(車載設備)建模
為了使系統軟件具有較高的可靠性、可維護性,結構化、模塊化是系統軟件設計的關鍵,軟件模塊的劃分應盡量明確、相對獨立,入口參數、出口參數意義范圍明確。軟件Rhapsody只支持英文環境,圖中英文都有相應的解釋。
2.3.1 需求分析
需求分析就是明確從外圍系統的角度,要求列車運行控制仿真系統提供什么功能。在以往的需求分析中,始終沒有一種合適的工具來保證系統需求的完整表達,所以直接導致了系統在完成后的檢測中發現與真實情況不符。
在分析階段引入全面支持UML的Rhapsody這個有效的形式化工具,以完整的、無歧義的語言表達上述功能需求,減少了設計人員的理解偏差,簡化了開發過程中的交流。

圖2為本案例的用例圖,該圖形象地表示了各個對象和用例之間的關系。driver(司機)啟動是否進行ATP的操作,一旦啟動ATP超速防護系統,ATPdevice(ATP車載設備)就處于超速防護狀態,接受目標速度和實時運行速度,進行比較;如果司機按照允許速度操縱列車,速度監督設備不干預司機的正常操作。當司機違章操作或列車運行超過允許速度時,ATP車載設備將自動實施制動。其中,車載設備主要實現以下幾個功能:initialtrain(自檢并初始化車載設備),acquireactualspeed(獲得實際速度),acquireactualspeed(獲得列車實際運行的實時速度),acquirelmiitedspeed(獲得允許速度,即入口區段的列車速度),acquiregoalspeed(獲得出口區段的目標速度),protectspeed(對列車運行進行速度防護及監督),announceemergency(超速告警),braketrain(當發現列車超過允許速度,強行制動列車),司機要實現的功能是:brakebyhuman(人工制動)以及activitateATP(模式開關的選擇和司控開關狀態的采集)。
2.3.2 類的劃分和處理
由功能需求分析確定,利用面向對象設計思想,將各個部分用對象來描述,將具有一定屬性和操作的對象聚集成類的表現形式。從邏輯上看,一個對象是獨立存在的模塊,從外界來看,只需要了解它具有哪些功能,至于如何實現這些功能對外界都是屏蔽的。系統中的各個對象通過消息激活機制被動態聯系在一起,并可利用面向對象建模中類的繼承性,簡化類和對象的生成。如果不同的類有共同的屬性和方法,依據類的層次把這些共同性概括為總類。
圖3為本系統的對象模型圖。

北京地鐵1號線使用的控制方式是分級速度控制方式的出口檢查方式:在一個閉塞分區中,只按照一種允許速度判斷列車是否超速,并且要求司機在閉塞分區內將列車運行降低到目標速度,設備在閉塞分區出口檢查列車運行速度,這個過程主要通過ProtectSpee(防護速度)類來實現。列車的允許速度為該區段的入口速度,機車信號顯示器給出目標速度。本區段的目標速度就是下個閉塞分區的允許速度,各種速度的獲得是在SignalConditionIn(信號輸入)中實現的,另外還設立了DriverCommand(駕駛命令)類以及BrakeControlle(制動控制)類來完成ATP啟動列車制動的動作。各個類中的函數及其事件在這里就不再詳細描述。
2.3.3 狀態圖分析
UML編程過程是在狀態圖中定義的,由于狀態圖的表達性和可伸縮性都很好,UML用它們作為正式的FSM(有限狀態機)表示。有限狀態機是由已存在的條件(稱為“狀態”)的有限集定義的機器,同樣也是狀態間因事物觸發的狀態轉移有限集。本案例的行為是通過各個類的狀態和轉換關系進行定義的,為了使狀態圖不趨于復雜化,并方便以后的更精確化,我們將各個類分配狀態圖。在這里,我們將主要類———ProtectSpeed(防護速度類)進行討論(見圖4),包括CompareSpeed(防護區段內列車速度控制在允許速度之下)、GetdownActualSpeed(保證列車在區段出口時速度降低到目標速度)、RefreshActualSpeed(不斷得到列車實際運行速度)。

比如,在RefreshActualSpeed(刷新實際速度)中需要獲得處理好的數字速度,在該狀態中加入Actual-Speed=SignalConditionerIn->GetActualSpeed(),這樣就可以從SignalConditionIn(信號輸入)中得到最大列車實際運行速度。
在CompareSpeed(速度比較)中對得到的實際速度和最大允許速度比較,若超出規則進入制動狀態,狀態圖進入BrakeController(制動控制)的狀態圖中。
2.4 代碼生成及系統級調試
當以上設計完成時,我們能夠產生代碼并測試系統模型。我們需要用Component組件來告訴Rhapsody產生什么樣的環境。通常我們使用的是Microsoft環境(Windows操作系統和VisualC++編譯器),這樣Rhapsody可以產生VisualC++6.0和基于VxWorks的C++程序。
Rhapsody通過動態化狀態圖和順序圖促進了建模級的調試。用戶可以在一個“面向對象”尺度上(操作調用,單個事件處理,整個事件隊列)單步調試應用,并可以觀察狀態圖的影響(如活動圖的變化)。Rhapsody提供了3種不同層次的動畫控制指令(在conf iguration中進行設置添加)。第1種是none,即要生成的是可發布的代碼;第2種是tracing,它能夠隨著執行過程在主機的標準輸出設備上顯示文本的執行跟蹤信息,第3個層次是anmiation(圖形動畫),以動畫形式進行演示。
Rhapsody代碼在目標機上運行的同時,運行情況動態反饋到設計模型中來,例如基于狀態圖的斷點設置、在順序圖上捕捉不同對象之間的消息映射等。在進行設計級調試的同時,與代碼級調試工具聯合調試。Rhapsody通過模型級/代碼級聯合調試、驗證,能夠直觀地盡早發現系統的設計錯誤或缺陷,從而較早地確定或降低項目風險。
另外,Rhapsody可以生成高質量的中文文檔,可以生成軟件應用所需的框架結構、運行庫、編譯文件、通訊方式、實施策略等。而且模型和代碼的一致性更保證了文檔和代碼的一致性,為我們順利地完成開發、后期經驗的累積提供了很好的平臺。可以通過定制模板,生成適合具體工作要求的文檔。
3 結論
通過對北京地鐵1號線的UML建模,可以縮短車載設備軟件的開發周期。本文針對北京地鐵1號線的LCF-100DT型車載設備進行UML建模,利用了Rhapsody這個基于UML語言的開發環境,UML的狀態機模型與車載設備極好地對應,且便于借助CASE工具實現代碼自動生成,能夠極大地提高車載設備軟件的開發效率和項目可管理性。Rhapsody采用基于模型的開發方式,為系統的開發提供了清晰的結構以及可復用的軟件模塊,能夠切實提高實時軟件的開發效率和可維護性,并可在系統級進行調試,從而提高系統的可靠性和實時性。Rhapsody提供了一個完整的用于復雜實時嵌入式的應用軟件,是從分析、設計一直到代碼實現和軟件測試的開發環境。
分享:淺談PHP 的八卦兩則PHP5.3 的正式發布,又重新關注起其語言本身。細心的朋友可能發現,PHP5.3 增加了 goto 語句,這在結構化語言今天似乎是有點不可思議的事情。 按照官方的說法,其實這和我們傳統理解的 goto 還是有所差別。PHP 5.3 中的 goto 語句只能在腳本文件以及上下文中
- 相關鏈接:
- 教程說明:
PHP教程-淺談基于UML的城軌列車超速防護系統建模
。