G3PLC

Context

最近实在是忙爆了,终于有时间来更新两篇文章了!

去年教研室的G3PLC项目,终于在我们加班加点后,赶出来了。

我们负责在原有功能上增加路由功能,也就是LOADng。

Route Table

LOADng是一个轻量级的协议,传输的数据都是必须要的最小量。

比如,路由表里存的每一条都只有去目标节点的下一跳。发送也是,将数据发送给下一跳后,便假装自己已经发送完毕了。

每次单播数据都需要ack确认,如果多次重发没有获得ack,那便意味着发送不成功,该条路线出现了故障,于是便开启路由修复,修复成功后,再次发送。

感觉每一个操作都很简单。

Blacklist

黑名单是LOADng用来进一步降低消耗的一个措施。

在电力线路中通信,经过实验,有时候通信并不是双向的。有时候真的只能发出去,但是收不到。

所以有了blacklist之后,明明收到了一条消息,但是发现他在黑名单中,就不会直接原路发送应答,而是会选另一条路去应答。

Route Error

路由错误,这里有个坑儿。一开始我觉得每一个错误路由都可以删除其相关的路由。

比如,我收到了一条A结点不可达的rerr信息,那么按理说我应该把所有需要路过A的路由都删掉。可是在日本测试中,他们却认为只要删除收到的rerr即可。

End

时隔差不多一个月才想起写这一篇。剩下的内容还得再温习一下,再写~