專利名稱:基于vxworks操作系統(tǒng)的ARINC429通信冗余方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到實時系統(tǒng)的通信技術(shù)領(lǐng)域,具體涉及了一種基于vxworks的ARINC429通信冗余方法。
背景技術(shù):
Vxworks操作系統(tǒng)是美國Winder River公司于1983年設(shè)計開發(fā)的一種嵌入式實時操作系統(tǒng),系統(tǒng)在提供高效實時多任務(wù)的同時提供了良好的伸縮性,即系統(tǒng)的主要部件都可以按照應(yīng)用的要求進行增加或刪減。
ARINC429是一種航空航天專用串口通信總線協(xié)議。由于ARINC429本身傳輸信息的高速以及可靠性,它己作為一種通用的串行傳輸總線標準應(yīng)用于幾乎所有飛機的航電系統(tǒng)中。但飛機上各種環(huán)境因素,如抖動、高低溫、濕度以及來自其他設(shè)備的電磁干擾,都會降低ARINC429傳輸信息的可靠性,所以針對ARINC429的高效可靠通信變得十分重要,而冗余技術(shù)是提高通信系統(tǒng)可靠性的最有效的方法之一。
目前,通信系統(tǒng)中常采用的最簡單有效的一種冗余技術(shù)就是硬件冗余技術(shù),例如在《雙總線方式下的串口通信技術(shù)》 一文中提到的"雙總線結(jié)構(gòu)",是通過故障檢測設(shè)備來檢測故障,從而實現(xiàn)通信冗余,該方法存在以下技術(shù)瓶頸(1)當硬件檢測電路自身出現(xiàn)故障時,不能監(jiān)視主從通道的狀態(tài),也無法完成主從通道的自動切換功能;(2)由于需要設(shè)計硬件電路,通信系統(tǒng)的設(shè)計和實現(xiàn)復(fù)雜化了,引入了附加的不可靠的因素。
又如在《航空ARINC429總線通信的余度設(shè)計》 一文中提到"信息余度的設(shè)計與實現(xiàn)",是通過循環(huán)冗余校驗(CRC)實現(xiàn)的ARINC429通信冗余,該方法雖然克服了硬件冗余的缺點,但是編碼較為復(fù)雜,增加了鏈路的負荷。
另外實時系統(tǒng)的通信技術(shù)領(lǐng)域中實時性是一個重要的要求,上述提到的冗余方法都在一定程度上增加了系統(tǒng)的復(fù)雜度和設(shè)計的難度,從而必然會降低系統(tǒng)的實時性。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述已有冗余技術(shù)的種種缺陷,提供一種基于vxworks操作系統(tǒng)的ARINC429通信冗余方法,以降低硬件和編碼的復(fù)雜性,提高系統(tǒng)實時性。
為了達到上述目的,本發(fā)明的技術(shù)方案包括以下步驟
(1 )在上位機和CPU之間建立起兩條獨立通信的ARINC429通訊通道,進行周期為period的周期通信;任選一條通訊通道作為主通道A,且為默認的通信通道,選另外一條通道B作為備用通道;
(2) 在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫函數(shù)taskSpawn ()創(chuàng)建基于操作系統(tǒng)vxworks的周期為periodT的周期任務(wù)PCDeaI,以接收發(fā)送和處理上位機數(shù)據(jù);創(chuàng)建第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId分別用來存放接收到主通道A和備用通道B的數(shù)據(jù);
(3) 按如下步驟編寫一個通道選擇函數(shù)Choose429():
3a)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖區(qū)的操作函數(shù)mgNBytes (),分別獲取環(huán)形緩沖區(qū)RingAId和RingBId中的字節(jié)數(shù);
3b)創(chuàng)建全局變量NA作為第一計數(shù)器,對同時發(fā)生的RingAId中字節(jié)數(shù)為0和RingBId中字節(jié)數(shù)不為0這種情況的次數(shù)計數(shù);創(chuàng)建全局變量NB作為第二計數(shù)器,對RingAId和RingBId中字節(jié)數(shù)都為0這種情況發(fā)生的次數(shù)計數(shù);若RingAId和RingBId中字節(jié)數(shù)都不為為0,則判斷RingAId中字節(jié)數(shù)是否大于RingAId中字節(jié)數(shù),如果是就采用備用通道B,否則采用主通道A;若同時發(fā)生RingAId中字節(jié)數(shù)不為0和RingBId中字節(jié)數(shù)為0這種情況,則采用主通道A;
3c)選擇一個門限N,進行異常檢測,若第一計數(shù)器NA的值大于這個門限,則判定主通道A異常,切換為備用通道B,否則跳回步驟3a),完成函數(shù)Choose429()的編寫;若第二計數(shù)器NB的值大于這個門限,則判定兩個通道都異常,CPU不接收數(shù)據(jù),進入安全工作模式,否則跳回步驟3a),完成函數(shù)Choose429()的編寫。
(4) 按如下步驟執(zhí)行由步驟(2)中創(chuàng)建的任務(wù)PCDeal.-
4a)在每次接收數(shù)據(jù)前先調(diào)用步驟(3)中的通道選擇函數(shù)Choose429()選擇通道;4b)調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖區(qū)的操作庫函數(shù)rngBufGet (),讀取該通道環(huán)形緩沖區(qū)的數(shù)據(jù),以完成對數(shù)據(jù)的接收。
在步驟(1)中,主通道A和備用通道B的工作時序和傳輸數(shù)據(jù)完全相同,且B通道處于熱備份狀態(tài)。
在步驟(2)中,基于操作系統(tǒng)vxworks的任務(wù)PCDeal是通過查詢的方式來接收上位機數(shù)據(jù)的周期任務(wù),可以根據(jù)實時性要求來改變該任務(wù)的周期periodT。
在步驟3b)中,第一計數(shù)器NA加1時,第二計數(shù)器NB清零;第二計數(shù)器NB加1時,第一計數(shù)器NA清零;任何這兩種情況之外的情況發(fā)生時,第一計數(shù)器NA和第二計數(shù)器NB都清零。
在步驟3c)所述的選擇門限N,是根據(jù)上位機和CPU的通信周期period而定,即N倍的函數(shù)Choose429()的執(zhí)行時間至少等于上位機和CPU的通信周期period 。
在步驟4b)中,如果任務(wù)PCDeal調(diào)用函數(shù)Choose429()選定的通道為主通道A,則任務(wù)PCDeal在第一環(huán)形緩沖區(qū)RingAId中取數(shù)的同時從第二環(huán)形緩沖區(qū)RingBId中取出相應(yīng)的數(shù),并丟棄這些數(shù)據(jù),實現(xiàn)主通道A和備用通道B的同步。
本發(fā)明結(jié)合信息同步技術(shù)和異常檢測技術(shù)有如下優(yōu)點
(1) 本發(fā)明由于其接收數(shù)據(jù)的任務(wù)是周期任務(wù),且周期可根據(jù)實時性要求來確定,使得通信系統(tǒng)在通過冗余保證了可靠性的基礎(chǔ)上,進一步滿足了系統(tǒng)的實時性要求。
(2) 本發(fā)明中的周期任務(wù)由于在每次接收數(shù)據(jù)之前先進行通道選擇,不僅保證了出現(xiàn)異常時能夠及時的做出相應(yīng)的處理,即切換通道或者進入安全模式,也保證了異?;謴?fù)之后,及時自動恢復(fù)成采用主通道通信。
(3) 本發(fā)明由于充分利用了操作系統(tǒng)vxworks中對環(huán)形緩沖的操作函數(shù),簡化了對數(shù)據(jù)的處理。
(4) 本發(fā)明從軟件上實現(xiàn)了對兩個通道傳輸信息的同步和通過設(shè)置門限方法來檢測異常,降低了系統(tǒng)的復(fù)雜性,減少了系統(tǒng)在硬件上的不可靠因素。
圖l是本發(fā)明的實現(xiàn)流程圖2是本發(fā)明中編寫函數(shù)Choose429()的流程圖;圖3是本發(fā)明根據(jù)RingAId和RingBId中字節(jié)數(shù)的不同情況作不同處理的流 程圖4是本發(fā)明選擇門限N進行異常檢測的流程圖。
具體實施例方式
下面結(jié)合附圖和程序偽碼對本發(fā)明的具體實施方式
進行詳細說明
在具體實施方式
中,利用到的任務(wù)PCDeal所對應(yīng)的函數(shù)pcdeal()的偽碼為 void pcdeal()
while(l)
taskDelay(T); Choose429();
}
利用到的選擇通道的函數(shù)Choose429()的偽碼為: void Choose429()
if()
NA=0; NB=0;
else if()
NA++; NB=0; if(NA<=N)
Choose429();
else
NA=0;
else if()NB++; NA=0; if(NB<=N)
Choose429();
else
NB=0;
else
NA=0; NB=0;
參照圖l,本發(fā)明實現(xiàn)流程如下 步驟l,建立通信通道。
la)從硬件上,在上位機和CPU之間建立起兩條獨立通信的ARINC429通 訊通道,進行周期為period的周期通信;
lb)任選一條通訊通道作為主通道A,且為默認的通信通道,選另外一條通 道B作為備用通道,主通道A和備用通道B的工作時序和傳輸數(shù)據(jù)完全相同, 且B通道處于熱備份狀態(tài)。
步驟2,創(chuàng)建任務(wù)和環(huán)形緩沖區(qū)。
2a)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫函數(shù)taskSpawn ()創(chuàng)建基于 操作系統(tǒng)vxworks的周期為periodT的周期任務(wù)PCDeal,以接收發(fā)送和處理上位 機數(shù)據(jù),函數(shù)taskSpawn ()的具體調(diào)用方式如下
taskSpawn("PCDeal",Priority,0,STACK—SIZE,(FUNCPTR)pcdeal,O,O,O,O,O,O,O,O,O,O) 其中,PCDeal為任務(wù)名,Priority為該任務(wù)的優(yōu)先級,STACK_SIZE為任務(wù)
分配的堆棧大小,pcdeal為任務(wù)函數(shù)的入口地址。
任務(wù)PCDeal是通過査詢的方式來接收上位機數(shù)據(jù)的周期任務(wù),并根據(jù)實時
性要求改變該任務(wù)的周期periodT,通過調(diào)用庫函數(shù)taskDelay()改變?nèi)蝿?wù)延時的
方式來改變periodT;
2b)調(diào)用庫函數(shù)mgCreate ()分別創(chuàng)建第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId,分別存放接收到主通道A和備用通道B的數(shù)據(jù),該函數(shù) rngCreate ()調(diào)用時,要有一個表示接收上位機數(shù)據(jù)所需要的環(huán)形緩沖區(qū)的字節(jié) 數(shù)的參數(shù)RAMVOLUME ,即rngCreate(RAM—VOLUME)。
步驟3,編寫通道選擇函數(shù)Choose429 ()。
參照圖2,函數(shù)Choose429 ()的具體編寫流程如下
3a)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖 區(qū)的操作函數(shù)rngNBytes(),分別獲取環(huán)形緩沖區(qū)RingAId和RingBId中字節(jié)數(shù);
3b)根據(jù)第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)的不 同情況,參照圖3,作不同的處理
① 對于同時發(fā)生的第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù)為0和第二環(huán)形緩沖區(qū) RingBId中字節(jié)數(shù)不為0的情況,創(chuàng)建全局變量NA作為第一計數(shù)器其發(fā)生的次 數(shù)計數(shù);
② 對于第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)都為0 的情況,創(chuàng)建全局變量NB作為第二計數(shù)器其發(fā)生的次數(shù)計數(shù);由于第一計數(shù)器 NA和第二計數(shù)器NB只對相應(yīng)情況連續(xù)發(fā)生的次數(shù)計數(shù),所以第一計數(shù)器NA 加1時,第二計數(shù)器NB清零;第二計數(shù)器NB加1時,第一計數(shù)器NA清零; 任何這兩種情況之外的情況發(fā)生時,第一計數(shù)器NA和第二計數(shù)器NB都清零;
③ 對于第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)都不為 0的情況,則判斷第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)是否大于第一環(huán)形緩沖區(qū) RingAId中字節(jié)數(shù),如果是就采用備用通道B,否則采用主通道A;如果第一環(huán) 形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)都不為0,且第二環(huán)形緩 沖區(qū)RingBId中的數(shù)的字節(jié)數(shù)大于第一環(huán)形緩沖區(qū)RingAId中的字節(jié)數(shù),則表示 A通道在這之前出現(xiàn)了異常丟失了數(shù)據(jù),為了防止數(shù)據(jù)的接收不連續(xù),應(yīng)該采用
B通道通信;
④ 対于同時發(fā)生第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù)不為0和第二環(huán)形緩沖區(qū) RingBId中字節(jié)數(shù)為0的情況,則采用主通道A;
③選擇一個門限N進行異常檢測,其中門限N是根據(jù)上位機和CPU的通信 周期period而定,即N倍的函數(shù)Choose429()的執(zhí)行時間至少等于上位機和CPU 的通信周期period,這樣做的原因是如果通道在大于上位機和CPU的通信周期 period的時間內(nèi)都沒有數(shù)據(jù)傳輸,則表示通道異常。參照圖4,上述步驟⑤中異常檢測的具體方法如下
如果若第一計數(shù)器NA的值大于這個門限,則判定主通道A異常,切換為 備用通道B,否則繼續(xù)跳回步驟3a),完成函數(shù)Choose429()的編寫;若第二計 數(shù)器NB的值大于這個門限,則判定兩個通道都異常,CPU不接收數(shù)據(jù),進入安 全工作模式,否則跳回步驟3a),完成函數(shù)Choose429()的編寫。
步驟4,按如下步驟執(zhí)行由步驟(2)中創(chuàng)建的任務(wù)PCDeal:
4a)在每次接收數(shù)據(jù)前先調(diào)用步驟(3)中的通道選擇函數(shù)Choose429()選擇 通道,這樣不僅保證了出現(xiàn)異常時能夠及時的做出相應(yīng)的處理,即切換通道或者 進入安全模式,也保證了異常恢復(fù)之后,及時自動恢復(fù)成采用主通道通信;
4b)調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖區(qū)的操作庫函數(shù)rngBufGet (),讀 取該通道環(huán)形緩沖區(qū)的數(shù)據(jù),以完成對數(shù)據(jù)的接收。如果任務(wù)PCDeal調(diào)用函數(shù) Choose429()選定的通道為主通道A,則任務(wù)PCDeal在第一環(huán)形緩沖區(qū)RingAId 中取數(shù)的同時從第二環(huán)形緩沖區(qū)RingBId中取出相應(yīng)的數(shù),并丟棄這些數(shù)據(jù),實 現(xiàn)主通道A和備用通道B的同步。如果選擇的通訊通道為備用通道B,由于只 有在第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù)為0的情況下才會選備用通道B,所以不 用再從第一環(huán)形緩沖區(qū)RingAId取數(shù)保證同步。
權(quán)利要求
1.一種基于vxworks操作系統(tǒng)的ARINC429通信冗余方法,包括以下步驟(1)在上位機和CPU之間建立起兩條獨立通信的ARINC429通訊通道,進行周期為period的周期通信;任選一條通訊通道作為主通道A,且為默認的通信通道,選另外一條通道B作為備用通道;(2)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用庫函數(shù)taskSpawn()創(chuàng)建基于操作系統(tǒng)vxworks的周期為periodT的周期任務(wù)PCDeal,以接收發(fā)送和處理上位機數(shù)據(jù);創(chuàng)建第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId分別用來存放接收到主通道A和備用通道B的數(shù)據(jù);(3)按如下步驟編寫一個通道選擇函數(shù)Choose429()3a)在操作系統(tǒng)vxworks的編程環(huán)境下調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖區(qū)的操作函數(shù)rngNBytes(),分別獲取環(huán)形緩沖區(qū)RingAId和RingBId中的字節(jié)數(shù);3b)創(chuàng)建全局變量NA作為第一計數(shù)器,對同時發(fā)生的第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù)為0和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)不為0這種情況的次數(shù)計數(shù);創(chuàng)建全局變量NB作為第二計數(shù)器,對第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)都為0這種情況發(fā)生的次數(shù)計數(shù);若第一環(huán)形緩沖區(qū)RingAId和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)都不為為0,則判斷第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)是否大于第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù),如果是就采用備用通道B,否則采用主通道A;若同時發(fā)生第一環(huán)形緩沖區(qū)RingAId中字節(jié)數(shù)不為0和第二環(huán)形緩沖區(qū)RingBId中字節(jié)數(shù)為0這種情況,則采用主通道A;3c)選擇一個門限N,進行異常檢測,若第一計數(shù)器NA的值大于這個門限,則判定主通道A異常,切換為備用通道B,否則跳回步驟3a),完成函數(shù)Choose429()的編寫;若第二計數(shù)器NB的值大于這個門限,則判定兩個通道都異常,CPU不接收數(shù)據(jù),進入安全工作模式,否則跳回步驟3a),完成函數(shù)Choose429()的編寫。(4)按如下步驟執(zhí)行由步驟(2)中創(chuàng)建的任務(wù)PCDeal4a)在每次接收數(shù)據(jù)前先調(diào)用步驟(3)中的通道選擇函數(shù)Choose429()選擇通道;4b)調(diào)用操作系統(tǒng)vxworks中對環(huán)形緩沖區(qū)的操作庫函數(shù)rngBufGet(),讀取該通道環(huán)形緩沖區(qū)的數(shù)據(jù),以完成對數(shù)據(jù)的接收。
2. 如權(quán)利要求1所述的ARINC429通信冗余方法,在步驟(1)中,主通道 A和備用通道B的工作時序和傳輸數(shù)據(jù)完全相同,且B通道處于熱備份狀態(tài)。
3. 如權(quán)利要求1所述的ARINC429通信冗余方法,在步驟(2)中,基于操 作系統(tǒng)vxworks的任務(wù)PCDeal是通過査詢的方式來接收上位機數(shù)據(jù)的周期任務(wù), 可以根據(jù)實時性要求來改變該任務(wù)的周期periodT。
4. 如權(quán)利要求1所述的ARINC429通信冗余方法,在步驟3b)中,第一計 數(shù)器NA加1時,第二計數(shù)器NB清零;第二計數(shù)器NB加1時,第一計數(shù)器 NA清零;任何這兩種情況之外的情況發(fā)生時,第一計數(shù)器NA和第二計數(shù)器 NB都清零。
5. 如權(quán)利要求1所述的ARINC429通信冗余方法,在步驟3c)所述的選擇 門限N,是根據(jù)上位機和CPU的通信周期period而定,即N倍的函數(shù)Choose429() 的執(zhí)行時間至少等于上位機和CPU的通信周期period。
6. 如權(quán)利要求1所述的ARINC429通信冗余方法,在步驟4b)中,如果任 務(wù)PCDeal調(diào)用函數(shù)Choose429()選定的通道為A通道,則任務(wù)PCDeal在第一 環(huán)形緩沖區(qū)RingAId中取數(shù)的同時從第二環(huán)形緩沖區(qū)RingBId中取出相應(yīng)的數(shù), 并丟棄這些數(shù)據(jù),實現(xiàn)主通道A和備用通道B的同步。
全文摘要
本發(fā)明公開了一種基于vxworks操作系統(tǒng)的ARINC429通信冗余方法,主要解決現(xiàn)有實時通信系統(tǒng)中冗余方法不可靠、實時性低、設(shè)計復(fù)雜的問題。其實現(xiàn)步驟為在上位機和CPU的通信系統(tǒng)中,上位機通過主通道A和備用通道B兩條獨立的ARINC429通道和CPU通信,且兩通道的工作時序和傳輸數(shù)據(jù)完全相同,CPU通過兩個不同的環(huán)形緩沖區(qū)分別存放從兩個通道接收到的數(shù)據(jù),CPU每次接收數(shù)據(jù)之前調(diào)用通道選擇函數(shù),該通道選擇函數(shù)先判斷兩個環(huán)形緩沖區(qū)中的字節(jié)數(shù),根據(jù)兩個環(huán)形緩沖區(qū)中的字節(jié)數(shù)的不同情況,進行異常檢測并選擇通道。該方法充分利用了vxworks中環(huán)形緩沖區(qū)操作函數(shù),簡化了異常檢測和信息同步過程,對故障做出及時處理,從而在軟件上確保了系統(tǒng)的可靠性和實時性。
文檔編號G06F9/46GK101604270SQ20091002326
公開日2009年12月16日 申請日期2009年7月10日 優(yōu)先權(quán)日2009年7月10日
發(fā)明者娟 萬, 劉校偉, 湯書苑, 征 相, 峰 苑, 齊佩漢 申請人:西安電子科技大學