付強(qiáng)
摘 要:在機(jī)載網(wǎng)絡(luò)通信領(lǐng)域,常見的總線通信技術(shù)有AFDX通信、A429(ARINC 429)通信和CPCI板間通信。在設(shè)計(jì)和開發(fā)機(jī)載軟件的過程中,脫離機(jī)載環(huán)境,PC平臺對機(jī)載軟件進(jìn)行前期驗(yàn)證是一種高效的仿真驗(yàn)證手段,為后期機(jī)載硬件平臺系統(tǒng)級交聯(lián)驗(yàn)證提供了功能級的保證。實(shí)現(xiàn)基于PC平臺的機(jī)載軟件仿真驗(yàn)證,其中一個(gè)核心技術(shù)就是模擬機(jī)載設(shè)備間數(shù)據(jù)交互的實(shí)現(xiàn)機(jī)制。本文通過研究以上三種機(jī)載網(wǎng)絡(luò)通信的協(xié)議特點(diǎn)和處理機(jī)制,結(jié)合PC平臺的網(wǎng)絡(luò)通信和實(shí)現(xiàn)機(jī)制,搭建虛擬總線組件架構(gòu),設(shè)計(jì)適用于不同總線的緩存管理策略,以及基于虛擬共享內(nèi)存的數(shù)據(jù)分發(fā)服務(wù)和基于以太網(wǎng)的數(shù)據(jù)分發(fā)服務(wù),在PC平臺下實(shí)現(xiàn)機(jī)載軟件運(yùn)行節(jié)點(diǎn)間的數(shù)據(jù)通信。
關(guān)鍵詞:機(jī)載網(wǎng)絡(luò);AFDX;ARINC 429;CPCI;緩存管理;總線仿真技術(shù)
DOIDOI:10.11907/rjdk.172394
中圖分類號:TP319
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2018)002-0164-04
0 引言
機(jī)載軟件在飛機(jī)整體研制過程中占用比重不斷增加,在機(jī)載軟件開發(fā)和調(diào)試過程中,需要底層嵌入式操作系統(tǒng)及BSP運(yùn)行環(huán)境,機(jī)載軟件的調(diào)試和驗(yàn)證依賴于機(jī)載硬件設(shè)備,同時(shí)需要外部交聯(lián)系統(tǒng)設(shè)備或接口仿真器支持。這些原因會(huì)造成軟件開發(fā)過程依賴于設(shè)備供應(yīng)商的軟硬件研制進(jìn)度,在系統(tǒng)研制初期缺少軟件功能仿真與驗(yàn)證手段。機(jī)載軟件對真實(shí)設(shè)備的依賴所帶來的問題主要體現(xiàn)在三個(gè)方面:
(1)資源爭用:一方面表現(xiàn)在試驗(yàn)驗(yàn)證、軟件測試、軟件開發(fā)都依賴于機(jī)載系統(tǒng)環(huán)境;另一方面團(tuán)隊(duì)內(nèi)部無法并行開展軟件調(diào)試工作,只支持單功能模塊的軟件調(diào)試。
(2)調(diào)試效率:調(diào)試過程修改代碼后需要重置硬件并加載軟件,需要多個(gè)人來協(xié)作完成。
(3)硬件依賴:機(jī)載軟件開發(fā)依賴設(shè)備成品廠軟硬件研制進(jìn)度,無法定制數(shù)據(jù)激勵(lì)類型和方式,并且缺少虛擬化的仿真和驗(yàn)證手段。
擺脫對機(jī)載環(huán)境的依賴,在PC平臺對機(jī)載軟件進(jìn)行前期驗(yàn)證是一種行之有效的開發(fā)手段。在對機(jī)載環(huán)境進(jìn)行仿真的過程中,核心問題就是對機(jī)載網(wǎng)絡(luò)數(shù)據(jù)總線的仿真。本文在研究相關(guān)的AFDX、A429和CPCI三種常用機(jī)載網(wǎng)絡(luò)數(shù)據(jù)總線的基礎(chǔ)上,構(gòu)建虛擬總線組件架構(gòu),并設(shè)計(jì)對應(yīng)的緩存管理策略,在PC平臺上實(shí)現(xiàn)了機(jī)載網(wǎng)絡(luò)數(shù)據(jù)總線的通信機(jī)制。
1 虛擬總線架構(gòu)
應(yīng)用層軟件使用虛擬總線層提供的各類總線接口與其他交聯(lián)子系統(tǒng)或虛擬機(jī)載設(shè)備進(jìn)行通信。使用數(shù)據(jù)分發(fā)服務(wù)支持網(wǎng)絡(luò)通信接口仿真和應(yīng)用軟件之間的通信,在傳輸層使用基于虛擬共享內(nèi)存的總線通信模擬和基于以太網(wǎng)的總線通信模擬,軟件架構(gòu)如圖1所示。
在仿真環(huán)境下定義的總線接口與真實(shí)機(jī)載代碼所調(diào)用的接口完全一致,保證機(jī)載代碼在虛擬開發(fā)環(huán)境與真實(shí)硬件設(shè)備之間的無縫移植。虛擬總線層向應(yīng)用程序?qū)犹峁┡c真實(shí)總線設(shè)備相同的通信接口,數(shù)據(jù)發(fā)送與接收通過各種虛擬總線(虛擬AFDX總線、虛擬A429總線、虛擬CPCI)完成。數(shù)據(jù)分發(fā)服務(wù)層向虛擬總線層提供數(shù)據(jù)分發(fā)服務(wù),通過建立發(fā)送方與接收方的閱關(guān)系來綁定發(fā)送端口與接收端口,并建立發(fā)送方與接收方的數(shù)據(jù)傳輸通道。傳輸層使用兩種方式來完成數(shù)據(jù)從源端到目的端發(fā)送:針對基于共享內(nèi)存的數(shù)據(jù)分發(fā)服務(wù),傳輸層采用內(nèi)存管理服務(wù)來實(shí)現(xiàn)數(shù)據(jù)發(fā)送與接收;針對基于以太網(wǎng)的數(shù)據(jù)分發(fā)服務(wù),傳輸層采用Winsock庫提供的服務(wù)來完成數(shù)據(jù)發(fā)送與接收。
2 A429通信仿真
ARINC 429是機(jī)載設(shè)備間常用的數(shù)據(jù)通信方式,通過點(diǎn)到點(diǎn)互連,采用單信息源、多接收器傳輸方法,以半雙工方式工作。對A429通信的虛擬化過程主要是模擬A429通道的初始化、對A429通道的讀操作和寫操作。
首先需要定義A429通道結(jié)構(gòu)和緩沖區(qū)結(jié)構(gòu),A429通道結(jié)構(gòu)包括通道對象ID、通道緩沖區(qū)最大尺寸以及通道對象的緩沖區(qū)偏移位置。A429緩沖區(qū)結(jié)構(gòu)包括緩沖區(qū)中實(shí)際數(shù)據(jù)的尺寸、緩沖區(qū)中實(shí)際數(shù)據(jù)的首地址。在實(shí)現(xiàn)過程中可以為A429通道對象開辟一個(gè)共享數(shù)據(jù)區(qū),該數(shù)據(jù)區(qū)中包括通道對象的定義和通道對應(yīng)的緩沖區(qū)結(jié)構(gòu),A429的所有通道都在該共享內(nèi)存區(qū)中,用于數(shù)據(jù)的共享和通信。下面具體介紹A429通道三類主要操作的仿真。
2.1 A429通道初始化
在通道初始化時(shí),主要根據(jù)A429的XML配置文件在共享數(shù)據(jù)區(qū)中開辟通道并進(jìn)行初始化,包括初始化通道的ID、通道緩沖區(qū)偏移地址、通道緩沖區(qū)最大尺寸等。在通道緩沖區(qū)相對于大緩沖區(qū)塊的偏移地址初始化過程為:緩沖區(qū)對象是由len(緩沖區(qū)中實(shí)際數(shù)據(jù)的尺寸)和buffer(緩沖區(qū)中實(shí)際數(shù)據(jù)的首地址)組成的,所以通道偏移地址是以上一個(gè)通道的偏移地址為首地址,以緩沖區(qū)對象中的len和XML文件中指定的通道的長度乘以傳輸數(shù)據(jù)類型之和為偏移地址得到的。對應(yīng)關(guān)系如圖2所示,其中NUM為前一個(gè)通道的長度。
2.2 A429總線數(shù)據(jù)發(fā)送
在應(yīng)用層調(diào)用發(fā)送接口時(shí),首先判斷此應(yīng)用層通道ID的有效性,然后判斷要發(fā)送的數(shù)據(jù)長度是否大于該通道緩沖區(qū)的最大長度。若超過則返回“輸入數(shù)據(jù)太長”的錯(cuò)誤信息;若未超過,則將數(shù)據(jù)發(fā)送到指定的通道緩沖區(qū)中,同時(shí)返回“操作成功”的信息。數(shù)據(jù)存入的位置是由通道所在的大緩沖區(qū)的首地址和通道在大緩沖區(qū)中的偏移位置決定的。發(fā)送處理流程如圖3所示。
2.3 A429總線數(shù)據(jù)接收
在數(shù)據(jù)接收過程中,將申請的通道ID,待發(fā)送數(shù)據(jù)首地址指針以及數(shù)據(jù)的長度傳給該函數(shù),函數(shù)接受到調(diào)用后,首先根據(jù)用戶申請的通道ID判斷ID號的有效性,然后判斷通道中是否有數(shù)據(jù)存在。若不存在則返回“無接收數(shù)據(jù)”的信息,若存在數(shù)據(jù)則要判斷該數(shù)據(jù)長度是否大于指定的緩沖區(qū)長度;若超過則返回“接收數(shù)據(jù)太長”的錯(cuò)誤信息,若未超過,則將數(shù)據(jù)發(fā)送到指定的緩沖區(qū)中,同時(shí)返回“操作成功”的信息。要接收的數(shù)據(jù)位置是由通道所在的大緩沖區(qū)的首地址和通道在大緩沖區(qū)中的偏移位置決定的。該函數(shù)的實(shí)現(xiàn)流程如圖4所示。endprint
3 AFDX通信仿真
AFDX端系統(tǒng)端口通信機(jī)制提供兩種類型的航空電子通信服務(wù):采樣服務(wù)和隊(duì)列服務(wù)。
采樣服務(wù)包括采樣發(fā)送數(shù)據(jù)服務(wù)和采樣接收數(shù)據(jù)服務(wù)。其中,采樣發(fā)送數(shù)據(jù)服務(wù)是指信息長度小于等于虛擬鏈路的有效負(fù)荷長度,不支持分包,支持組播或單播;采樣接收數(shù)據(jù)服務(wù)是指最后的信息存儲在特定采樣端口中,可以被多個(gè)應(yīng)用讀取,每個(gè)采樣端口都有更新標(biāo)志符,對于每個(gè)讀取信息的應(yīng)用都是可見的。
隊(duì)列服務(wù)包括隊(duì)列發(fā)送數(shù)據(jù)服務(wù)和隊(duì)列接收數(shù)據(jù)服務(wù)。隊(duì)列發(fā)送數(shù)據(jù)服務(wù)支持?jǐn)?shù)據(jù)分包,隊(duì)列采用FIFO(先進(jìn)先出原則),隊(duì)列滿后,新的幀將被丟棄;隊(duì)列接收數(shù)據(jù)服務(wù)是指從隊(duì)列中讀取第一個(gè)消息,接收隊(duì)列滿后,新的幀將被丟棄,并向應(yīng)用發(fā)送錯(cuò)誤報(bào)告,如果涉及分包的情況,整個(gè)包組裝完成后才允許應(yīng)用讀取數(shù)據(jù)。
3.1 分布式通信
如圖5所示,分布式虛擬化節(jié)點(diǎn)間的通信采用基于以太網(wǎng)的UDP通信方式,通過定制網(wǎng)絡(luò)傳輸協(xié)議,能夠支持不同節(jié)點(diǎn)間進(jìn)行AFDX通信數(shù)據(jù)收發(fā)。數(shù)據(jù)包格式定義順次包含數(shù)據(jù)源ID、事件周期數(shù)據(jù)標(biāo)識、數(shù)據(jù)長度、數(shù)據(jù)載荷。
3.2 AFDX總線數(shù)據(jù)發(fā)送
首次調(diào)用AFDX發(fā)送接口,需要根據(jù)配置的目標(biāo)IP地址和端口號創(chuàng)建UDP套件字連接。當(dāng)檢測已建立UDP套件字連接后,采用下列步驟組建并發(fā)送數(shù)據(jù)包。
(1)在配置表中查找傳入的ID號,在配置表中找到對應(yīng)的配置條目后,檢測數(shù)據(jù)接收發(fā)送標(biāo)識是否為發(fā)送。
(2)數(shù)據(jù)發(fā)送接口根據(jù)傳入?yún)?shù)組建數(shù)據(jù)包,包含數(shù)據(jù)源ID、事件周期數(shù)據(jù)標(biāo)識、數(shù)據(jù)長度、數(shù)據(jù)載荷。
(3)調(diào)用UDP套件字發(fā)送函數(shù),向接收端發(fā)送數(shù)據(jù)包,并向應(yīng)用層返回狀態(tài)。
3.3 AFDX總線數(shù)據(jù)接收
數(shù)據(jù)接收接口實(shí)現(xiàn)較為復(fù)雜,需要區(qū)分隊(duì)列數(shù)據(jù)接收和采樣數(shù)據(jù)接收。根據(jù)配置表在初始化階段建立數(shù)據(jù)緩沖區(qū),緩沖區(qū)結(jié)構(gòu)如圖6所示。接收到數(shù)據(jù)包后,首先根據(jù)數(shù)據(jù)包中的ID在配置表中查找對應(yīng)的配置條目,校驗(yàn)有效性,并訪問ICD條目對應(yīng)的數(shù)據(jù)緩沖區(qū)。
采樣數(shù)據(jù)的緩沖區(qū)和隊(duì)列數(shù)據(jù)的緩沖區(qū)存在差異。采樣端口中只存儲最新到來的消息,到達(dá)的消息覆蓋當(dāng)前緩沖區(qū)中的消息,而不用判斷是否已經(jīng)被應(yīng)用程序讀取,同樣從采樣端口讀取消息時(shí),無需將消息移除,而是反復(fù)讀取,在采樣端口中都存在一個(gè)標(biāo)志位,用來標(biāo)識數(shù)據(jù)是否更新,當(dāng)該標(biāo)志為1時(shí),說明當(dāng)前端口緩沖區(qū)中存在新的消息。每個(gè)隊(duì)列端口具有獨(dú)立的緩沖隊(duì)列,可以緩存一定數(shù)量的消息,消息被填充到隊(duì)列中,從隊(duì)列中按照先進(jìn)先出的規(guī)則讀取消息,并將消息從隊(duì)列中移出。
4 CPCI通信仿真
硬件設(shè)備內(nèi)部處理模塊板之間的數(shù)據(jù)交互稱為CPCI通信。CPCI通道的仿真策略是創(chuàng)建一個(gè)共享內(nèi)存區(qū),主要完成不同模塊板之間的數(shù)據(jù)通信。CPCI模塊要完成通信功能,需要定義CPCI端口、CPCI通道。緩沖區(qū)端口分為采樣和隊(duì)列端口,采樣端口一般用于傳輸周期性變化的數(shù)據(jù),而隊(duì)列端口一般用于傳輸非周期性變化的數(shù)據(jù)。
采樣端口存儲的是最新消息,當(dāng)接收到新消息后,消息才會(huì)被更新,否則保持原先緩沖區(qū)內(nèi)容不變。隊(duì)列端口能夠存儲多條消息,后續(xù)發(fā)送的消息不會(huì)覆蓋前面的消息,而是以隊(duì)列的方式存儲至消息尾部。當(dāng)接收應(yīng)用數(shù)據(jù)發(fā)送消息時(shí),消息被存儲到端口對應(yīng)的消息隊(duì)列中,如果消息隊(duì)列滿,該程序會(huì)被阻塞或取消發(fā)送;當(dāng)端口向應(yīng)用程序發(fā)送數(shù)據(jù)時(shí),從端口消息隊(duì)列中取第一個(gè)消息發(fā)送給應(yīng)用程序;如果消息隊(duì)列為空,系統(tǒng)阻塞應(yīng)用程序或取消接收。端口的屬性包含緩沖區(qū)的最大尺寸,在整體緩沖區(qū)中的偏移位置和目的端口的ID。CPCI的讀寫操作與A429類似。
5 結(jié)語
通過研究AFDX、A429和CPCI三種機(jī)載領(lǐng)域常用總線數(shù)據(jù)通信的協(xié)議特點(diǎn)和處理機(jī)制,在PC平臺構(gòu)建虛擬總線組件架構(gòu),仿真總線數(shù)據(jù)發(fā)送和接收處理機(jī)制,設(shè)計(jì)適用于不同總線的緩存管理策略,屏蔽網(wǎng)絡(luò)環(huán)境的差異性,提供AFDX、A429、CPCI等網(wǎng)絡(luò)通訊接口以及在PC端的仿真實(shí)現(xiàn)。通過使用已構(gòu)建的虛擬總線,在PC端進(jìn)行軟件的前期聯(lián)試和驗(yàn)證,能夠發(fā)現(xiàn)軟件設(shè)計(jì)和開發(fā)階段存在的問題,為后期基于機(jī)載硬件平臺的系統(tǒng)級交聯(lián)驗(yàn)證提供了功能級的保證,降低系統(tǒng)交聯(lián)過程中功能性問題的驗(yàn)證成本,提高系統(tǒng)驗(yàn)證效率。
參考文獻(xiàn):
[1] 楊峰,洪元佳,夏杰,等.AFDX網(wǎng)絡(luò)技術(shù)綜述[J].電子技術(shù)應(yīng)用,2016,42(4):4-6.
[2] 劉瑞旸.AFDX端系統(tǒng)協(xié)議棧分析與設(shè)計(jì)[D].西安:西安電子科技大學(xué),2015.
[3] 趙永庫,李貞,唐來勝.AFDX網(wǎng)絡(luò)協(xié)議研究[J].計(jì)算機(jī)測量與控制,2012,19(1):3137-3139.
[4] 解文濤.ARINC429總線采集器的設(shè)計(jì)和開發(fā)[J].測控技術(shù),2010,29(7):24-27.
[5] 周前柏,馬偉勃.ARINC429通信方式的研究與實(shí)現(xiàn)[J].航空計(jì)算技術(shù),2010,40(4):121-124.
[6] 支超有.機(jī)載數(shù)據(jù)總線技術(shù)及其應(yīng)用[M].北京:國防工業(yè)出版社,2009.
[7] 許燕婷.AFDX端系統(tǒng)協(xié)議橈虛擬鏈路層分析及仿真研究[D].上海:上海交通大學(xué),2011.
[8] 杜宏偉,馬捷中.航空電子全雙工交換式以太網(wǎng)及其關(guān)機(jī)技術(shù)研究[J].測控技術(shù),2008,27(12):65-67.
[9] 王綺卉.AFDX核心交換技術(shù)的研究與實(shí)現(xiàn)[D].西安:西安石油大學(xué),2010.
[10] 鐘杰,何民,王懷勝,等.AFDX架構(gòu)及協(xié)議分析[J].電訊技術(shù),2010,50(1):65-71.
[11] 徐科華.AFDX總線網(wǎng)絡(luò)數(shù)據(jù)傳輸分析[J].民用飛機(jī)設(shè)計(jì)與研究,2009(2):35-40.
[12] 熊華鋼,王中華.先進(jìn)航空電子綜合技術(shù)[M].北京:國防工業(yè)出版社,2009.
[13] 高揚(yáng),徐景碩.實(shí)現(xiàn)ARINC429總線數(shù)據(jù)傳輸?shù)姆椒╗J].測控技術(shù),2002,21(8):64-65.
[14] 苗劍峰,劉建業(yè),孫永榮,等.高性能導(dǎo)航計(jì)算機(jī)的ARINC429總線通訊研究與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2007,15(11):1614-1617.endprint