一种洪泛式组网的快速收敛方法与流程

文档序号:11292092阅读:588来源:国知局
一种洪泛式组网的快速收敛方法与流程

本发明涉及数据采集系统,尤其涉及到数据采集系统的组网方法。



背景技术:

目前,基于数据采集目的的最后一公里的集中式网络的现场物理拓扑为一个集中器,多个节点(一般几百到几千个),节点离散分布在距离集中器一公里范围内的每家每户。集中器和各个节点一般采用电力线载波或者小无线技术进行通信,集中器距离最远节点距离一般为一公里以内。集中器分别对每个节点发起数据采集命令,节点收到命令并判读目的地址是自身时进行应答。集中器搜集并存储每个节点的应答,并把采集到的数据通过公网或者专网传递给数据主站。通常情况下集中器和远距离的节点之间都不能直达通信,需要通过中继节点转发才能到达目的,地理位置分布离散的节点可互为中继,这样就需要构建集中器到各个目的节点的组网路径。

目前的组网方法一般都是集中器发起组网过程,逐级探索到达目的节点的路径,当探索成功后就记忆下集中器到该目的节点的路径,在进行数据采集时集中器就按照历史记忆路径去和目的节点通信。按照这种组网方法,集中器组网时间较长,并且需要记忆自身到下属每个节点的路径。同时,由于集中器记忆的是历史路径,而最后一公里的信道往往是时变的,如电力线载波信道会随着家庭里用户使用用电器的情况而变化,小无线信道会随着天气的变化而变化,所以当按照历史记忆路径去和目的节点通信就可能不成功,这时集中器又需要发起网络维护过程去重新探索到该目的节点的路径,如果网络维护的过程频繁又会影响到系统的正常数据采集过程,使得每日的数据采集成功率大大降低。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提出一种洪泛式组网的快速收敛方法,能够大大增加集中器和各节点之间的通信成功率,并且通信可靠性也大为提高,也最大限度地降低了网络维护的工作量。

本发明解决其技术问题所采用的技术方案是:提供一种洪泛式组网的快速收敛方法,包括:步骤1:集中器构建命令包的网络层协议数据单元,向目标节点发出数据采集命令;步骤2:收到该命令包的节点判读目的地址若非自身,则按照多种处理机制决定应该转发还是丢弃该命令包,若是应该转发该命令包,则把网络层协议数据单元中的下行级数加一,置数据包为转发包标志,转发该命令包;若是应该丢弃,则丢弃该命令包;步骤3:收到该命令包的节点判读目的地址若为自身,则按照某种处理机制决定是否该处理该命令包,若不处理,则丢弃该命令包;若应处理,则构建应答包网络层协议数据单元,发送应答;步骤4:收到该应答包的节点按照多种处理机制决定应该转发还是丢弃该应答包,若是应该转发该应答包,则把网络层协议数据单元中的上行级数加一,置数据包为转发包标志,转发该应答包;若是应该丢弃,则丢弃该应答包;步骤5:集中器收到该应答包,则按照某种处理机制决定是否该处理该应答包,若不处理,则丢弃该应答包;若应处理,则提取需要的采集数据存储,再执行步骤1,发出下一条数据采集命令。

本发明的有益效果在于,可以完全自适应通信信道的变化,集中器每次和目标节点的采集通信过程同时也是一次组网过程,且通信路径是动态的,当时的最优路径。组网方法中采取多种措施有效解决了网络冲突和网络拥塞的难点,使得每次通信可以快速收敛。通过这种组网方法,能够大大增加集中器和各节点之间的通信成功率,并且通信可靠性也大为提高,也最大限度地降低了网络维护的工作量。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为节点的数据流图。

图2为集中器的数据流图。

图3为集中器发出下行数据采集命令的过程示意图。

图4为收到命令的一级节点转发的过程示意图。

图5为收到命令的二级节点转发,到达目的节点的过程示意图。

图6为目的节点发出上行应答包的过程示意图。

图7为收到应答包的一级节点转发的过程示意图。

图8为收到应答的二级节点转发,到达集中器的过程示意图。

图9为洪泛式组网的快速收敛方法的流程图。

图10为集中器发送命令处理的流程图。

图11为节点接收下行命令处理的流程图。

图12为节点发送应答处理的流程图。

图13为节点接收上行应答处理的流程图。

图14为集中器接收上行应答处理的流程图。

图15为节点重复包检测的流程图。

图16为集中器重复包检测的流程图。

具体实施方式

现结合附图,对本发明的较佳实施例作详细说明。

首先,描述一下本发明的数据结构。

协议数据单元(pdu)格式描述主要包括:mac层协议数据单元(mpdu)格式描述和网络层协议数据单元(npdu)格式描述两个方面。

具体地,mpdu格式描述如下表。

length:8-bits,mpdu的长度(包括length本身),length<=255。

delta_bl:6-bits,规定提交该mpdu所产生的信道使用统计的增量,变化范围0-63。

npdu:网络层协议数据单元。

crcl,crch:从length字节开始到npdu结束的crc校验,低字节在前。

具体地,npdu格式描述如下表。

srcrelay:1-bit,0,表示数据包为转发包;1,表示数据包为源发送包。

updown:1-bit,上行和下行标识。0,下行包;1,上行包。

ver:4-bits,使用的应用层协议。

dwnlvl:3-bits,下行级数,0-7级。

uplvl:3-bits,上行级数,0-7级。

domain:48-bits,域标识,一个集中器和下属所有节点即属于同一个唯一域,对应集中器地址。

dstaddr:48-bits,目标地址。

tid:8-bits,事务号,关联的下行命令和上行应答tid要相等。tid范围1-63。

apdu:应用层协议数据单元。

参见图1,图1为节点的数据流图。描述了节点上的数据在应用层180和网络层190之间的移动。具体而言,包括:mac层接收缓冲区(macrxbuffer)110,mac层发送缓冲区(mactxbuffer)120,应用层接收缓冲区(apprxbuffer)130,应用层发送缓冲区(apptxbuffer)140,已处理包队列(dealtpacqueue)150,以及转发缓冲区(forwardbuffer)160。其中,已处理包队列150最多容纳30个已处理包。为了节省空间,一个完整的mpdu数据包移入已处理包队列150时,只移入length、updown、ver、dwnlvl、uplvl、dstaddr、tid这几项。图中的箭头表示数据包在缓冲区和队列之间的移动。

参见图2,图2为集中器的数据流图。描述了集中器上的数据在应用层280和网络层290之间的移动。具体而言,包括:mac层接收缓冲区(macrxbuffer)210,mac层发送缓冲区(mactxbuffer)220,应用层接收缓冲区(apprxbuffer)230,应用层发送缓冲区(apptxbuffer)240以及已处理包队列(dealtpacqueue)250。其中,已处理包队列250最多容纳30个已处理包。为了节省空间,一个完整的mpdu数据包移入已处理包队列150时,只移入length、updown、ver、dwnlvl、uplvl、dstaddr、tid这几项。图中的箭头表示数据包在缓冲区和队列之间的移动。

参见图3至图8,示例性地呈现了一个洪泛式组网的过程,该示例假定了一个二级的组网网络300,其包括集中器310、一级节点330、二级节点350和目标节点370。具体地,图3为集中器发出下行数据采集命令的过程示意图。图4为收到命令的一级节点转发的过程示意图。图5为收到命令的二级节点转发,到达目的节点的过程示意图。图6为目的节点发出上行应答包的过程示意图。图7为收到应答包的一级节点转发的过程示意图。图8为收到应答的二级节点转发,到达集中器的过程示意图。

参见图9,图9为洪泛式组网的快速收敛方法的流程图。该方法大致包括:

步骤910、集中器构建命令包npdu(网络层协议数据单元),向目标节点发出数据采集命令;然后,转步骤920。

步骤920、收到该命令包的节点判读目的地址是否自身的,不是的话转步骤930,是的话转步骤940。

步骤930、按照多种处理机制(多种处理机制详见图11,包括判断域地址是否匹配、是否重复包、下行级数是否达到最大级数、tid比较、rssi(接收信号强度)是否超限)决定应该转发还是丢弃该命令包,若是应该转发该命令包,则把npdu中的dwnlvl+=1、srcrelay=0(转发包),转发该命令包;若是应该丢弃,则丢弃该命令包;然后,转步骤950。

步骤940、按照某种处理机制(某种处理机制详见图11,这个处理机制就是判断是否重复包)决定是否该处理该命令包,若不处理,则丢弃该命令包;若应处理,则构建应答包npdu,发送应答;然后,转步骤950。

步骤950、收到该应答包的节点,按照多种处理机制(多种处理机制详见图13,包括判断域地址是否匹配、是否重复包、上行级数是否达到最大级数、tid(事务号)比较、rssi(接收信号强度)是否超限)决定应该转发还是丢弃该应答包,若是应该转发该应答包,则把npdu中的uplvl+=1、srcrelay=0(转发包),转发该应答包;若是应该丢弃,则丢弃该应答包;然后,转步骤960。

步骤960、集中器收到该应答包,则按照某种处理机制(某种处理机制详见图14,包括判断是否下行包、域地址是否匹配、是否重复包)决定是否该处理该应答包,若不处理,则丢弃该应答包;若应处理,则提取需要的采集数据存储;然后,转步骤910,去发出下一条数据采集命令。

值得一提的是,下行转发和上行转发的最大级数可以设置。通常对于一公里范围的现场网络来说,下行转发和上行转发的最大级数缺省为7级。由于信道下行和上行的物理参数不对称,通常每次洪泛通信成功所需的下行级数和上行级数并不相同,且参与下行转发的节点和参与上行转发的节点也并不相同。

参见图10,图10为集中器发送命令处理的流程图。集中器发送命令处理的过程具体包括:

步骤1010、集中器储存floodmaxtid+=1;注:floodmaxtid初始化为0。

步骤1020、判断floodmaxtid是否>63,是的话,转步骤1030,不是的话,转步骤1040。

步骤1030、floodmaxtid=1,转步骤1040。

步骤1040、构造发送命令包npdu,放入apptxbuffer:srcrelay=1;updown=0;dwnlvl=0;uplvl=0;domain=集中器地址;dstaddr=目标节点地址;tid=floodmaxtid;然后,转步骤1050。

步骤1050、发送命令包移入mactxbuffer,等待发送。

参见图11,图11为节点接收下行命令处理的流程图。节点接收下行命令处理的过程具体包括:

步骤1101、节点macrxbuffer接收到一个下行命令包,转步骤1103。

步骤1103、判断目的地址是否匹配,是的话,转步骤1105,不是的话,转步骤1107。

步骤1105、判断是否重复包,是的话,转步骤1149,不是的话,转步骤1131。

步骤1107、判断域地址是否匹配,是的话,转步骤1109,不是的话,转步骤1149。

步骤1109、判断是否重复包,是的话,转步骤1149,不是的话,转步骤1111。

步骤1111、判断接受命令包dwnlvl是否>=7,是的话,转步骤1149,不是的话,转步骤1113。

步骤1113、判断接收命令包tid是否大于节点储存floodmaxtid,是的话,转步骤1115,不是的话,转步骤1149。

步骤1115、节点储存floodmaxtid=接收命令包tid,转步骤1117。

步骤1117、判断转发缓冲区是否有数据包,是的话,转步骤1119,不是的话,转步骤1121。

步骤1119、把转发缓冲区中的数据包移入已处理包队列,不再发送,转步骤1121。

步骤1121、判断mactxbuffer是否有积压包,是的话,转步骤1123,不是的话,转步骤1125。

步骤1123、清除mactxbuffer中的数据包,不再发送。同时清除已处理包队列中该包的mactxbuffer积压包标志macblockflag,转步骤1125。

步骤1125、判断rssi是否超过上限,是的话,转步骤1127,不是的话,转步骤1129。

步骤1127、该命令包入已处理包队列,结束。

步骤1129、该命令包srcrelay=0,dwnlvl+=1,入转发缓冲区,结束。

步骤1131、判断接收命令包tid是否大于节点储存floodmaxtid,是的话,转步骤1135,不是的话,转步骤1137。

步骤1135、节点储存floodmaxtid=接收命令包tid,转步骤1137。

步骤1137、节点储存domainid=接收命令包domain,转步骤1139。

步骤1139、节点储存flooddwnlvl=接收命令包dwnlvl,转步骤1141。

步骤1141、把该命令包递交apprxbuffer;同时把该命令包入已处理包队列,结束。

步骤1143、判断收到命令包的dwnlvl-对应重复包的dwnlvl是否>=2,是的话,转步骤1145,不是的话,转步骤1155。

步骤1145、判断重复包是否位于转发缓冲区,是的话,转步骤1147,不是的话,转步骤1151。

步骤1147、把转发缓冲区中的数据包移入已处理包队列,不再发送,转步骤1149。

步骤1149、丢弃该下行命令包,结束。

步骤1151、判断位于已处理包队列中的该重复包是否也是mactxbuffer积压包,是的话,转步骤1153,不是的话,转步骤1149。

步骤1153、清除mactxbuffer中的数据包,不再发送,同时清除已处理包队列中该重复包的mactxbuffer积压包标志macblockflag,转步骤1149。

步骤1155、判断重复包是否位于转发缓冲区,是的话,转步骤1157,不是的话,转步骤1159。

步骤1157、判断rssi是否超过上限,是的话,转步骤1147,不是的话,转步骤1149。

步骤1159、判断rssi是否超过上限,是的话,转步骤1151,不是的话,转步骤1149。

参见图12,图12为节点发送应答处理的流程图。节点发送应答处理的过程具体包括:

步骤1210、构造发送应答包npdu,放入apptxbuffer:srcrelay=1;updown=l;dwnlvl=节点储存flooddwnlvl;uplvl=0;domain=节点储存domainid;dstaddr=目标节点地址;tid=节点储存floodmaxtid。

步骤1230、发送应答包移入mactxbuffer,等待发送;同时,发送应答包移入已处理包队列,置已处理包队列中该数据包的mactxbuffer积压标志macblockflag,清已处理包队列中其他数据包的macblockflag。

参见图13,图13为节点接收上行应答处理的流程图。节点接收上行应答处理的过程具体包括:

步骤1301、节点macrxbuffer接收到一个上行应答包,转步骤1303。

步骤1303、判断域地址是否匹配,是的话,转步骤1305,不是的话,转步骤1333。

步骤1305、判断是否重复包,是的话,转步骤1327,不是的话,转步骤1307。

步骤1307、判断接受应答包uplvl是否>=7,是的话,转步骤1333,不是的话,转步骤1309。

步骤1309、判断接收应答包tid是否大于等于节点储存floodmaxtid,是的话,转步骤1311,不是的话,转步骤1333。

步骤1311、节点储存floodmaxtid=接收应答包tid,转步骤1313。

步骤1313、判断转发缓冲区是否有数据包,是的话,转步骤1315,不是的话,转步骤1317。

步骤1315、把转发缓冲区中的数据包移入已处理包队列,不再发送,转步骤1317。

步骤1317、判断mactxbuffer是否有积压包,是的话,转步骤1319,不是的话,转步骤1321。

步骤1319、清除mactxbuffer中的数据包,不再发送。同时清除已处理包队列中该包的mactxbuffer积压包标志macblockflag,转步骤1321。

步骤1321、判断rssi是否超过上限,是的话,转步骤1323,不是的话,转步骤1325。

步骤1323、该应答包入已处理包队列,结束。

步骤1325、该应答包srcrelay=0,uplvl+=1,入转发缓冲区,结束。

步骤1327、判断收到应答包的uplvl-对应重复包的uplvl是否>=2,是的话,转步骤1329,不是的话,转步骤1339。

步骤1329、判断重复包是否位于转发缓冲区,是的话,转步骤1331,不是的话,转步骤1335。

步骤1331、把转发缓冲区中的数据包移入已处理包队列,不再发送,转步骤1333。

步骤1333、丢弃该上行应答包,结束。

步骤1335、判断位于已处理包队列中的该重复包是否也是mactxbuffer积压包,是的话,转步骤1337,不是的话,转步骤1333。

步骤1337、清除mactxbuffer中的数据包,不再发送。同时清除已处理包队列中该重复包的mactxbuffer积压包标志macblockflag,转步骤1333。

步骤1339、判断重复包是否位于转发缓冲区,是的话,转步骤1341,不是的话,转步骤1343。

步骤1341、判断rssi是否超过上限,是的话,转步骤1331,不是的话,转步骤1333。

步骤1343、判断rssi是否超过上限,是的话,转步骤1335,不是的话,转步骤1333。

参见图14,图14为集中器接收上行应答处理的流程图。集中器接收上行应答处理的过程具体包括:

步骤1410、集中器macrxbuffer接收到一个数据包,转步骤1420。

步骤1420、判断是否下行包,是的话,转步骤1460,不是的话,转步骤1430。

步骤1430、判断域地址是否匹配,是的话,转步骤1440,不是的话,转步骤1460。

步骤1440、判断是否重复包,是的话,转步骤1460,不是的话,转步骤1450。

步骤1450、该上行应答包移入apprxbuffer,等待应用层处理,结束。

步骤1460、丢弃该数据包,结束。

参见图15,图15为节点重复包检测的流程图。节点重复包检测的过程具体包括:

步骤1501、节点macrxbuffer接收到一个数据包。

步骤1503、判断转发缓冲区是否有数据包,是的话,转步骤1505,不是的话,转步骤1519。

步骤1505、和转发缓冲区数据包进行比较。

步骤1507、判断包长度length是否相等,是的话,转步骤1509,不是的话,转步骤1519。

步骤1509、判断updown是否相等,是的话,转步骤1511,不是的话,转步骤1519。

步骤1511、判断ver是否相等,是的话,转步骤1513,不是的话,转步骤1519。

步骤1513、判断dstaddr是否相等,是的话,转步骤1515,不是的话,转步骤1519。

步骤1515、判断tid是否相等,是的话,转步骤1517,不是的话,转步骤1519。

步骤1517、接收数据包为重复包,结束。

步骤1519、判断已处理包队列是否有数据包,是的话,转步骤1523,不是的话,转步骤1521。

步骤1521、接收数据包非重复包,结束。

步骤1523、取已处理包队列一个数据包,和接收数据包进行比较。

步骤1525、判断包长度length是否相等,是的话,转步骤1527,不是的话,转步骤1535。

步骤1527、判断updown是否相等,是的话,转步骤1529,不是的话,转步骤1535。

步骤1529、判断ver是否相等,是的话,转步骤1531,不是的话,转步骤1535。

步骤1531、判断dstaddr是否相等,是的话,转步骤1533,不是的话,转步骤1535。

步骤1533、判断tid是否相等,是的话,转步骤1517,不是的话,转步骤1535。

步骤1535、判断已处理包队列是否比较完,是的话,转步骤1521,不是的话,转步骤1523。

图16为集中器重复包检测的流程图。集中器重复包检测的过程具体包括:

步骤1601、集中器macrxbuffer接收到一个数据包。

步骤1603、判断已处理包队列是否有数据包,是的话,转步骤1605,不是的话,转步骤1621。

步骤1605、取已处理包队列一个数据包,和接收数据包进行比较。

步骤1607、判断包长度length是否相等,是的话,转步骤1609,不是的话,转步骤1619。

步骤1609、判断updown是否相等,是的话,转步骤1611,不是的话,转步骤1619。

步骤1611、判断ver是否相等,是的话,转步骤1613,不是的话,转步骤1619。

步骤1613、判断dstaddr是否相等,是的话,转步骤1615,不是的话,转步骤1619。

步骤1615、判断tid是否相等,是的话,转步骤1617,不是的话,转步骤1619。

步骤1617、接收数据包为重复包,结束。

步骤1619、判断已处理包队列是否比较完,是的话,转步骤1621,不是的话,转步骤1605。

步骤1621、接收数据包非重复包,结束。

在本发明中,rssi指接收信号强度。节点接收到一个数据包rssi超过上限,是指节点接收到数据包信号很强,一定是离该节点很近的另一个节点发出来的数据包,比如同一个表箱的另一个节点发出来的数据包。

在本发明中,节点首次上电初始化时节点储存domain为全0。节点收到数据包判定域地址是否匹配的判据为:若“收到数据包domain和节点储存domain相等”或者“节点储存domain==全0”,则域地址匹配;否则,域地址不匹配。节点掉电前把节点储存domain保存到非易失存储器中。

在本发明中,接收命令包tid是否大于节点储存floodmaxtid的判据为:若“接收命令包tid>节点储存floodmaxtid”或者“接收命令包tid+63-节点储存floodmaxtid<16”,则接收命令包tid大于节点储存floodmaxtid;否则,接收命令包tid不大于节点储存floodmaxtid。这是因为tid是从1-63循环的,当超过63时,tid又从1开始。

值得一提的是,tid来源是集中器构建的pdu包,是从1-63循环的,当从63循环变到1时,1应该是大于63的,而不是小于。取16这个数就是保证网络中还存续的包(网络中的包有存续期也可以叫生存期)不会因为1-63的循环而出现大小比较错乱的情况。

在本发明中,接收应答包tid是否大于等于节点储存floodmaxtid的判据为:若“接收应答包tid≥节点储存floodmaxtid”或者“接收应答包tid+63-节点储存floodmaxtid<16”,则接收应答包tid大于等于节点储存floodmaxtid;否则,接收应答包tid小于节点储存floodmaxtid。这是因为tid是从1-63循环的,当超过63时,tid又从1开始。

在本发明中,节点数据包从转发缓冲区或者apptxbuffer移入mactxbuffer时,需判断mactxbuffer是否空闲。若空闲,则移入mactxbuffer,同时,把数据包也移入已处理包队列,置已处理包队列中该数据包的mactxbuffer积压标志macblockflag,清已处理包队列中其他数据包的macblockflag;若忙,则继续停留在转发缓冲区或者apptxbuffer中等待。

在本发明中,集中器数据包从apptxbuffer移入mactxbuffer时,需判断mactxbuffer是否空闲。若空闲,则移入mactxbuffer;若忙,则继续停留在apptxbuffer中等待。

在本发明中,物理层采用csma(载波侦听多路访问)技术竞争信道发送,进入mactxbuffer的数据包随机分配时间片,当分配到的时间片到达时,物理层发送数据包。信道竞争采用优先级别,源发送包在优先时隙中分配随机时间片发送;转发包需在优先时隙后,再分配随机时间片发送。

本发明的有益效果包括,但不限于:实现了网络载荷的高效控制,冲突的最大避免,从而使得洪泛式组网得以快速收敛。

应当理解的是,以上实施例仅用以说明本发明的技术方案,而非对其限制,对本领域技术人员来说,可以对上述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改和替换,都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1