发明名称 基于定向天线的移动通信节点组网控制方法
摘要 本发明公开了一种基于定向天线的移动通信节点组网控制方法,该方法在周期T1中采用双定向邻居发现方法实现移动节点间通信连接的建立,然后采用TRC方法对移动节点和邻居节点进行同步通信时间的分配,从而实现移动节点间通信连接的维护;之后在周期T2中,采用同步时间控制方法对节点之间的同步通信进行控制,从而实现了节点间通信连接的保持,然后使用DTRC方法对移动节点进行通信时间的分配;最后在周期T3中,采用双定向通信控制方法对节点之间的通信进行控制,并且使用数据传输控制方法实现节点间数据的交换,从而实现节点间的通信。在本发明中,无论是通信的接收还是发送,均采用定向天线来完成,从而增加了双方通信的距离和通信的效率,减少了节点间通信时信道发生冲突的概率,提高了信道的利用率和通信的效率。
申请公布号 CN101848534B 申请公布日期 2013.03.27
申请号 CN201010162881.9 申请日期 2010.05.05
申请人 北京航空航天大学 发明人 芦效峰;刘国师;陈佳;刘伟;蒲菊华;熊璋
分类号 H04W56/00(2009.01)I;H04W76/02(2009.01)I;H04W76/04(2009.01)I;H04W84/18(2009.01)I 主分类号 H04W56/00(2009.01)I
代理机构 北京永创新实专利事务所 11121 代理人 李有浩
主权项 1.一种基于定向天线的移动通信节点组网控制方法,在移动通信节点组网控制中包括有DD邻居发现模块(1)、介质分配模块(2)、同步控制模块(3)、通信分配模块(4)、DD通信控制模块(5)、数据发送模块(6)和地址更新模块(7);其特征在于:该方法在邻居发现周期中采用双定向邻居发现方法实现移动节点间通信连接的建立,然后采用TRC方法对移动节点和邻居节点进行同步通信时间的分配,从而实现移动节点间通信连接的维护;之后在同步周期T<sub>2</sub>中,采用同步时间控制方法对节点之间的同步通信进行控制,从而实现了节点间通信连接的保持,然后使用DTRC方法对移动节点进行通信时间的分配;最后,在节点通信周期T<sub>3</sub>中,采用双定向通信控制方法对节点之间的通信进行控制,并且使用数据传输控制方法实现节点间数据的交换,从而实现节点间的通信;所述DD邻居发现模块(1)的控制流程为:第一方面,DD邻居发现模块(1)在接收到启动指令start1后,在邻居发现周期T<sub>1</sub>中采用双定向邻居发现方法以及通信控制策略CCA进行通信连接的建立,然后将所发现的邻居节点信息data13={B<sub>id</sub>,B(x,y)}发送给同步控制模块(3),并且当邻居发现周期T<sub>1</sub>结束时向同步控制模块(3)发送同步控制模块启动指令start3;所述邻居节点信息data13={B<sub>id</sub>,B(x,y)}中B<sub>id</sub>表示邻居节点的身份标识,B(x,y)表示邻居节点的位置信息;第二方面,DD邻居发现模块(1)接收DD通信控制模块(5)发送的重新启动指令re_do后,在邻居发现周期T<sub>1</sub>中采用双定向邻居发现方法进行通信连接的建立,然后将data13={B<sub>id</sub>,B(x,y)}发送给同步控制模块(3),并且当邻居发现周期T<sub>1</sub>结束时向同步控制模块(3)发送同步控制模块启动指令start3;第三方面,DD邻居发现模块(1)向介质分配模块(2)发送移动节点信息data12={A<sub>id</sub>,B<sub>id</sub>};所述移动节点信息data12={A<sub>id</sub>,B<sub>id</sub>}中A<sub>id</sub>表示移动节点的身份标识,B<sub>id</sub>表示邻居节点的身份标识;第四方面DD邻居发现模块(1)接收介质分配模块(2)发送的同步通信时间t<sub>AB</sub>;所述双定向邻居发现方法的具体步骤如下:步骤101:移动节点根据概率p决定该节点是否处于工作模式;如果移动节点处于工作模式,则执行步骤102;否则,节点处于数据监听状态,直到邻居发现周期T<sub>1</sub>结束,并向同步控制模块3发送start3指令;其中,概率<img file="FDA00002382848800011.GIF" wi="230" he="115" />θ是移动节点定向天线的波束角,α是邻居节点定向天线的波束角,k等于邻居数加1,π是圆周率;步骤102:移动节点根据其已发现的邻居节点的数目k<sub>1</sub>与阈值N<sub>T</sub>的大小,来选择工作的方式,阈值N<sub>T</sub>的取值根据具体的环境情况而定,一般取值为10个~20个;如果k<sub>1</sub><N<sub>T</sub>,采用随机发现的工作方式,执行步骤103;否则,采用目标寻找的工作方式,执行步骤109;步骤103:移动节点采用旋转周期为<img file="FDA00002382848800012.GIF" wi="68" he="109" />T对定向天线的转动进行控制,每移动一个波束角θ后,发送一次通信连接请求Hello(all,A<sub>id</sub>,A(x,y));而邻居节点则以旋转周期T进行定向天线转动,并始终处于通信接收状态;θ表示定向天线的波束角;T表示定向天线的旋转周期;A<sub>id</sub>表示移动节点的身份标识;all表示广播地址;A(x,y)表示移动节点的地理位置信息,x表示经度,y表示纬度;Hello报文表示无目的通信连接请求报文;步骤104:当邻居节点接收到Hello(all,A<sub>id</sub>,A(x,y))后,邻居节点获取A<sub>id</sub>和A(x,y)并存储在邻居节点的缓存数据库中,然后邻居节点的定向天线停止旋转,并向移动节点发送回复信息Re_Hello(B<sub>id</sub>,A<sub>id</sub>,B(x,y));A<sub>id</sub>表示移动节点的身份标识;B<sub>id</sub>表示邻居节点的身份标识;B(x,y)表示邻居节点的地理位置信息,x表示经度,y表示纬度;Re_Hello报文表示无目的通信连接请求的回复报文;步骤105:移动节点接收到回复信息Re_Hello(B<sub>id</sub>,A<sub>id</sub>,B(x,y))后,移动节点将邻居节点标记为自身的邻居节点,并获取B<sub>id</sub>和B(x,y)存储在移-节-数据库中,然后移动节点的定向天线停止旋转,并向邻居节点发送确认信息ACK;移-节-数据库中一条存储记录的格式为(B<sub>id</sub>,B(x,y),H<sub>i</sub>,state);H<sub>i</sub>表示移动节点与邻居节点进行同步通信的时间;state表示H<sub>i</sub>的状态,其状态分别为“使用”、“空闲”、“等待”、“争抢”、“待定”;步骤106:若邻居节点接收到移动节点的确认信息ACK,则邻居节点将移动节点标记为自身的邻居节点,并将移动节点的位置信息从缓存数据库中转存到邻-节-数据库中;步骤107:移动节点向介质分配模块2发送移动节点与邻居节点的身份标识A<sub>id</sub>、B<sub>id</sub>,并且等待介质分配模块2返回同步通信时间t<sub>AB</sub>;t<sub>AB</sub>表示移动节点A<sub>id</sub>与邻居节点B<sub>id</sub>在同步周期T<sub>2</sub>中开始通信的时间;步骤108:若邻居发现所用时间t小于邻居发现周期T<sub>1</sub>,执行步骤102;否则,将移动节点的旋转周期设为T,并向同步控制模块3发送start3指令,结束;步骤109:如果移动节点的缓存数据库中存储的邻居数目k<sub>2</sub>>0,则从移动节点的缓存数据库中随机取出一个邻居节点B<sub>id</sub>作为待发现的对象,执行步骤110;否则k<sub>2</sub>=0,将移动节点的旋转周期设为T,并且当邻居发现周期T<sub>1</sub>结束时向同步控制模块3发送start3指令,结束;步骤110:移动节点采用旋转周期为<img file="FDA00002382848800021.GIF" wi="104" he="109" />对定向天线的转动进行控制,再根据B(x,y)来调整定向天线的角度,使移动节点的方向天线指向该邻居节点,然后以该角度为中心,3θ为范围来进行邻居发现,移动节点每移动一个波束角θ后,发送一次通信连接请求Hi(A<sub>id</sub>,B<sub>id</sub>,A(x,y));A<sub>id</sub>表示移动节点的身份标识;B<sub>id</sub>表示邻居节点的身份标识;A(x,y)表示移动节点的地理位置信息,x表示经度,y表示纬度;Hi报文表示有目的通信连接请求报文;步骤111:当邻居节点接收到Hi(A<sub>id</sub>,B<sub>id</sub>,A(x,y))后,邻居节点将移动节点标记为自身的邻居节点,并获取A<sub>id</sub>和A(x,y)存储在邻-节-数据库中,然后邻居节点的定向天线停止旋转,并向移动节点发送回复信息Re_Hi(B<sub>id</sub>,A<sub>id</sub>,A(x,y));Re_Hi报文表示有目的通信连接请求的回复报文;步骤112:若移动节点在T时间内接收到邻居节点的回复信息Re_Hi(B<sub>id</sub>,A<sub>id</sub>,A(x,y)),则移动节点将邻居节点标记为自身的邻居节点,并获取B<sub>id</sub>和B(x,y)存储移-节-数据库中,再将B<sub>id</sub>和B(x,y)从缓存数据库中删掉,然后移动节点的定向天线停止旋转,并向邻居节点发送确认信息ACK;若移动节点没有在T时间内接收到邻居节点的回复信息,则直接将B<sub>id</sub>和B(x,y)从缓存数据库中删掉;步骤113:移动节点向介质分配模块2发送移动节点与邻居节点的身份标识A<sub>id</sub>、B<sub>id</sub>,并且等待介质分配模块2返回同步通信时间t<sub>AB</sub>;步骤114:若邻居发现所用时间t小于邻居发现周期T<sub>1</sub>,执行步骤109;否则,将移动节点的旋转周期设为T,并向同步控制模块3发送start3指令,结束;所述通信控制策略CCA包括有:策略A01:移动节点在接收到数据包后,如果该数据包不是给自己的,则将数据包中的B<sub>id</sub>与B(x,y)提取出来,存入缓存数据库中;所述数据包的报文种类包括Hello报文、Hi报文、Re_Hello报文、Re_Hi报文、DRTS报文以及DCTS报文;策略A02:在邻居发现周期T<sub>1</sub>中,移动节点在发送Hello、Hi报文的时候,都要从[0,t]中随机取一个时间进行等待,对信号发射的区域进行侦听,若在该时间内没有侦听到数据,则发送Hello或者Hi报文;否则,继续从[0,t]中随机取一个时间进行等待;其中t为发送Hello或Hi报文时所使用的最短的时间,即当Hello或Hi报文最短时所用的发送时间;所述介质分配模块(2)的控制流程为:第一方面,介质分配模块(2)接收DD邻居发现模块(1)输出的data12={A<sub>id</sub>,B<sub>id</sub>},然后根据时钟轮换通信方法TRC对移动节点和邻居节点进行同步通信时间的分配,并且将得到的同步通信时间t<sub>AB</sub>发送给DD邻居发现模块(1);第二方面,介质分配模块(2)接收同步控制模块(3)输出的A<sub>id</sub>、B<sub>id</sub>以及时间段H<sub>i</sub>,然后根据时钟轮换通信方法TRC对移动节点和邻居节点进行同步通信时间的分配,并且将得到的同步通信时间t<sub>AB</sub>发送给同步控制模块(3);介质分配模块(2)接收同步控制模块(3)输出信息的数学表达为data32={A<sub>id</sub>,B<sub>id</sub>,H<sub>i</sub>};同步周期T<sub>2</sub>等分成H份时间段,其中H=T<sub>2</sub>/t<sub>int erval</sub>,t<sub>int erval</sub>为一次同步通信的最大时间长度,并且在初始状态时所有的时间段都标记为“空闲”;所述TRC方法的具体步骤如下:步骤201:判断接收到的数据中是否有H<sub>i</sub>,如果有,表示该数据是来自同步控制模块3,执行步骤208;否则,表示该数据是来自DD邻居发现模块1,执行步骤202;步骤202:移动节点从H中随机取出一个“空闲”的时间段H<sub>i</sub>,然后将向邻居节点发送报文Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>i</sub>);步骤203:邻居节点收到Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>i</sub>)报文后,判断H<sub>i</sub>在该节点上是否空闲,若H<sub>i</sub>状态为“空闲”,则将该时间段作为移动节点A<sub>id</sub>与邻居节点B<sub>id</sub>的同步通信时间t<sub>AB</sub>,即将H<sub>i</sub>标记为“等待”,并将其存入邻-节-数据库中,然后向移动节点发送ACK报文,执行步骤207;否则,邻居节点向移动节点发送报文Time(B<sub>id</sub>,A<sub>id</sub>,∑H),执行步骤204;∑H表示邻居节点上所有的空闲时间段的集合;步骤204:移动节点收到Time(B<sub>id</sub>,A<sub>id</sub>,∑H)报文后,根据报文中的∑H以及本节点上的空闲时间段,选出一个时间段H<sub>j</sub>,该时间段H<sub>j</sub>在移动节点和邻居节点上均为空闲时间段,将H<sub>j</sub>标记为“使用”,并将其存入移-节-数据库中,然后向邻居节点发送Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>j</sub>,success),执行步骤205;若∑H与移动节点上的空闲时间段不存在交集,则从∑H中随机选出一个时间段H<sub>k</sub>,将H<sub>k</sub>标记为“争抢”并且存入移-节-数据库中,然后向邻居节点发送Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>k</sub>,fail)报文,执行步骤206;标记为“争抢”的时间段表示移动节点在下一个通信周期时不与邻居节点通信,而是会与其他节点进行协商,将该时间段在第二个通信周期时交给邻居节点;步骤205:邻居节点收到Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>j</sub>,success)报文后,将H<sub>j</sub>标记为“等待”,并将其存入邻-节-数据库中,然后将H<sub>j</sub>作为同步通信时间t<sub>AB</sub>发送给DD邻居发现模块1,TRC方法结束;步骤206:邻居节点收到Time(A<sub>id</sub>,B<sub>id</sub>,H<sub>k</sub>,fail)报文后,将H<sub>k</sub>标记为“待定”,并存入邻-节-数据库中,然后将H<sub>k</sub>作为同步通信时间t<sub>AB</sub>发送给DD邻居发现模块1,TRC方法结束;标记为“待定”的时间段表示该邻居节点在下一个通信周期时不与移动节点通信,而是在第二个通信周期时进行通信;步骤207:移动节点在收到ACK报文后,将H<sub>i</sub>标记为“使用”,并将其存入移-节-数据库中,将H<sub>i</sub>作为同步通信时间t<sub>AB</sub>发送给DD邻居发现模块1,TRC方法结束;步骤208:移动节点从移-节-数据库中删除H<sub>i</sub>状态为“使用”的存储记录,并且将数据库中H<sub>i</sub>状态为“争抢”的记录修改为“使用”;然后将H<sub>i</sub>标记为“使用”,向邻居节点C<sub>id</sub>发送报文Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>i</sub>,used);步骤209:邻居节点收到Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>i</sub>,used)报文后,将H<sub>i</sub>标记为“空闲”,并且删除数据库中H<sub>i</sub>对应的记录,然后向移动节点发送报文Time(C<sub>id</sub>,A<sub>id</sub>,∑H′);∑H′表示邻居节点上除H<sub>i</sub>外所有的空闲时间段的集合;步骤210:移动节点收到Time(C<sub>id</sub>,A<sub>id</sub>,∑H′)报文后,根据报文中的∑H′以及本节点上的空闲时间段,选出一个时间段H<sub>j</sub>,该时间段H<sub>j</sub>在移动节点和邻居节点上均为空闲时间段,将H<sub>j</sub>标记为“使用”,并将其存入移-节-数据库中,然后向邻居节点发送Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>j</sub>,success),执行步骤211;若∑H′与移动节点上的空闲时间段不存在交集,则从∑H′中随机选出一个时间段H<sub>k</sub>,将H<sub>k</sub>标记为“争抢”并且存入移-节-数据库中,然后向邻居节点发送Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>k</sub>,fail)报文,执行步骤212;步骤211:邻居节点收到Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>j</sub>,success)报文后,将将H<sub>j</sub>标记为“等待”,并将其存入邻-节-数据库中,然后将H<sub>j</sub>作为同步通信时间t<sub>AB</sub>发送给同步控制模块(3),TRC方法结束;步骤212:邻居节点收到Time(A<sub>id</sub>,C<sub>id</sub>,H<sub>k</sub>,fail)报文后,将H<sub>k</sub>标记为“待定”,并存入邻-节-数据库中,然后将H<sub>k</sub>作为同步通信时间t<sub>AB</sub>发送给同步控制模块(3),并结束介质分配操作;所述同步控制模块(3)的控制流程为:第一方面同步控制模块(3)接收DD邻居发现模块(1)输出的start3指令以及data13={B<sub>id</sub>,B(x,y)},然后根据邻居节点的位置信息采用同步时间控制方法方法进行节点的同步通信控制,最后当同步周期T<sub>2</sub>结束时向DD通信控制模块(5)发送启动指令start5;第二方面,同步控制模块(3)向通信分配模块(4)发送邻居节点身份标识B<sub>id</sub>;第三方面,同步控制模块(3)接收通信分配模块(4)输出的通信时间t<sub>AC</sub>;第四方面,同步控制模块(3)向介质分配模块(2)发送data32={A<sub>id</sub>,B<sub>id</sub>,H<sub>i</sub>};第五方面,同步控制模块(3)接收质分配模块(2)输出的同步通信时间t<sub>AB</sub>;所述同步时间控制方法的具体步骤如下:步骤301:初始化循环次数i=0;步骤302:判断时间段H<sub>i</sub>的状态是否是“使用”,如果是,则执行步骤303;否则,执行步骤304;步骤303:移动节点从移-节-数据库中取出时间段H<sub>i</sub>对应的邻居节点的身份标识B<sub>id</sub>、位置信息B(x,y),并且根据B(x,y)与移动节点当前位置A(x,y)调整移动节点上定向天线的方位角,使定向天线指向邻居节点B<sub>id</sub>,然后将B<sub>id</sub>传给通信分配模块4,并等待通信分配模块4返回通信时间t<sub>AC</sub>,执行步骤308;步骤304:判断时间段H<sub>i</sub>的状态是否是“空闲”,如果是,则移动节点等待一个时间段t<sub>int erval</sub>,执行步骤308;否则执行步骤305;步骤305:判断时间段H<sub>i</sub>的状态是否是“待定”,如果是,则移动节点等待一个时间段t<sub>int erval</sub>,然后将H<sub>i</sub>的状态修改为“等待”,执行步骤308;否则执行步骤306;步骤306:判断时间段H<sub>i</sub>的状态是否是“等待”,如果是,则移动节点从移-节-数据库中取出时间段H<sub>i</sub>对应的邻居节点的身份标识B<sub>id</sub>、位置信息B(x,y),并且根据B(x,y)与移动节点当前位置A(x,y)调整移动节点上定向天线的方位角,使定向天线指向邻居节点B<sub>id</sub>,并且节点处于监听状态,等待一个时间段t<sub>int erval</sub>,执行步骤308;否则执行步骤307;步骤307:此时H<sub>i</sub>的状态为“争抢”,移动节点从移-节-数据库中取出时间段H<sub>i</sub>对应的正在使用该时间段的邻居节点的身份标识C<sub>id</sub>、位置信息C(x,y),并且根据C(x,y)与移动节点当前位置A(x,y)调整移动节点上定向天线的方位角,使定向天线指向邻居节点C<sub>id</sub>,然后向介质分配模块2发送移动节点与邻居节点的身份标识A<sub>id</sub>、C<sub>id</sub>、时间段H<sub>i</sub>,并且等待介质分配模块2返回同步通信时间t<sub>AB</sub>,执行步骤308;步骤308:令循环次数i+1,如果i≥H,则向DD通信控制模块5发送重新启动start5指令,结束;否则,执行步骤302;所述通信分配模块(4)的控制流程为:第一方面,通信分配模块(4)接收同步控制模块(3)输出的邻居节点身份标识B<sub>id</sub>,然后根据动态时钟通信方法DTRC对移动节点与邻居节点进行通信时间的分配,并且将得到的通信时间t<sub>AC</sub>发送给同步控制模块(3);第二方面,通信分配模块(4)接收数据发送模块(6)输出的通信时间S<sub>i</sub>,然后根据DTRC方法对移动节点与邻居节点进行通信时间的分配,并且将得到的通信时间t<sub>AC</sub>发送给数据发送模块(6);第三方面,通信分配模块(4)向地址更新模块7发送DRTS报文与DCTS报文,其数学表达为data47={DRTS,DCTS};第四方面,通信分配模块(4)接收地址更新模块(7)输出的移动节点位置信息A(x,y)、邻居节点位置信息B(x,y),其数学表达为data74={A(x,y),B(x,y)};节点通信周期T<sub>3</sub>被等分成S份,则每一段时间长度S<sub>i</sub>=T<sub>3</sub>/S;S的数值由整个通信环境中节点的平均邻居数目决定,一般为10~20;时间段S<sub>i</sub>的状态种类为“节点空闲”、“发送占用”、“接收占用”;节点在初始化时所有的时间段都为“节点空闲”;节点通信数据库用于记录节点进行通信的时间,其中一条存储记录的格式为(B<sub>id</sub>,B(x,y),epoch,S<sub>i</sub>,N,state);epoch表示移动节点的通信周期数,例如epoch=0表示当前通信周期,epoch=k表示当前通信周期之后的第k个通信周期;N表示该时间段需要使用的次数;state表示该时间段的状态,其中state=0表示“节点空闲”,state=1表示“发送占用”,state=2表示“接收占用”;所述DTRC方法的具体步骤如下:步骤401:判断传过来的数据中是否有S<sub>i</sub>,如果有,表示数据来自数据传输模块(6),执行步骤411;否则,表示数据来自同步通信控制模块(3),执行步骤402;步骤402:移动节点A<sub>id</sub>启动计时器,并且对发送区域进行侦听,该侦听时间t<sub>s</sub>=max{t<sub>DRTS</sub>,t<sub>DCTS</sub>},如果移动节点在侦听时间内,接收到其他节点发出的数据,则该移动节点随机等待一段时间以后,重新执行步骤402;否则,执行步骤403;步骤403:移动节点就向该区域发送DRTS(A<sub>id</sub>,B<sub>id</sub>,A(x,y),N<sub>1</sub>)报文;N<sub>1</sub>为移动节点与邻居节点需要进行通信的时间长度,该长度为时间段S<sub>i</sub>长度的整数倍,如果移动节点不需要与邻居节点进行通信,则N<sub>1</sub>=0;步骤404:邻居节点B<sub>id</sub>在接收到DRTS(A<sub>id</sub>,B<sub>id</sub>,A(x,y),N<sub>1</sub>)报文后,将报文传送给地址更新模块7;并且向移动节点发送允许发送报文DCTS(B<sub>id</sub>,A<sub>id</sub>,B(x,y),N<sub>2</sub>);N<sub>2</sub>=N<sub>1</sub>+N<sub>3</sub>,N<sub>3</sub>为邻居节点与移动节点需要进行通信的时间长度,该长度为时间段S<sub>i</sub>长度的整数倍,如果移动节点不需要与邻居节点进行通信,则N<sub>3</sub>=0步骤405:移动节点在接收到DCTS(B<sub>id</sub>,A<sub>id</sub>,B(x,y),N<sub>2</sub>)报文后,将报文传送给地址更新模块7;并且令epoch=0;步骤406:判断移动节点在该epoch中是否存在“节点空闲”时间段,如果存在,则从S随机取出一个“节点空闲”时间段S<sub>i</sub>,向邻居节点发送通信协商报文Comm(A<sub>id</sub>,B<sub>id</sub>,S<sub>i</sub>,epoch);执行步骤407;否则,令epoch+1,执行步骤406;步骤407:邻居节点收到Comm(A<sub>id</sub>,B<sub>id</sub>,S<sub>i</sub>,epoch)后,判断在该epoch下S<sub>i</sub>是否为“节点空闲”,如果是,则将(A<sub>id</sub>,A(x,y),epoch,S<sub>i</sub>,N<sub>2</sub>,2)存入节点通信数据库;否则,发送报文Comm(B<sub>id</sub>,A<sub>id</sub>,∑(S<sub>i</sub>,epoch))给移动节点;∑(S<sub>i</sub>,epoch)表示邻居节点空闲时间段的集合,其中的元组(S<sub>i</sub>,epoch)表示时间段S<sub>i</sub>在epoch之后都为“节点空闲”;步骤408:移动节点收到报文Comm(B<sub>id</sub>,A<sub>id</sub>,∑(S<sub>i</sub>,epoch))后,根据自己的“节点空闲”时间段的集合,选择一个epoch值最小的元组(S<sub>j</sub>,epoch),将(B<sub>id</sub>,B(x,y),epoch,S<sub>j</sub>,N<sub>2</sub>,1)存入节点通信数据库并将其作为节点的通信时间t<sub>AC</sub>发送给同步控制模块3,然后向邻居节点发送报文Comm(A<sub>id</sub>,B<sub>id</sub>,S<sub>j</sub>,epoch,success);步骤409:邻居节点收到报文Comm(A<sub>id</sub>,B<sub>id</sub>,S<sub>j</sub>,epoch,success)后,将(A<sub>id</sub>,A(x,y),epoch,S<sub>j</sub>,N<sub>2</sub>,2)存入节点通信数据库,向移动节点发送ACK报文;步骤410:邻居节点向移动节点发ACK报文,DTRC方法结束;步骤411:移动节点向邻居节点发送报文Comm(A<sub>id</sub>,B<sub>id</sub>,∑S);∑S表示移动节点在当前节点通信周期中,S<sub>i</sub>之后“节点空闲”的时间段集合;步骤412:邻居节点收到Comm(A<sub>id</sub>,B<sub>id</sub>,∑S)后,根据∑S,以及∑S′,向移动节点发送报文Comm(B<sub>id</sub>,A<sub>id</sub>,∑S∩∑S′);并且将∑S∩∑S′中前k个时间段以格式(A<sub>id</sub>,A(x,y),0,S<sub>j</sub>,1,2)存入节点通信数据库,然后将原始的记录修改为(A<sub>id</sub>,A(x,y),epoch,S<sub>i</sub>,N-k,2);∑S′表示邻居节点在当前节点通信周期中,S<sub>i</sub>之后“节点空闲”的时间段集合;k为移动节点与邻居节点还需要进行通信的时间段的个数;步骤413:移动节点在收到报文Comm(B<sub>id</sub>,A<sub>id</sub>,∑S∩∑S′)后,将∑S∩∑S′中前k个时间段以格式(B<sub>id</sub>,B(x,y),0,S<sub>j</sub>,1,1)存入节点通信数据库并将其作为节点的通信时间t<sub>AC</sub>发送给数据发送模块6,然后将原始的记录修改为(B<sub>id</sub>,B(x,y),epoch,S<sub>i</sub>,N-k,1),DTRC方法结束;所述DD通信控制模块(5)的控制流程为:第一方面,DD通信控制模块(5)接收同步控制模块(3)输出的启动指令start5,然后根据双定向通信控制方法对节点之间的通信进行控制管理,最后当节点通信周期T<sub>3</sub>结束时向DD邻居发现模块(1)发送重启指令re_do;第二方面,DD通信控制模块(5)向数据传输模块(6)发送邻居节点的身份标识B<sub>id</sub>以及用户所要发送的数据,其数学表达为data56={B<sub>id</sub>,data};所述双定向通信控制方法具体步骤如下:步骤501:初始化i=0,epoch=0;步骤502:判断S<sub>i</sub>是否为“节点空闲”,如果是,则等待一个时间段S<sub>i</sub>后,执行步骤505;否则执行步骤503;步骤503:判断S<sub>i</sub>是否为“接收占用”,如果是,则根据节点通信数据库中相应记录提取出邻居节点的身份标识B<sub>id</sub>、位置信息B(x,y),然后根据B(x,y)与移动节点当前位置A(x,y)调整移动节点上定向天线的方位角,使定向天线指向邻居节点B<sub>id</sub>,并且定向天线处于监听状态,执行步骤505;否则执行步骤504;步骤504:此时S<sub>i</sub>为“发送占用”,根据节点通信数据库中相应记录提取出邻居节点的身份标识B<sub>id</sub>、位置信息B(x,y),然后根据B(x,y)与移动节点当前位置A(x,y)调整移动节点上定向天线的方位角,使定向天线指向邻居节点B<sub>id</sub>,将B<sub>id</sub>、需要发送的数据传给数据传输模块(6);步骤505:令i+1;如果i≥S,执行步骤506;否则,执行步骤502;步骤506:对节点通信数据库进行遍历,搜索出epoch=0的记录,并使该记录中N=N-1;步骤507:删除节点通信数据库中epoch=0并且N=0的记录;步骤508:搜索出节点通信数据库中所有epoch>0的记录,将该记录中epoch=epoch-1;步骤509:向DD邻居发现模块1发送re_do指令,结束。
地址 100191 北京市海淀区学院路37号