CN102595394A - 单信道集中式组网算法 - Google Patents
单信道集中式组网算法 Download PDFInfo
- Publication number
- CN102595394A CN102595394A CN2012100855867A CN201210085586A CN102595394A CN 102595394 A CN102595394 A CN 102595394A CN 2012100855867 A CN2012100855867 A CN 2012100855867A CN 201210085586 A CN201210085586 A CN 201210085586A CN 102595394 A CN102595394 A CN 102595394A
- Authority
- CN
- China
- Prior art keywords
- module
- terminal
- concentrator
- sub
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种涉及在单信道的情况下,集中式网络组网算法的信息技术应用领域,尤指一种应用于智能家居,监控系统等集中式网络的单信道集中式组网算法。本发明通过集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的遍历发送算法及各子终端接收数据的处理方法,完成一种改进型的集中式组网算法;主要解决集中器的发送及各子终端接收数据的处理过程等有关技术问题。本发明的优点是:将复杂的计算和大量的存储都集中到集中器上,每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测,发送数据不会产生冲突同时也避免了阻塞的发生,具有降低成本,提高效率等优点。
Description
技术领域
本发明涉及在单信道的情况下,集中式网络组网算法的信息技术应用领域,尤指一种应用于智能家居,监控系统等集中式网络的一种新的组网方式,更具体地的说,涉及单信道集中式网络的路由和媒体接入算法的实现。
背景技术
请参阅附图2所示,现有的集中式网络只有一个集中器100,其它均为子终端(或叫终端)a、b、c、d……,有的子终端离集中器比较近,有的离得比较远,近的子终端可以直接和集中器通信,而离得远的子终端由于通信信号的衰减和受到干扰的原因,不能直接和集中器通信。如集中器100不能直接和子终端n通信,具体为:集中器100先把数据传给子终端m,子终端m再把数据传给子终端n,子终端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方式能很好的避免冲突发生,但对时钟精度和时间同步要求比价高,增加了硬件的成本,地址容量有限;ALOHA等算法,不能完全避免冲突发生,当相邻终端很多的时候信道很容易被阻塞,在单信道条件下,暴露终端和隐藏终端问题根本无法得到解决,并且还需要冲突检测的硬件。集中式网络的特点是:在应用层,终端之间不需要传递数据,只有集中器和终端之间的数据传递,所以在集中式网络里,不需要像传统的路由那样,两相邻的终端之间还需要交换路由信息,并且每个终端都需要计算和维护和存储路由表。所以在单信道集中式网络里采用传统的组网技术,对终端的要求比较高,由于终端的个数很多,从而增加了整个系统的成本。
发明内容
为了克服上述不足之处,本发明的主要目的旨在提供改进型的一种基于低速集中式网络的组网算法,将复杂的计算和大量的存储都集中到集中器上,且每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测;并且在任何一个时段,都只有一个子终端在发送数据,从而不会产生冲突,同时也避免了阻塞发生的一种新的单信道集中式组网算法。
本发明要解决的技术问题是:要解决集中式组网算法的整体工作原理和工作步骤问题;要解决集中器的遍历发送算法及各子终端接收数据的处理过程问题;要解决数据传输流程中数据包的包格式种类等有关技术问题。
本发明解决其技术问题所采用的技术方案是:单信道集中式组网算法用集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间进行接入算法,在单信道的情况下,对单信道集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的组网算法,完成一种改进型的集中式组网算法,所述单信道集中式网络设有一个集中器,每个集中器设有一个八位二进制的计数器,并将计算和存储都集中到集中器上,其它均为子终端,有的子终端离集中器近,有的子终端离集中器远,每个子终端都设有监听信道和邻居机制,邻居机制设有邻居表,所述集中器与各子终端之间通过有线传输进行直接通信;
所述集中式组网算法主要包括两种流程:操作流程和路由流程,每个流程都是由集中器发起的,集中器刚开机或者有新加入子终端的时候,在集中器端设有用户配置的静态路由表,集中器根据配置的静态路由表,通过集中器的遍历发送算法,遍历访问所有的每一个子终端,采用操作流程的轮流发送让每一个新加入的子终端轮流发送一下数据,各子终端接收数据,当邻近的子终端收到数据包时,先从数据包里取出发送地址,再把发送终端的地址加入邻居表,然后集中器再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是:
步骤1.开始
打开所有子终端,所有子终端开始接收数据;
步骤2.配置静态路由
执行完开始模块后,则进入配置静态路由模块,完成用户配置静态路由表,用户根据工程的实际环境,用一般的静态路由的方式配置出静态路由,静态路由配置在集中器里,配置静态路由要求每个子终端都能通过直接或者中继的方式和集中器进行相互通信;
步骤3.轮流发送维护邻居表
执行完配置静态路由模块后,则进入轮流发送维护邻居表模块,完成轮流发送和路由表的维护,集中器根据静态路由表,使每个子终端都至少发送一次数据,当一个子终端的发送终端发送一次数据时,该子终端周围的接收终端都能正确接收到数据,同时将发送终端的地址加入到接收终端的邻居表里,并在子终端里存储的邻居表里查询是否含有该发送终端的地址;
步骤4.收集邻居表
执行完轮流发送维护邻居表模块后,则进入收集邻居表模块,完成收集邻居表,集中器按照静态路由表,收集网络里的每个子终端的路由表;
步骤5.计算新路由表
执行完收集邻居表模块后,则进入计算新路由表模块,完成计算新路由表,根据收集到的邻居表,计算出新的路由表,新的路由表计算出来后,就按照新的路由表来收发数据;
步骤6.结束
执行完计算新路由表模块后,则进入结束模块,完成单信道集中式组网算法。
进一步的,所述的单信道集中式组网算法的数据包分为四类包格式:应用数据包App、应用回复数据包AppAck、请求数据包Request及请求的回复数据包ReqAck,集中器(100)产生应用数据包App和请求数据包Request,子终端产生应用回复数据包AppAck及请求的回复数据包ReqAck,该数据传输流程的具体工作步骤是:
步骤1.应用数据包App
先由集中器发起,将数据传给节点地址号Addr1,然后传给节点地址号Addr2,以此类推,最后传给节点地址号Addrn,标志位的最高位为1时,从节点地址号Addr1到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为0时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-1是否需要回复状态,节点地址号Addrn默认就需要回复;
步骤2.应用回复数据包AppAck
当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号Addrn-1,以此类推,最后传给节点地址号Addr1,回复完成后,把前面存储的应用数据包App删除掉;
步骤3.请求数据包Request
集中器根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request;
步骤4.请求的回复数据包ReqAck
当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包Request删除掉。
进一步的,所述的单信道集中式组网算法的操作流程的轮流发送,通过集中器的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是:
步骤1.轮流发送开始
集中器设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器根据静态路由表,轮流发送开始,使每个子终端都至少发送一次数据;
步骤2.找出未发送的最远的一条路径
执行完轮流发送开始模块后,则进入找出未发送的最远的一条路径模块,轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径;
步骤3.COUNT=0
执行完找出未发送的最远的一条路径模块后,则进入已经传输过的跳数COUNT=0模块,当已经传输过的跳数COUNT=0时,则轮流发送完成;
步骤4.沿发送路径发送App
执行完已经传输过的跳数COUNT=0模块后,则进入沿发送路径发送App模块,在集中器产生应用数据包App时,数据包传输的总跳数Hop的值为n,且n为:0<n<16的整数,已经传输过的跳数COUNT的值为0,数据包发送完成后把数据包保存下来;
步骤5.开始计时
执行完沿发送路径发送App模块后,则进入开始计时模块,则完成开始计时;
步骤6.判断“是否回复AppAck”
执行完开始计时模块后,则进入判断“是否回复AppAck”模块,如果是需回复应用回复数据包AppAck时,则进入停止计时模块;否则,则进入判断“计时是否超时”模块,如果计时为超时,则进入已经传输过的跳数COUNT加1模块,否则,将反馈进入是否回复AppAck模块的输入端;
步骤7.判断“COUNT>2”
执行完已经传输过的跳数COUNT加1模块后,则进入判断已经传输过的跳数COUNT>2模块,如果是已经传输过的跳数COUNT>2,则进入在集中器里标记这条路径发送失败模块,标记沿发送路径发送App所使用的这条路径发送失败,执行完在集中器里标记这条路径发送失败模块后,则反馈进入找出未发送的最远的一条路径模块的输入端;否则,则反馈进入沿发送路径发送App模块的输入端;
步骤8.在集中器里标记这条路径已发送
执行完停止计时模块后,则进入在集中器里标记这条路径已发送模块,集中器把沿发送路径发送App所使用的这条路径标记为已发送;
步骤9.判断“是否完成所有发送”
执行完在集中器里标记这条路径已发送模块后,则进入判断“是否完成所有发送”模块,如果是完成所有发送,则进入退出模块,否则,则反馈进入找出未发送的最远的一条路径模块的输入端;
步骤10.退出
如果已完成所有发送,则进入退出模块。
进一步的,所述的单信道集中式组网算法的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是:
步骤1.接收处理开始
子终端接收数据处理开始,执行接收处理开始模块;
步骤2.取出发送地址
执行完接收处理开始模块后,则进入取出发送地址模块,假设地址为a,每当子终端收到数据包的时候,其处理过程为,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询;
步骤3.判断“查询本地邻居表是否含有a”
执行完取出发送地址模块后,则进入判断“查询本地邻居表是否含有a”模块,如果本地邻居表是含有a,则进入更新相关邻居项的时间模块,否则,则进入添加新邻居项a到邻居表模块;
步骤4.判断“本节点是否是接收节点”
执行完更新相关邻居项的时间模块后,则进入判断“本节点是否是接收节点”模块,如果本节点是接收节点,则进入已经传输过的跳数Count加1模块,如果本节点不是接收节点,则进入结束模块的输入端;
与此同时,执行完添加新邻居项a到邻居表模块后,则也进入判断“本节点是否是接收节点”模块的输入端;
步骤5.判断“Count<Hop”
执行完已经传输过的跳数Count加1模块后,则进入判断“已经传输过的跳数Count<数据包传输的总跳数Hop”模块,如果已经传输过的跳数Count是<数据包传输的总跳数Hop,则进入转发该数据包模块,如果已经传输过的跳数Count不是<数据包传输的总跳数Hop,则进入回复Ack模块;
步骤6.结束
执行完回复Ack模块后,则进入结束模块,具体为:如果收到的是应用数据包App,就回复应用回复数据包AppAck,如果收到的是请求数据包Request,就回复请求的回复数据包ReqAck;
与此同时,执行完转发该数据包模块后,则也进入结束模块的输入端。
本发明的有益效果是:单信道集中式组网算法将复杂的计算和大量的存储都集中到集中器上,且每个子终端不再需要高精度的定时器,不需要时间同步,不需要冲突检测;特别是在,子终端很多的网络里,大大的降低了系统的成本;并且在任何一个时段,都只有一个终端在发送数据从而不会产生冲突同时也避免了阻塞的发生,具有降低成本,提高效率等优点。
附图说明
下面结合附图和实施例对本发明进一步说明。
附图1是本发明集中式组网算法流程方框图;
附图2是本发明集中式网络的拓扑示意图;
附图3是本发明集中器的遍历发送算法流程方框图;
附图4是本发明各子终端接收数据的处理流程方框图;
附图5是本发明数据传输流程示意图;
附图6是本发明数据包为App包格式示意图;
附图7是本发明数据包为AppAck包格式示意图;
附图8是本发明数据包为Request包格式示意图;
附图9是本发明数据包为ReqAck包格式示意图;
附图中标号说明:
1-开始;
2-配置静态路由;
3-轮流发送维护邻居表;
4-收集邻居表;
5-计算新路由表;
6-结束;
100-集中器;
301-轮流发送开始;
302-找出未发送的最远的一条路径;
303-COUNT=0;
304-沿发送路径发送App;
305-开始计时;
306-是否回复AppAck;
307-计时是否超时;
308-COUNT加1;
309-COUNT>2;
310-在集中器里标记这条路径发送失败;
311-停止计时;
312-在集中器里标记这条路径已发送;
313-是否完成所有发送;
314-退出;
351-接收处理开始;
352-取出发送地址;
353-查询本地邻居表是否含有a;
354-添加新邻居项a到邻居表;
355-更新相关邻居项的时间;
356-本节点是否是接收节点;
357-Count加1;
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再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是:
步骤1.开始1
打开所有子终端,所有子终端开始1接收数据;
步骤2.配置静态路由2
执行完开始1模块后,则进入配置静态路由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,该数据传输流程的具体工作步骤是:
步骤1.应用数据包App
先由集中器100发起,将数据传给节点地址号Addr1,然后传给节点地址号Addr2,以此类推,最后传给节点地址号Addrn,标志位的最高位为1时,从节点地址号Addr1到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为0时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-1是否需要回复状态,节点地址号Addrn默认就需要回复;
步骤2.应用回复数据包AppAck
当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号Addrn-1,以此类推,最后传给节点地址号Addr1,回复完成后,把前面存储的应用数据包App删除掉;
步骤3.请求数据包Request
集中器100根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request;
步骤4.请求的回复数据包ReqAck
当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包Request删除掉。
请参阅附图3所示,进一步的,所述的单信道集中式组网算法的操作流程的轮流发送,通过集中器100的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是:
步骤1.轮流发送开始301
集中器100设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器100根据静态路由表,轮流发送开始301,使每个子终端都至少发送一次数据;
步骤2.找出未发送的最远的一条路径302
执行完轮流发送开始301模块后,则进入找出未发送的最远的一条路径302模块,轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径302;
步骤3.已经传输过的跳数COUNT=0 303
执行完找出未发送的最远的一条路径302模块后,则进入已经传输过的跳数COUNT=0 303模块,当已经传输过的跳数COUNT=0时,则轮流发送完成;
步骤4.沿发送路径发送App 304
执行完已经传输过的跳数COUNT=0 303模块后,则进入沿发送路径发送App 304模块,在集中器100产生应用数据包App时,数据包传输的总跳数Hop的值为n,且n为:0<n<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加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所示,进一步的,所述的单信道集中式组网算法的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是:
步骤1.接收处理开始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模块的输入端。
下面结合附图对本发明作进一步描述:
请参阅附图1所示,本发明的算法依次含有以下步骤:
1.开始,打开所有终端,所有终端开始接收数据;
2.用户配置静态路由表:用户根据工程的实际环境,用一般的静态路由的方式就可以配置出静态路由。静态路由配置在集中器里。配置静态路由要求每个终端都能通过直接或者中继的方式和集中器通上信。跳数不需要最优;
3.轮流发送和路由表的维护:集中器根据静态路由表,让每个终端都至少发送一次数据如图3所示。它周围的能正确接收到数据的终端就发送终端的地址加入到接收终端的邻居表里。如图4所示;
4.收集邻居表:集中器按照静态路由表,收集网络里的每个终端的路由表;
5.计算路由表:根据收集到的邻居表,计算出新的路由表。
新的路由表计算出来后,就可以按照新的路由表来收发数据。
本算法路由初始开机时是静态路由,在集中器端由用户配置静态路由。然后由集中器开始发起,根据配置的静态路由表,遍历访问所有的每一个终端;每个终端都监听信道,记下收到的所有终端的地址,并加入邻居表。然后集中器收集每个终端的邻居表,再根据邻居表动态的确定新的路由。本算法主要包括两种流程:操作流程和路由流程,如图3,图4所示,每个流程都是由集中器发起的。
在集中器刚开机或者有新加入终端的时候,根据配置的静态路由表,采用操作流程让每一个新加入的终端(刚开机时,每个子终端都是新加入的终端)都发送一下数据,邻近的子终端收到以后,把发送终端的地址加入邻居表,然后集中器再根据静态的路由表,采用路由流程获得每个终端的邻居表,最后根据每个终端的邻居表计算出动态路由表。当后面的操作流程不能有效的传输时,再重新计算路由表,最大的跳数是15跳。
1.包格式
包分为4类:App、AppAck、Request、ReqAck。App和Request都是由集中器产生的,AppAck和ReqAck都是由子终端产生的。
a)App包
由集中器发起,传给Addr1,然后传给Addr2,……,最后传给Addrn。标志位的最高位为1时,从Addr1到Addrn都得回复状态即AppAck包;为0时,剩下的7位里指示了从Addrn-7到Addrn-1是否需要回复状态(Addrn默认需要回复,不然就没必要传到Addrn了)。如标志位为(01100000)时表示Addrn-7、Addrn-6、Addrn需要回复状态。AppAck
当终端收到App包时,并且发现需要回复状态时,就需要按照一定的规则回复AppAck,回复完成后,把前面存储的App包删除掉
b)Request
当集中器需要收集各个终端的邻居表时,发送此包,除了类型字段外都和App一样
c)RequestAck
当终端收到Request包,并且发现需要回复时,就需要按照一定的规则回复RequestAck,回复完成后,把前面存储的Request包删除掉
2.邻居机制
每个终端里面都有维护一个邻居表。把收到的每个终端的地址加入邻居表。在图2中,当每个终端都发送过数据后,m的邻居表如下表所示:
地址 | 更新时间 |
10 | 1s |
l | 22s |
n | 30s |
o | 31s |
p | 10s |
每当终端收到数据包的时侯,其处理过程如图4所示,先从收到的数据包里取出发送端地址352,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址353,如果能查到,就更新该项的“更新时间”355;若查不到,就添加一个邻居项到邻居表里。就这样,经过一段时间后,就能收集到所有邻居的地址,从而维护好了邻居表。
3.流程
集中器里有一个八位二进制的计数器,每发送一个包就自动加一,并把它作为数据包的ID字节传输出去,ID的作用是标示每一次操作。
操作流程
在集中器产生App包的时候Hop的值为n(0<n<16,n为整数),Count的值为0,数据包发送完成后把数据包保存下来。
如图4所示,当终端收到Count为x的App时检查Addrn-x是否和本终端地址相等356,若相等则把Count值加一357,若Count<Hop,则把数据包保留下来,并把它发送出去359;若Count=Hop,则回复一个ID值一样的AppAck包,里面加入了的状态(如电表读数等),Count=0;其它字段和收到的App包一样360。其它终端收到后AppAck,如果存储的App包的ID值和收到的AppAck的ID值一样且AppAck里的Count<Hop就进行如下操作:
a.存储的App包里的标志位字段要求本终端回复状态,就把状态加到后面。
b.Count值加一,然后转发数据包,最后把存储的App包删除掉。
如图5所示,假设在静态路由表里配置的是:集中器100→m→l→k→j。则,集中器100先把App发给m,m再转给l,l转给k,k最后转给j,j收到后回复一个AppAck,k收到后转给l,再转给m最后传给集中器100。
路由流程
同操作流程差不多。不同的是终端回复的内容不一样。回复的内容的第一个字节表示邻居的个数num,紧跟着是num个邻居地址。
操作流程的目的是要每个终端都回复状态到集中器,这样每个终端都发送了数据,相邻的终端就都能监听到邻近的所有终端的信息,从而每个终端都产生好了邻居表。路由流程,也必须收集到每个终端的邻居表。并且,集中器自己也要维护一个邻居表。
4.动态路由
路由表的格式
地址 | 下一跳地址 | 跳数 |
a | 100 | 1 |
b | 100 | 1 |
e | 100 | 1 |
i | e | 2 |
j | i | 3 |
如上表所示,表里的地址100表示集中器,下一跳地址指的是终端传向集中的方向,如在上表中,j->i->e->集中器100。
计算过程
先把所有路由的跳数设为255(表示不可达),然后先把邻居表里的每个终端所对应的路由的下一跳地址设为集中器的地址,跳数都设为1;然后把刚才设置为1跳的每个终端n1的邻居表里的每个跳数大于2的终端的下一跳地址设为n1,跳数设置为2跳;再把刚才所有跳数设置为2的终端的邻居表里的每个跳数大于3的终端的下一跳地址设为,对应的2跳的地址,跳数设置为3跳,……不断继续下去,到设置完所有的终端,路由表就生成了。
路由表的维护
当j的路由失效后,集中器在存储的j的邻居表里,重新查找一个新的下一跳地址,跳数小的优先。
Claims (4)
1.一种单信道集中式组网算法,该方法用集中器和子终端之间的通信技术,对集中式网络的路由和媒体之间进行接入算法,其特征在于:在单信道的情况下,对单信道集中式网络的路由和媒体之间接入算法进行改进,通过基于低速集中式网络的组网算法,完成一种改进型的集中式组网算法,所述单信道集中式网络设有一个集中器(100),每个集中器设有一个八位二进制的计数器,并将计算和存储都集中到集中器(100)上,其它均为子终端,有的子终端离集中器(100)近,有的子终端离集中器(100)远,每个子终端都设有监听信道和邻居机制,邻居机制设有邻居表,所述集中器(100)与各子终端之间通过有线传输进行直接通信;
所述集中式组网算法主要包括两种流程:操作流程和路由流程,每个流程都是由集中器(100)发起的,集中器(100)刚开机或者有新加入子终端的时候,在集中器端设有用户配置的静态路由表,集中器(100)根据配置的静态路由表,通过集中器(100)的遍历发送算法,遍历访问所有的每一个子终端,采用操作流程的轮流发送让每一个新加入的子终端轮流发送一下数据,各子终端接收数据,当邻近的子终端收到数据包时,先从数据包里取出发送地址,再把发送终端的地址加入邻居表,然后集中器(100)再根据静态的路由表,采用路由流程获得每个子终端的邻居表,并收集每个子终端的邻居表,最后根据每个子终端的邻居表计算出动态路由表,完成确定新的路由,具体工作步骤是:
步骤1.开始(1)
打开所有子终端,所有子终端开始(1)接收数据;
步骤2.配置静态路由(2)
执行完开始(1)模块后,则进入配置静态路由(2)模块,完成用户配置静态路由表,用户根据工程的实际环境,用一般的静态路由的方式配置出静态路由,静态路由配置在集中器(100)里,配置静态路由要求每个子终端都能通过直接或者中继的方式和集中器(100)进行相互通信;
步骤3.轮流发送维护邻居表(3)
执行完配置静态路由(2)模块后,则进入轮流发送维护邻居表(3)模块,完成轮流发送和路由表的维护,集中器(100)根据静态路由表,使每个子终端都至少发送一次数据,当一个子终端的发送终端发送一次数据时,该子终端周围的接收终端都能正确接收到数据,同时将发送终端的地址加入到接收终端的邻居表里,并在子终端里存储的邻居表里查询是否含有该发送终端的地址;
步骤4.收集邻居表(4)
执行完轮流发送维护邻居表(3)模块后,则进入收集邻居表(4)模块,完成收集邻居表,集中器(100)按照静态路由表,收集网络里的每个子终端的路由表;
步骤5.计算新路由表(5)
执行完收集邻居表(4)模块后,则进入计算新路由表(5)模块,完成计算新路由表,根据收集到的邻居表,计算出新的路由表,新的路由表计算出来后,就按照新的路由表来收发数据;
步骤6.结束(6)
执行完计算新路由表(5)模块后,则进入结束(6)模块,完成单信道集中式组网算法。
2.根据权利要求1所述的单信道集中式组网算法,其特征在于:所述的数据包分为四类包格式:应用数据包App、应用回复数据包AppAck、请求数据包Request及请求的回复数据包ReqAck,集中器(100)产生应用数据包App和请求数据包Request,子终端产生应用回复数据包AppAck及请求的回复数据包ReqAck,该数据传输流程的具体工作步骤是:
步骤1.应用数据包App
先由集中器(100)发起,将数据传给节点地址号Addr1,然后传给节点地址号Addr2,以此类推,最后传给节点地址号Addrn,标志位的最高位为1时,从节点地址号Addr1到节点地址号Addrn都需要得到回复状态,并用应用回复数据包AppAck实现;标志位的最高位为0时,剩下的7位里指示了从节点地址号Addrn-7到节点地址号Addrn-1是否需要回复状态,节点地址号Addrn默认就需要回复;
步骤2.应用回复数据包AppAck
当子终端收到应用数据包App时,并且发现需要回复状态时,就需要按照一定的规则回复,通过应用回复数据包AppAck实现,将数据从节点地址号Addrn传给节点地址号Addrn-1,以此类推,最后传给节点地址号Addr1,回复完成后,把前面存储的应用数据包App删除掉;
步骤3.请求数据包Request
集中器(100)根据静态的路由表,采用路由流程获得每个子终端的邻居表,当集中器需要收集各个子终端的邻居表时,就发送请求数据包Request;
步骤4.请求的回复数据包ReqAck
当子终端接收到请求数据包Request时,并且发现需要回复时,就需要按照一定的规则回复,通过请求的回复数据包RequestAck实现,回复完成后,把前面存储的请求数据包Request删除掉。
3.根据权利要求1所述的单信道集中式组网算法,其特征在于:所述的操作流程的轮流发送,通过集中器(100)的遍历发送算法流程,实现集中器的遍历发送运算,该遍历发送算法的具体工作步骤是:
步骤1.轮流发送开始(301)
集中器(100)设有一个八位二进制的计数器,每发送一个数据包就自动加1,并把它作为数据包的包标识号ID字节传输出去,集中器(100)根据静态路由表,轮流发送开始(301),使每个子终端都至少发送一次数据;
步骤2.找出未发送的最远的一条路径(302)
执行完轮流发送开始(301)模块后,则进入找出未发送的最远的一条路径(302)模块,轮流发送使每个子终端都至少发送一次数据,并找出未发送的最远的一条路径(302);
步骤3.COUNT=0(303)
执行完找出未发送的最远的一条路径(302)模块后,则进入已经传输过的跳数COUNT=0(303)模块,当已经传输过的跳数COUNT=0时,则轮流发送完成;
步骤4.沿发送路径发送App(304)
执行完已经传输过的跳数COUNT=0(303)模块后,则进入沿发送路径发送App(304)模块,在集中器(100)产生应用数据包App时,数据包传输的总跳数Hop的值为n,且n为:0<n<16的整数,已经传输过的跳数COUNT的值为0,数据包发送完成后把数据包保存下来;
步骤5.开始计时(305)
执行完沿发送路径发送App(304)模块后,则进入开始计时(305)模块,则完成开始计时;
步骤6.判断“是否回复AppAck”(306)
执行完开始计时(305)模块后,则进入判断“是否回复AppAck”(306)模块,如果是需回复应用回复数据包AppAck时,则进入停止计时(311)模块;否则,则进入判断“计时是否超时”(307)模块,如果计时为超时,则进入已经传输过的跳数COUNT加1(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.根据权利要求1所述的单信道集中式组网算法,其特征在于:所述的子终端接收数据的处理,先从收到的数据包里取出发送端地址,然后在本终端里存储的邻居表里查询,看是否含有该发送端的地址,如果能查到,就更新该项的“更新时间”;若查不到,就添加一个邻居项到邻居表里,该子终端接收数据处理的具体工作步骤是:
步骤1.接收处理开始(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)模块的输入端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210085586.7A CN102595394B (zh) | 2012-03-27 | 2012-03-27 | 单信道集中式组网方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210085586.7A CN102595394B (zh) | 2012-03-27 | 2012-03-27 | 单信道集中式组网方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102595394A true CN102595394A (zh) | 2012-07-18 |
CN102595394B CN102595394B (zh) | 2014-09-03 |
Family
ID=46483506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210085586.7A Expired - Fee Related CN102595394B (zh) | 2012-03-27 | 2012-03-27 | 单信道集中式组网方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102595394B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101370277A (zh) * | 2007-08-17 | 2009-02-18 | 中兴通讯股份有限公司 | 邻区列表更新方法 |
CN101483665A (zh) * | 2008-12-19 | 2009-07-15 | 上海城市水资源开发利用国家工程中心有限公司 | 一种用无线抄表终端网络传输数据的方法 |
EP2198567A1 (en) * | 2007-08-28 | 2010-06-23 | Tttech Computertechnik AG | Method for switching from a distributed principle to a master-slave principle in a network |
-
2012
- 2012-03-27 CN CN201210085586.7A patent/CN102595394B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101370277A (zh) * | 2007-08-17 | 2009-02-18 | 中兴通讯股份有限公司 | 邻区列表更新方法 |
EP2198567A1 (en) * | 2007-08-28 | 2010-06-23 | Tttech Computertechnik AG | Method for switching from a distributed principle to a master-slave principle in a network |
CN101483665A (zh) * | 2008-12-19 | 2009-07-15 | 上海城市水资源开发利用国家工程中心有限公司 | 一种用无线抄表终端网络传输数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102595394B (zh) | 2014-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8957784B2 (en) | Advanced metering infrastructure system for guaranteeing reliable transmission of meter data and advanced metering method using the same | |
CN108401041B (zh) | 一种面向电力信息采集系统的双模异构网络组网通信方法 | |
CN101751761B (zh) | 一种网络自动路由的无线抄表方法 | |
CN102761941B (zh) | 一种利用超低功耗无线智能传感器网络协议传输的方法 | |
CN103238298A (zh) | 用于电力线通信的路由协议 | |
CN106875662A (zh) | 一种电能量数据采集方法及装置 | |
CN102271100A (zh) | EtherCAT工业以太网与无线Zigbee间的网关装置及其协议转换方法 | |
US20130170429A1 (en) | Radio communication device, radio communication system, and radio communication method | |
CN102223734A (zh) | 无线通信网络及其通信方法 | |
CN107040878A (zh) | 一种多链型无线传感器网络的无分层通信方法 | |
CN102695256B (zh) | 一种用于无线传感器网络的并行传输方法及其系统 | |
CN105246137B (zh) | 一种微功率无线网络数据传输方法及系统 | |
CN102752227A (zh) | 一种电力用户用电信息采集系统的组网方法、站点和系统 | |
CN203219503U (zh) | 无线传感器网络系统 | |
CN103098527A (zh) | 无线通信装置、无线通信系统以及无线通信方法 | |
CN104754757A (zh) | 一种适用于wia-pa网络的信道和时隙调度方法 | |
EP3891934B1 (en) | Reconstructing a personal area network or system after a failure in the network or system | |
CN107018549A (zh) | 用于变电站的无线测温传感器网络及其组网工作方法 | |
Choi et al. | SPEED-MAC: Speedy and energy efficient data delivery MAC protocol for real-time sensor network applications | |
CN104483936A (zh) | 一种无线数据接入系统的无线网络信息收集平台 | |
CN103096441B (zh) | 适用数据采集的低速率无线传感网络的低功耗的通信方法 | |
CN102612123B (zh) | 无线光纤传感器网络分层嵌套数据采集和传输方法 | |
CN112803970A (zh) | 一种全网电力线宽带载波通信系统监测系统及方法 | |
CN102595394A (zh) | 单信道集中式组网算法 | |
CN102831762A (zh) | 一种基于ad hoc多跳网络的无线远程抄表系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140903 Termination date: 20210327 |