一種基于二叉樹(shù)的兩階段ald掃描算法
【專(zhuān)利摘要】本發(fā)明涉及一種基于二叉樹(shù)的兩階段ALD掃描算法,用于完成ALD設(shè)備掃描,所述兩階段包括直接掃描階段和整樹(shù)掃描階段,本算法通過(guò)分析二叉掃描樹(shù)以及AISG2.0協(xié)議的特點(diǎn),引入了自適應(yīng)沖突避免機(jī)制、兩階段掃描思想法,從而得到改進(jìn)的基于二叉掃描樹(shù)的掃描算法,以便利用上一輪掃描對(duì)應(yīng)可讀周期的掃描碼信息以及掃描過(guò)程中一些先驗(yàn)結(jié)果,減少掃描過(guò)程中的沖突周期和空閑周期,提高掃描效率。
【專(zhuān)利說(shuō)明】-種基于二叉樹(shù)的兩階段ALD掃描算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及電調(diào)天線(AntennaLineDevices,ALD)設(shè)備掃描領(lǐng)域,尤其涉及一種 基于二叉樹(shù)的兩階段ALD掃描算法。
【背景技術(shù)】
[0002] 遠(yuǎn)程電調(diào)傾角天線控制系統(tǒng)(RemoteelectricaltiltControlSystem,RCS)主 要用于對(duì)天線網(wǎng)絡(luò)中電調(diào)天線設(shè)備(AntennaLineDevices,ALD)進(jìn)行監(jiān)控。根據(jù)天線接 口標(biāo)準(zhǔn)協(xié)議(AntennaInterfaceStandardGroup,AISG),掃描識(shí)別天線網(wǎng)絡(luò)中的ALD設(shè) 備是實(shí)現(xiàn)RCS與ALD設(shè)備之間通信和監(jiān)控的基礎(chǔ)。
[0003] 但在AISG協(xié)議中,除了對(duì)掃描幀格式作了規(guī)定外,沒(méi)有對(duì)ALD掃描算法的具體實(shí) 現(xiàn)給出指導(dǎo)意見(jiàn)。現(xiàn)有技術(shù)中申請(qǐng)?zhí)枮椋篊N200910190535. 9號(hào)專(zhuān)利公開(kāi)了一種電調(diào)天線系 統(tǒng)及電調(diào)天線掃描方法,控制器根據(jù)監(jiān)控器下發(fā)的掃描命令,構(gòu)造掃描幀發(fā)到各個(gè)電調(diào)天 線設(shè)備;當(dāng)電調(diào)天線設(shè)備接收到掃描幀后,解析出廠商編號(hào)+設(shè)備序列號(hào),與自身的廠商編 號(hào)+設(shè)備序列號(hào)進(jìn)行比較;如果一致,則回應(yīng)掃描響應(yīng)幀,否則不應(yīng)答;控制器接收該響應(yīng) 幀,如果接收正常,則成功掃描到一個(gè)電調(diào)天線設(shè)備;如果該被成功掃描到的電調(diào)天線設(shè)備 為高版本,給該電調(diào)天線設(shè)備分配一個(gè)地址;然后再重新發(fā)起掃描。然而,上述ALD掃描過(guò) 程中存在"漏掃"或掃描效率不高等問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明針對(duì)AISG協(xié)議的不足以及【背景技術(shù)】中出現(xiàn)的問(wèn)題,提出了一種基于二叉 樹(shù)的兩階段ALD掃描算法。所述算法中兩階段包括直接掃描階段和整樹(shù)掃描階段,所述直 接掃描階段包括以下步驟:
[0005] 步驟1.打開(kāi)文件F,從所述文件F中讀入上一輪掃描過(guò)程中的對(duì)應(yīng)可讀應(yīng)答的掃 描碼到掃描碼隊(duì)列Q中,然后清空文件F;
[0006] 步驟2.檢查掃描碼隊(duì)列Q,如果Q非空,則取出隊(duì)頭元素S= (a,m)作為掃描碼, 并以掃描碼構(gòu)造掃描幀廣播給網(wǎng)絡(luò)上的所有ALD設(shè)備;
[0007] 步驟3.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理;
[0008] 步驟4.檢查掃描碼隊(duì)列Q,如果Q非空,跳轉(zhuǎn)至步驟2,否則直接掃描階段結(jié)束,進(jìn) 入整樹(shù)掃描階段,所述整樹(shù)掃描階段包括以下步驟:
[0009] 步驟5.初始化沖突堆棧STK為空;
[0010] 步驟6.將(0, 1)、(1,1)兩個(gè)掃描碼壓入到?jīng)_突堆棧STK中;
[0011] 步驟7.檢查沖突堆棧STK,如果非空,則彈出棧頂元素s= (a,m),構(gòu)造掃描幀廣 播給網(wǎng)絡(luò)上ALD設(shè)備;
[0012] 步驟8.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理;
[0013]步驟9.檢查沖突堆棧STK,若STK中還有掃描碼,則轉(zhuǎn)步驟7,否則整個(gè)掃描過(guò)程 結(jié)束,關(guān)閉文件F。
[0014] 優(yōu)選的是,所述文件F保存第一輪掃描過(guò)程中的可讀結(jié)點(diǎn)對(duì)應(yīng)的掃描碼。
[0015] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟3和步驟8中的反饋情況包括可讀應(yīng)答、 空閑應(yīng)答和沖突應(yīng)答。
[0016] 根據(jù)上述任一方案中優(yōu)選的是,所述可讀應(yīng)答表示網(wǎng)絡(luò)中有唯一的ALD設(shè)備和掃 描碼匹配。
[0017] 根據(jù)上述任一方案中優(yōu)選的是,所述空閑應(yīng)答表示網(wǎng)絡(luò)中沒(méi)有任何ALD設(shè)備和掃 描碼匹配。
[0018] 根據(jù)上述任一方案中優(yōu)選的是,所述沖突應(yīng)答表示網(wǎng)絡(luò)中有多個(gè)ALD與掃描碼的 匹配。
[0019] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟3進(jìn)一步包括:
[0020] RCS根據(jù)應(yīng)答獲取設(shè)備的基本信息;
[0021] 賦予所述設(shè)備HDLC地址。
[0022] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟8進(jìn)一步包括:
[0023] RCS根據(jù)應(yīng)答獲獲取設(shè)備的基本信息;
[0024] 根據(jù)所述設(shè)備的基本信息構(gòu)造一個(gè)賦地址XID幀發(fā)送至所述設(shè)備;
[0025] 賦予所述設(shè)備HDLC地址;
[0026] 將掃描碼s= (a,m)寫(xiě)入到文件F中。
[0027] 根據(jù)上述任一方案中優(yōu)選的是,所述基本信息包括UID和設(shè)備類(lèi)型。
[0028] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟3進(jìn)一步包括:不需要將掃描碼寫(xiě)入到 文件F中。
[0029] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟8進(jìn)一步包括:
[0030] 如果所述空閑應(yīng)答對(duì)應(yīng)的掃描碼中的匹配碼的首位為0,則彈出沖突堆棧STK的 棧頂元素;
[0031] 將(11a,Ilm)和(01a,Ilm)兩個(gè)掃描碼壓入沖突堆棧STK中。
[0032] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟3進(jìn)一步包括:在整樹(shù)掃描階段對(duì)沖突 進(jìn)行分解。
[0033] 根據(jù)上述任一方案中優(yōu)選的是,所述步驟8進(jìn)一步包括:
[0034] 構(gòu)造兩個(gè)掃描碼(la,Im)和(0a,Im);
[0035] 將所述兩個(gè)掃描碼壓入到?jīng)_突堆棧STK中
[0036] 本發(fā)明提供的基于二叉樹(shù)的兩階段ALD掃描算法,算法思想簡(jiǎn)潔,容易實(shí)現(xiàn)。本算 法通過(guò)分析二叉掃描樹(shù)以及AISG2. 0協(xié)議的特點(diǎn),引入了自適應(yīng)沖突避免機(jī)制、兩階段掃 描思想法,從而得到改進(jìn)的基于二叉掃描樹(shù)的掃描算法,以便利用上一輪掃描對(duì)應(yīng)可讀周 期的掃描碼信息以及掃描過(guò)程中一些先驗(yàn)結(jié)果,減少掃描過(guò)程中的沖突周期和空閑周期, 提高掃描效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0037] 圖1是按照本發(fā)明的ALD掃描算法中直接掃描階段步驟流程圖。
[0038] 圖2是按照本發(fā)明的ALD掃描算法中整樹(shù)掃描階段步驟流程圖。
[0039] 圖3是采用BT算法和EBT算法對(duì)ALD設(shè)備掃描時(shí)的首輪掃描掃描周期總數(shù)的比 較示意圖。
[0040] 圖4是采用BT算法和EBT算法對(duì)ALD設(shè)備掃描時(shí)的非首輪掃描且網(wǎng)絡(luò)中的ALD 沒(méi)有變化的掃描周期總數(shù)的比較示意圖。
[0041] 圖5是采用BT算法和EBT算法對(duì)ALD設(shè)備掃描時(shí)的非首輪掃描且網(wǎng)絡(luò)中已有10 % 的ALD被新的ALD替換的掃描周期總數(shù)的比較示意圖。
[0042] 圖6是采用BT算法和EBT算法對(duì)ALD設(shè)備掃描時(shí)的非首輪掃描且網(wǎng)絡(luò)中已有30 % 的ALD被新的ALD替換的掃描周期總數(shù)的比較示意圖。
【具體實(shí)施方式】
[0043] 下面參照附圖結(jié)合示例性的實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
[0044] 基于AISG協(xié)議的ALD掃描思想:
[0045]AISG協(xié)議對(duì)ALD掃描提供了原則性建議:即RCS通過(guò)在網(wǎng)絡(luò)中廣播掃描碼來(lái)掃描 識(shí)別ALD,掃描碼包括匹配碼和掩碼兩部分信息。當(dāng)收到掃描碼后,ALD首先將自己的唯一 標(biāo)識(shí)碼(UniqueIDdID)和掩碼進(jìn)行按位與運(yùn)算,然后再和匹配碼進(jìn)行比較,如果符合匹配 條件,ALD對(duì)RCS作出應(yīng)答,應(yīng)答幀包含該ALD的設(shè)備類(lèi)型、UID等信息,否則不作應(yīng)答。因 此,當(dāng)RCS發(fā)出掃描碼后,如果只有一個(gè)ALD符合匹配條件,則RCS收到一個(gè)正常的應(yīng)答幀, 該ALD被成功識(shí)別;如果沒(méi)有ALD符合匹配條件,則RCS不會(huì)收到任何應(yīng)答;如果網(wǎng)絡(luò)中有 多個(gè)ALD符合匹配條件,則造成多個(gè)ALD的應(yīng)答幀在通信鏈路上發(fā)生沖突,RCS會(huì)收到一個(gè) CRC錯(cuò)誤應(yīng)答幀,識(shí)別ALD設(shè)備失敗。當(dāng)遇到?jīng)_突時(shí),RCS需要根據(jù)相關(guān)策略擴(kuò)展掃描碼來(lái) 縮小掃描范圍,直至對(duì)唯一的ALD掃描識(shí)別,可惜的是,AISG協(xié)議并沒(méi)有給出掃描碼的具體 擴(kuò)展策略。
[0046]若將從RCS發(fā)出掃描碼到收到ALD應(yīng)答的時(shí)間范圍稱(chēng)為一個(gè)掃描周期,則上述幾 種掃描周期分別叫做可讀周期、空閑周期和沖突周期??梢钥闯觯珹LD掃描過(guò)程需要通過(guò)分 解沖突以便在可讀周期識(shí)別唯一的ALD設(shè)備,因此,ALD掃描算法屬于防沖突算法。防沖突 算法主要包括ALOHA算法和查找樹(shù)搜索算法兩大類(lèi)。由于AISG協(xié)議規(guī)定的ALD應(yīng)答時(shí)間 小于設(shè)備掃描巾貞的傳輸時(shí)間,同時(shí)AISG協(xié)議并不強(qiáng)制要求RCS負(fù)責(zé)掃描周期的同步,這樣 某一ALD可能在相當(dāng)長(zhǎng)一段時(shí)間內(nèi)無(wú)法被掃描識(shí)別,即存在"漏掃"現(xiàn)象,所以ALHOA算法 思想不適應(yīng)基于AISG協(xié)議的ALD掃描。ALD掃描只能借鑒查找樹(shù)搜索算法,以樹(shù)的遍歷思 想構(gòu)造掃描碼,直到?jīng)_突完全分解,掃描識(shí)別網(wǎng)絡(luò)中所有設(shè)備。常見(jiàn)的查找樹(shù)搜索算法有基 于二叉樹(shù)搜索算法、四叉樹(shù)搜索算法和其他混合查找樹(shù)搜索算法。
[0047]基于二叉樹(shù)的ALD掃描算法:
[0048]ALD的UID-般包括廠商ID、產(chǎn)品類(lèi)型、生產(chǎn)批次、序號(hào)等信息,不同ALD的UID對(duì) 應(yīng)位相同的概率是從左到右依次減小。為了在掃描過(guò)程減少不必要的沖突,采用從右到左 逐步擴(kuò)展掃描碼,以基于后綴匹配的方法依次掃描網(wǎng)絡(luò)總的ALD設(shè)備,即在ALD設(shè)備掃描過(guò) 程中,逐漸向左擴(kuò)展匹配碼并增加掩碼位數(shù),構(gòu)造掃描XID幀廣播出去,如果產(chǎn)生沖突,說(shuō) 明網(wǎng)絡(luò)中存在具有多個(gè)和匹配碼一致的ALD設(shè)備,則原匹配碼左邊增加一位,掩碼同時(shí)向 左推進(jìn)一位,產(chǎn)生兩個(gè)新的掃描碼,然后構(gòu)造掃描XID幀再次廣播出去,最終實(shí)現(xiàn)對(duì)沖突的 分解。整個(gè)掃描過(guò)程可以用一個(gè)二叉掃描樹(shù)表不。
[0049] 該掃描算法可以借鑒樹(shù)的先根序遍歷的思想,并采用基于堆棧的遞歸消除方法, 逐步生成二叉掃描樹(shù)的各個(gè)結(jié)點(diǎn)和分支并進(jìn)行訪問(wèn),根據(jù)該樹(shù)的結(jié)點(diǎn)的層次確定掃描掩碼m,根據(jù)各個(gè)結(jié)點(diǎn)上面分支的編碼確定匹配碼a,然后構(gòu)造掃描XID幀并廣播給網(wǎng)絡(luò)上的ALD 設(shè)備。
[0050] 假設(shè)ALD的UID是長(zhǎng)度為k位的二進(jìn)制串,長(zhǎng)度不超過(guò)k位的匹配碼構(gòu)成的集合 為J=UtuRlK',長(zhǎng)度不超過(guò)k位的掩碼構(gòu)成的集合為M=ULWi,s= (a,m)表示掃描碼, 其中aeA為匹配碼,meM為掩碼,a和m的位數(shù)一樣,STK為由引起沖突的掃描碼構(gòu)成的 沖突堆棧。ALD掃描算法具體描述如下:
[0051] 步驟1 :初始化沖突堆棧STK為空;
[0052]步驟2:將(0, 1)、(1,1)兩個(gè)掃描碼壓入到?jīng)_突堆棧中;
[0053] 步驟3 :檢查沖突堆棧STK中是否有掃描碼,如果有,則彈出棧頂元素S= (a,m)作 為掃描碼,并構(gòu)造掃描XID幀并廣播給網(wǎng)絡(luò)上所有的ALD,然后根據(jù)網(wǎng)絡(luò)ALD的反饋情況做 相應(yīng)處理:
[0054] 步驟3. 1 :可讀應(yīng)答:RCS收到一個(gè)CRC正確的應(yīng)答幀,則成功掃描到一臺(tái)ALD設(shè) 備,獲取該設(shè)備的基本信息包括WD、設(shè)備類(lèi)型等,并根據(jù)該設(shè)備的WD構(gòu)造一個(gè)賦地址XID 幀發(fā)送給該設(shè)備,給它賦一個(gè)HDLC地址,以避免它之后再對(duì)其他掃描XID幀作出應(yīng)答。對(duì) 于可讀應(yīng)答,掃描碼對(duì)應(yīng)的結(jié)點(diǎn)為可讀結(jié)點(diǎn)(葉結(jié)點(diǎn)),RCS無(wú)須對(duì)掃描碼進(jìn)行擴(kuò)展;
[0055] 步驟3. 2 :空閑應(yīng)答:RCS在指定的時(shí)間周期內(nèi)沒(méi)有收到任何應(yīng)答,說(shuō)明沒(méi)有任何 ALD設(shè)備的UID與匹配碼匹配。對(duì)于空閑應(yīng)答,掃描碼對(duì)應(yīng)的結(jié)點(diǎn)為空閑結(jié)點(diǎn)(葉結(jié)點(diǎn)), RCS同樣無(wú)須對(duì)掃描碼進(jìn)行擴(kuò)展;
[0056] 步驟3. 3 :沖突應(yīng)答:RCS收到一個(gè)CRC錯(cuò)誤的回應(yīng)幀,說(shuō)明有多個(gè)ALD設(shè)備的WD 與匹配碼匹配,掃描碼對(duì)應(yīng)的結(jié)點(diǎn)為沖突結(jié)點(diǎn)(內(nèi)部結(jié)點(diǎn))。這時(shí)需要對(duì)沖突進(jìn)行分解,構(gòu) 造兩個(gè)掃描碼(la,Im)和(0a,Im),并將它們壓入到?jīng)_突堆棧STK中;
[0057] 步驟4 :如果沖突堆棧STK中還有掃描碼,則轉(zhuǎn)步驟3,否則整個(gè)掃描過(guò)程結(jié)束。
[0058] 上述ALD掃描算法可以用一個(gè)二叉掃描樹(shù)描述:如果掃描碼s= (a,m)對(duì)應(yīng)的是 沖突周期,則其對(duì)應(yīng)二叉樹(shù)的一個(gè)內(nèi)部結(jié)點(diǎn)(沖突結(jié)點(diǎn)),該結(jié)點(diǎn)左右子女結(jié)點(diǎn)分別對(duì)應(yīng)擴(kuò) 展了一位的掃描碼(〇a,Im)和(la,Im)。如果掃描碼s= (a,m)對(duì)應(yīng)的是可讀周期,則其 對(duì)應(yīng)二叉樹(shù)的一個(gè)葉結(jié)點(diǎn)(可讀結(jié)點(diǎn));如果掃描碼s= (a,m)對(duì)應(yīng)的是空閑周期,則其 也是對(duì)應(yīng)二叉樹(shù)的一個(gè)葉結(jié)點(diǎn)(空閑結(jié)點(diǎn))。該算法掃描網(wǎng)絡(luò)中ALD的過(guò)程可以看成是 對(duì)二叉掃描樹(shù)的先根序遍歷,故可稱(chēng)之為基于二叉掃描樹(shù)的掃描算法(BinaryScanning Tree,BST)〇
[0059] 結(jié)論1假設(shè)網(wǎng)絡(luò)中有η個(gè)ALD設(shè)備,ALD設(shè)備WD的位數(shù)最長(zhǎng)為k,則BST算法掃 描識(shí)別所有ALD設(shè)備需要的總周期數(shù)T滿足:
[0060] T^n(k+2-log2n)-I(I)
[0061] 結(jié)論2BST算法掃描過(guò)程中需要的總掃描周期數(shù)的期望值E[T]與網(wǎng)絡(luò)中的ALD設(shè) 備數(shù)η接近線性關(guān)系,且有:
[0062] 2· 881η-1 彡Ε[Τ]彡 2. 887n-l (2)
[0063] 結(jié)論3在具有η個(gè)ALD的網(wǎng)絡(luò)中,BST掃描算法掃描過(guò)程中RCS發(fā)送掃描幀幀數(shù) 的期望值最大為2. 887η-1,一個(gè)ALD發(fā)送應(yīng)答幀幀數(shù)的期望值最大為2. 21log2n+4. 19.
[0064] 基于沖突避免機(jī)制的算法改進(jìn)思想:
[0065] 顯然,上述掃描算法形成的二叉掃描樹(shù)中,如果一個(gè)結(jié)點(diǎn)是沖突結(jié)點(diǎn),則該結(jié)點(diǎn)至 少有兩個(gè)后代結(jié)點(diǎn)是可讀結(jié)點(diǎn),如果該沖突結(jié)點(diǎn)的左子女結(jié)點(diǎn)是空閑結(jié)點(diǎn)的話,則它的右 子女一定是沖突結(jié)點(diǎn)。所以,在掃描過(guò)程中,如果掃描碼(a,m)引起沖突,而其左子女掃描 碼(0a,Im)對(duì)應(yīng)的是一個(gè)空閑應(yīng)答,則可以跳過(guò)其右子女掃描碼(la,Im)以避免不必要的 沖突并減少掃描周期,而是直接將其右子女的兩個(gè)子女掃描碼(11a,Ilm)和(01a,Ilm)壓 入沖突堆棧。
[0066] 結(jié)論自適應(yīng)沖突避免機(jī)制可以將BST算法掃描周期總數(shù)T的期望值E[T]改進(jìn)為:
[0067]E[T] ^ 2. 665n-l (3)
[0068] 在電調(diào)天線網(wǎng)絡(luò)中,除非撤換存在故障的ALD設(shè)備、或者添加新天的ALD設(shè)備,網(wǎng) 絡(luò)中的ALD設(shè)備一般不會(huì)發(fā)生太大的變化,因此,如果RCS在一輪掃描過(guò)程中能夠保存對(duì)應(yīng) 可讀應(yīng)答的掃描碼信息,則在下一輪掃描過(guò)程中可以直接發(fā)送這些掃描碼來(lái)快速掃描識(shí)別 原有的ALD設(shè)備。
[0069] 基于上述思想,本實(shí)施例中引入兩段掃描方法,即將整個(gè)ALD掃描過(guò)程分為兩個(gè) 階段:第一個(gè)階段為直接掃描階段,即重用上一輪的對(duì)應(yīng)可讀應(yīng)答的掃描碼,直接對(duì)原有的 ALD設(shè)備進(jìn)行掃描識(shí)別;第二個(gè)階段為整樹(shù)掃描階段,即從根結(jié)點(diǎn)開(kāi)始新的一趟BST掃描, 對(duì)變動(dòng)的ALD設(shè)備和第一階段漏掃的ALD設(shè)備進(jìn)行掃描識(shí)別。
[0070] 兩段掃描方法的一個(gè)關(guān)鍵是將一輪掃描過(guò)程中的可讀結(jié)點(diǎn)對(duì)應(yīng)的掃描碼保存在 一個(gè)文件F中,這樣,RCS在下一輪掃描的第一階段掃描時(shí)將文件F中的掃描碼讀入到掃描 碼隊(duì)列Q中,然后通過(guò)依次直接發(fā)送隊(duì)列Q中的掃描碼,實(shí)現(xiàn)對(duì)于原有ALD設(shè)備的直接掃 描識(shí)別,大大減少掃描過(guò)程中的沖突周期和空閑周期。對(duì)于第一個(gè)掃描階段,如果網(wǎng)絡(luò)中的 ALD設(shè)備沒(méi)有變化,則對(duì)于掃描碼隊(duì)列Q中的每一個(gè)掃描碼,都將得到一個(gè)可讀應(yīng)答并成功 掃描識(shí)別一個(gè)原有的ALD設(shè)備;如果某個(gè)設(shè)備移出了網(wǎng)絡(luò),其相應(yīng)掃描碼將得到一個(gè)空閑 應(yīng)答;如果有新的ALD設(shè)備加入了網(wǎng)絡(luò),則新加入的ALD設(shè)備可能與原有的ALD設(shè)備可能發(fā) 生沖突,也可能在葉掃描階段漏掃。所以,當(dāng)有新的ALD設(shè)備加入網(wǎng)絡(luò)時(shí),需要從根結(jié)點(diǎn)開(kāi) 始新的一趟整樹(shù)BST掃描來(lái)分解與已有ALD設(shè)備的沖突,并掃描識(shí)別新的設(shè)備。
[0071] 按照AISG協(xié)議規(guī)定,如果一個(gè)ALD設(shè)備處于已賦HDLC地址狀態(tài),則它對(duì)于任何掃 描XID巾貞都不作應(yīng)答。基于AISG協(xié)議的這一特點(diǎn),兩段掃描方法的另一個(gè)關(guān)鍵是對(duì)于在直 接掃描階段已經(jīng)識(shí)別的ALD設(shè)備賦予HDLC地址,以便在整樹(shù)掃描階段的BST掃描中對(duì)于 RCS發(fā)送的掃描XID幀碼不再作出應(yīng)答,這樣就可以減少ALD設(shè)備發(fā)生沖突的機(jī)會(huì),從而縮 短掃描識(shí)別時(shí)間。
[0072] 通過(guò)利用自適應(yīng)沖突避免機(jī)制和兩段掃描思想方法,可以得到改進(jìn)的BST掃描算 法(EnhancedBinaryScanningTree,EBST)。EBST算法為兩階段掃描算法,具體描述如 下:
[0073] 直接掃描階段(如圖1所示)
[0074] 步驟1.打開(kāi)文件F,從所述文件F中讀入上一輪掃描過(guò)程中的對(duì)應(yīng)可讀應(yīng)答的掃 描碼到掃描碼隊(duì)列Q中,然后清空文件F;
[0075] 步驟2.檢查掃描碼隊(duì)列Q,如果Q非空,則取出隊(duì)頭元素S= (a,m)作為掃描碼, 并以掃描碼構(gòu)造掃描幀廣播給網(wǎng)絡(luò)上的所有ALD設(shè)備;
[0076] 步驟3.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理;
[0077] 步驟4.檢查掃描碼隊(duì)列Q,如果Q非空,跳轉(zhuǎn)至步驟2,否則直接掃描階段結(jié)束。
[0078] 其中,在直接掃描階段步驟3中進(jìn)一步包括:
[0079] 步驟3. 1 :可讀應(yīng)答:網(wǎng)絡(luò)有唯一的ALD和掃描碼匹配,說(shuō)明上一輪掃描得到的 ALD設(shè)備仍在網(wǎng)絡(luò)中,RCS根據(jù)應(yīng)答獲取該設(shè)備的基本信息包括WD、設(shè)備類(lèi)型等,并給該設(shè) 備賦上HDLC地址以便該ALD在整樹(shù)掃描階段對(duì)任何后續(xù)的掃描碼不做應(yīng)答,同時(shí)將該掃描 碼寫(xiě)入文件F;
[0080] 步驟3. 2 :空閑應(yīng)答:網(wǎng)絡(luò)中沒(méi)有任何ALD和掃描碼匹配,說(shuō)明上一輪掃描得到的 ALD設(shè)備由于故障已經(jīng)移出網(wǎng)絡(luò),注意不需要將該掃描碼寫(xiě)入到文件F;
[0081] 步驟3. 3 :沖突應(yīng)答:網(wǎng)絡(luò)中有多個(gè)ALD與掃描碼的匹配,說(shuō)明有和原有ALD的HD 具有相同后綴的新的ALD設(shè)備加入了網(wǎng)絡(luò),需要在整樹(shù)掃描階段對(duì)沖突進(jìn)行分解,同時(shí)注 意不需要將該掃描碼寫(xiě)入到文件F中。
[0082] 整樹(shù)掃描階段(如圖2所示)
[0083] 步驟1.初始化沖突堆棧STK為空;
[0084]步驟2.將(0, 1)、(1,1)兩個(gè)掃描碼壓入到?jīng)_突堆棧STK中;
[0085]步驟3.檢查沖突堆棧STK,如果非空,則彈出棧頂元素s= (a,m),構(gòu)造掃描幀廣 播給網(wǎng)絡(luò)上ALD設(shè)備;
[0086] 步驟4.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理;
[0087] 步驟5.檢查沖突堆棧STK,若STK中還有掃描碼,則轉(zhuǎn)步驟3,否則整個(gè)掃描過(guò)程 結(jié)束,關(guān)閉文件F。
[0088] 其中,在整樹(shù)掃描階段,步驟3中進(jìn)一步包括:
[0089] 步驟3. 1:可讀應(yīng)答:RCS收到一個(gè)CRC正確的應(yīng)答幀,則成功掃描到一臺(tái)ALD設(shè) 備,獲取該設(shè)備的基本信息包括WD、設(shè)備類(lèi)型等,并根據(jù)該設(shè)備的WD構(gòu)造一個(gè)賦地址XID 幀發(fā)送給該設(shè)備,給它賦一個(gè)HDLC地址,以避免它之后再響應(yīng)掃描XID幀,同時(shí)將掃描碼s =(a,m)寫(xiě)入到文件F中;
[0090] 步驟3. 2.沖突應(yīng)答:RCS收到一個(gè)CRC錯(cuò)誤的回應(yīng)幀,說(shuō)明有多個(gè)ALD設(shè)備的nD 與匹配碼匹配,掃描碼對(duì)應(yīng)的結(jié)點(diǎn)為沖突結(jié)點(diǎn)(內(nèi)部結(jié)點(diǎn))。這時(shí)需要對(duì)沖突進(jìn)行分解,構(gòu) 造兩個(gè)掃描碼(la,Im)和(0a,Im),并將它們壓入到?jīng)_突堆棧STK中;
[0091] 步驟3. 3.空閑應(yīng)答:RCS在指定的時(shí)間周期內(nèi)沒(méi)有收到任何應(yīng)答,說(shuō)明沒(méi)有任何 ALD設(shè)備的UID與匹配碼匹配。如果該空閑應(yīng)答對(duì)應(yīng)的掃描碼中的匹配碼的首位為0,則彈 出沖突堆棧STK的棧頂元素,以避免不必要的沖突,同時(shí)將(lla,Ilm)和(Ola,Ilm)兩個(gè)掃 描碼壓入沖突堆棧STK。
[0092]本實(shí)施例中,針對(duì)ALD數(shù)為10-200情況,首先生成一些24位隨機(jī)二進(jìn)制串編碼作 為ALD的WD,分別采用BT掃描算法、EBT掃描算法做100次仿真實(shí)驗(yàn),結(jié)果取100次實(shí)驗(yàn) 的平均值。
[0093]分以下四種情況:(1)首輪掃描,系統(tǒng)沒(méi)有關(guān)于上一次掃描過(guò)程中對(duì)應(yīng)可讀周期 的掃描碼;(2)非首輪掃描,系統(tǒng)已經(jīng)存儲(chǔ)上一輪掃描過(guò)程中可讀周期的掃描碼,且網(wǎng)絡(luò)中 的ALD沒(méi)有變化;(3)非首輪掃描,但網(wǎng)絡(luò)中已有10%的ALD被新的ALD替換;(4)非首輪 掃描,但網(wǎng)絡(luò)中已有30%的ALD被新的ALD替換。
[0094] 圖3-6分別為不同情況下采用BT算法和EBT算法對(duì)不同數(shù)量ALD設(shè)備掃描時(shí)掃 描周期總數(shù)的比較。
[0095] 從結(jié)果可以看出,BST和EBST算法的總的掃描周期數(shù)與ALD設(shè)備數(shù)基本保持線性 關(guān)系,且與式(2)和(3)給出的結(jié)論基本一致。
[0096] 另外,EBT掃描算法和BT掃描算法相比,能夠有效減少?zèng)_突次數(shù),進(jìn)而減少掃描周 期總數(shù),提高掃描效率,特別是對(duì)于非首輪掃描,如果網(wǎng)絡(luò)中ALD變化較小,掃描周期數(shù)大 大減少。
[0097] 本實(shí)施例提供的基于二叉樹(shù)的兩階段ALD掃描算法,算法思想簡(jiǎn)潔,容易實(shí)現(xiàn)。通 過(guò)分析二叉掃描樹(shù)以及AISG2. 0協(xié)議的特點(diǎn),引入了自適應(yīng)沖突避免機(jī)制、兩階段掃描思 想法,從而得到改進(jìn)的基于二叉掃描樹(shù)的掃描算法,以便利用上一輪掃描對(duì)應(yīng)可讀周期的 掃描碼信息以及掃描過(guò)程中一些先驗(yàn)結(jié)果,減少掃描過(guò)程中的沖突周期和空閑周期,提高 掃描效率。
[0098] 為了更好地理解本發(fā)明,以上結(jié)合具體實(shí)施例對(duì)本發(fā)明作了詳細(xì)說(shuō)明。但是,顯然 可對(duì)本發(fā)明進(jìn)行不同的變型和改型而不超出權(quán)利要求限定的本發(fā)明更寬的精神和范圍。因 此,以上實(shí)施例具有示例性而沒(méi)有限制的含義。
【權(quán)利要求】
1. 一種基于二叉樹(shù)的兩階段ALD掃描算法,用于完成ALD設(shè)備掃描,其特征在于,所述 兩階段包括直接掃描階段和整樹(shù)掃描階段,所述直接掃描階段包括以下步驟: 步驟1.打開(kāi)文件F,從所述文件F中讀入上一輪掃描過(guò)程中的對(duì)應(yīng)可讀應(yīng)答的掃描碼 到掃描碼隊(duì)列Q中,然后清空文件F ; 步驟2.檢查掃描碼隊(duì)列Q,如果Q非空,則取出隊(duì)頭元素s=(a,m)作為掃描碼,并以掃 描碼構(gòu)造掃描幀廣播給網(wǎng)絡(luò)上的所有ALD設(shè)備; 步驟3.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理; 步驟4.檢查掃描碼隊(duì)列Q,如果Q非空,跳轉(zhuǎn)至步驟2,否則直接掃描階段結(jié)束,進(jìn)入整 樹(shù)掃描階段,所述整樹(shù)掃描階段包括以下步驟: 步驟5.初始化沖突堆棧STK為空; 步驟6.將(0, 1)、(1,1)兩個(gè)掃描碼壓入到?jīng)_突堆棧STK中; 步驟7.檢查沖突堆棧STK,如果非空,則彈出棧頂元素s=(a,m),構(gòu)造掃描幀廣播給網(wǎng) 絡(luò)上ALD設(shè)備; 步驟8.根據(jù)ALD設(shè)備的反饋情況進(jìn)行處理; 步驟9.檢查沖突堆棧STK,若STK中還有掃描碼,則轉(zhuǎn)步驟7,否則整個(gè)掃描過(guò)程結(jié)束, 關(guān)閉文件F。
2. 根據(jù)權(quán)利要求1所述的兩階段ALD掃描算法,其特征在于,所述文件F保存第一輪掃 描過(guò)程中的可讀結(jié)點(diǎn)對(duì)應(yīng)的掃描碼。
3. 根據(jù)權(quán)利要求2所述的兩階段ALD掃描算法,其特征在于,所述步驟3和步驟8中的 反饋情況包括可讀應(yīng)答、空閑應(yīng)答和沖突應(yīng)答。
4. 根據(jù)權(quán)利要求3所述的兩階段ALD掃描算法,其特征在于,所述可讀應(yīng)答表示網(wǎng)絡(luò)中 有唯一的ALD設(shè)備和掃描碼匹配。
5. 根據(jù)權(quán)利要求3所述的兩階段ALD掃描算法,其特征在于,所述空閑應(yīng)答表示網(wǎng)絡(luò)中 沒(méi)有任何ALD設(shè)備和掃描碼匹配。
6. 據(jù)權(quán)利要求3所述的兩階段ALD掃描算法,其特征在于,所述沖突應(yīng)答表示網(wǎng)絡(luò)中有 多個(gè)ALD與掃描碼的匹配。
7. 根據(jù)權(quán)利要求4所述的兩階段ALD掃描算法,其特征在于,所述步驟3進(jìn)一步包括: RCS根據(jù)應(yīng)答獲取設(shè)備的基本信息; 賦予所述設(shè)備HDLC地址。
8. 根據(jù)權(quán)利要求4所述的兩階段ALD掃描算法,其特征在于,所述步驟8進(jìn)一步包括: RCS根據(jù)應(yīng)答獲獲取設(shè)備的基本信息; 根據(jù)所述設(shè)備的基本信息構(gòu)造一個(gè)賦地址XID幀發(fā)送至所述設(shè)備; 賦予所述設(shè)備HDLC地址; 將掃描碼s= (a,m)寫(xiě)入到文件F中。
9. 根據(jù)權(quán)利要求7或8中任意一項(xiàng)所述的兩階段ALD掃描算法,其特征在于,所述基本 信息包括WD和設(shè)備類(lèi)型。
10. 根據(jù)權(quán)利要求5所述的兩階段ALD掃描算法,其特征在于,所述步驟3進(jìn)一步包括: 不需要將掃描碼寫(xiě)入到文件F中。
【文檔編號(hào)】H04W24/00GK104363605SQ201410567196
【公開(kāi)日】2015年2月18日 申請(qǐng)日期:2014年10月22日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】李文生, 鄧春健, 呂燚, 崔園, 劉現(xiàn)鋒, 官祥飛, 葉立威, 劉偉 申請(qǐng)人:電子科技大學(xué)中山學(xué)院