




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