单信道集中式组网算法的制作方法

文档序号:7892509阅读:242来源:国知局
专利名称:单信道集中式组网算法的制作方法
技术领域
本发明涉及在单信道的情况下,集中式网络组网算法的信息技术应用领域,尤指一种应用于智能家居,监控系统等集中式网络的一种新的组网方式,更具体地的说,涉及单信道集中式网络的路由和媒体接入算法的实现。
背景技术
请参阅附图2所示,现有的集中式网络只有一个集中器100,其它均为子终端(或叫终端)a、b、c、d……,有的子终端离集中器比较近,有的离得比较远,近的子终端可以直接和集中器通信,而离得远的子终端由于通信信号的衰减和受到干扰的原因,不能直接和集中器通信。如集中器100不能直接和子终端η通信,具体为集中器100先把数据传给子终端m,子终端m再把数据传给子终端n,子终端η回复给子终端m,子终端m再转发给集中器 100。如图2所示,其中直线表示两点之间能直接通信;如子终端m发射数据,则集中器100 及各子终端l,n,O,P都能收到。目前,路由算法和媒体接入算法是分开的。在单信道的模式下,当两个临近的终端同时发送信号时,就会产生冲突。目前的媒体接入技术有ALOHA (随机接入)、CSMA (Carrier Sense Multiple Access,载波侦听多址)、802· 11、TDMA(Time Division Multiple Access 时分多址)等方式,TDMA方式能很好的避免冲突发生,但对时钟精度和时间同步要求比价高,增加了硬件的成本,地址容量有限;AL0HA等算法,不能完全避免冲突发生,当相邻终端很多的时候信道很容易被阻塞,在单信道条件下,暴露终端和隐藏终端问题根本无法得到解决,并且还需要冲突检测的硬件。集中式网络的特点是在应用层,终端之间不需要传递数据,只有集中器和终端之间的数据传递,所以在集中式网络里,不需要像传统的路由那样,两相邻的终端之间还需要交换路由信息,并且每个终端都需要计算和维护和存储路由表。所以在单信道集中式网络里采用传统的组网技术,对终端的要求比较高,由于终端的个数很多,从而增加了整个系统的成本。

发明内容
为了克服上述不足之处,本发明的主要目的旨在提供改进型的一种基于低速集中式网络的组网算法,将复杂的计算和大量的存储都集中到集中器上,且每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测;并且在任何一个时段,都只有一个子终端在发送数据,从而不会产生冲突,同时也避免了阻塞发生的一种新的单信道集中式组网算法。本发明要解决的技术问题是要解决集中式组网算法的整体工作原理和工作步骤问题;要解决集中器的遍历发送算法及各子终端接收数据的处理过程问题;要解决数据传输流程中数据包的包格式种类等有关技术问题。本发明解决其技术问题所采用的技术方案是单信道集中式组网算法用集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间进行接入算法,在单信道的情况下,对单信道集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的组网算法,完成一种改进型的集中式组网算法,所述单信道集中式网络设有一个集中器, 每个集中器设有一个八位二进制的计数器,并将计算和存储都集中到集中器上,其它均为子终端,有的子终端离集中器近,有的子终端离集中器远,每个子终端都设有监听信道和邻居机制,邻居机制设有邻居表,所述集中器与各子终端之间通过有线传输进行直接通信;所述集中式组网算法主要包括两种流程操作流程和路由流程,每个流程都是由集中器发起的,集中器刚开机或者有新加入子终端的时候,在集中器端设有用户配置的静态路由表,集中器根据配置的静态路由表,通过集中器的遍历发送算法,遍历访问所有的每一个子终端,采用操作流程的轮流发送让每一个新加入的子终端轮流发送一下数据,各子终端接收数据,当邻近的子终端收到数据包时,先从数据包里取出发送地址,再把发送终端的地址加入邻居表,然后集中器再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是步骤I.开始打开所有子终端,所有子终端开始接收数据;步骤2.配置静态路由执行完开始模块后,则进入配置静态路由模块,完成用户配置静态路由表,用户根据工程的实际环境,用一般的静态路由的方式配置出静态路由,静态路由配置在集中器里, 配置静态路由要求每个子终端都能通过直接或者中继的方式和集中器进行相互通信;步骤3.轮流发送维护邻居表执行完配置静态路由模块后,则进入轮流发送维护邻居表模块,完成轮流发送和路由表的维护,集中器根据静态路由表,使每个子终端都至少发送一次数据,当一个子终端的发送终端发送一次数据时,该子终端周围的接收终端都能正确接收到数据,同时将发送终端的地址加入到接收终端的邻居表里,并在子终端里存储的邻居表里查询是否含有该发送终端的地址;步骤4.收集邻居表执行完轮流发送维护邻居表模块后,则进入收集邻居表模块,完成收集邻居表,集中器按照静态路由表,收集网络里的每个子终端的路由表;步骤5.计算新路由表执行完收集邻居表模块后,则进入计算新路由表模块,完成计算新路由表,根据收集到的邻居表,计算出新的路由表,新的路由表计算出来后,就按照新的路由表来收发数据;步骤6.结束执行完计算新路由表模块后,则进入结束模块,完成单信道集中式组网算法。进一步的,所述的单信道集中式组网算法的数据包分为四类包格式应用数据包 App、应用回复数据包AppAck、请求数据包Request及请求的回复数据包ReqAck,集中器
(100)产生应用数据包App和请求数据包Request,子终端产生应用回复数据包AppAck及请求的回复数据包ReqAck,该数据传输流程的具体工作步骤是步骤I.应用数据包App
先由集中器发起,将数据传给节点地址号Addrl,然后传给节点地址号Addr2,以此类推,最后传给节点地址号Addrn,标志位的最高位为I时,从节点地址号Addrl到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为O 时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-I是否需要回复状态, 节点地址号Addrn默认就需要回复;步骤2.应用回复数据包AppAck当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号Addrn-Ι,以此类推,最后传给节点地址号Addrl,回复完成后,把前面存储的应用数据包 App删除掉;步骤3.请求数据包Request集中器根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request ;步骤4.请求的回复数据包ReqAck当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包Request删除掉。进一步的,所述的单信道集中式组网算法的操作流程的轮流发送,通过集中器的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是步骤I.轮流发送开始集中器设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器根据静态路由表,轮流发送开始,使每个子终端都至少发送一次数据;步骤2.找出未发送的最远的一条路径执行完轮流发送开始模块后,则进入找出未发送的最远的一条路径模块,轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径;步骤3. COUNT = O执行完找出未发送的最远的一条路径模块后,则进入已经传输过的跳数COUNT = O模块,当已经传输过的跳数COUNT = O时,则轮流发送完成;步骤4.沿发送路径发送App执行完已经传输过的跳数COUNT = O模块后,则进入沿发送路径发送App模块,在集中器产生应用数据包App时,数据包传输的总跳数Hop的值为n,且η为0 < η < 16的整数,已经传输过的跳数COUNT的值为0,数据包发送完成后把数据包保存下来;步骤5.开始计时执行完沿发送路径发送App模块后,则进入开始计时模块,则完成开始计时;步骤6.判断“是否回复AppAck”执行完开始计时模块后,则进入判断“是否回复AppAck”模块,如果是需回复应用回复数据包AppAck时,则进入停止计时模块;否则,则进入判断“计时是否超时”模块,如果计时为超时,则进入已经传输过的跳数COUNT加I模块,否则,将反馈进入是否回复AppAck模块的输入端;步骤7.判断“COUNT >2”执行完已经传输过的跳数COUNT加I模块后,则进入判断已经传输过的跳数COUNT > 2模块,如果是已经传输过的跳数COUNT > 2,则进入在集中器里标记这条路径发送失败模块,标记沿发送路径发送App所使用的这条路径发送失败,执行完在集中器里标记这条路径发送失败模块后,则反馈进入找出未发送的最远的一条路径模块的输入端;否则,则反馈进入沿发送路径发送App模块的输入端;步骤8.在集中器里标记这条路径已发送执行完停止计时模块后,则进入在集中器里标记这条路径已发送模块,集中器把沿发送路径发送App所使用的这条路径标记为已发送;步骤9.判断“是否完成所有发送”执行完在集中器里标记这条路径已发送模块后,则进入判断“是否完成所有发送” 模块,如果是完成所有发送,则进入退出模块,否则,则反馈进入找出未发送的最远的一条路径模块的输入端;步骤10.退出如果已完成所有发送,则进入退出模块。进一步的,所述的单信道集中式组网算法的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是步骤I.接收处理开始子终端接收数据处理开始,执行接收处理开始模块;步骤2.取出发送地址执行完接收处理开始模块后,则进入取出发送地址模块,假设地址为a,每当子终端收到数据包的时候,其处理过程为,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询;步骤3.判断“查询本地邻居表是否含有a”执行完取出发送地址模块后,则进入判断“查询本地邻居表是否含有a”模块,如果本地邻居表是含有a,则进入更新相关邻居项的时间模块,否则,则进入添加新邻居项a到邻居表模块;步骤4.判断“本节点是否是接收节点”执行完更新相关邻居项的时间模块后,则进入判断“本节点是否是接收节点”模块,如果本节点是接收节点,则进入已经传输过的跳数Count加I模块,如果本节点不是接收节点,则进入结束模块的输入端;与此同时,执行完添加新邻居项a到邻居表模块后,则也进入判断“本节点是否是接收节点”模块的输入端;步骤5.判断“Count < Hop”执行完已经传输过的跳数Count加I模块后,则进入判断“已经传输过的跳数 Count <数据包传输的总跳数Hop”模块,如果已经传输过的跳数Count是<数据包传输的总跳数Hop,则进入转发该数据包模块,如果已经传输过的跳数Count不是<数据包传输的总跳数Hop,则进入回复Ack模块;步骤6.结束执行完回复Ack模块后,则进入结束模块,具体为如果收到的是应用数据包App, 就回复应用回复数据包AppAck,如果收到的是请求数据包Request,就回复请求的回复数据包 ReqAck ;与此同时,执行完转发该数据包模块后,则也进入结束模块的输入端。本发明的有益效果是单信道集中式组网算法将复杂的计算和大量的存储都集中到集中器上,且每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测; 特别是在,子终端很多的网络里,大大的降低了系统的成本;并且在任何一个时段,都只有一个终端在发送数据从而不会产生冲突同时也避免了阻塞的发生,具有降低成本,提高效
率等优点。


下面结合附图和实施例对本发明进一步说明。
附图I是本发明集中式组网算法流程方框附图2是本发明集中式网络的拓扑示意附图3是本发明集中器的遍历发送算法流程方框附图4是本发明各子终端接收数据的处理流程方框图
附图5是本发明数据传输流程示意附图6是本发明数据包为App包格式示意附图7是本发明数据包为AppAck包格式示意附图8是本发明数据包为Request包格式示意附图9是本发明数据包为ReqAck包格式示意附图中标号说明
I-开始;
2_配置静态路由;
3-轮流发送维护邻居表;
4-收集邻居表;
5-计算新路由表;
6-结束;
100-集中器;
301-轮流发送开始;
302-找出未发送的最远的一条路径;
303-C0UNT = O ;
304-沿发送路径发送App;
305-开始计时;
306-是否回复AppAck ;
307-计时是否超时;
308-C0UNT加 I;309-C0UNT > 2 ;310-在集中器里标记这条路径发送失败;311-停止计时;312-在集中器里标记这条路径已发送;313-是否完成所有发送;314-退出;351-接收处理开始;352-取出发送地址;353-查询本地邻居表是否含有a ;354-添加新邻居项a到邻居表;355-更新相关邻居项的时间;356-本节点是否是接收节点;357-Count 加 I ;358-Count < Hop ;359-转发该数据包;360-回复 Ack ;361-结束。
具体实施例方式请参阅附图1、2、3、4、5、6、7、8和9所示,本发明用集中器100和子终端之间的通
信技术,对集中式网络的路由和媒体之间进行接入算法,其特征在于在单信道的情况下, 对单信道集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的组网算法,完成一种新的集中式组网算法,所述单信道集中式网络设有一个集中器100,每个集中器设有一个八位二进制的计数器,并将计算和存储都集中到集中器100上,其它均为子终端,有的子终端离集中器100近,有的子终端离集中器100远,每个子终端都设有监听信道和邻居机制,邻居机制设有邻居表,所述集中器100与各子终端之间通过有线传输进行直接通信;所述集中式组网算法主要包括两种流程操作流程和路由流程,每个流程都是由集中器100发起的,集中器100刚开机或者有新加入子终端的时候,在集中器端设有用户配置的静态路由表,集中器100根据配置的静态路由表,通过集中器100的遍历发送算法, 遍历访问所有的每一个子终端,采用操作流程的轮流发送让每一个新加入的子终端轮流发送一下数据,各子终端接收数据,当邻近的子终端收到数据包时,先从数据包里取出发送地址,再把发送终端的地址加入邻居表,然后集中器100再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是步骤L开始I打开所有子终端,所有子终端开始I接收数据;步骤2.配置静态路由2
执行完开始I模块后,则进入配置静态路由2模块,完成用户配置静态路由表,用户根据工程的实际环境,用一般的静态路由的方式配置出静态路由,静态路由配置在集中器100里,配置静态路由要求每个子终端都能通过直接或者中继的方式和集中器100进行相互通信;步骤3.轮流发送维护邻居表3执行完配置静态路由2模块后,则进入轮流发送维护邻居表3模块,完成轮流发送和路由表的维护,集中器100根据静态路由表,使每个子终端都至少发送一次数据,当一个子终端的发送终端发送一次数据时,该子终端周围的接收终端都能正确接收到数据,同时将发送终端的地址加入到接收终端的邻居表里,并在子终端里存储的邻居表里查询是否含有该发送终端的地址;步骤4.收集邻居表4执行完轮流发送维护邻居表3模块后,则进入收集邻居表4模块,完成收集邻居表,集中器100按照静态路由表,收集网络里的每个子终端的路由表;步骤5.计算新路由表5执行完收集邻居表4模块后,则进入计算新路由表5模块,完成计算新路由表,根据收集到的邻居表,计算出新的路由表,新的路由表计算出来后,就按照新的路由表来收发数据;步骤6.结束6执行完计算新路由表5模块后,则进入结束6模块,完成单信道集中式组网算法。请参阅附图5、6、7、8和9所示,进一步的,所述的单信道集中式组网算法的数据包分为四类包格式应用数据包App、应用回复数据包AppAck、请求数据包Request及请求的回复数据包ReqAck,集中器100产生应用数据包App和请求数据包Request,子终端产生应用回复数据包AppAck及请求的回复数据包ReqAck,该数据传输流程的具体工作步骤是步骤I.应用数据包App先由集中器100发起,将数据传给节点地址号Addrl,然后传给节点地址号Addr2, 以此类推,最后传给节点地址号Addrn,标志位的最高位为I时,从节点地址号Addrl到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为O时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-I是否需要回复状态,节点地址号Addrn默认就需要回复;步骤2.应用回复数据包AppAck当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号Addrn-Ι,以此类推,最后传给节点地址号Addrl,回复完成后,把前面存储的应用数据包 App删除掉;步骤3.请求数据包Request集中器100根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request ;步骤4.请求的回复数据包ReqAck当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包Request删除掉。请参阅附图3所示,进一步的,所述的单信道集中式组网算法的操作流程的轮流发送,通过集中器100的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是步骤I.轮流发送开始301集中器100设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器100根据静态路由表,轮流发送开始301, 使每个子终端都至少发送一次数据;步骤2.找出未发送的最远的一条路径302执行完轮流发送开始301模块后,则进入找出未发送的最远的一条路径302模块, 轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径302 ;步骤3.已经传输过的跳数COUNT = O 303执行完找出未发送的最远的一条路径302模块后,则进入已经传输过的跳数 COUNT = O 303模块,当已经传输过的跳数COUNT = O时,则轮流发送完成;步骤4.沿发送路径发送App 304执行完已经传输过的跳数COUNT = O 303模块后,则进入沿发送路径发送App 304 模块,在集中器100产生应用数据包App时,数据包传输的总跳数Hop的值为n,且η为0 < η < 16的整数,已经传输过的跳数COUNT的值为0,数据包发送完成后把数据包保存下来;步骤5.开始计时305执行完沿发送路径发送App 304模块后,则进入开始计时305模块,则完成开始计时;步骤6.判断“是否回复AppAck” 306执行完开始计时305模块后,则进入判断“是否回复AppAck” 306模块,如果是需回复应用回复数据包AppAck时,则进入停止计时311模块;否则,则进入判断“计时是否超时”307模块,如果计时为超时,则进入已经传输过的跳数COUNT加1308模块,否则,将反馈进入是否回复AppAck 306模块的输入端;步骤7.判断“已经传输过的跳数COUNT >2” 309执行完已经传输过的跳数COUNT加I 308模块后,则进入判断已经传输过的跳数 COUNT > 2 309模块,如果是已经传输过的跳数COUNT > 2,则进入在集中器里标记这条路径发送失败310模块,标记沿发送路径发送App 304所使用的这条路径发送失败,执行完在集中器里标记这条路径发送失败310模块后,则反馈进入找出未发送的最远的一条路径 302模块的输入端;否则,则反馈进入沿发送路径发送App 304模块的输入端;步骤8.在集中器里标记这条路径已发送312执行完停止计时311模块后,则进入在集中器里标记这条路径已发送312模块,集中器把沿发送路径发送App 304所使用的这条路径标记为已发送;步骤9.判断“是否完成所有发送”313执行完在集中器里标记这条路径已发送312模块后,则进入判断“是否完成所有
13发送” 313模块,如果是完成所有发送,则进入退出314模块,否则,则反馈进入找出未发送的最远的一条路径(302)模块的输入端;步骤10.退出314如果已完成所有发送,则进入退出314模块。请参阅附图4所示,进一步的,所述的单信道集中式组网算法的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是步骤I.接收处理开始351子终端接收数据处理开始,执行接收处理开始351模块;步骤2.取出发送地址352执行完接收处理开始351模块后,则进入取出发送地址352模块,假设地址为a,每当子终端收到数据包的时候,其处理过程为,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询;步骤3.判断“查询本地邻居表是否含有a” 353执行完取出发送地址352模块后,则进入判断“查询本地邻居表是否含有a”353 模块,如果本地邻居表是含有a,则进入更新相关邻居项的时间355模块,否则,则进入添加新邻居项a到邻居表354模块;步骤4.判断“本节点是否是接收节点”356执行完更新相关邻居项的时间355模块后,则进入判断“本节点是否是接收节点”356模块,如果本节点是接收节点,则进入已经传输过的跳数Count加I 357模块,如果本节点不是接收节点,则进入结束361模块的输入端;与此同时,执行完添加新邻居项a到邻居表354模块后,则也进入判断“本节点是否是接收节点” 356模块的输入端;步骤5.判断“已经传输过的跳数Count <数据包传输的总跳数Hop” 358执行完已经传输过的跳数Count加I 357模块后,则进入判断“已经传输过的跳数 Count <数据包传输的总跳数Hop 358”模块,如果已经传输过的跳数Count是<数据包传输的总跳数Hop,则进入转发该数据包359模块,如果已经传输过的跳数Count不是<数据包传输的总跳数Hop,则进入回复Ack 360模块;步骤6.结束361执行完回复Ack 360模块后,则进入结束361模块,具体为如果收到的是应用数据包App,就回复应用回复数据包AppAck,如果收到的是请求数据包Request,就回复请求的回复数据包ReqAck ;与此同时,执行完转发该数据包359模块后,则也进入结束361模块的输入端。下面结合附图对本发明作进一步描述请参阅附图I所示,本发明的算法依次含有以下步骤I.开始,打开所有终端,所有终端开始接收数据;2.用户配置静态路由表用户根据工程的实际环境,用一般的静态路由的方式就可以配置出静态路由。静态路由配置在集中器里。配置静态路由要求每个终端都能通过直接或者中继的方式和集中器通上信。跳数不需要最优;3.轮流发送和路由表的维护集中器根据静态路由表,让每个终端都至少发送一次数据如图3所示。它周围的能正确接收到数据的终端就发送终端的地址加入到接收终端的邻居表里。如图4所示;4.收集邻居表集中器按照静态路由表,收集网络里的每个终端的路由表;5.计算路由表根据收集到的邻居表,计算出新的路由表。新的路由表计算出来后,就可以按照新的路由表来收发数据。本算法路由初始开机时是静态路由,在集中器端由用户配置静态路由。然后由集中器开始发起,根据配置的静态路由表,遍历访问所有的每一个终端;每个终端都监听信道,记下收到的所有终端的地址,并加入邻居表。然后集中器收集每个终端的邻居表,再根据邻居表动态的确定新的路由。本算法主要包括两种流程操作流程和路由流程,如图3, 图4所示,每个流程都是由集中器发起的。在集中器刚开机或者有新加入终端的时候,根据配置的静态路由表,采用操作流程让每一个新加入的终端(刚开机时,每个子终端都是新加入的终端)都发送一下数据,邻近的子终端收到以后,把发送终端的地址加入邻居表,然后集中器再根据静态的路由表,采用路由流程获得每个终端的邻居表,最后根据每个终端的邻居表计算出动态路由表。当后面的操作流程不能有效的传输时,再重新计算路由表,最大的跳数是15跳。I.包格式包分为4 类App、AppAck、Request、ReqAck。App 和 Request 都是由集中器产生的,AppAck和ReqAck都是由子终端产生的。a) App 包由集中器发起,传给Addrl,然后传给Addr2,......,最后传给Addrn。标志位的最
高位为I时,从Addrl到Addrn都得回复状态即AppAck包;为O时,剩下的7位里指示了从Addrn-7到Addrn-I是否需要回复状态(Addrn默认需要回复,不然就没必要传到Addrn 了)。如标志位为(01100000)时表示Addrn-7、Addrn-6、Addrn需要回复状态。AppAck当终端收到App包时,并且发现需要回复状态时,就需要按照一定的规则回复 AppAck,回复完成后,把前面存储的App包删除掉b) Request当集中器需要收集各个终端的邻居表时,发送此包,除了类型字段外都和App — 样c) RequestAck当终端收到Request包,并且发现需要回复时,就需要按照一定的规则回复 RequestAck,回复完成后,把前面存储的Request包删除掉2.邻居机制每个终端里面都有维护一个邻居表。把收到的每个终端的地址加入邻居表。在图 2中,当每个终端都发送过数据后,m的邻居表如下表所示
地址更新时间
1权利要求
1.一种单信道集中式组网算法,该方法用集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间进行接入算法,其特征在于在单信道的情况下,对单信道集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的组网算法,完成一种改进型的集中式组网算法,所述单信道集中式网络设有一个集中器(100),每个集中器设有一个八位二进制的计数器,并将计算和存储都集中到集中器(100)上,其它均为子终端,有的子终端离集中器(100)近,有的子终端离集中器(100)远,每个子终端都设有监听信道和邻居机制,邻居机制设有邻居表,所述集中器(100)与各子终端之间通过有线传输进行直接通信;所述集中式组网算法主要包括两种流程操作流程和路由流程,每个流程都是由集中器(100)发起的,集中器(100)刚开机或者有新加入子终端的时候,在集中器端设有用户配置的静态路由表,集中器(100)根据配置的静态路由表,通过集中器(100)的遍历发送算法,遍历访问所有的每一个子终端,采用操作流程的轮流发送让每一个新加入的子终端轮流发送一下数据,各子终端接收数据,当邻近的子终端收到数据包时,先从数据包里取出发送地址,再把发送终端的地址加入邻居表,然后集中器(100)再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是步骤I.开始(I)打开所有子终端,所有子终端开始(I)接收数据;步骤2.配置静态路由(2)执行完开始(I)模块后,则进入配置静态路由(2)模块,完成用户配置静态路由表,用户根据工程的实际环境,用一般的静态路由的方式配置出静态路由,静态路由配置在集中器(100)里,配置静态路由要求每个子终端都能通过直接或者中继的方式和集中器(100) 进行相互通信;步骤3.轮流发送维护邻居表(3)执行完配置静态路由(2)模块后,则进入轮流发送维护邻居表(3)模块,完成轮流发送和路由表的维护,集中器(100)根据静态路由表,使每个子终端都至少发送一次数据,当一个子终端的发送终端发送一次数据时,该子终端周围的接收终端都能正确接收到数据,同时将发送终端的地址加入到接收终端的邻居表里,并在子终端里存储的邻居表里查询是否含有该发送终端的地址;步骤4.收集邻居表(4)执行完轮流发送维护邻居表(3)模块后,则进入收集邻居表(4)模块,完成收集邻居表,集中器(100)按照静态路由表,收集网络里的每个子终端的路由表;步骤5.计算新路由表(5)执行完收集邻居表(4)模块后,则进入计算新路由表(5)模块,完成计算新路由表,根据收集到的邻居表,计算出新的路由表,新的路由表计算出来后,就按照新的路由表来收发数据;步骤6.结束(6)执行完计算新路由表(5)模块后,则进入结束(6)模块,完成单信道集中式组网算法。
2.根据权利要求I所述的单信道集中式组网算法,其特征在于所述的数据包分为四类包格式应用数据包App、应用回复数据包AppAck、请求数据包Request及请求的回复数据包ReqAck,集中器(100)产生应用数据包App和请求数据包Request,子终端产生应用回复数据包AppAck及请求的回复数据包ReqAck,该数据传输流程的具体工作步骤是步骤I.应用数据包App先由集中器(100)发起,将数据传给节点地址号Addrl,然后传给节点地址号Addr2,以此类推,最后传给节点地址号Addrn,标志位的最高位为I时,从节点地址号Addrl到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为O 时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-I是否需要回复状态, 节点地址号Addrn默认就需要回复;步骤2.应用回复数据包AppAck当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号 Addrn-Ι,以此类推,最后传给节点地址号Addrl,回复完成后,把前面存储的应用数据包 App删除掉;步骤3.请求数据包Request集中器(100)根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request ;步骤4.请求的回复数据包ReqAck当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包 Request删除掉。
3.根据权利要求I所述的单信道集中式组网算法,其特征在于所述的操作流程的轮流发送,通过集中器(100)的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是步骤I.轮流发送开始(301)集中器(100)设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器(100)根据静态路由表,轮流发送开始 (301),使每个子终端都至少发送一次数据;步骤2.找出未发送的最远的一条路径(302)执行完轮流发送开始(301)模块后,则进入找出未发送的最远的一条路径(302)模块, 轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径(302);步骤 3. COUNT = O (303)执行完找出未发送的最远的一条路径(302)模块后,则进入已经传输过的跳数COUNT =0(303)模块,当已经传输过的跳数COUNT = O时,则轮流发送完成;步骤4.沿发送路径发送App (304)执行完已经传输过的跳数COUNT = 0(303)模块后,则进入沿发送路径发送App (304) 模块,在集中器(100)产生应用数据包App时,数据包传输的总跳数Hop的值为n,且η为 O < η < 16的整数,已经传输过的跳数COUNT的值为0,数据包发送完成后把数据包保存下来;步骤5.开始计时(305)执行完沿发送路径发送App (304)模块后,则进入开始计时(305)模块,则完成开始计时;步骤6.判断“是否回复AppAck” (306)执行完开始计时(305)模块后,则进入判断“是否回复AppAck” (306)模块,如果是需回复应用回复数据包AppAck时,则进入停止计时(311)模块;否则,则进入判断“计时是否超时”(307)模块,如果计时为超时,则进入已经传输过的跳数COUNT加I (308)模块,否则, 将反馈进入是否回复AppAck(306)模块的输入端;步骤 7.判断“COUNT >2” (309)执行完已经传输过的跳数COUNT加1(308)模块后,则进入判断已经传输过的跳数 COUNT > 2 (309)模块,如果是已经传输过的跳数COUNT > 2,则进入在集中器里标记这条路径发送失败(310)模块,标记沿发送路径发送App (304)所使用的这条路径发送失败,执行完在集中器里标记这条路径发送失败(310)模块后,则反馈进入找出未发送的最远的一条路径(302)模块的输入端;否则,则反馈进入沿发送路径发送App (304)模块的输入端; 步骤8.在集中器里标记这条路径已发送(312)执行完停止计时(311)模块后,则进入在集中器里标记这条路径已发送(312)模块,集中器把沿发送路径发送App (304)所使用的这条路径标记为已发送;步骤9.判断“是否完成所有发送”(313)执行完在集中器里标记这条路径已发送(312)模块后,则进入判断“是否完成所有发送”(313)模块,如果是完成所有发送,则进入退出(314)模块,否则,则反馈进入找出未发送的最远的一条路径(302)模块的输入端;步骤10.退出(314)如果已完成所有发送,则进入退出(314)模块。
4.根据权利要求I所述的单信道集中式组网算法,其特征在于所述的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是步骤L接收处理开始(351)子终端接收数据处理开始,执行接收处理开始(351)模块;步骤2.取出发送地址(352)执行完接收处理开始(351)模块后,则进入取出发送地址(352)模块,假设地址为a,每当子终端收到数据包的时候,其处理过程为,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询;步骤3.判断“查询本地邻居表是否含有a” (353)执行完取出发送地址(352)模块后,则进入判断“查询本地邻居表是否含有a” (353) 模块,如果本地邻居表是含有a,则进入更新相关邻居项的时间(355)模块,否则,则进入添加新邻居项a到邻居表(354)模块;步骤4.判断“本节点是否是接收节点”(356)执行完更新相关邻居项的时间(355)模块后,则进入判断“本节点是否是接收节点”(356)模块,如果本节点是接收节点,则进入已经传输过的跳数Count加1 (357)模块, 如果本节点不是接收节点,则进入结束(361)模块的输入端;与此同时,执行完添加新邻居项a到邻居表(354)模块后,则也进入判断“本节点是否是接收节点”(356)模块的输入端;步骤 5·判断 “Count < Hop” (358)执行完已经传输过的跳数Count加1 (357)模块后,则进入判断“已经传输过的跳数 Count <数据包传输的总跳数Hop (358) ”模块,如果已经传输过的跳数Count是<数据包传输的总跳数Hop,则进入转发该数据包(359)模块,如果已经传输过的跳数Count不是<数据包传输的总跳数Hop,则进入回复Ack (360)模块;步骤6.结束(361)执行完回复Ack(360)模块后,则进入结束(361)模块,具体为如果收到的是应用数据包App,就回复应用回复数据包AppAck,如果收到的是请求数据包Request,就回复请求的回复数据包ReqAck ;与此同时,执行完转发该数据包(359)模块后,则也进入结束(361)模块的输入端。
全文摘要
一种涉及在单信道的情况下,集中式网络组网算法的信息技术应用领域,尤指一种应用于智能家居,监控系统等集中式网络的单信道集中式组网算法。本发明通过集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的遍历发送算法及各子终端接收数据的处理方法,完成一种改进型的集中式组网算法;主要解决集中器的发送及各子终端接收数据的处理过程等有关技术问题。本发明的优点是将复杂的计算和大量的存储都集中到集中器上,每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测,发送数据不会产生冲突同时也避免了阻塞的发生,具有降低成本,提高效率等优点。
文档编号H04W40/24GK102595394SQ20121008558
公开日2012年7月18日 申请日期2012年3月27日 优先权日2012年3月27日
发明者王佩霖 申请人:翊远电子科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1