專利名稱:基于計數(shù)變化進行動態(tài)超時控制的數(shù)據(jù)接收方法
技術(shù)領(lǐng)域:
本發(fā)明涉及衛(wèi)星數(shù)管分系統(tǒng)的數(shù)據(jù)分發(fā)與傳輸,尤其是一種基于計數(shù)變化進行動態(tài)超時控制的數(shù)據(jù)接收方法。
背景技術(shù):
在嵌入式實時控制領(lǐng)域,如衛(wèi)星數(shù)管分系統(tǒng)的數(shù)據(jù)分發(fā)與傳輸,為防止程序因等待硬件狀態(tài)而發(fā)生死鎖,異步數(shù)據(jù)通訊程序需要對數(shù)據(jù)接收采取超時判斷和控制,即等待軟件指定的一段時間用于判斷硬件接收狀態(tài),如果超過這段時間接收未準備好,則不再繼續(xù)判讀狀態(tài),按照未接收到數(shù)據(jù)進行異常處理,這段等待時間是由接收的數(shù)據(jù)長度、接收波特率和處理器響應(yīng)時間決定的。以往動態(tài)超時控制采取的策略是按整批數(shù)據(jù)進行設(shè)計,但是隨著星上應(yīng)用載荷通道和業(yè)務(wù)數(shù)據(jù)量的增加,各通道的數(shù)據(jù)量相差很大的時間就需要按照不同協(xié)議設(shè)置成不同程序,難以設(shè)計成通用組件,維護和修改起來也相對困難。為此,一種基于計數(shù)變化進行多通道超時控制的數(shù)據(jù)接收方法可以提供通用的異步數(shù)據(jù)通訊超時控制的方法,用于解決多種載荷和多種協(xié)議格式數(shù)據(jù)接收程序通用化設(shè)計的問題。目前沒有發(fā)現(xiàn)同本發(fā)明類似技術(shù)的說明或報道,也尚未收集到國內(nèi)外類似的資料。
發(fā)明內(nèi)容
為了實現(xiàn)多種載荷和多種協(xié)議格式數(shù)據(jù)接收程序通用化設(shè)計,解決異步數(shù)據(jù)通訊超時控制的問題,本發(fā)明的目的在于提出一種基于計數(shù)變化進行動態(tài)超時控制的數(shù)據(jù)接收方法,利用本發(fā)明,可以實現(xiàn)衛(wèi)星各載荷通用超時控制數(shù)據(jù)接收軟件算法的目的。為了達到上述發(fā)明目的,本發(fā)明為解決其技術(shù)問題所采用的技術(shù)方案是提供一種基于計數(shù)變化進行動態(tài)超時控制的數(shù)據(jù)接收方法,包括:—個用于動態(tài)超時控制的定時器;一個用于異步串行通訊的控制器;一個用于存儲接收到數(shù)據(jù)的數(shù)據(jù)緩存器;一個用于計量已接收到數(shù)據(jù)字節(jié)數(shù)的數(shù)據(jù)計數(shù)器;一個用于處理已接收數(shù)據(jù)的處理器;一個用于存儲上次計數(shù)值的計數(shù)存儲單元;一個用于接收異步串行數(shù)據(jù)的數(shù)據(jù)接收程序;一個用于超時情況下進行異常處理的超時處理程序;一個用于選擇通訊通道的多路選擇器;上述組成部件執(zhí)行如下的步驟:(I)根據(jù)異步通訊速率、位數(shù)及下位機響應(yīng)處理時間確定定時器的最大延時參數(shù);(2)通過處理器選擇軟件中多路通訊對應(yīng)的的通道號,向多路選擇器的端口寫入通道號;(3)接收異步串行數(shù)據(jù),存入數(shù)據(jù)緩存器,同步更新數(shù)據(jù)計數(shù)器;(4)由處理器啟動定時器,輪詢數(shù)據(jù)計數(shù)器,讀取當前計數(shù)器單元數(shù)值,與前次計數(shù)器單元數(shù)值進行比較;
(5)如果計數(shù)器單元數(shù)值達到預(yù)定義的長度,啟動數(shù)據(jù)接收程序進行處理;(6)如果當前計數(shù)器單元數(shù)值與前次計數(shù)器單元數(shù)值比較在規(guī)定的延時時間內(nèi)未遞增,則啟動超時處理程序進行異常處理;(7)如果數(shù)據(jù)計數(shù)器在規(guī)定延時內(nèi)發(fā)生遞增,但未達到預(yù)定義的數(shù)據(jù)長度,則回到步驟(4)繼續(xù)處理。本發(fā)明一種基于計數(shù)變化進行多通道超時控制的數(shù)據(jù)接收方法,由于采取上述的技術(shù)方案,在整星數(shù)管分系統(tǒng)與多種載荷進行數(shù)據(jù)通訊的情況下,數(shù)據(jù)接收功能可以設(shè)計成通用模塊,根據(jù)FIFO計數(shù)變化進行動態(tài)超時控制,而與各載荷通道的數(shù)據(jù)量無關(guān)。本發(fā)明解決了多載荷多數(shù)據(jù)類型情況下超時控制的問題,取得了提高衛(wèi)星軟件設(shè)計通用化程度和數(shù)據(jù)可靠性等有益效果。
圖1是實現(xiàn)本發(fā)明基于計數(shù)變化進行多通道超時控制的數(shù)據(jù)接收方法的原理框圖;圖2是本發(fā)明中數(shù)據(jù)接收和多通道超時控制的算法流程圖。
具體實施例方式下面結(jié)合
本發(fā)明的優(yōu)選實施例。圖1是實現(xiàn)本發(fā)明一種基于計數(shù)變化進行多通道超時控制的數(shù)據(jù)接收方法的原理框圖。如圖1的實施例所示,本發(fā)明的方法采用以下的組成部件:定時器1:用于動態(tài)超時控制;異步串行通訊控制器2:用于數(shù)據(jù)通信控制和數(shù)據(jù)收發(fā);數(shù)據(jù)緩存器3:用于存儲接收到的數(shù)據(jù);數(shù)據(jù)計數(shù)器4:用于計量已接收到數(shù)據(jù)字節(jié)數(shù);處理器5:用于處理已接收數(shù)據(jù);計數(shù)存儲單元6:用于存儲上次計數(shù)值的;數(shù)據(jù)接收程序7:用于接收異步串行數(shù)據(jù);超時處理程序8:用于超時情況下進行異常處理;多路選擇器9:用于選擇多通道通訊系統(tǒng)中指定的通訊鏈路。上述組成部件執(zhí)行如下的步驟:(I)根據(jù)異步通訊速率、位數(shù)及下位機響應(yīng)處理時間確定定時器I的最大延時參數(shù);本發(fā)明實施例中,定時器最大延時參數(shù)=(傳輸單字節(jié)位數(shù)/通訊速率+下位機處理時間)X 2。通訊速率單位為bps (位每秒),計算得出的延時參數(shù)單位為S (秒)。(2)通過處理器5選擇軟件中多路通訊對應(yīng)的的通道號,向多路選擇器9的端口寫入通道號;(3)接收異步串行數(shù)據(jù),存入數(shù)據(jù)緩存器3,同步更新數(shù)據(jù)計數(shù)器4 ;(4)由處理器5啟動定時器1,輪詢數(shù)據(jù)計數(shù)器4,讀取當前計數(shù)器單元數(shù)值,與前次計數(shù)器單元數(shù)值進行比較;(5)如果計數(shù)器單元數(shù)值達到預(yù)定義的長度,啟動數(shù)據(jù)接收程序進行處理;
(6)如果當前計數(shù)器單元數(shù)值與前次計數(shù)器單元數(shù)值比較在規(guī)定的延時時間內(nèi)未遞增,則啟動超時處理程序進行異常處理;(7)如果數(shù)據(jù)計數(shù)器4在規(guī)定延時內(nèi)發(fā)生遞增,但未達到預(yù)定義的數(shù)據(jù)長度,則回到步驟(4)繼續(xù)處理。上述步驟(2)中,處理器5向多路選擇器9對應(yīng)的輸入端口寫入需要通訊的通道號。上述步驟(3)還包括,數(shù)據(jù)計數(shù)器4必須與數(shù)據(jù)緩存器3中接收到的數(shù)據(jù)隊列長度保持同步一致,數(shù)據(jù)緩存器3中的數(shù)據(jù)隊列按先進先出方式進行更新,數(shù)據(jù)計數(shù)器4必須對于處理器5可讀可寫。上述步驟(3)中,當外部通訊控制器對數(shù)據(jù)緩存器3進行寫操作時,向隊列尾部依次添加接收到的字節(jié)數(shù)據(jù),同時數(shù)據(jù)計數(shù)器4加I。上述步驟(4)中,當處理器5對數(shù)據(jù)緩存器3進行讀操作時,從隊列頭部依次取出數(shù)據(jù),同時清除該字節(jié)數(shù)據(jù),數(shù)據(jù)計數(shù)器4減I。上述步驟(4)還包括,處理器5可以對數(shù)據(jù)計數(shù)器4和數(shù)據(jù)緩存器3進行清除操作,清除后數(shù)據(jù)計數(shù)器4為0,數(shù)據(jù)緩存器3中的數(shù)據(jù)全部清空。上述步驟(5)和(7)中,所述預(yù)定義數(shù)據(jù)長度由應(yīng)用軟件通過參數(shù)方式向處理器的數(shù)據(jù)處理程序傳遞,數(shù)據(jù)長度必須為固定的正整數(shù)。上述步驟(6)還包括,超時處理程序需要向應(yīng)用軟件傳遞通訊超時標志,以表示數(shù)據(jù)不可用。圖2是本發(fā)明中數(shù)據(jù)接收和多通道超時控制的算法流程圖,如圖2所示:上述步驟
(6)中,超時處理程序進行異常處理的超時控制的算法主要包括如下步驟:(I)初始化狀態(tài)標志(如接收緩存,接收完成標志等);(2)在多通道通訊系統(tǒng)中,選擇異步通訊通道;(3)啟動定時器,輪詢FIFO計數(shù)器,讀取當前計數(shù)器,與前次計數(shù)器單元數(shù)值進行比較;(4)如果FIFO計數(shù)器計數(shù)器數(shù)值達到預(yù)定義的長度(此參數(shù)由調(diào)用者設(shè)置),啟動數(shù)據(jù)接收程序進行處理;(5)如果當前計數(shù)器與前次計數(shù)單元比較在規(guī)定的延時時間5ms內(nèi)未遞增,則啟動超時處理程序進行異常處理。(6)如果計數(shù)器在規(guī)定延時內(nèi)發(fā)生遞增,但未達到預(yù)定義的長度,則回到步驟
(3),重啟計時器重新判讀FIFO計數(shù)。由上所述,本發(fā)明在整星數(shù)管分系統(tǒng)與多種載荷進行數(shù)據(jù)通訊的情況下,數(shù)據(jù)接收功能可以設(shè)計成通用模塊,根據(jù)FIFO計數(shù)變化進行動態(tài)超時控制,而與各載荷通道的數(shù)據(jù)量無關(guān)。因此,本發(fā)明實現(xiàn)了多種載荷和多種協(xié)議格式數(shù)據(jù)接收程序通用化設(shè)計,解決了異步數(shù)據(jù)通訊超時控制的問題,
權(quán)利要求
1.一種基于計數(shù)變化進行多通道超時控制的數(shù)據(jù)接收方法,其特征在于:一個用于動態(tài)超時控制的定時器;一個用于異步串行通訊的控制器;一個用于存儲接收到數(shù)據(jù)的數(shù)據(jù)緩存器;一個用于計量已接收到數(shù)據(jù)字節(jié)數(shù)的數(shù)據(jù)計數(shù)器;一個用于處理已接收數(shù)據(jù)的處理器;一個用于存儲上次計數(shù)值的計數(shù)存儲單元;一個用于接收異步串行數(shù)據(jù)的數(shù)據(jù)接收程序;一個用于超時情況下進行異常處理的超時處理程序;一個用于選擇通訊通道的多路選擇器;上述組成部件執(zhí)行如下的步驟: (1)根據(jù)異步通訊速率、位數(shù)及下位機響應(yīng)處理時間確定定時器的最大延時參數(shù); (2)通過處理器選擇軟件中多路通訊對應(yīng)的的通道號,向多路選擇器的端口寫入通道號; (3)接收異步串行數(shù)據(jù),存入數(shù)據(jù)緩存器,同步更新數(shù)據(jù)計數(shù)器; (4)由處理器啟動定時器,輪詢數(shù)據(jù)計數(shù)器,讀取當前計數(shù)器單元數(shù)值,與前次計數(shù)器單元數(shù)值進行比較; (5)如果計數(shù)器單元數(shù)值達到預(yù)定義的長度,啟動數(shù)據(jù)接收程序進行處理; (6)如果當前計數(shù)器單元數(shù)值與前次計數(shù)器單元數(shù)值比較在規(guī)定的延時時間內(nèi)未遞增,則啟動超時處理程序進行異常處理; (7)如果數(shù)據(jù)計數(shù)器在規(guī)定延時內(nèi)發(fā)生遞增,但未達到預(yù)定義的數(shù)據(jù)長度,則回到步驟(4)繼續(xù)處理。
2.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(I)中,所述的定時器最大延時參數(shù)=(傳輸單字節(jié)位數(shù)/通訊速率+下位機處理時間)X2 ;通訊速率單位為bps (位每秒),計算得出的延時參數(shù)單位為s (秒)。
3.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(2)中,處理器向多路選擇器對應(yīng)的輸入端口寫入需要通訊的通道號。
4.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(3)還包括,數(shù)據(jù)計數(shù)器與數(shù)據(jù)緩存器中接收到的數(shù)據(jù)隊列長度保持同步一致,數(shù)據(jù)緩存器中的數(shù)據(jù)隊列按先進先出方式進行更新,數(shù)據(jù)計數(shù)器對于處理器可讀可寫。
5.如權(quán)利要求1或4所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(3)中,當外部通訊控制器對數(shù)據(jù)緩存器進行寫操作時,向隊列尾部依次添加接收到的字節(jié)數(shù)據(jù),同時數(shù)據(jù)計數(shù)器加I。
6.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(4)中,當處理器對數(shù)據(jù)緩存器進行讀操作時,從隊列頭部依次取出數(shù)據(jù),同時清除該字節(jié)數(shù)據(jù),數(shù)據(jù)計數(shù)器減I。
7.如權(quán)利要求1或6所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(4)還包括,處理器可以對數(shù)據(jù)計數(shù)器和數(shù)據(jù)緩存器進行清除操作,清除后數(shù)據(jù)計數(shù)器為O,數(shù)據(jù)緩存器中的數(shù)據(jù)全部清空。
8.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(5)中,所述預(yù)定義數(shù)據(jù)長度由應(yīng)用軟件通過參數(shù)方式向處理器的數(shù)據(jù)處理程序傳遞,數(shù)據(jù)長度為固定的正整數(shù)。
9.如權(quán)利要求1所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(6)中,超時處理程序進行異常處理的超時控制的算法主要包括如下步驟:(1)初始化狀態(tài)標志,如接收緩存,接收完成標志; (2)在多通道通訊系統(tǒng)中,選擇異步通訊通道; (3)啟動定時器,輪詢數(shù)據(jù)計數(shù)器,讀取當前計數(shù)器,與前次計數(shù)器單元數(shù)值進行比較; (4)如果計數(shù)器計數(shù)器數(shù)值達到預(yù)定義的長度,啟動數(shù)據(jù)接收程序進行處理; (5)如果當前計數(shù)器與前次計數(shù)單元比較在規(guī)定的延時時間5ms內(nèi)未遞增,則啟動超時處理程序進行異常處理。
(6)如果計數(shù)器在規(guī)定延時內(nèi)發(fā)生遞增,但未達到預(yù)定義的長度,則回到步驟(3),重啟計時器重新判讀數(shù)據(jù)計數(shù)器。
10.如權(quán)利要求9所述的超時控制的數(shù)據(jù)接收方法,其特征在于:所述的步驟(6)還包括,超時處理程序需要向應(yīng)用軟件傳`遞通訊超時標志,表示數(shù)據(jù)不可用。
全文摘要
本發(fā)明涉及衛(wèi)星數(shù)管分系統(tǒng)的數(shù)據(jù)分發(fā)與傳輸,公開了一種基于計數(shù)變化進行動態(tài)超時控制的數(shù)據(jù)接收方法。包括確定超時最大延時參數(shù);選擇指定的通道;接收前啟動定時器計時;判斷接收數(shù)據(jù)的字節(jié)計數(shù)的情況,進行數(shù)據(jù)接收處理;判斷接收數(shù)據(jù)的字節(jié)計數(shù)的變化;判斷定時器超時情況,進行超時異常處理等步驟。本發(fā)明解決了多載荷多數(shù)據(jù)類型情況下接收數(shù)據(jù)超時控制的問題,取得了提高衛(wèi)星軟件設(shè)計通用化程度和數(shù)據(jù)可靠性等有益效果。
文檔編號G06F12/08GK103116557SQ201110365999
公開日2013年5月22日 申請日期2011年11月17日 優(yōu)先權(quán)日2011年11月17日
發(fā)明者朱琦, 林挺 申請人:上海航天測控通信研究所