摘要:為提高航空電子總線數(shù)據(jù)服務(wù)軟件的開(kāi)發(fā)效率和可靠性,采用基于ICD配置文件的通用化處理流程,每一條ICD配置信息對(duì)應(yīng)總線中的一個(gè)信號(hào),利用ICD配置文件轉(zhuǎn)換工具對(duì)系統(tǒng)ICD進(jìn)行預(yù)處理,設(shè)計(jì)了一種基于ICD的總線數(shù)據(jù)通用化處理方法,當(dāng)用戶ICD配置文件發(fā)生變更時(shí),只需修改相應(yīng)配置文件,無(wú)須改動(dòng)代碼,增強(qiáng)了軟件的適應(yīng)性和通用性。
關(guān)鍵詞:總線;ICD配置;機(jī)電系統(tǒng);嵌入式軟件
中圖分類號(hào):TP319" 文獻(xiàn)標(biāo)志碼:A" 文章編號(hào):1671-0797(2023)07-0049-03
DOI:10.19514/j.cnki.cn32-1628/tm.2023.07.012
0" " 引言
機(jī)電綜合管理系統(tǒng)作為飛機(jī)的核心系統(tǒng)與飛機(jī)安全運(yùn)行密切相關(guān),其包含燃油系統(tǒng)、環(huán)控系統(tǒng)、液壓系統(tǒng)、供電系統(tǒng)、起落架系統(tǒng)、艙門(mén)系統(tǒng)、照明系統(tǒng)等公共設(shè)備[1]。機(jī)電綜合管理系統(tǒng)涉及總線類型、信號(hào)管理類型眾多,機(jī)載軟件對(duì)總線的訪問(wèn)十分頻繁,這將對(duì)硬件接口資源產(chǎn)生無(wú)序競(jìng)爭(zhēng),因此要求有統(tǒng)一的總線服務(wù)軟件來(lái)完成控制、告警、畫(huà)面頁(yè)信號(hào)的集成發(fā)送。
總線數(shù)據(jù)服務(wù)軟件作為機(jī)電核心處理機(jī)上的總線通信大總管,統(tǒng)一負(fù)責(zé)外部消息的收發(fā),并向各個(gè)機(jī)電功能應(yīng)用分區(qū)提供信號(hào)輸入/輸出服務(wù)。以往的總線服務(wù)分區(qū)軟件設(shè)計(jì)采用的是基于消息內(nèi)容的處理模式,需為每條消息配置專用通信端口并編寫(xiě)發(fā)送和接收代碼,總線數(shù)據(jù)服務(wù)軟件代碼量高達(dá)數(shù)萬(wàn)行,同時(shí)軟件與系統(tǒng)ICD緊耦合,當(dāng)后期系統(tǒng)ICD發(fā)生變化,總線數(shù)據(jù)服務(wù)軟件也需要頻繁更新迭代,頻繁的軟件變更和聯(lián)試驗(yàn)證,對(duì)人力資源的耗費(fèi)很大,維護(hù)成本高[2]。
針對(duì)總線數(shù)據(jù)服務(wù)軟件的重要性和復(fù)雜性,為了解決傳統(tǒng)總線服務(wù)分區(qū)軟件開(kāi)發(fā)和維護(hù)過(guò)程中出現(xiàn)的各種問(wèn)題,本文設(shè)計(jì)了基于ICD的機(jī)電總線數(shù)據(jù)服務(wù)軟件,根據(jù)通信分區(qū)的不同對(duì)配置表進(jìn)行邏輯劃分,提供為總線分區(qū)與同一分區(qū)通信消息自動(dòng)生成統(tǒng)一結(jié)構(gòu)體的功能,采用同一消息處理流程使軟件與系統(tǒng)ICD解耦,降低了軟件代碼規(guī)模,提高了總線數(shù)據(jù)服務(wù)軟件的可移植性與可維護(hù)性。
1" " 系統(tǒng)ICD文件預(yù)處理
接口控制文件(Interface Control Document,ICD)定義了飛機(jī)各系統(tǒng)之間交互的信號(hào)信息以及飛機(jī)各系統(tǒng)的控制、告警、顯示等信號(hào),是飛機(jī)設(shè)計(jì)文件的重要組成部分,用于存儲(chǔ)外部設(shè)備與飛機(jī)各子系統(tǒng)分區(qū)進(jìn)行交互的所有消息[3]。
通常系統(tǒng)ICD文件都是文本或表格的形式,無(wú)法直接以編程語(yǔ)言的形式被開(kāi)發(fā)人員使用,因此需借助工具軟件將其轉(zhuǎn)化為頭文件,本文涉及兩個(gè)工具軟件:分區(qū)間通信結(jié)構(gòu)體生成工具與ICD結(jié)構(gòu)體數(shù)據(jù)生成工具。
基于結(jié)構(gòu)化的思想,遍歷系統(tǒng)ICD文件通過(guò)分區(qū)間通信結(jié)構(gòu)體生成工具以分區(qū)為單位將其進(jìn)行邏輯劃分,并將總線分區(qū)與各子系統(tǒng)功能分區(qū)之間交互的所有消息根據(jù)消息源及目的的不同存儲(chǔ)在不同的結(jié)構(gòu)體中,而對(duì)于源和目的分區(qū)相同的所有消息則提取出該分區(qū)與總線分區(qū)收發(fā)的所有消息的有效屬性,取并集作為統(tǒng)一的結(jié)構(gòu)體的屬性集合[4]。
總線分區(qū)發(fā)往功能分區(qū)的通信結(jié)構(gòu)體如下所示:
typedef union
{
struct
{
int control_signal_1;
int disp_signal_1;
int warning_signal_1;
...
int control_signal_n;
}IO_Partition1;
int buffer[n];
}io_partition1;
功能分區(qū)發(fā)往總線分區(qū)的通信結(jié)構(gòu)體如下所示:
typedef union
{
struct
{
int control_signal_1;
int disp_signal_1;
int warning_signal_1;
...
int control_signal_n;
}Partition1_IO;
int buffer[n];
}partition1_io;
將分區(qū)間通信結(jié)構(gòu)體與系統(tǒng)ICD作為ICD結(jié)構(gòu)體數(shù)組生成工具的輸入,將系統(tǒng)ICD轉(zhuǎn)換為頭文件形式,并在系統(tǒng)ICD的基礎(chǔ)上增加了兩個(gè)屬性:
(1)消息接收、發(fā)送緩沖區(qū):用于存放對(duì)應(yīng)物理信號(hào)的值。
(2)當(dāng)前物理信號(hào)在對(duì)應(yīng)分區(qū)間通信結(jié)構(gòu)體中的變量序號(hào):用于在總線分區(qū)與功能分區(qū)之間傳輸對(duì)應(yīng)的物理信號(hào)。
系統(tǒng)ICD文件預(yù)處理流程如圖1所示。
1394總線消息配置表在程序中的結(jié)構(gòu)體設(shè)計(jì)如下:
typedef struct
{
char Pathway_name[20];//通道名稱
char Message_source[20];//消息源
char Message_destination[20];//消息目的
int Message_ID;//消息ID
int Message_length;//消息長(zhǎng)度
int Message_refresh_period;//消息周期
int Message_transmission_type;//消息類型
int DataWord_offset;//數(shù)據(jù)字偏移量
char BusSignal_codename[50];//信號(hào)名稱
int BusSignal_width;//單個(gè)信息的占位寬度
int BusSignal_lsb_position;//單個(gè)信息在其所在數(shù)據(jù)字中的起始位
int Partition_Mask;//分區(qū)掩碼
int * pBuffer;//指向接收/發(fā)送緩沖區(qū)
int index;//變量在分區(qū)間通信結(jié)構(gòu)體中的順序
}CfgTab;
2" " 軟件架構(gòu)與設(shè)計(jì)
總線分區(qū)和其他機(jī)電功能分區(qū)一樣都屬于應(yīng)用分區(qū),總線分區(qū)在機(jī)電核心處理機(jī)軟件架構(gòu)中所處位置如圖2所示。
總線分區(qū)包含初始化模塊、通信模塊、數(shù)據(jù)處理模塊和健康管理模塊,如圖3所示。
初始化模塊包含配置信息加載,并根據(jù)加載的配置信息完成初始化資源創(chuàng)建,如緩沖區(qū)創(chuàng)建、初始化數(shù)據(jù)分發(fā)表等;通信模塊包括基于總線消息配置信息的外部設(shè)備數(shù)據(jù)收發(fā)、基于機(jī)電功能分區(qū)數(shù)據(jù)發(fā)布訂閱信息的核心機(jī)內(nèi)部數(shù)據(jù)收發(fā),即接收外部設(shè)備數(shù)據(jù)并通過(guò)分區(qū)間通信端口將數(shù)據(jù)發(fā)送到機(jī)電功能分區(qū),或接收機(jī)電功能分區(qū)發(fā)來(lái)的數(shù)據(jù),并調(diào)用總線服務(wù)接口向外部總線發(fā)送數(shù)據(jù);分區(qū)間數(shù)據(jù)通信緩存管理使用操作系統(tǒng)的APEX接口和配置機(jī)制,總線分區(qū)與每個(gè)機(jī)電功能分區(qū)間分別配置4個(gè)端口,分別為隊(duì)列消息發(fā)送端口、隊(duì)列消息接收端口、采樣消息寫(xiě)端口、采樣消息讀端口,交互的數(shù)據(jù)為該功能分區(qū)訂閱和發(fā)布的數(shù)據(jù);數(shù)據(jù)處理模塊能夠支持基于機(jī)電功能分區(qū)數(shù)據(jù)發(fā)布訂閱信息的結(jié)構(gòu)化數(shù)據(jù)組包和解包,其對(duì)應(yīng)總線分區(qū)中的兩個(gè)周期進(jìn)程,即總線數(shù)據(jù)接收與總線數(shù)據(jù)發(fā)送;健康管理模塊包括平臺(tái)及應(yīng)用健康狀態(tài)監(jiān)測(cè)、故障記錄及上報(bào)。
2.1" " 總線數(shù)據(jù)接收
如圖4所示,總線數(shù)據(jù)接收任務(wù)包含三部分:接收總線數(shù)據(jù)、數(shù)據(jù)拆包、發(fā)送給應(yīng)用分區(qū)??偩€分區(qū)在每一個(gè)任務(wù)周期通過(guò)調(diào)用總線接收接口完成所有外部總線數(shù)據(jù)的接收,若總線數(shù)據(jù)校驗(yàn)正常則將總線數(shù)據(jù)保存至接收緩沖區(qū)中,若總線數(shù)據(jù)異常則進(jìn)入異常處理分支;通過(guò)遍歷總線接收ICD將接收緩沖區(qū)中的總線數(shù)據(jù)按對(duì)應(yīng)字對(duì)應(yīng)位拆包后賦值給分區(qū)間通信結(jié)構(gòu)體,最后調(diào)用分區(qū)間通信服務(wù)將已拆包的總線數(shù)據(jù)發(fā)送至各個(gè)應(yīng)用分區(qū)進(jìn)行邏輯處理,分發(fā)過(guò)程不解析數(shù)據(jù)包內(nèi)容,若分區(qū)間通信異常,則進(jìn)入異常處理分支上報(bào)異常。
2.2" " 總線數(shù)據(jù)發(fā)送
如圖5所示,總線數(shù)據(jù)發(fā)送任務(wù)包含三部分:接收應(yīng)用分區(qū)數(shù)據(jù)、數(shù)據(jù)組包、發(fā)送至外部總線??偩€分區(qū)在每一個(gè)任務(wù)周期首先通過(guò)調(diào)用分區(qū)間通信服務(wù)將經(jīng)應(yīng)用分區(qū)邏輯處理后的數(shù)據(jù)接收至分區(qū)間通信結(jié)構(gòu)體中,然后根據(jù)總線發(fā)送ICD將發(fā)送緩沖區(qū)的對(duì)應(yīng)位清零,再將屬于同一條消息的數(shù)據(jù)組包至對(duì)應(yīng)的發(fā)送緩沖區(qū)中,最后調(diào)用總線發(fā)送接口將發(fā)送緩沖區(qū)中的數(shù)據(jù)同意發(fā)送至外部總線。
3" " 結(jié)語(yǔ)
本文提出了一種基于總線配置文件的總線數(shù)據(jù)服務(wù)軟件的設(shè)計(jì)方法,非常有效地解決了機(jī)電綜合處理系統(tǒng)總線信號(hào)種類繁多、應(yīng)用程序設(shè)計(jì)困難的問(wèn)題。同時(shí)這樣的軟件架構(gòu)靈活性非常好,當(dāng)用戶的ICD文件需要變更時(shí),只需利用預(yù)處理工具軟件重新生成頭文件即可,而程序一般不需要做出改動(dòng),實(shí)現(xiàn)了軟件與系統(tǒng)ICD解耦,并且這種統(tǒng)一的設(shè)計(jì)使程序很少出現(xiàn)細(xì)節(jié)上的錯(cuò)誤,提高了軟件的可靠性。
[參考文獻(xiàn)]
[1] 李愛(ài)軍,王山虎,陳瑜,等.一種新型機(jī)電系統(tǒng)綜合管理計(jì)算機(jī)設(shè)計(jì)方法[J].測(cè)控技術(shù),2015,34(4):74-77.
[2] 葉海明,周紹磊,王昆平.通用測(cè)試系統(tǒng)軟件平臺(tái)設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(shù),2010,29(2):54-57.
[3] 申鵬亮,翟正軍,周健.基于ICD的通用化航電測(cè)試軟件研究[J].測(cè)控技術(shù),2013,32(11):124-127.
[4] 周健,肖鵬.基于總線配置文件的仿真測(cè)試軟件通用化設(shè)計(jì)[J].信息系統(tǒng)工程,2015(2):37-39.
收稿日期:2022-12-30
作者簡(jiǎn)介:王昆(1996—),男,陜西人,助理工程師,研究方向:嵌入式軟件。