G3-PLC 学习历程

Context

好像很久很久没有更新博客了,最近事情确实太多了。新产品的app,教研室新项目,两个大头。还有毕业设计的开题,虽然我想好了题目,但是,磨人的开题报告,也是个很头疼的东西。

这次教研室的项目是电力线通信,使用G3-PLC协议,这也是第一次做一个偏硬件的项目了,一开始老师在问大家有没有兴趣的时候,还是蛮犹豫的,但是还是因为兴趣,决定搞一下试试。

花了几周的时间好好的熟悉了一下这个协议。在电力线通信的场景中,会有很多意想不到的情况。比如A->B是直连的,B->A就不能直连,需要绕一条路走。而且电力线网络的拓扑结构是会随时随刻在改变的,这一时刻你和他直连,下一时刻他就不见了。

对于这种物理层这么不可靠的连接,需要在它的基础上构建一个相对可靠的网络,还是比较麻烦的。G3-PLC借鉴了ZigBee的技术,并且引入了6LowPan技术,使得这个网络的可靠通信成为可能。

ZigBee?

ZigBee不是无线的嘛?

这电力线是有线连接的,竟然还需要用无线的协议。其实他们还是挺像的,ZigBee每个节点的发射功率有限,为了与不在射程范围内的节点进行通信,就只能通过其他节点来帮助它传递消息。电力线虽然说大家都是有线连接在一根主线(总线)(插线板)上,但是他的衰减比较严重,那么中间节点就需要充当一下”中继”,将收到的消息进行转发,以实现全网的通信。

6LowPan?

这个概念倒是很有意思,大家都知道ipv4的地址就要分配完了,所以赶紧推广ipv6是非常重要的,而物联网时代,网络节点的数量会比互联网时代大的更多,毕竟每个物联网外设都很便宜,他们要入网也需要一个地址来标识。大概是出于这一点的考虑,G3-PLC在设计的时候就引入了6LowPan,是一种有超大地址空间的一个协议。这个名字很奇特6LowPan,他的意思就是低功耗的,ipv6的,个域网。

为了低功耗,它甚至省去了很多数据,通过减少数据量来降低功耗,真是很拼。

Router

网络通信,最重要的一个部分,莫过于路由了。

G3-PLC的适配层用了LOADng协议,这个东西的资料比较的少。不过另一个东西的资料我在图书馆里找到了很多——AODV,是Ad Hoc网络中的按需询问的路由协议。LOADng是,新一代轻量级按需路由协议。

怎么个轻量级,我现在还真是说不准,按照我自己的猜想,这个轻量级只是减少了一些操作,少维护一些内容,数据发送频率低一些。

比如说,在刚加入网络的时候,AODV协议里需要节点对整个网络进行一下”摸索”,比如发送RREQ询问一下距离本节点x跳的各位节点,维护一张路由表。中间节点也会根据这个RREQ请求,自己建立一张表,在未来出现链路中断现象的时候可以发送RERR信息告诉上游节点,路线断了。

不过,按照我的理解,以及我对官方给的非常简略的协议的理解,以及我对借的各种书的理解,我觉得这个低功耗大概是第一次获取路由的时候只获取一跳的节点、出现断路不通知、之类的操作。通过这一系列的优化来达到轻量级低功耗的目的。

Oops…

其实在理解这个协议的时候还是走了不少弯路的,比如我一直无法理解自己的地址是怎么来的,直到我明白了这个系统有coordinator和device两种设备。我一直不知道我怎么获取别人的地址,知道我想明白,这个地址不用我们获取,而是上层指使就好了。

这个项目从最早的无从下手,到现在感觉有把握了。我觉得自己还是学到了不少新东西,说明自己还没有老。作为一个学生还是要有这种学习能力的嘛~

下面大概要好好研究一下Keil和嵌入式开发了!