窄带电力线载波通信的IP组网方法转让专利

申请号 : CN201110186896.3

文献号 : CN102223276B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵四海李建炜李红信田勇张万菊张军王再望

申请人 : 宁夏隆基宁光仪表有限公司

摘要 :

本发明涉及一种适用于窄带电力线载波通信的IP组网方法,其特征是,(1)帧格式设计,只限于载波芯片通信帧的用户数据区,定义与此算法对应的帧格式,具体特征是用户数据区的第一个字节表示的是帧类型,帧类型包括IP组网方法所用到帧、网络管理帧及普通点对点通信所用到的帧;(2)具有载波侦听多址访问\冲突避免功能的退避原理。采用本发明提出的IP组网方法,使同一台变下、同一相线上、能够可靠通信的窄带电力线载波通信节点,构成一个IP子网。不能可靠通信的节点,分属于不同的子网,依靠子网之间的网关节点通信。两个子网之间的网关节点不是由一个节点构成,而是由多个节点构成的网关簇,进一步提高了通信的可靠性。

权利要求 :

1.一种窄带电力线载波通信的IP组网方法,其特征在于:

(1)具有载波侦听多址访问\冲突避免功能的退避算法

任何节点发送之前,都处于接收状态,检测是否接收到有效帧的同步头字节;所有收到同步头子节的节点,都要保持接收状态,继续接收直到长度字节,然后根据长度字节,判断此帧是否全部接收完毕;每个收到此帧的节点都要根据帧类型及帧长度,判断自身应该等待的时间,然后启动定时器,等待这个时间长度,并继续保持接收状态;发送节点发送完毕后,切换到接收状态,并等待应答;同时启动一个定时器,判断应答帧是否在规定的时间内到达;每接收一个应答帧,此定时器复位并重新启动定时;若定时期满后仍无应答,则根据会话的性质,确定下一步应该采取的措施;

接收节点若是目标节点,则需要构造应答帧;若目标节点是单个,则它立即构造应答帧并发送;而其它所有在通信双方有效距离内的节点,都根据通信语义及帧长度,等待相应的时间;若目标节点是多个,则各节点根据退避算法,形成一个随机的退避时间,在此时间内,仍处于接收状态;最早结束退避时间的节点,切换到发送状态,发送帧同步字节;其它仍然处于退避期的节点,收到此同步头后,结束此轮定时,处于等待状态,直至发送节点会话结束后,重新开始新的一轮随机退避定时;

接收节点若不是目标节点,则无需构造应答帧,但仍然需要根据所接收到帧的类型,决定自己应该处于等待状态还是定时状态;若处于等待状态,则设置等待状态结束的触发条件;若处于定时状态,则需要计算定时的长度;并且在每一次定时期满之前,若收到同一发送节点新的会话帧,则定时器复位并重新启动定时;

(2)帧格式设计

只限于载波芯片通信帧的用户数据区,定义与此算法对应的帧格式,具体特征是用户数据区的第一个字节表示的是帧类型,帧类型包括IP组网方法所用到帧、网络管理帧及普通点对点通信所用到的帧,具体是:组网广播帧hello,0x01;IP地址请求帧IPreq,0x02;

IP地址分配帧IPassign,0x03;IP地址确认帧IPack,0x04;组播帧multicast,0x05;组播应答帧multicastrep,0x06;点对点请求帧P2Preq,0x07;点对点应答帧P2Prep,0x08;

(3)IP地址分配方案

还包括IP地址分配方案,即无类域间路由地址方案CIDR172.16.0.0/24;即:子网掩码255.255.255.0,A相从172.16.1.0到172.16.63.0共63个子网,254个主机;B相从172.16.64.0到172.16.127.0共64个子网,254个主机;C相从172.16.128.0到

172.16.254.0共128个子网,254个主机;在三相四线制中,每个相位上的主动节点所在的网络地址是所有子网地址中最小的,其主机地址又是其所在子网中最小的;

在IP组网过程中,主动节点初始化后或收到IPack帧后,立即发出hello帧,并启动较长的定时;收到IPreq帧后,发出IPassign帧,此定时复位,启动较短的定时,此定时与期望收到的IPack帧时间的相匹配;发出p2p帧后,则启动与期望收到的帧长度匹配的定时;

主动节点先为自己的所有邻居节点分配自己所属子网的IP地址,若较长的定时已满,仍未收到收到IPreq帧,则结束其寻找邻居节点并为其分配IP地址的过程,然后对其邻居节点,按IP地址由小到大的次序,逐一用hello帧轮询,hello帧中的网络地址也对应于邻居节点的IP地址由小到大逐一递增,被轮询到的节点,由于已经有IP地址,所以不再发出IPreq帧,而是,以新的子网地址,发hello帧,寻找它自己的邻居节点;其它未被轮询的邻居节点,收到此帧后,处于等待状态,直到被主动节点轮询到为止;

若一个子网的被轮询节点找到了其下层邻居节点,则它与其所有的下层节点形成一个新的子网,网络IP地址就是被轮询帧中IP地址;被轮询节点既具有上层子网中一个主机地址,也具有新子网中最小的主机地址,因此,它就是两个子网之间的网关节点,并且负责维护两个子网之间的路由表;

与被轮询的节点属于同一子网,但还未被轮询到的节点,也可能收到被轮询节点寻找其子层邻居节点的hello帧,通过对被轮询节点所发的帧计数的方法,最先达到规定计数值的所有节点,启动一个随机退避定时,在退避定时到后,申请加入被轮询节点的下层子网;若成功加入,则它具有两个子网的IP地址,从而与被轮询节点一样,成为两个子网之间的网关节点,将具有两个IP地址的节点数目,限制在冲突允许的一定范围内;当子网内节点的目标节点不在本子网内时,任意组播一个含外网网络地址的通信帧,具有此外网网络地址的网关簇节点,启动退避定时,定时最短的网关节点,负责转发这次通信,其它网关簇节点复位其定时器,重新出于等待状态;

成为网关簇的节点,也负责维护两个子网之间的路由表,当它被轮询时,不再以新的网络地址发hello帧组网,而是立即以一个应答帧回复轮询节点,以便轮询节点轮询其下一个邻居节点,这样直至组网完毕。

2.如权利要求1所述的窄带电力线载波通信的IP组网方法,其特征在于:每个节点中至少同时运行着一个服务器进程和一个客户机进程;主动节点中运行着服务器进程用来侦听其它节点的连接,并在连接后提供所请求的服务,其它节点中运行着客户机进程,用来向主动节点请求服务,同样,主动节点中运行着客户机进程,而每个节点中运行着服务器进程,用来接收主动节点的查询,主动节点向其它的节点发起查询,而其它节点中的服务器进程提供给所查询的信息。

说明书 :

窄带电力线载波通信的IP组网方法

技术领域

[0001] 本发明涉及一种适用于窄带电力线载波通信的IP组网方法。

背景技术

[0002] TCP/UDP/IP协议是开放的标准协议,已经成为互联网事实上的标准。目前,TCP/UDP/IP协议宽带电力线载波中已广泛使用。主要用于家庭、楼宇的局域网连接,以便共享与公网的接口,避免重复布线,节省成本。宽带电力线载波传输速率高(1Mbps-100Mbps),数据帧长(大于1K字节),载波芯片有完善的数据链路成所需的媒体访问控制(MAC)功能,所以,在宽带电力线载波通信中,TCP/UDP/IP协议的移植和使用没有障碍。但是,窄带电力线载波通信传输速率低(数百位每秒到数Kbps),数据帧短(一般小于500字节),更为困难的是,大多数窄带电力线载波不具有MAC功能,而具有MAC功能的芯片成本又比较高。因此,需要用软件的方法,实现MAC功能,这是在窄带电力线载波通信网络中采用TCP/UDP/IP协议,需要解决的一个主要问题。
[0003] 窄带电力线载波通常用于用电节点监控、楼宇自动化、自动抄表等领域,与宽带电力线载波传输的多媒体和计算机通信相比,数据量要少很多。加之电网管理部门对电网上的电磁污染管理较为严格,监控、楼宇自动化、自动抄表等领域只能是窄带应用,并且规定了严格的载波频带内外的辐射标准。从目前的窄带应用来说,如果选择了一个窄带电力线载波芯片,从网络结构的角度来看,从应用层以下,甚至应用层的功能,都要受限于芯片提供商,其网络层的组网和路由功能,都是私有的,限制了窄带应用的可扩展性。而TCP/UDP/IP协议是开放的、标准化的网络通信协议,如果在网络层采用TCP/UDP/IP作为通信协议,可使整个窄带应用仅在底层依赖芯片提供商,把窄带应用开发人员从整个网络维护任务中解脱出来,仅关注应用层的开发就可以了。

发明内容

[0004] 本发明的目的是提供一种窄带电力线载波通信的IP组网方法,能够使使窄带电力线通信网由私有封闭网变为可扩展的开放网络,从而降低硬件成本,为智能用电和管电打下基础。
[0005] 为实现上述目的,本发明采用的技术方案是:
[0006] 一种窄带电力线载波通信的IP组网方法,其特别之处在于,
[0007] (1)帧格式设计
[0008] 只限于载波芯片通信帧的用户数据区,定义与此算法对应的帧格式,具体特征是用户数据区的第一个字节表示的是帧类型,帧类型包括IP组网方法所用到帧、网络管理帧及普通点对点通信所用到的帧,具体是:组网广播帧hello,0x01;IP地址请求帧IPreq,0x02;IP地址分配帧IPassign,0x03;IP地址确认帧IPack,0x04;组播帧multicast,0x05;
组播应答帧multicastrep,0x06;点对点请求帧P2Preq,0x07;点对点应答帧P2Prep,
0x08;
[0009] (2)具有载波侦听多址访问\冲突避免功能的退避原理
[0010] 任何节点发送之前,都处于接收状态,检测是否接收到有效帧的同步头字节;所有收到同步头子节的节点,都要保持接收状态,继续接收直到长度字节,然后根据长度字节,判断此帧是否全部接收完毕;每个收到此帧的节点都要根据帧类型及帧长度,判断自身应该等待的时间,然后启动定时器,等待这个时间长度,并继续保持接收状态;发送节点发送完毕后,切换到接收状态,并等待应答;同时启动一个定时器,判断应答帧是否在规定的时间内到达;每接收一个应答帧,此定时器复位并重新启动定时;若定时期满后仍无应答,则根据会话的性质,确定下一步应该采取的措施;
[0011] 接收节点若是目标节点,则需要构造应答帧;若目标节点是单个,则它立即构造应答帧并发送;而其它所有在通信双方有效距离内的节点,都根据通信语义及帧长度,等待相应的时间;若目标节点是多个,则各节点根据退避算法,形成一个随机的退避时间,在此时间内,仍处于接收状态;最早结束退避时间的节点,切换到发送状态,发送帧同步字节;其它仍然处于退避期的节点,收到此同步头后,结束此轮定时,处于等待状态,直至发送节点会话结束后,重新开始新的一轮随机退避定时;
[0012] 接收节点若不是目标节点,则无需构造应答帧,但仍然需要根据所接收到帧的类型,决定自己应该处于等待状态还是定时状态;若处于等待状态,则设置等待状态结束的触发条件;若处于定时状态,则需要计算定时的长度;并且在每一次定时期满之前,若收到同一发送节点新的会话帧,则定时器复位并重新启动定时。
[0013] 还包括IP地址分配方案,即无类域间路由地址方案CIDR172.16.0.0/24;即:子网掩码255.255.192.0,A相从172.12.1.0到172.12.63.0共63个子网,254个主机;B相从172.12.64.0到172.12.127.0共64个子网,254个主机;C相从172.12.128.0到172.12.254.0共128个子网,254个主机;在三相四线制中,每个相位上的主动节点所在的网络地址是所有子网地址中最小的,其主机地址又是其所在子网中最小的;
[0014] 在IP组网过程中,主动节点初始化后或收到IPack帧后,立即发出hello帧,并启动较长的定时;收到IPreq帧后,发出IPassign帧,此定时复位,启动较短的定时,此定时与期望收到的IPack帧时间的相匹配;发出p2p帧后,则启动与期望收到的帧长度匹配的定时;
[0015] 主动节点先为自己的所有邻居节点分配自己所属子网的IP地址,若较长的定时已满,仍未收到收到IPreq帧,则结束其寻找邻居节点并为其分配IP地址的过程,然后对其邻居节点,按IP地址由小到大的次序,逐一用hello帧轮询,hello帧中的网络地址也对应于邻居节点的IP地址由小到大逐一递增,被轮询到的节点,由于已经有IP地址,所以不再发出IPreq帧,而是,以新的子网地址,发hello帧,寻找它自己的邻居节点;其它未被轮询的邻居节点,收到此帧后,处于等待状态,直到被主动节点轮询到为止;
[0016] 若一个子网的被轮询节点找到了其下层邻居节点,则它与其所有的下层节点形成一个新的子网,网络IP地址就是被轮询帧中IP地址;被轮询节点既具有上层子网中一个主机地址,也具有新子网中最小的主机地址,因此,它就是两个子网之间的网关节点,并且负责维护两个子网之间的路由表;
[0017] 与被轮询的节点属于同一子网,但还未被轮询到的节点,也可能收到被轮询节点寻找其子层邻居节点的hello帧,通过对被轮询节点所发的帧计数的方法,最先达到规定计数值的所有节点,启动一个随机退避定时,在退避定时到后,申请加入被轮询节点的下层子网;若成功加入,则它具有两个子网的IP地址,从而与被轮询节点一样,成为两个子网之间的网关节点,将具有两个IP地址的节点数目,限制在一定范围内;当子网内节点的目标节点不在本子网内时,它可以任意组播一个含外网网络地址的通信帧,具有此外网网络地址的网关簇节点,启动退避定时,定时最短的网关节点,负责转发这次通信,其它网关簇节点复位其定时器,重新出于等待状态;
[0018] 成为网关簇的节点,也负责维护两个子网之间的路由表,当它被轮询时,不再以新的网络地址发hello帧组网,而是立即以一个应答帧回复轮询节点,以便轮询节点轮询其下一个邻居节点,这样直至组网完毕。
[0019] 每个节点中至少同时运行着一个服务器进程和一个客户机进程;主动节点中运行着服务器进程用来侦听其它节点的连接,并在连接后提供所请求的服务,其它节点中运行着客户机进程,用来向主动节点请求服务,同样,主动节点中可运行着客户机进程,而每个节点中运行着服务器进程,用来接收主动节点的查询,主动节点向特定的节点发起查询,而特定节点中的服务器进程提供给所查询的信息。
[0020] 采用本发明提出的IP组网方法,使同一台变下、同一相线上、能够可靠通信的窄带电力线载波通信节点,构成一个IP子网。不能可靠通信的节点,分属于不同的子网,依靠子网之间的网关节点通信。两个子网之间的网关节点不是由一个节点构成,而是由多个节点构成的网关簇,进一步提高了通信的可靠性。

附图说明

[0021] 附图1为本发明中窄带电力线载波通信节点的内部软件结构图;
[0022] 附图2为本发明中窄带电力线载波通信帧结构图;
[0023] 附图3为本发明中相位与子网的网络地址对应关系图;
[0024] 附图4为本发明中物理层驱动框图。

具体实施方式

[0025] 下面通过附图和例子,对本发明的技术方案做进一步的详细描述:
[0026] 图1为本发明提出的通信节点的内部软件结构图,其中模块10是窄带电力线载波通信芯片的驱动程序,它不是本发明的一部分,依赖于芯片提供商。此驱动程序的实现要根据芯片商提供的数据手册,把MAC层来的要发送的数据,放到芯片的发送缓冲寄存器;也通过中断或查询,把芯片的接收缓冲寄存器中的内容,取出送给MAC层处理。其框图如图6所示。
[0027] 图1中的模块20是本发明用软件的方法实现了CSMA/CD功能;模块30是本发明所移植的TCP/IP协议,TCP/IP协议不属于本发明申请保护的内容。此部分相关的帧的设计、IP组网方法是申请保护的权利。为了实现模块20、模块30的功能,本发明设计了一些申请保护的数据帧格式。此窄带电力线载波通信IP组网算法不针对任何载波芯片,因此,与此算法对应的帧格式,只限于载波芯片通信帧的用户数据区。具体特征是用户数据区的第一个字节表示的是帧类型。帧类型包括IP组网算法所用到帧、网络管理帧及普通点对点通信所用到的帧。申请保护的帧类型有:
[0028] ●组网广播帧hello, 0x01;
[0029] ●IP地址请求帧IPreq, 0x02;
[0030] ●IP地址分配帧IPassign, 0x03;
[0031] ●IP地址确认帧IPack, 0x04;
[0032] ●组播帧multicast, 0x05;
[0033] ●组播应答帧multicastrep, 0x06;
[0034] ●点对点请求帧P2Preq, 0x07;
[0035] ●点对点应答帧P2Prep, 0x08;
[0036] 各类帧的数据域结构如图2所示。
[0037] 软件实现的随机退避原理如下:
[0038] 任何节点发送之前,都处于接收状态,检测是否接收到有效帧的同步头字节。
[0039] 所有收到同步头子节的节点,都要保持接收状态,继续接收直到长度字节,然后根据长度字节,判断此帧是否全部接收完毕;
[0040] 根据所接收帧中的帧类型字节,判断所接收的帧是广播帧、组播帧还是点对点通信帧,并据此判断目标节点是否是自己,无论是否是自己,都要根据帧类型及帧长度,判断自身应该等待的时间,然后启动定时器,等待这个时间长度,并继续保持接收状态;
[0041] 发送节点发送完毕后,切换到接收状态,并等待应答。同时启动一个定时器,判断应答帧是否在规定的时间内到达;每接收一个应答帧,此定时器复位并重新启动定时;若定时期满后仍无应答,则根据会话的性质,确定下一步应该采取的措施。
[0042] 接收节点若是目标节点,则需要构造应答帧。若目标节点是单个,则它立即构造应答帧并发送;而其它所有在通信双方有效距离内的节点,都根据通信语义及帧长度,等待相应的时间。若目标节点是多个,则各节点根据退避算法,形成一个随机的退避时间,在此时间内,仍处于接收状态。最早结束退避时间的节点,切换到发送状态,发送帧同步字节;其它仍然处于退避期的节点,收到此同步头后,结束此轮定时,处于等待状态,直至发送节点会话结束后,重新开始新的一轮随机退避定时。
[0043] 接收节点若不是目标节点,则无需构造应答帧。但仍然需要根据所接收到帧的类型,决定自己应该处于等待状态还是定时状态;若处于等待状态,则设置等待状态结束的触发条件;若处于定时状态,则需要计算定时的长度;并且在每一次定时期满之前,若收到同一发送节点新的会话帧,则定时器复位并重新启动定时。
[0044] 在IP组网过程中,主动节点初始化后或收到IPack帧后,立即发出hello帧,并启动较长的定时;收到IPreq帧后,发出IPassign帧,此定时复位,启动较短的定时,此定时与期望收到的IPack帧时间的相匹配;发出p2p帧后,则启动与期望收到的帧长度匹配的定时[0045] IP地址的分配方案采用CIDR(无类域间路由)地址方案,以解决子网数和主机数不平衡的问题。决定采用172.16.0.0生成子网和主机IP地址。172.16.0.0是一个属于C类的保留地址,用于Intranet主机编址。决定采用的子网掩码是255.255.255.0,这是一个B类的定制子网掩码(非标准子网掩码,B类的标准子网掩码是255.255.0.0)。以上子网和IP编址方案用CIDR表示就是:172.16.0.0/24。这种方案生成的子网数是254个,每个子网上可容纳的主机数是254个,完全可以满足单台变下载波节点通过TCP/IP进行通信的需求。每一相位上的载波模块单独组网,分配给不同的网络地址,相位与子网的网络地址对应关系如图3所示。
[0046] 每个相位上的主动节点所在的网络地址是所有子网地址中最小的,其主机地址又是其所在子网中最小的。例如A相主动节点所在的网络地址是172.16.1.0,其主机地址是172.16.1.1;B相主动节点所在的网络地址是172.16.64.0,其主机地址是172.16.64.1;C相主动节点所在的网络地址是172.16.128.0,其主机地址是172.16.128.1。
[0047] 图4结合随机退避功能,说明了本发明提出的IP组网算法。其中 是所在相位的主动节点,虚线圆弧是它发出的通信帧能够覆盖的范围,此圆弧内的节点收到hello帧后,都要启动随机的退避定时;★是收到hello帧后最先结束退避定时的节点, 是未参与此轮通信的节点。最后的虚线圆圈表示所形成的每个IP子网,它们的重叠部分是网关簇节点。它们经过上层节点轮询而生成,具体过程为:主动节点先为自己的所有邻居节点分配自己所属子网的IP地址。若较长的定时已满,仍未收到收到IPreq帧,则结束其寻找邻居节点并为其分配IP地址的过程。然后对其邻居节点,按IP地址由小到大的次序,逐一用hello帧轮询,hello帧中的网络地址也对应于邻居节点的IP地址由小到大逐一递增。被轮询到的节点,由于已经有IP地址,所以不再发出IPreq帧,而是,以新的子网地址,发hello帧,寻找它自己的邻居节点;其它未被轮询的邻居节点,收到此帧后,处于等待状态,直到被主动节点轮询到为止。
[0048] 被轮询的邻居节点确定其下层邻居节点的定时长度及步骤,类似于主动节点寻找其邻居节点的定时长度及步骤。即:若较长的定时已满,仍未收到收到IPreq帧,则结束其寻找邻居节点并为其分配IP地址的过程。不同之处是:它要对轮询节点回复一个应答帧,以便轮询节点轮询其下一个邻居节点。
[0049] 若一个子网的被轮询节点找到了其下层邻居节点,则它与其所有的下层节点形成一个新的子网,网络IP地址就是被轮询帧中IP地址。被轮询节点既具有上层子网中一个主机地址,也具有新子网中最小的主机地址,因此,它就是两个子网之间的网关节点,并且负责维护两个子网之间的路由表。
[0050] 与被轮询的节点属于同一子网,但还未被轮询到的节点,也可能收到被轮询节点寻找其子层邻居节点的hello帧。通过对被轮询节点所发的帧计数的方法,最先达到规定计数值的所有节点,启动一个随机退避定时,在退避定时到后,申请加入被轮询节点的下层子网。若成功加入,则它具有两个子网的IP地址,从而与被轮询节点一样,成为两个子网之间的网关节点。将具有两个IP地址的节点数目,限制在一定范围内。这样,两个子网之间的网关节点形成一个网关簇,提高了通信的可靠性。当子网内节点的目标节点不在本子网内时,它可以任意组播一个含外网网络地址的通信帧,具有此外网网络地址的网关簇节点,启动退避定时,定时最短的网关节点,负责转发这次通信,其它网关簇节点复位其定时器,重新出于等待状态。
[0051] 成为网关簇的节点,也负责维护两个子网之间的路由表。当它被轮询时,不再以新的网络地址发hello帧组网,而是立即以一个应答帧回复轮询节点,以便轮询节点轮询其下一个邻居节点。这样直至组网完毕。
[0052] 应用层的拓扑形式为对等网,即每个节点中至少同时运行着一个服务器进程和一个客户机进程;服务器进程用来侦听其它节点的连接,并在连接后提供所请求的服务。客户机进程用来向特定的节点请求服务。例如:在抄表应用中,每一相上的主动节点,可以是集中器上的一个载波节点,其中运行着用于收集电能表用电信息的服务器进程,也运行着用于收集主动上报信息的服务器进程;每个电能表中的载波节点中的客户机进程,知道它的IP地址(如集中器在A相上的载波节点的主机地址是172.16.1.1;在B相上的载波节点的主机地址是172.16.64.1;在C相上的载波节点的主机地址是172.16.128.1),也知道它用于收集电能信息的服务端口,因此,发起连接,把电能信息汇报给集中器;也知道它用于收集主动上报信息的的服务器进程,发起连接,主动上报有关信息。
[0053] 同样,主动节点中可运行着客户机进程,而每个节点中运行着服务器进程,用来接收主动节点的查询。主动节点向特定的节点发起查询,而特定节点中的服务器进程提供给所查询的信息。
[0054] 以下为本发明中IP组网流程;
[0055]