?

基于FAO仿真測試系統應用的底層框架設計

2022-06-27 08:37袁重陽
鐵路通信信號工程技術 2022年6期
關鍵詞:收發器管理器代理

袁重陽

(通號城市軌道交通技術有限公司,北京 100070)

1 概述

全自動運行系統(Fully Automatic Operation,FAO)[1]以其安全性高、運營組織靈活、適應大客流量需求等優點,越來越受到關注。由于其在全周期成本經濟和總和效益方面[2]都有不俗表現,FAO成為城市軌道交通列車運行控制系統的發展趨勢。

FAO系統由多個子系統組成,如果全部進行現場試驗,很難將其功能測試完備。一般來講,信號系統是軌道交通建設過程中的后期工程[3],因而有必要在實驗室搭建一套測試環境,提前對其全功能進行驗證。對于信號系統測試而言,雖然被測對象是信號設備,但是軌旁設備也是系統不可或缺的重要組成部分[4]。由于實驗室無法具備整個線路的軌旁實物設備,此時就可以通過仿真手段來進行模擬,從而搭建一套半實物的測試系統,對提高工程實施質量、縮短工期、降低成本有著重大意義[5]。

2 系統測試環境搭建

對于安全要求苛刻的信號系統,系統測試是進行系統確認、保證系統質量的重要手段之一[6]。FAO的信號系統包括區域控制器、行車綜合自動化系統、聯鎖和車載4個子系統。在實驗室中需對整體的功能進行系統測試,因此,需搭建一套系統測試環境,如圖1所示。

圖1 測試環境結構Fig.1 Structure of test environment

FAO系統測試環境分為半實物仿真系統和信號系統。其中,信號系統是被測對象,半實物仿真系統提供必要的軌旁設備、車輛設備等信息。

其中,半實物仿真系統主要由仿真子系統和接口機兩部分組成。

仿真子系統:圖1中虛線框以外部分。該部分基于本文提出的底層通信方法,進行設計與實現。主要包括以下部分。

1)運行圖:主要是對站場中軌旁設備(計軸、道岔等)的狀態、車輛位置等信息進行顯示和設置;

2)模擬駕駛臺:主要是對車輛的硬線輸入/輸出量、速度等信息進行控制;

3)仿真主機:統一管理各個部分間的網絡通信、業務消息處理等流程;

4)數據庫:預先存儲計軸、道岔等設備特征參數、線路拓撲參數、車輛參數等。

接口機:圖1中虛線框部分。信號系統與仿真系統并非通過以太網直接相連,如車載設備的I/O量需通過硬線實現信號采集,因此車載接口機(嵌入式系統)可將硬線的信號量轉換為數據流,再發送至仿真系統。聯鎖接口機則裝有Arcnet卡,作為聯鎖和仿真系統間信息傳遞的渠道。

3 仿真系統底層支撐框架

由圖1可知,仿真系統由多個模塊組成,既需要對整條線路各個軌旁設備狀態進行處理,也需要對車輛相關信息進行維護,因而軟件的運算量大,單個普通服務器已無法滿足性能要求,且不便于管理。此時,在既有硬件配置不變的情況下,可以利用多臺服務器共同完成測試任務,最小依賴于集中的程序、數據和硬件等資源[7],解決該問題。因而本章節提出了一種基于分布式通信的底層支撐框架,該框架在分布式技術的基礎上,以消息機制封裝,使底層通信和上層應用能夠最大程度地解耦,開發者不必過多關注在模塊間的通信程序設計(通常直接在傳輸層協議進行編程[8]),極大縮短了應用程序的開發周期。

3.1 基本概念

模塊:可單獨執行的一個應用程序進程。

消息:各個模塊之間以消息響應的方式進行通信,消息的內容包含源地址、目的地址、類型、黑名單及應用信息等。

收發器:一個模塊可以與其他多個模塊同時建立連接,以進行消息的收發。為了便于管理,每個連接都設有一個收發器,對其來往的消息進行接收、發送和邏輯處理,即一個模塊可以有多個收發器。

源地址:指消息發送方的收發器ID。

目的地址:指消息接收方的收發器ID。

黑名單:指消息被拒絕接收的收發器ID。

分揀器:當某模塊收到其他多個模塊發來的消息時,為了使每條消息能夠分別映射至對應的收發器,分揀器以消息的源地址、消息的目的地址、消息的類型、黑名單等信息為篩選條件,對消息進行歸類,并分別傳遞給各個收發器,且一個模塊只需一個分揀器。

網絡代理:每個模塊需通過網絡和其他模塊進行消息交互,因而為各個模塊分別設有網絡代理,其作用一是向網絡管理器進行注冊,申請本模塊通訊地址;二是本模塊作為服務器或客戶端,創建與其他模塊的接口,以進行網絡信息流和內部消息的轉換。

接口:每個模塊的網絡代理需要和多個模塊進行通信,因而為代理設有多個收發網絡字節流的裝置,稱作接口。接口負責將網絡中的字節流信息轉為消息后傳遞到模塊內部,以在模塊內部進行消息的分揀、收發。同時將本模塊對外發送的消息通過網絡發送至指定模塊。

網絡管理器:當接收各模塊的注冊消息后,網絡管理器會重新統一分配各模塊的通訊地址,并將所有通訊地址通知到每個模塊。

3.2 框架設計

將某個任務劃分成多個模塊,每個模塊可單獨執行,同時需要將其計算的結果與其他模塊分享,此時需要建立模塊之間的連接網絡??蚣茉O計如圖2所示。

圖2 框架設計Fig.2 Framework design

3.2.1 整體框架

將任務劃分為多個功能模塊,如圖2中模塊1、模塊2和模塊3。各個功能模塊共用1個網絡管理器。其中,模塊1和模塊3的輸出結果會作為模塊2的輸入,同時模塊2的輸出也會影響模塊1和模塊3。3個模塊間的信息交互通過以太網來實現。

對于每個模塊而言,以模塊2為例,由于需要與模塊1、模塊3進行通信,所以設計接口-1和接口-3來與之進行信息的轉換。與此同時,內部處理消息時則設有收發器-1和收發器-3,以此分別對模塊1、模塊3進行消息隊列的接收和發送。消息隊列則由分揀器來管理,使所有消息能夠有條不紊地到達目的地。

3.2.2 通信設計

為保證數據的準確性和時序性,模塊間通信采用TCP協議,可以提供可靠性服務[9]。為便于操作,應用信息以消息的形式進行交互。

1) 網絡管理器

由于各模塊間采用TCP協議,因而在消息的發送和接收時需要知道各自的IP地址和端口。在實際應用中,一個任務有多個模塊,那么每個模塊就需要靜態配置多個其他所有模塊的IP和端口。為盡可能減少網絡配置,方便應用程序設計,本文設計網絡管理器。使用時只需配置IP和端口作為服務端,各個模塊作為客戶端向網絡管理器進行注冊。網絡服務器會記錄各模塊ID,并統一分配端口,然后將所有的模塊ID、IP和端口分發通知給各模塊。具體流程如圖3所示。

圖3 網絡管理器流程Fig.3 Network manager flowchart

2) 消息機制

各模塊在執行過程中,不僅輸出的結果會對其他模塊有影響,而且過程變量也可能觸發其他模塊的運算邏輯,因而本文采用消息觸發的方式進行模塊間交互。對任一時間或任一條件下,由本模塊產生的結果,直接以消息的形式進行封裝,然后通過網絡進行發送,如圖4所示。

具體過程如下:

定義消息基類,包括源地址、目的地址、類型、黑名單等屬性。

模塊1在執行過程中,滿足觸發1(或觸發2)的條件,則新建應用消息(繼承消息基類),并對其各個成員變量進行賦值,然后立即發送。

模塊2收到該應用消息后,可按照類型進行解析,并將其作為對應邏輯運算的輸入。如果需要反饋,就對模塊1發送消息反饋信息包。

需要注意的是,由于本設計實現是基于面向對象的,利用其多態特性[10],在傳輸過程中,以消息基類作為傳遞媒介,使用時再根據類型,轉換為對應繼承類的應用信息。如圖4中,應用消息n繼承于消息基類,而其成員m等則是模塊所要傳遞的信息。

圖4 消息機制Fig.4 Message mechanism

3.2.3 組件設計

每個模塊使用的底層通信組件主要由分揀器、收發器和網絡代理構成。

1) 分揀器

分揀器是整個模塊的核心部分,不僅可以存儲收發的消息隊列,保證消息在多線程操作下能夠被安全訪問,而且可以將消息隊列按照一定的規則分發至各個收發器或接口。其主要包含信息如圖5所示。

圖5 分揀器類圖Fig.5 Sorter class diagram

2) 收發器

根據上文提到的消息機制,當收到來自其他模塊的消息時,收發器一方面根據消息類型,解析分揀器發送來的應用消息,用于邏輯運算;另一方面將本模塊的計算結果,以消息的方式添加至分揀器。其包含信息如圖6所示。

圖6 收發器類圖Fig.6 Transceiver class diagram

3) 網絡代理

網絡代理是連接其他模塊的“紐帶”,是內部和外部的溝通渠道。本文采用TCP協議,因此當本模塊作為服務端時,網絡代理需要監聽各客戶端信息,并匯集發送來的消息,通過分揀器交給模塊內部進行邏輯處理;作為客戶端時,則需要把自身的產出準確地傳達給各目的模塊。其包含信息如圖7所示。

圖7 網絡代理類圖Fig.7 Network agent class diagram

3.3 應用程序設計

根據上文對底層支撐框架各組件的介紹,可按照如下流程進行程序設計。

1) 開啟網絡管理器

根據上文介紹,開啟網絡管理器服務端線程,并根據申請模塊的信息,為所有模塊統一分配端口,并將所有端口信息通知到各模塊。在設計不同的應用程序時,網絡管理器可以復用。

2) 新建模塊對象

包括各成員變量,如分揀器、網絡代理、收發器等。主要是對各組件所含屬性進行初始化,填寫各個組件所需處理應用消息的方法,并建立相互關聯關系,并且一個模塊只需一個分揀器,一個網絡代理,若干收發器。當有新的應用消息需要發送時,則通過對應收發器先將消息交給分揀器進行存儲;當新消息到來時,則通過分揀器分發至各個收發器。

3) 啟動模塊網絡代理

首先將網絡管理器發來的各模塊的ID-IPPORT映射表進行存儲,然后處理應用消息的過程如下:

當本模塊作為客戶端時,定義連接其他服務器模塊的接口,每個接口分別負責取出由分揀器擇出來的應用消息,先放到接口的消息緩沖區(防止在和其他模塊建立TCP連接前,丟失應用消息),然后根據消息的目的ID,查詢對應的網絡地址,待網絡連接成功后,再將緩沖區消息逐一取出,通過網絡發出。

當本模塊作為服務端時,開啟監聽客戶端線程,若有客戶端發起連接,就建立對應接口,由接口獲取網絡字節流信息,并轉換為消息形式,最終存儲到由分揀器發往其收發器的消息隊列中。

4 仿真系統實現

根據上文所描述的底層支撐框架,設計并實現一套適用于地鐵FAO系統測試的半實物仿真系統,并在天津FAO試驗線的室內測試中得到應用,不僅可以滿足測試過程對于機器性能的要求,而且極大程度上簡化了程序的設計。其中駕駛臺和運行圖界面如圖8所示。

圖8 運行圖和駕駛臺Fig.8 Train graph and simulated cab

4.1 運行圖

運行圖模塊按照章節3.3進行程序設計,主要具備以下功能:繪制圖元,如信號機、軌道區段、應答器等;建車/刪車,并實時跟蹤列車的運行位置;提供大量的人機接口,可滿足測試者操控各個設備狀態。

4.2 模擬駕駛臺

模擬駕駛臺按照章節3.3進行程序設計,是車輛仿真的重要部分,如圖8所示。其主要提供以下功能:方向手柄、牽引手柄提供車輛前進方向、級位;鑰匙、確認等按鈕提供車載ATP/ATO/AOM等必要的輸入硬線信號輸入;速度表盤、FAM模式燈等可顯示速度、對應硬線信號等變化情況。

5 結語

本文詳細介紹仿真系統底層支撐框架的原理和應用程序的設計步驟,結合應用軟件實例,對半實物仿真測試系統進行設計實現。該方案已經在天津FAO試驗線的室內系統測試中得到應用。通過對車輛、軌旁設備的仿真,能夠為被測對象——信號設備提供必要的輸入信息,同時也滿足測試要求。

猜你喜歡
收發器管理器代理
某重型汽車方向盤LIN 開關故障分析
啟動Windows11任務管理器的幾種方法
應急狀態啟動磁盤管理器
《汽車維修技師》誠招代理
1號異星球餐館·不可思議的代理老板
《航空模型》團體代理招募
Virtex5 FPGA GTP_DUAL硬核兩個收發器獨立使用的實現
用好Windows 10任務管理器
復仇代理烏龜君
光纖收發器常見故障原因
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合