一種基於誤差補償的慣性測量裝置異步通訊同步方法
2023-06-02 00:22:26 2
一種基於誤差補償的慣性測量裝置異步通訊同步方法
【專利摘要】本發明公開了一種基於誤差補償的慣性測量裝置異步通訊同步方法,本發明通過在計算程序中增加中間變量Δ1和Δ2用來記錄本周期計算數據與上周期計算數據之差,在485中斷時刻通過判斷本周期計算是否完成來確定發送數據的補償方案,實現慣性測量裝置的精度保持能力,從而克服485通訊雙方晶振存在精度差異造成的時序衝突,克服了現有慣性測量裝置與上位機之間通訊不同步時重複發數或丟數的問題,確保了慣性導航的精度。
【專利說明】一種基於誤差補償的慣性測量裝置異步通訊同步方法【技術領域】
[0001]本發明涉及一種異步通訊同步方法,尤其涉及一種基於誤差補償的慣性測量裝置異步通訊同步方法,適用於要求實時快速導航的【技術領域】。
【背景技術】[0002]對於採用485異步通訊的慣性測量裝置在與上位機進行信息溝通時,應該按照5ms的計算周期實時把敏感的載體角速度和視加速度信息發送給上位機,上位機按照5ms的周期把接收到的載體角速度和視加速度信息用於導航解算。由於慣性測量裝置的5ms計算時刻與上位機485中斷請求時刻之間時間差在每次開機處於不確定的狀態,並且要求慣性測量裝置在計算過程中如果收到485中斷請求信號則優先響應485中斷請求。這就使得485中斷請求來臨時,慣性測量裝置的響應有兩種可能,第一種是本次計算完成則直接把本周期的計算結果發送出去,第二種是本次計算沒有完成則可把上周期的計算結果發送出去。第一種情況是最理想的,不存在時間延遲;第二種情況存在時間延遲,即上位機接收到的一幀數據是上一周期的信息,但這種延遲一般是允許的。
[0003]但存在一種情況是,慣性測量裝置在每個周期內的計算完成時刻與485中斷請求時刻近似重合前後,由於慣性測量裝置與上位機的晶振精度差異,導致上位機接收到的數據會由一段本周期的數據逐漸變為上一周期的數據,或由一段上一周期的數據逐漸變為本周期的數據。在具體實現時,通過設置變量TMARK來標示本次計算是否完成,並設置兩個緩存區I和2。在每次計算完成後,應把本次計算結果先保存到緩存區1,再保存到緩存區2。
[0004]如果本周期計算完成並完成緩存區I的數據保存,則TMARK=O,將本周期的計算結果(緩存區I)發送出去。如果本周期計算還沒有完成或者沒有完成緩存區I的數據保存,則TMARK=0xFF,5ms角增量和速度增量沒有更新,所以會將上一周期計算完成的角增量和速度增量(緩存區2)發送給彈上計算機,計算時序如圖1所示。
[0005]如圖1所示,485請求中斷來時有三種可能:
[0006](I)在程序計算時有請求,雖然TMARK=O,但由於緩存區①放置的是上一周期的數據,因此發送的仍然是上一周期的數據;
[0007](2)在Tmark=OxFF和TMARK=O之間時有請求,此時TMARK=0xFF,則應發送緩存區②的數據。由於緩存區②放置的上一周期的數據,因此,此時仍然發送上一周期的數據;
[0008](3)在TMARK=O時,本周期的數據已經完整保存到緩存區1,因此,可把緩存區I的數據發送出去。
[0009]按照圖1的分析,給出發送數據的流程圖如圖2所示。其中,TMARK=O表示計算已完成,Tmark=Oxff表示計算沒有完成。圖1隻是表示了一個周期內的時序圖,而按照圖2的流程,如果上周期計算完成而本周期計算沒有完成,則會出現兩個周期發送相同數據的情況,此時會丟失一幀數據,對導航結果造成影響。
[0010]把多個周期可能出現的時序分三種情況,如圖3所示。
[0011 ] 在理論上,導航解算的積分值為S=A+B+C+D+E+F+G+...(I)[0012]在圖3(a)中,485請求來時補償程序已計算完,因此在每個周期發送本周期的計算值。此時,導航解算的積分值與理論值相同,如式(l),Sa=S。
[0013]而在圖3(b)中,485請求來時補償程序還沒有計算完,因此在每個周期發送上一周期的計算值。對於導航解算的結果可表示為
[0014]Sb=A+B+C+D+E+F+F+...=S-G(2)
[0015]此時,導航解算的誤差只取決於最後值G,隨著時間的增加,此項誤差可以忽略。
[0016]而在圖3(c)中,485請求來時補償程序在A、F、G計算完,而在B、C、D、E沒有計算完,根據圖4的流程圖導航解算的結果可表示為
[0017]Sc=A+A+B+C+D+F+G+...=S+A_E(3)
[0018]可以看出,隨著時間的增加,初始值A引起的誤差可以忽略。但是,由於E值時刻的不確定性,或此情況發生頻率的概率不確定,第三種情況會引起重複發數或丟數時不可控制,在大信號時會對導航精度有較大影響。因此,如何克服通訊不同步時重複發數或丟數,並確保導航精度仍然有效是慣性測量裝置與上位機之間通訊的一個難點。
【發明內容】
[0019]本發明的技術解決問題:克服現有技術的不足,提供一種基於誤差補償的慣性測量裝置異步通訊同步方法,解決了通訊不同步時重複發數或丟數導致慣性測量裝置的導航精度受損問題,提高了慣性導航的精度。
[0020]本發明的技術解決方案:一種基於誤差補償的慣性測量裝置異步通訊同步方法,在計算程序中設置兩個緩存區I 和2,每次計算完成後,本次計算結果先保存到緩存區1,再保存到緩存區2,其特徵在於:
[0021](I)在慣性測量裝置的每個計算周期,將計算是否完成標誌TMARK=0xFF放在計算程序的開始端,並在計算程序中增加兩個變量Λ 1、A2,其中A1為本周期的計算誤差,Δ 1=本周期的計算值-上周期的計算值;△ 2為上周期的計算誤差,設兩個計算誤差初始值Δ J=O, A2=O ;
[0022](2)每個計算周期計算程序接收485中斷請求,當485中斷請求來臨時,如果本周期內的計算未完成,則執行步驟(a),如果本計算周期內的計算已完成,則執行步驟(b);
[0023](a)計算是否完成標誌TMARK保持不變,TMARK=0xFF,計算程序的輸出結果為存儲在緩存區2中的值,存儲在緩存區2中的值為上周期的計算值+ A1,計算程序將輸出結果通過485總線發出,待計算完成後,置Λ 2= Λ i ;
[0024](b)置計算是否完成標誌TMARK=O,計算程序的輸出結果為存儲在緩存器I中的值,存儲在緩存器I中的值為本周期計算值+ A2,計算程序將輸出結果通過485總線發出,然後重置A1=O, A2=O ;
[0025](3)完成異步通訊同步。
[0026]本發明與現有技術相比的優點如下:本發明通過在計算程序中增加中間變量A1和A2用來記錄本周期計算數據與上周期計算數據之差,在485中斷時刻通過判斷本周期計算是否完成來確定發送數據的補償方案,實現慣性測量裝置的精度保持能力,從而克服485通訊雙方晶振存在精度差異造成的時序衝突,克服了現有慣性測量裝置與上位機之間通訊不同步時重複發數或丟數的問題,確保了慣性導航的精度。【專利附圖】
【附圖說明】
[0027]圖1為現有計算程序發送數據時序圖;
[0028]圖2為現有計算程序發送數據流程圖;
[0029]圖3為多個周期發送數據的時序圖;
[0030]圖4為本發明程序計算流程圖;
[0031]圖5為本發明發送數據流程圖;
[0032]圖6為本發明方法發送數據時序圖。
【具體實施方式】
[0033]為實現慣性測量裝置與上位機之間通訊不同步時慣性導航的精度保持能力,本發明的主要改進包括以下幾個方面:
[0034]圖4所示,在每個5ms周期開始計算時,把TMARK=0xFF標誌放在程序的開始端,並在計算程序中增加兩個變量Λρ A2,其中A1為本周期的計算誤差,A1=本周期的計算值-上周期的計算值;A2為上周期的計算誤差,設兩個計算誤差初始值A1=O, A2=O;緩存區I放置的數據為本周期的計算結果+ Λ 2,緩存區2放置的數據為上周期的計算結果+ A10
[0035]如圖5所示,每個計算周期計算程序接收485中斷請求,當485中斷請求來臨時,如果本周期內的計算未完成,則執 行步驟(a),如果本計算周期內的計算已完成,則執行步驟(b);
[0036](a)計算是否完成標誌TMARK保持不變,TMARK=0xFF,計算程序的輸出結果為存儲在緩存區2中的值,存儲在緩存區2中的值為上周期的計算值+ A1,計算程序將輸出結果通過485總線發出,待計算完成後,置Λ 2= Λ i ;
[0037](b)置計算是否完成標誌TMARK=O,計算程序的輸出結果為存儲在緩存器I中的值,存儲在緩存器I中的值為本周期計算值+ A2,計算程序將輸出結果通過485總線發出,然後重置A1=O, A2=O ;
[0038]利用圖4、圖5的方法對圖3進行時序分析,設增量初始值Λ fO,Δ 2=0,導航初始值 S0=O。
[0039]在圖3 (a)中,485請求來時補償程序已計算完,由於A1=O, Λ2=0,因此在每個周期發送本周期的計算值。發送完後,重新置A1=O, A2=O0此時,導航解算的積分值與理論值相同,如式(I),Sa=S。
[0040]而在圖3(b)中,485請求來時補償程序還沒有計算完,因此在每個周期發送上一周期的計算值。對於導航解算的結果可表示為
[0041 ] Sb= (A+A) + (2B-A) + (2C-B) + (2D-C) + (2E-D) + (2F-E) +...[0042]=A+B+C+D+E+2F+...[0043]=S+ (F-G)(4)
[0044]從上式可以看出,由於誤差(F-G)只取決於導航解算的最後兩個值,隨著導航解算時間的增加,該項誤差也可以忽略。因此,式(4)計算方法引起的誤差受控。
[0045]而在圖3(c)中,485請求來時補償程序在A、F、G計算完,而在B、C、D、E沒有計算完,根據圖4的流程圖導航解算的結果可表示為[0046]SC=A+A+ (2B-A) + (2C-B) + (2D-C) + (F+E-D) +G+...=S(5)
[0047]可以看出,第三種情況有效消除了重複發數或丟數的問題。
[0048]綜合以上三種情況,本發明可以有效消除重複發數或丟數的問題。
[0049]本發明方法發送數據時序如圖6所示,485請求中斷來時有兩種可能:
[0050](I)在程序計算時有請求,TMARK=0xFF,由於A1沒有更新,因此發送放在緩存區②中的值,該值為上一周期的計算數據+A1 ;在退出485中斷且計算完成後,A2=A1, A1=本周期計算值-上一周期計算值;
[0051](2)在TMARK=O時,表示在485通訊來之前就已經完成A2=A1' A1=本周期計算值-上一周期計算值的操作,本周期的數據+ Δ 2已經完整保存到緩存區①,因此,可把緩存區①的數據發送出去,並置Λ1=0、A2=O0退出485中斷後不再進行任何操作。
[0052]本發明未詳細描述內容為本領域技術人員公知技術。
【權利要求】
1.一種基於誤差補償的慣性測量裝置異步通訊同步方法,在計算程序中設置兩個緩存區I和2,每次計算完成後,本次計算結果先保存到緩存區1,再保存到緩存區2,其特徵在於步驟如下: (1)在慣性測量裝置的每個計算周期,將計算是否完成標誌TMARK=OxFF放在計算程序的開始端,並在計算程序中增加兩個變量?、A2,其中A1為本周期的計算誤差,A1=本周期的計算值-上周期的計算值;Λ 2為上周期的計算誤差,設兩個計算誤差初始值Λ 1=0,A2=O ; (2)每個計算周期計算程序接收485中斷請求,當485中斷請求來臨時,如果本周期內的計算未完成,則執行步驟(a),如果本計算周期內的計算已完成,則執行步驟(b); Ca)計算是否完成標誌TMARK保持不變,TMARK=0xFF,計算程序的輸出結果為存儲在緩存區2中的值,存儲在緩存區2中的值為上周期的計算值+ Λ i,計算程序將輸出結果通過485總線發出,待計算完成後,置A2=A1 ; (b)置計算是否完成標誌TMARK=O,計算程序的輸出結果為存儲在緩存器I中的值,存儲在緩存器I中的值為本周期計算值+ Λ 2,計算程序將輸出結果通過485總線發出,然後重置 Δ J=O, A2=O ; (3)完成異步通訊同步。
【文檔編號】H04L1/00GK103471588SQ201310403915
【公開日】2013年12月25日 申請日期:2013年9月6日 優先權日:2013年9月6日
【發明者】魏宗康, 王愛華 申請人:北京航天控制儀器研究所