專利名稱:船舶自動識別信息發(fā)射時隙查找方法
技術(shù)領(lǐng)域:
本發(fā)明涉及船舶電子技木,尤其涉及ー種在船舶自動識別系統(tǒng)信息處理及應(yīng)用中的發(fā)射時隙查找方法。
背景技術(shù):
船舶自動識別系統(tǒng)(簡稱AIS)是保證船舶海上安全航行的自動信息通信系統(tǒng),要求系統(tǒng)裝置應(yīng)能在航行中或錨定狀態(tài)下連續(xù)以自控方式將船只動態(tài)及其他信息自動發(fā)送給其它船舶的相應(yīng)設(shè)備,并接收其它船舶特定的輪詢呼叫及進(jìn)行處理;同時系統(tǒng)裝置能按要求傳輸附加的安全信息。船舶自動識別系統(tǒng)采用甚高頻(VHF)海上移動波段時分多址(TDMA)通信技術(shù)收發(fā)信息,2個TDMA接收機分別在2個獨立的頻道上同時接收信息;同時,用I個TDMA發(fā)射機 在2個獨立的頻道上交替進(jìn)行TDMA傳輸,數(shù)據(jù)信號每幀占用I分鐘時間,毎分鐘分為2250個時隙,每個數(shù)據(jù)包必須在I個時隙內(nèi)發(fā)射完畢。不同的船只可以選擇2250個時隙中未被占用的空閑時隙發(fā)射數(shù)據(jù)包。但當(dāng)不同的船只同時選擇同一空閑時隙發(fā)射數(shù)據(jù)包時,就會產(chǎn)生沖突引起接收方收到的數(shù)據(jù)不全,現(xiàn)有技術(shù)仍未有很好方法解決該問題。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺點,本發(fā)明的目的是提供ー種船舶自動識別信息發(fā)射時隙查找方法,多艘船只可各自找到不同空閑時隙發(fā)射數(shù)據(jù),解決了多船選擇同一空閑時隙發(fā)射數(shù)據(jù)包引起沖突致接收方收到數(shù)據(jù)不全的問題。為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為ー種船舶自動識別信息發(fā)射時隙查找方法,它包括如下步驟(1)根據(jù)公式Xn =a*Xn-l+c(mod m)得到隨機數(shù)序列并生成隨機數(shù)序列表,公式中a是乘法因子,c是增量值,m是模值,且0 <a,c,XQ<m;(2)查空閑時隙表,計算空閑時隙數(shù)并賦值給變量sum_slot ;
(3)判斷空閑時隙數(shù)sum_sl0t是否大于零,若大于零,則查種子變量seed對應(yīng)的隨機序列表的值并賦值給變量rand,轉(zhuǎn)到步驟(4);若小于零,則無空閑時隙,賦無效時隙號slot =2251,轉(zhuǎn)到步驟(2) ; (4)將 rand* (sum_slot-l)/65535 (65535 的 16 進(jìn)制表示是 Oxffff。即65535是16位ニ進(jìn)制數(shù)最大值。隨機數(shù)rand的取值范圍是0至65535)取四舍五入,并賦值給變量slot_tmp ; (5)將slot_tmp轉(zhuǎn)換為實際需要發(fā)射的空閑時隙號slot。優(yōu)選地,所述隨機數(shù)序列{XJ中,滿足Xi = X0的最小正整數(shù)b為該序列的周期,當(dāng)b = m時,隨機數(shù)序列達(dá)到滿周期。優(yōu)選地,滿足下列3個條件,隨機數(shù)序列達(dá)到滿周期⑴(c,m) = 1,即c與m互素;⑵對m的任一素因子p有a = I (mod p) ; (3)如果4能整除m,則a = I (mod 4)。優(yōu)選地,選用時隙定時器0作為種子發(fā)生器,其步驟如下(I)清定時器0中斷;
(2)種子變量seed+1 ; (3)判斷seed是否大于或等于65536,若是,則令seed = 0,中斷返回,若否,則直接中斷返回。與現(xiàn)有技術(shù)相比,在多艘船只安裝應(yīng)用本發(fā)明的情況下,即使多船同時發(fā)射數(shù)據(jù)包,也不會產(chǎn)生發(fā)射時隙沖突問題,即通過非常優(yōu)良的發(fā)射時隙查找算法,多艘船只均可各自找到不同空閑時隙發(fā)射數(shù)據(jù),從而有效地解決多船選擇同一空閑時隙發(fā)射數(shù)據(jù)包引起沖突致接收方收到數(shù)據(jù)不全的問題。
下面結(jié)合附圖對本發(fā)明作進(jìn)ー步的詳細(xì)說明。圖I是本發(fā)明的時隙查找流程框圖;圖2是定時器0中斷服務(wù)程序流程框圖。
具體實施例方式請參閱圖1,本發(fā)明的船舶自動識別信息發(fā)射時隙查找方法包括(I)根據(jù)公式Xn=a*Xn-l+c(mod m)得到隨機數(shù)序列并生成隨機數(shù)序列表;(2)查空閑時隙表,計算空閑時隙數(shù)并賦值給變量sum_slot ; (3)判斷空閑時隙數(shù)sum_slot是否大于零,若大于零,則查種子變量seed對應(yīng)的隨機序列表的值并賦值給變量rand,轉(zhuǎn)到步驟(4);若小于零,則無空閑時隙,賦無效時隙號 slot = 2251,轉(zhuǎn)到步驟(2) ;(4)將 rand* (sum_slot-l)/65535 (65535的16進(jìn)制表示是Oxffff。即65535是16位ニ進(jìn)制數(shù)最大值。隨機數(shù)rand的取值范圍是0至65535)取四舍五入,并賦值給變量slot_tmp ; (5)將slot_tmp轉(zhuǎn)換為實際需要發(fā)射的空閑時隙號slot。遞推公式Xn = a*Xn_l+c (mod m) (n = I, 2, 3,…..)(1)其中a是乘法因子,c是增量值,m是模值,X0是初始值,即種子(seed),且0< a, c,X。< m。在(I)式產(chǎn)生的隨機序列{Xi}中,滿足Xi = X0的最小正整數(shù)b為該序列的周期,當(dāng)b = m時,序列達(dá)到滿周期,即最大周期。選擇適當(dāng)?shù)腶值和c值就可以使序列達(dá)到滿周期,使產(chǎn)生隨機數(shù)的性能達(dá)到最好。如果滿足下列3個條件,序列就可以達(dá)到滿周期⑴(c, m) = I,即c與m互素;⑵對m的任一素因子p有a = I (mod p) ; (3)如果4能整除m,則a = l(mod 4)??紤]到微處理器芯片(Arm)最長字長32位,為防止溢出,選m = 2'16,即m = 65536, c = 3, a = sqrt (m) +1 = 32769,顯然,取值是滿足以上 3 個要求的,隨機序列可以達(dá)到滿周期65536。由遞推公式(I)知道當(dāng)選擇同樣的種子時,產(chǎn)生的隨機數(shù)必然是相同的。因此,要盡可能避免不同船只同一時刻發(fā)射時選取同樣種子的情況。本發(fā)明的種子(seed)選取必須保證不同的船只在選擇種子時不具有相關(guān)性,確保不同船只在同一時間選擇的種子各不相同。公式(I)中參數(shù)的選擇應(yīng)該保證產(chǎn)生隨機數(shù)的周期足夠的大,而且,隨機數(shù)產(chǎn)生具有均勻分布的特性。這樣,產(chǎn)生的隨機數(shù)概率統(tǒng)計特性會較好。根據(jù)通信協(xié)議規(guī)定,在每分鐘2250個時隙的最后ー個時隙要重新更新18號、24號A包、24號B包發(fā)射時隙。即毎分鐘的最后一個時隙都要重新查找空閑時隙,分配給需要發(fā)射的數(shù)據(jù)包使用。這里就要用到公式(I)產(chǎn)生隨機數(shù)。Xn-I用此時的seed值代替,計算出的Xn值就是需要的隨機數(shù)。取值范圍是0至65535。發(fā)射時隙編號是0至2249。假設(shè)所有時隙空閑,用a、c、m的實際值代入公式(I),計算隨機數(shù)rand = (32769*seed+3) %65536。由于rand取值范圍是0至65535。需要的時隙號slot = rand*2249/65535。如果slot得到的是非整數(shù)值,取四舍五入。由公式(I)得到的隨機數(shù)序列可以生成ー張表,存儲在ARM芯片中,供需要時調(diào)用,這樣可以節(jié)約CPU的運算處理時間。
請參閱圖2,定義ー個無符號整數(shù)全局變量seed作為種子變量,放在定時器0的中斷服務(wù)程序中循環(huán)累加計數(shù),由于模值m = 65536,因此種子的取值范圍是0至65535。選用時隙定時器0作為種子發(fā)生器是較理想的選擇,定時器0按I個時隙1/37. 5秒,約26. 67毫秒中斷一次。由于不同的機器定時器具有完全的不相關(guān)性,因此,不同機器選擇的種子也具有完全不相關(guān)性。即使兩臺相同機器同時開機,因不同機器的晶振誤差導(dǎo)致定時器時鐘的微小差異,也會使種子變量的值不同;而且隨著時間的推 移,誤差累計效應(yīng)導(dǎo)致種子變量值差會越來越大。因此,即使同時開機,不同的機器在同一時刻選擇到同一種子的概率也是極低的。
權(quán)利要求
1.ー種船舶自動識別信息發(fā)射時隙查找方法,其特征在于,它包括如下步驟 (1)根據(jù)公式Xn= a*Xn-l+c(mod m)得到隨機數(shù)序列并生成隨機數(shù)序列表,公式中a是乘法因子,c是增量值,m是模值,且O < a, c, X。< m ; (2)查空閑時隙表,計算空閑時隙數(shù)并賦值給變量sum_slot; (3)判斷空閑時隙數(shù)sum_slot是否大于零,若大于零,則查種子變量seed對應(yīng)的隨機序列表的值并賦值給變量rand,轉(zhuǎn)到步驟(4);若小于零,則無空閑時隙,賦無效時隙號slot = 2251,轉(zhuǎn)到步驟(2);(4)將rand* (sum_slot_l) /65535 (65535 的 16 進(jìn)制表示是 Oxffff。即:65535 是 16 位ニ進(jìn)制數(shù)最大值。隨機數(shù)rand的取值范圍是0至65535)取四舍五入,并賦值給變量slo t_tmp ; (5)將slot_tmp轉(zhuǎn)換為實際需要發(fā)射的空閑時隙號slot。
2.根據(jù)權(quán)利要求I所述的船舶自動識別信息發(fā)射時隙查找方法,其特征在于,所述隨機數(shù)序列{XJ中,滿足Xi = X0的最小正整數(shù)b為該序列的周期,當(dāng)b = m吋,序列達(dá)到滿周期。
3.根據(jù)權(quán)利要求I所述的船舶自動識別信息發(fā)射時隙查找方法,其特征在于,滿足下列3個條件,隨機數(shù)序列達(dá)到滿周期(I) (c,m) = 1,即c與m互素;(2)對m的任一素因子p 有 a = I (mod p) ; (3)如果 4 能整除 m,貝丨J a = I (mod4)。
4.根據(jù)權(quán)利要求I所述的船舶自動識別信息發(fā)射時隙查找方法,其特征在干,選用時隙定時器0作為種子發(fā)生器,其步驟如下(I)清定時器0中斷;(2)令種子變量seed+1 ;(3)判斷Seed是否大于或等于65536,若是,則令Seed = 0,中斷返回,若否,則直接中斷返回。
全文摘要
本發(fā)明公開了一種船舶自動識別信息發(fā)射時隙查找方法,它包括如下步驟(1)根據(jù)公式Xn=a*Xn-1+c(mod m)得到隨機數(shù)序列并生成隨機數(shù)序列表,公式中a是乘法因子,c是增量值,m是模值,且0<a,c,X0<m;(2)查空閑時隙表,計算空閑時隙數(shù)并賦值給變量sum_slot;(3)判斷空閑時隙數(shù)sum_slot是否大于零,若大于零,則查種子變量seed對應(yīng)的隨機序列表的值并賦值給變量rand,轉(zhuǎn)到步驟(4);若小于零,則無空閑時隙,賦無效時隙號slot=2251,轉(zhuǎn)到步驟(2);(4)將rand*(sum_slot-1)/65535(65535的16進(jìn)制表示是Oxffff。即65535是16位二進(jìn)制數(shù)最大值。隨機數(shù)rand的取值范圍是0至65535)取四舍五入,并賦值給變量slot_tmp;(5)將slot_tmp轉(zhuǎn)換為實際需要發(fā)射的空閑時隙號slot。
文檔編號H04J3/00GK102724010SQ201210101709
公開日2012年10月10日 申請日期2012年4月9日 優(yōu)先權(quán)日2012年4月9日
發(fā)明者陳杰波, 黃良申 申請人:海華電子企業(yè)(中國)有限公司