宋 丫,李興智,劉逸涵
(中國航空工業(yè)集團公司西安航空計算技術(shù)研究所,陜西 西安 710077)
ARINC429協(xié)議總線(以下簡稱ARINC429總線)是一種常見的飛機數(shù)據(jù)傳輸總線,它克服了模擬量傳輸帶來的高成本、傳輸線過多和可靠性差的問題,進而在減輕飛機重量的同時,使飛機信息傳輸?shù)木珳识鹊靡蕴嵘齕1]。
ARINC429總線控制器由兩個接收器、一個發(fā)送器以及若干主機可編程控制寄存器組成,它具有如下特征:1) 循環(huán)自測試功能;2) 25或32位字長;3) 奇偶校驗位;4) 接收與發(fā)送字的生成;5) 支持中斷和查詢兩種操作方式;6) 異步串行傳輸;7) 100 kbps或12.5 kbps傳輸速率[2]。
對于32位字長的ARINC429消息,其包含有標志位(Label)、源/目的識別位(S/D)、數(shù)據(jù)位(data)、標記位(SIGN)、狀態(tài)位(SSM)、奇偶校驗位(Parity)[3]。數(shù)據(jù)格式分為主機端格式與線上傳輸格式,一般采用主機端格式定義數(shù)據(jù)結(jié)構(gòu),消息組成如圖1所示。
圖1 ARINC429總線數(shù)據(jù)格式
目前,機載通信常用的ARINC429總線消息主要分為周期性和事件性,其中周期性消息是指多個Label號數(shù)據(jù)按照一定的時間間隔進行傳送,周期由主機端時鐘控制,數(shù)據(jù)字之間間隔4個位的空閑時間。事件性消息則由特定事件觸發(fā),一般由多個Label號相同的數(shù)據(jù)字組成,某一時刻連續(xù)發(fā)送,包含包頭包尾以便識別解析[4]。對于周期性消息,由于發(fā)送端與接收端的系統(tǒng)時鐘存在差異,且多個Label號數(shù)據(jù)需要一定的傳輸時間,從而導(dǎo)致發(fā)送和接收可能出現(xiàn)在周期間隔中的任何時刻,即我們常說的異步傳輸。
為了提高ARINC429總線的可靠性,及時監(jiān)測總線功能是否正常,在設(shè)計機載通信系統(tǒng)時,常常需要建立一定的通信故障判斷機制,根據(jù)總線通信原理判斷線路通斷,同時檢查數(shù)據(jù)是否正常更新。
遠程接口單元通過ARINC429總線接收來自座艙壓力傳感器的數(shù)據(jù)信息,再通過網(wǎng)絡(luò)總線傳輸至綜合管理計算機。為了保證數(shù)據(jù)的可靠性,實時監(jiān)測機上設(shè)備狀態(tài),遠程接口單元需要對ARINC429總線通路及座艙壓力傳感器數(shù)據(jù)更新進行判斷,并及時上報綜合管理計算機。
判斷總線通路是否斷開,一般采用讀取接收緩存的方式,連續(xù)多個周期接收緩存無數(shù)據(jù)則可認為通信中斷,此時可判定總線故障或通信設(shè)備下線。在判斷接收數(shù)據(jù)是否更新時,通常在消息中設(shè)置一個心跳位,通過心跳不斷更新,判斷當前數(shù)據(jù)是否為最新包。
在一起機上偶發(fā)的ARINC429總線心跳故障案例中,座艙壓力傳感器每周期固定向遠程接口單元發(fā)送8個Label號數(shù)據(jù)字,其中Label號為313(八進制)的數(shù)據(jù)字包含1bit心跳位,并1、0交替變化。遠程接口單元每周期接收數(shù)據(jù)后保存本地,同時判斷心跳位是否發(fā)生變化,連續(xù)10個周期(100 ms)心跳不變則上報該設(shè)備心跳故障。經(jīng)長時間試驗,發(fā)現(xiàn)該故障具有周期特性,設(shè)備上線大約二十分鐘后上報心跳故障,持續(xù)幾十秒恢復(fù)正常,如此循環(huán)往復(fù)。
首先心跳故障的根本原因是連續(xù)10個周期接收到的心跳位無更新,此時有兩種可能:1) 座艙壓力傳感器發(fā)送數(shù)據(jù)有誤;2) 遠程接口單元接收解析不對。從根源處進行故障隔離,持續(xù)讀取遠程接口單元ARINC429總線接收緩存的原始數(shù)據(jù),篩選出所有Label號為313的數(shù)據(jù)包,解析出心跳位并實時監(jiān)控。試驗顯示,心跳位持續(xù)穩(wěn)定更新,大約二十分鐘后故障再次復(fù)現(xiàn),上報設(shè)備心跳故障。同時該ARINC429總線設(shè)置256數(shù)據(jù)字大緩存,而設(shè)備每周期僅發(fā)送8個數(shù)據(jù)字,絕不會出現(xiàn)緩存溢出,至此可將故障定位于遠程接口單元的判故機制。
周期性故障一般與軟件運行的時序有關(guān),進一步分析試驗數(shù)據(jù)發(fā)現(xiàn),當故障出現(xiàn)時,遠程接口單元每周期接收到的數(shù)據(jù)包個數(shù)與座艙壓力傳感器發(fā)送的8個不一致,即發(fā)送接收時機與時鐘中斷發(fā)生錯位,此時當前周期未收到包含心跳的Label數(shù)據(jù),而下個周期收到兩個包含心跳的Label數(shù)據(jù)。遠程接口單元軟件在處理接收數(shù)據(jù)時采用周期覆蓋式,當收到兩個心跳時,新數(shù)據(jù)覆蓋舊數(shù)據(jù),導(dǎo)致0-1交替變化的心跳被連續(xù)覆蓋,從而導(dǎo)致故障發(fā)生。
究其根本是由于遠程接口單元與座艙壓力傳感器是異步運行的,沒有同步機制,兩者均是在自身時鐘控制下,以固定周期進行消息收發(fā),且兩個設(shè)備上電順序及時間隨機;再者兩個產(chǎn)品的自身時鐘精度也存在差異,時鐘信號在微觀上也有偏差,導(dǎo)致系統(tǒng)運行一段時間后,兩者的本地時間出現(xiàn)相對差額,如圖2所示。
圖2 異步系統(tǒng)周期示意圖
如圖所示,A、B為兩個異步設(shè)備,各自時鐘周期存在微小差異。A設(shè)備在每個周期的固定點發(fā)送數(shù)據(jù)(向上箭頭),B設(shè)備在每個周期的固定點接收數(shù)據(jù)(向下箭頭),圓圈處為放大后的示意圖,正方形為ARINC429總線的一個數(shù)據(jù)字。一段時間后,兩個設(shè)備的發(fā)送和接收點會越來越近,由于A設(shè)備發(fā)送數(shù)據(jù)需要一定時間,隨著系統(tǒng)的運行,B設(shè)備的接收點會出現(xiàn)在A設(shè)備的發(fā)送過程中,此時就會表現(xiàn)為遠程接口單元接收到的數(shù)據(jù)與座艙壓力傳感器發(fā)送的個數(shù)不一致,一個周期內(nèi)出現(xiàn)兩包心跳數(shù)據(jù)。
針對上述故障原因,對遠程接口單元接收數(shù)據(jù)判故方法進行改進,去除周期覆蓋式的接收機制,只要在接收緩存中識別到Label號為313的數(shù)據(jù)包,即心跳所在數(shù)據(jù)包,就進行一次心跳更新,同時清空故障計數(shù),并保存最新一次的心跳值。
考慮到心跳0-1跳變存在一定的風(fēng)險,容易受機上干擾產(chǎn)生數(shù)據(jù)位錯誤,可以在數(shù)據(jù)負載允許的條件下,設(shè)置3位或多位心跳,變化范圍0-7等,發(fā)送端設(shè)備每周期心跳加1,接收端設(shè)備檢測到心跳變化即完成一次有效更新,如此可避免因干擾導(dǎo)致的誤判。
本文介紹了一起機上偶發(fā)的ARINC429總線心跳故障案例,分析了異步系統(tǒng)間周期傳輸消息的特征,并結(jié)合ARINC429總線格式,提出了一種穩(wěn)定有效的故障判斷機制,為后續(xù)工程應(yīng)用提供了一定的參考經(jīng)驗。