发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于物联网的实时监测系统的实现方法。
技术方案:本发明公开了一种基于物联网的实时监测系统的实现方法,所述物联网包括一个控制器,两个以上的接入节点和两个以上的节点;所述物联网覆盖的区域为一个长方形,该长方形由横坐标区间[x1,x2]和纵坐标区间[y1,y2]定义,其中,x2>x1且y2>y1;该区域一般按照地域划分,例如一个花园或者一个小区,横坐标区间和纵坐标区间按照该地域的实际坐标来划分,一般情况下,区域越大,通信平均跳数越多,通信延迟越大,区域越小,通信平均跳数越小,通信延迟也越小。所述控制器位于该长方形的两条对角线的交点,其坐标为((x1+x2)/2,(y1+y2)/2);
所述物联网覆盖的长方形区域划分为M个相等的小长方形,M为大于1的正整数,一个小长方形所覆盖的区域作为一个子网,一个子网内只包含一个接入节点,该接入节点位于子网两条对角线的交点;在第m个子网由横坐标区间[x3,x4]和纵坐标区间[y3,y4]定义的条件下,其中,x4>x3且y4>y3,1≤m≤M,则该子网的接入节点的坐标为((x3+x4)/2,(y3+y4)/2);M设置值为2-100,M值越大,通信平均跳数越多,通信延迟越大,M值越小,通信平均跳数越小,通信延迟也越小;
一个接入节点使用两种通信半径R1和R2进行通信,接入节点采用通信半径R1与节点进行通信,
接入节点采用通信半径R2与其他接入节点或者控制器进行通信;在一个子网中,所有节点与接入节点一跳可达;控制器的通信半径为R2,控制器使用通信半径R2与接入节点进行通信;节点的通信半径为R1,节点使用通信半径R1与接入节点进行通信;通信半径R1取值范围为50m-100m,通信半径R2的取值范围为75m-150m;
每个节点、控制器以及接入节点具有网络唯一性的坐标;
物联网中传输的数据由名称和数据坐标标识;
物联网中传输的消息由消息类型标识,对应关系如下表所示:
控制器保存一个接入节点表,一个接入节点表项包含坐标域;
控制器通过电子地图获取每个接入节点的坐标,对于获取的每个接入节点的坐标,该控制器创建一个接入节点表项,该接入节点表项的坐标域值等于该接入节点的坐标;电子地图预先设置,电子地图标记每个接入节点的坐标值;
从控制器到一个接入节点的路由路径由坐标集合标识,该坐标集合由该路由路径所包含的所有接入节点的坐标构成;
控制器C1通过下述过程计算自己到达接入节点AP1的路由路径的坐标集合:
步骤101:开始;
步骤102:控制器C1设置一个坐标集合变量cs1,变量cs1的初始值为空;控制器C1选择一个接入节点表项T1,该接入节点表项T1的坐标等于接入节点AP1的坐标;如果控制器C1的坐标与接入节点表项T1的坐标之间的距离不大于传输半径R2,则执行步骤106,否则执行步骤103;
步骤103:控制器C1选择一个接入节点表项T2,该接入节点表项T2的坐标与控制器C1的坐标之间的距离不大于传输半径R2,且接入节点表项T2的坐标与接入节点表项T1的坐标之间的距离最小,控制器C1将接入节点表项T2的坐标加入到变量cs1中并作为最后一个元素;
步骤104:控制器C1选择一个接入节点表项T3,该接入节点表项T3的坐标等于变量cs1的最后一个元素;如果接入节点表项T3的坐标与接入节点T1的坐标之间的距离不大于传输半径R2,则执行步骤106,否则执行步骤105;
步骤105:控制器C1选择一个接入节点表项T4,该接入节点表项T4的坐标与接入节点表项T3的坐标之间的距离不大于传输半径R2,且接入节点表项T4的坐标与接入节点表项T1的坐标之间的距离最小,将接入节点表项T4的坐标加入到变量cs1中并作为最后一个元素,执行步骤104;
步骤106:控制器C1将接入节点AP1的坐标加入到变量cs1中并作为最后一个元素;
步骤107:结束。
控制器通过上述过程获取接入节点的实时坐标并通过这些接入节点的坐标建立到达每个接入节点的最优路径,由于控制器到达接入节点的路由路径的长度最小,因此控制器与接入节点之间的通信延迟最短;同时,由于接入节点无需建立路由操作,也无需保存路由信息,从而大幅度增加了路由性能和网络性能。
本发明所述方法中,一个发布消息包含消息类型、坐标集合、坐标和负载;
每个接入节点保存一个控制器表,该控制器表只包含一个控制器表项,该控制器表项由坐标和坐标集合构成;
控制器C1创建接入节点表后,对于该接入节点表中的每个接入节点表项E0,控制器C1执行下述操作:
步骤201:开始;
步骤202:控制器C1执行步骤101-107获取控制器C1到达一个接入节点的路由路径的坐标集合变量cs1,该接入节点的坐标等于接入节点表项E0的坐标;控制器C1发送发布消息,该发布消息的消息类型为1,坐标集合为变量cs1,坐标等于控制器C1的坐标,负载为变量cs1;
步骤203:接入节点接收到发布消息,如果该接入节点的坐标等于该发布消息的坐标集合中的第一个元素,则执行步骤204,否则执行步骤206;
步骤204:接收到发布消息的接入节点从该发布消息的坐标集合中删除第一个元素,如果该发布消息的坐标集合为空,则执行步骤206,否则执行步骤205;
步骤205:接收到发布消息的接入节点转发该发布消息,执行步骤203;
步骤206:接收到发布消息的接入节点清空控制器表,该接入节点创建一个控制器表项,该控制器表项的坐标等于该发布消息的坐标,坐标集合等于该发布消息负载中的坐标集合参数cs1;该接入节点从该控制器表项的坐标集合中删除最后一个元素,将该控制器表项的坐标加入到该控制器表项的坐标集合中并作为第一个元素;
步骤207:结束。
控制器通过上述过程建立到达每个接入节点的最优路径并将该路由信息以及自己的坐标发布到每个接入节点,这样,接入节点无需建立路由即可获取到达控制器的路由信息,此外,由于控制器到达接入节点的路由路径的长度最小,因此大幅度降低了控制器与接入节点之间的通信延迟最短。
本发明所述方法中,从一个接入节点到达另一个接入节点的路由路径由坐标集合标识,该坐标集合由该路由路径所包含的所有接入节点或者控制器的坐标构成;
控制器C1通过下述过程计算接入节点AP1到达接入节点AP2的路由路径的坐标集合:
步骤301:开始;
步骤302:控制器C1设置一个坐标集合变量cs2,变量cs2的初始值为空;控制器C1选择一个接入节点表项E1,该接入节点表项E1的坐标等于接入节点AP1的坐标,选择一个接入节点表项E2,该接入节点表项E2的坐标等于接入节点AP2的坐标;如果接入节点表项E2的坐标与接入节点表项E1的坐标之间的距离不大于传输半径R2,则执行步骤306,否则执行步骤303;
步骤303:控制器C1选择一个接入节点表项E3,该接入节点表项E3的坐标与接入节点表项E1的坐标之间的距离不大于传输半径R2,且接入节点表项E3的坐标与接入节点表项E2的坐标之间的距离最小,控制器C1将接入节点表项E3的坐标加入到变量cs2中并作为最后一个元素;
步骤304:控制器C1选择一个接入节点表项E4,该接入节点表项E4的坐标等于变量cs2的最后一个元素;如果接入节点表项E4的坐标与接入节点E2的坐标之间的距离不大于传输半径R2,则执行步骤306,否则执行步骤305;
步骤305:控制器C1选择一个接入节点表项E5,该接入节点表项E5的坐标与接入节点表项E4的坐标之间的距离不大于传输半径R2,且接入节点表项E5的坐标与接入节点表项E2的坐标之间的距离最小,控制器C1将接入节点表项E5的坐标加入到变量cs2中并作为最后一个元素,执行步骤304;
步骤306:控制器C1将接入节点表项E2的坐标加入到变量cs2中并作为最后一个元素;
步骤307:结束。
控制器通过上述过程获取接入节点的实时坐标并通过这些接入节点的坐标建立一个接入节点到达另一个接入节点的最优路径,由于接入节点到达其他接入节点的路由路径的长度最小,因此大幅度降低了接入节点之间的通信延迟;同时,由于接入节点无需建立路由操作即可获取到达任何一个接入节点的路由信息,从而大幅度增加了路由性能和网络性能。
本发明所述方法中,请求消息包含消息类型、名称和数据坐标;
响应消息包含消息类型、名称、数据坐标和负载;
节点N2位于子网S1中,子网S1的接入节点为AP2,数据DA1由名称NA1和数据坐标(x5,y5)定义,如果数据坐标(x5,y5)位于子网S1内,则节点N2通过下述过程获取数据DA1;
步骤401:开始;
步骤402:节点N2发送请求消息,该请求消息的消息类型为2,名称为NA1,数据坐标为(x5,y5);
步骤403:接入节点AP2接收到该请求消息后,使用通信半径R1转发该请求消息;
步骤404:其他节点接收到请求消息后,如果该节点的坐标等于该请求消息的数据坐标,则执行步骤406,否则执行步骤405;
步骤405:接收到请求消息的其他节点丢弃该请求消息,执行步骤409;
步骤406:接收到请求消息的节点发送一个响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该请求消息的名称和数据坐标,负载为该请求消息的名称和数据坐标定义的数据;
步骤407:接入节点AP2接收到响应消息后,使用通信半径R1转发该响应消息;
步骤408:节点N2接收到该响应消息后,保存该响应消息负载中的数据;
步骤409:结束。
节点通过上述过程在本子网内获取数据,由于子网内的所有节点与接入节点一跳可达,因此请求数据的节点可以借助接入节点获取响应数据,从而降低数据通信延迟和代价,由于上述过程无需建立路由,从而进一步提高了数据通信性能。
本发明所述方法中,一个远程请求消息包含消息类型、名称、数据坐标、接入节点坐标、坐标集合和负载;
一个远程响应消息包含消息类型、名称、数据坐标、坐标集合和负载;
节点N2位于子网S1中,子网S1的接入节点为AP2,数据DA2由名称NA1和数据坐标(x6,y6)定义,如果数据坐标(x6,y6)位于子网S1以外,则节点N2通过下述过程获取数据DA2;
步骤501:开始;
步骤502:节点N2发送远程请求消息,该请求消息的消息类型为4,名称为NA1,数据坐标为(x6,y6),接入节点坐标为空,坐标集合为空,负载为空;
步骤503:接入节点AP2接收到远程请求消息后,选中控制表中的唯一一个控制器表项,将该远程请求消息的接入节点坐标更新为自己的坐标,坐标集合设置等于控制器表项的坐标集合,使用通信半径R2转发该远程请求消息;
步骤504:如果控制器C1接收到该远程请求消息,则执行步骤507,否则执行步骤505;
步骤505:接收到远程请求消息的接入节点判断自己的坐标是否等于该远程请求消息的坐标集合中的最后一个元素,如果是,则执行步骤506,否则执行步骤507;
步骤506:接收到远程请求消息的接入节点从该远程请求消息的坐标集合中删除最后一个元素,使用通信半径R2转发该远程请求消息,执行步骤504;
步骤507:控制器C1接收到远程请求消息后,选择一个接入节点表项,该接入节点表项的坐标与该远程请求消息的数据坐标距离最近,执行步骤201-207获取控制器C1到达接入节点AP3的路由路径的坐标集合变量cs1,接入节点AP3的坐标等于该接入节点表项的坐标;控制器C1执行步骤301-307获取接入节点AP3到达另一个接入节点AP4的路由路径的坐标集合变量cs2,接入节点AP4的坐标等于该远程请求消息中的接入节点坐标;控制器C1将该远程请求消息的坐标集合设置为变量cs1,将变量cs2加入到该远程请求消息的负载中;
步骤508:接入节点接收到远程请求消息;如果该接入节点的坐标等于该远程请求消息的坐标集合中的第一个元素,则执行步骤509,否则执行步骤511;
步骤509:接收到远程请求消息的接入节点从该远程请求消息的坐标集合中删除第一个元素,如果该远程请求消息的坐标集合为空,则执行步骤511,否则执行步骤510;
步骤510:接收到远程请求消息的接入节点使用通信半径R2转发该远程请求消息,执行步骤508;
步骤511:接收到远程请求消息的接入节点使用通信半径R1发送一个请求消息,该请求消息的消息类型为2,名称和数据坐标分别等于该远程请求消息的名称和数据坐标;节点接收到请求消息,如果该节点的坐标等于该请求消息的数据坐标,则执行步骤512,否则执行步骤513;
步骤512:接收到请求消息的节点发送一个响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该请求消息的名称和数据坐标,负载为该请求消息名称和数据坐标所标识的数据;
步骤513:接收到远程请求消息的接入节点接收到响应消息后,使用通信半径R2发送一个远程响应消息,该远程响应消息的消息类型为5,名称和数据坐标分别等于该响应消息的名称和数据坐标,坐标集合等于该远程请求消息负载中的变量cs2,负载为接收到的响应消息负载中的数据;
步骤514:接入节点接收到远程响应消息;如果该接入节点的坐标等于该远程响应消息的坐标集合中的第一个元素,则执行步骤515,否则执行步骤517;
步骤515:接收到远程响应消息的接入节点从该远程响应消息的坐标集合中删除第一个元素,如果该远程响应消息的坐标集合为空,则执行步骤517,否则执行步骤516;
步骤516:接收到远程响应消息的接入节点使用通信半径R2转发该远程响应消息,执行步骤514;
步骤517:接收到远程响应消息的接入节点使用通信半径R1发送响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该远程响应消息中的名称和数据坐标,负载等于该远程响应消息负载中的数据;
步骤518:节点N2接收到该响应消息后,保存该响应消息负载中的数据;
步骤519:结束。
节点通过上述过程在远程子网内获取数据,由于接入节点与控制器之间的路由路径由控制器预先计算,且接入节点之间的路由路径也有控制器预先计算,因此节点从远程子网的节点中获取数据的过程无需建立路由,从而大幅度降低了数据通信延迟和代价。
有益效果:本发明提供了一种基于物联网的实时监测系统的实现方法,所述物联网通过本发明所提供的实现方法可快速获取物联网感知的数据,能够有效缩短通信延迟,降低数据包丢失率,提高服务质量,本发明可应用于环境监测、路况检测等领域,具有广泛的应用前景。
具体实施方式:
本发明提供了一种基于物联网的实时监测系统的实现方法,所述物联网通过本发明所提供的实现方法可快速获取物联网感知的数据,能够有效缩短通信延迟,降低数据包丢失率,提高服务质量,本发明可应用于环境监测、路况检测等领域,具有广泛的应用前景。
图1为本发明所述的控制器获取坐标集合的流程示意图。
所述物联网包括一个控制器,两个以上的接入节点和两个以上的节点;所述物联网覆盖的区域为一个长方形,该长方形由横坐标区间[x1,x2]和纵坐标区间[y1,y2]定义,其中,x2>x1且y2>y1;该区域一般按照地域划分,例如一个花园或者一个小区,横坐标区间和纵坐标区间按照该地域的实际坐标来划分,一般情况下,区域越大,通信平均跳数越多,通信延迟越大,区域越小,通信平均跳数越小,通信延迟也越小。所述控制器位于该长方形的两条对角线的交点,其坐标为((x1+x2)/2,(y1+y2)/2);
所述物联网覆盖的长方形区域划分为M个相等的小长方形,M为大于1的正整数,一个小长方形所覆盖的区域作为一个子网,一个子网内只包含一个接入节点,该接入节点位于子网两条对角线的交点;在第m个子网由横坐标区间[x3,x4]和纵坐标区间[y3,y4]定义的条件下,其中,x4>x3且y4>y3,1≤m≤M,则该子网的接入节点的坐标为((x3+x4)/2,(y3+y4)/2);M设置值为2-100,M值越大,通信平均跳数越多,通信延迟越大,M值越小,通信平均跳数越小,通信延迟也越小;
一个接入节点使用两种通信半径R1和R2进行通信,接入节点采用通信半径R1与节点进行通信,
接入节点采用通信半径R2与其他接入节点或者控制器进行通信;在一个子网中,所有节点与接入节点一跳可达;控制器的通信半径为R2,控制器使用通信半径R2与接入节点进行通信;节点的通信半径为R1,节点使用通信半径R1与接入节点进行通信;通信半径R1取值范围为50m-100m,通信半径R2的取值范围为75m-150m;
每个节点、控制器以及接入节点具有网络唯一性的坐标;
物联网中传输的数据由名称和数据坐标标识;
物联网中传输的消息由消息类型标识,对应关系如下表所示:
消息类型的值 |
消息名称 |
1 |
发布消息 |
2 |
请求消息 |
3 |
响应消息 |
4 |
远程请求消息 |
5 |
远程响应消息 |
控制器保存一个接入节点表,一个接入节点表项包含坐标域;
控制器通过电子地图获取每个接入节点的坐标,对于获取的每个接入节点的坐标,该控制器创建一个接入节点表项,该接入节点表项的坐标域值等于该接入节点的坐标;电子地图预先设置,电子地图标记每个接入节点的坐标值;
从控制器到一个接入节点的路由路径由坐标集合标识,该坐标集合由该路由路径所包含的所有接入节点的坐标构成;
控制器C1通过下述过程计算自己到达接入节点AP1的路由路径的坐标集合:
步骤101:开始;
步骤102:控制器C1设置一个坐标集合变量cs1,变量cs1的初始值为空;控制器C1选择一个接入节点表项T1,该接入节点表项T1的坐标等于接入节点AP1的坐标;如果控制器C1的坐标与接入节点表项T1的坐标之间的距离不大于传输半径R2,则执行步骤106,否则执行步骤103;
步骤103:控制器C1选择一个接入节点表项T2,该接入节点表项T2的坐标与控制器C1的坐标之间的距离不大于传输半径R2,且接入节点表项T2的坐标与接入节点表项T1的坐标之间的距离最小,控制器C1将接入节点表项T2的坐标加入到变量cs1中并作为最后一个元素;
步骤104:控制器C1选择一个接入节点表项T3,该接入节点表项T3的坐标等于变量cs1的最后一个元素;如果接入节点表项T3的坐标与接入节点T1的坐标之间的距离不大于传输半径R2,则执行步骤106,否则执行步骤105;
步骤105:控制器C1选择一个接入节点表项T4,该接入节点表项T4的坐标与接入节点表项T3的坐标之间的距离不大于传输半径R2,且接入节点表项T4的坐标与接入节点表项T1的坐标之间的距离最小,将接入节点表项T4的坐标加入到变量cs1中并作为最后一个元素,执行步骤104;
步骤106:控制器C1将接入节点AP1的坐标加入到变量cs1中并作为最后一个元素;
步骤107:结束。
控制器通过上述过程获取接入节点的实时坐标并通过这些接入节点的坐标建立到达每个接入节点的最优路径,由于控制器到达接入节点的路由路径的长度最小,因此控制器与接入节点之间的通信延迟最短;同时,由于接入节点无需建立路由操作,也无需保存路由信息,从而大幅度增加了路由性能和网络性能。
图2为本发明所述的建立控制器表流程示意图。一个发布消息包含消息类型、坐标集合、坐标和负载;
每个接入节点保存一个控制器表,该控制器表只包含一个控制器表项,该控制器表项由坐标和坐标集合构成;
控制器C1创建接入节点表后,对于该接入节点表中的每个接入节点表项E0,控制器C1执行下述操作:
步骤201:开始;
步骤202:控制器C1执行步骤101-107获取控制器C1到达一个接入节点的路由路径的坐标集合变量cs1,该接入节点的坐标等于接入节点表项E0的坐标;控制器C1发送发布消息,该发布消息的消息类型为1,坐标集合为变量cs1,坐标等于控制器C1的坐标,负载为变量cs1;
步骤203:接入节点接收到发布消息,如果该接入节点的坐标等于该发布消息的坐标集合中的第一个元素,则执行步骤204,否则执行步骤206;
步骤204:接收到发布消息的接入节点从该发布消息的坐标集合中删除第一个元素,如果该发布消息的坐标集合为空,则执行步骤206,否则执行步骤205;
步骤205:接收到发布消息的接入节点转发该发布消息,执行步骤203;
步骤206:接收到发布消息的接入节点清空控制器表,该接入节点创建一个控制器表项,该控制器表项的坐标等于该发布消息的坐标,坐标集合等于该发布消息负载中的坐标集合参数cs1;该接入节点从该控制器表项的坐标集合中删除最后一个元素,将该控制器表项的坐标加入到该控制器表项的坐标集合中并作为第一个元素;
步骤207:结束。
控制器通过上述过程建立到达每个接入节点的最优路径并将该路由信息以及自己的坐标发布到每个接入节点,这样,接入节点无需建立路由即可获取到达控制器的路由信息,此外,由于控制器到达接入节点的路由路径的长度最小,因此大幅度降低了控制器与接入节点之间的通信延迟最短。
图3为本发明所述的计算坐标集合流程示意图。从一个接入节点到达另一个接入节点的路由路径由坐标集合标识,该坐标集合由该路由路径所包含的所有接入节点或者控制器的坐标构成;
控制器C1通过下述过程计算接入节点AP1到达接入节点AP2的路由路径的坐标集合:
步骤301:开始;
步骤302:控制器C1设置一个坐标集合变量cs2,变量cs2的初始值为空;控制器C1选择一个接入节点表项E1,该接入节点表项E1的坐标等于接入节点AP1的坐标,选择一个接入节点表项E2,该接入节点表项E2的坐标等于接入节点AP2的坐标;如果接入节点表项E2的坐标与接入节点表项E1的坐标之间的距离不大于传输半径R2,则执行步骤306,否则执行步骤303;
步骤303:控制器C1选择一个接入节点表项E3,该接入节点表项E3的坐标与接入节点表项E1的坐标之间的距离不大于传输半径R2,且接入节点表项E3的坐标与接入节点表项E2的坐标之间的距离最小,控制器C1将接入节点表项E3的坐标加入到变量cs2中并作为最后一个元素;
步骤304:控制器C1选择一个接入节点表项E4,该接入节点表项E4的坐标等于变量cs2的最后一个元素;如果接入节点表项E4的坐标与接入节点E2的坐标之间的距离不大于传输半径R2,则执行步骤306,否则执行步骤305;
步骤305:控制器C1选择一个接入节点表项E5,该接入节点表项E5的坐标与接入节点表项E4的坐标之间的距离不大于传输半径R2,且接入节点表项E5的坐标与接入节点表项E2的坐标之间的距离最小,控制器C1将接入节点表项E5的坐标加入到变量cs2中并作为最后一个元素,执行步骤304;
步骤306:控制器C1将接入节点表项E2的坐标加入到变量cs2中并作为最后一个元素;
步骤307:结束。
控制器通过上述过程获取接入节点的实时坐标并通过这些接入节点的坐标建立一个接入节点到达另一个接入节点的最优路径,由于接入节点到达其他接入节点的路由路径的长度最小,因此大幅度降低了接入节点之间的通信延迟;同时,由于接入节点无需建立路由操作即可获取到达任何一个接入节点的路由信息,从而大幅度增加了路由性能和网络性能。
图4为本发明所述的获取数据流程示意图。请求消息包含消息类型、名称和数据坐标;
响应消息包含消息类型、名称、数据坐标和负载;
节点N2位于子网S1中,子网S1的接入节点为AP2,数据DA1由名称NA1和数据坐标(x5,y5)定义,如果数据坐标(x5,y5)位于子网S1内,则节点N2通过下述过程获取数据DA1;
步骤401:开始;
步骤402:节点N2发送请求消息,该请求消息的消息类型为2,名称为NA1,数据坐标为(x5,y5);
步骤403:接入节点AP2接收到该请求消息后,使用通信半径R1转发该请求消息;
步骤404:其他节点接收到请求消息后,如果该节点的坐标等于该请求消息的数据坐标,则执行步骤406,否则执行步骤405;
步骤405:接收到请求消息的其他节点丢弃该请求消息,执行步骤409;
步骤406:接收到请求消息的节点发送一个响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该请求消息的名称和数据坐标,负载为该请求消息的名称和数据坐标定义的数据;
步骤407:接入节点AP2接收到响应消息后,使用通信半径R1转发该响应消息;
步骤408:节点N2接收到该响应消息后,保存该响应消息负载中的数据;
步骤409:结束。
节点通过上述过程在本子网内获取数据,由于子网内的所有节点与接入节点一跳可达,因此请求数据的节点可以借助接入节点获取响应数据,从而降低数据通信延迟和代价,由于上述过程无需建立路由,从而进一步提高了数据通信性能。
图5为本发明所述的数据通信流程示意图。一个远程请求消息包含消息类型、名称、数据坐标、接入节点坐标、坐标集合和负载;
一个远程响应消息包含消息类型、名称、数据坐标、坐标集合和负载;
节点N2位于子网S1中,子网S1的接入节点为AP2,数据DA2由名称NA1和数据坐标(x6,y6)定义,如果数据坐标(x6,y6)位于子网S1以外,则节点N2通过下述过程获取数据DA2;
步骤501:开始;
步骤502:节点N2发送远程请求消息,该请求消息的消息类型为4,名称为NA1,数据坐标为(x6,y6),接入节点坐标为空,坐标集合为空,负载为空;
步骤503:接入节点AP2接收到远程请求消息后,选中控制表中的唯一一个控制器表项,将该远程请求消息的接入节点坐标更新为自己的坐标,坐标集合设置等于控制器表项的坐标集合,使用通信半径R2转发该远程请求消息;
步骤504:如果控制器C1接收到该远程请求消息,则执行步骤507,否则执行步骤505;
步骤505:接收到远程请求消息的接入节点判断自己的坐标是否等于该远程请求消息的坐标集合中的最后一个元素,如果是,则执行步骤506,否则执行步骤507;
步骤506:接收到远程请求消息的接入节点从该远程请求消息的坐标集合中删除最后一个元素,使用通信半径R2转发该远程请求消息,执行步骤504;
步骤507:控制器C1接收到远程请求消息后,选择一个接入节点表项,该接入节点表项的坐标与该远程请求消息的数据坐标距离最近,执行步骤201-207获取控制器C1到达接入节点AP3的路由路径的坐标集合变量cs1,接入节点AP3的坐标等于该接入节点表项的坐标;控制器C1执行步骤301-307获取接入节点AP3到达另一个接入节点AP4的路由路径的坐标集合变量cs2,接入节点AP4的坐标等于该远程请求消息中的接入节点坐标;控制器C1将该远程请求消息的坐标集合设置为变量cs1,将变量cs2加入到该远程请求消息的负载中;
步骤508:接入节点接收到远程请求消息;如果该接入节点的坐标等于该远程请求消息的坐标集合中的第一个元素,则执行步骤509,否则执行步骤511;
步骤509:接收到远程请求消息的接入节点从该远程请求消息的坐标集合中删除第一个元素,如果该远程请求消息的坐标集合为空,则执行步骤511,否则执行步骤510;
步骤510:接收到远程请求消息的接入节点使用通信半径R2转发该远程请求消息,执行步骤508;
步骤511:接收到远程请求消息的接入节点使用通信半径R1发送一个请求消息,该请求消息的消息类型为2,名称和数据坐标分别等于该远程请求消息的名称和数据坐标;节点接收到请求消息,如果该节点的坐标等于该请求消息的数据坐标,则执行步骤512,否则执行步骤513;
步骤512:接收到请求消息的节点发送一个响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该请求消息的名称和数据坐标,负载为该请求消息名称和数据坐标所标识的数据;
步骤513:接收到远程请求消息的接入节点接收到响应消息后,使用通信半径R2发送一个远程响应消息,该远程响应消息的消息类型为5,名称和数据坐标分别等于该响应消息的名称和数据坐标,坐标集合等于该远程请求消息负载中的变量cs2,负载为接收到的响应消息负载中的数据;
步骤514:接入节点接收到远程响应消息;如果该接入节点的坐标等于该远程响应消息的坐标集合中的第一个元素,则执行步骤515,否则执行步骤517;
步骤515:接收到远程响应消息的接入节点从该远程响应消息的坐标集合中删除第一个元素,如果该远程响应消息的坐标集合为空,则执行步骤517,否则执行步骤516;
步骤516:接收到远程响应消息的接入节点使用通信半径R2转发该远程响应消息,执行步骤514;
步骤517:接收到远程响应消息的接入节点使用通信半径R1发送响应消息,该响应消息的消息类型为3,名称和数据坐标分别等于该远程响应消息中的名称和数据坐标,负载等于该远程响应消息负载中的数据;
步骤518:节点N2接收到该响应消息后,保存该响应消息负载中的数据;
步骤519:结束。
节点通过上述过程在远程子网内获取数据,由于接入节点与控制器之间的路由路径由控制器预先计算,且接入节点之间的路由路径也有控制器预先计算,因此节点从远程子网的节点中获取数据的过程无需建立路由,从而大幅度降低了数据通信延迟和代价。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种基于物联网的实时监测系统的实现方法,长方形的横坐标区间为[1,600]和纵坐标区间为[1,300],通信半径R1为60m,通信半径R2为85m,将长方形区间分割为50个相当的小长方形,即M等于50,网络启动后,控制器通过电子地图获取每个接入节点的坐标,对于获取的每个接入节点的坐标,该控制器创建一个接入节点表项,该接入节点表项的坐标域值等于该接入节点的坐标,例如坐标域值为(120,40);控制器执行步骤101-107计算自己到达每个接入节点的路由路径的坐标集合,例如控制器到达坐标为(120,40)的接入节点的坐标集合为{(120,38),(120,39),(120,40)}。然后,控制器执行步骤201-207将计算的自己到达每个接入节点的路由路径坐标集合发送给该接入节点,执行过程如下:该控制器发送一个发布消息,该发布消息的路由路径坐标集合为{(120,38),(120,39),(120,40)},负载的路由路径坐标集合为{(120,38),(120,39),(120,40)},如果坐标为(120,38)的接入节点接收到该发布消息,则将坐标(120,38)从该发布消息的坐标集合中删除,即发布消息中的坐标集合更新为{(120,39),(120,40)}并转发该发布消息;如果坐标为(120,39)的接入节点接收到该发布消息,则将坐标(120,39)从该发布消息的坐标集合中删除,即发布消息中的坐标集合更新为{(120,40)}并转发该发布消息;最终,坐标为(120,40)的接入节点接收到该发布消息,则将坐标(120,40)从该发布消息的坐标集合中删除,即发布消息中的坐标集合更新为{},并停止转发该发布消息同时保存发布消息中负载中的坐标集合,并创建一个控制器表,该控制器表的坐标为该发布消息的坐标和坐标集合等于负载中的坐标集合,然后将从该控制器表项的坐标集合中删除最后一个元素,即(120,40),将该控制器表项的坐标加入到该控制器表项的坐标集合中并作为第一个元素。最后,控制器执行步骤301-307计算任意一个接入节点到达另一个接入节点的路由路径的坐标集合,例如坐标为(120,38)的接入节点到达坐标为(120,40)的接入节点的坐标集合为{(120,39),(120,40)}。节点N2位于子网S1中,子网S1的接入节点为AP2,如果节点N2所获取的数据的数据坐标也位于子网S1中,节点N2则执行步骤401-409获取该数据。首先节点N2发送请求消息,接入节点AP2接收到该请求消息后转发该请求消息,坐标等于该数据坐标的节点产生数据并发送响应消息,接入节点AP2接收到该响应消息后转发该响应消息,最终节点N2获取目标数据。节点N2想获取数据DA2,数据DA2由名称NA1和数据坐标(x6,y6)定义,如果数据坐标(x6,y6)位于子网S1以外,则节点N2则执行步骤501-519获取数据DA2。首先,节点N2发送远程请求消息,接入节点AP2接收到该请求消息后,根据控制器表将该消息转发到控制器C1,控制器C1将该远程请求消息转发到距离与该远程请求消息的数据坐标距离最近的接入节点,该接入节点发送请求消息以获取响应消息,然后发送一个远程响应消息,该远程响应消息最终路由到接入节点AP2,接入节点AP2发送一个响应消息,最终节点N2获取该响应消息并获取数据DA2。
该一种基于物联网的实时监测系统的实现方法的性能分析如下:当节点与目标数据的数据坐标位于同一个子网时,数据通信延迟较小,平均延迟为20ms,当节点与目标数据的数据坐标位于不同子网时,数据通信延迟较大,数据通信的平均延迟为78ms。
表1仿真参数
本发明提供了一种基于物联网的实时监测系统的实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。