1. 概述
1.1 什么是PLC
电力载波通讯即PLC,是英文Power line Carrier的简称。 电力载波是电力系统特有的通信方式,电力载波通讯是指利用现有电力线,通过载波方式将模拟或数字信号进行高速传输的技术。最大特点是不需要重新架设网络,只要有电线,就能进行数据传递。
名词解释:
相位:CCO在所有相线上工作,STA只在一个相线上工作,不同相位具有不同的过零时间,CCO通过采集STA的过零时间确定STA的相位
TDMA:时分多址传输,设备独占间隙,数据包根据指定时间进行发送
CSMA/CA:载波侦听多路访问/冲突检测,设备共同占有间隙,判断信道空闲,竞争进行发送
直连站点:
当描述站点B为站点A的直连站点时,一般是指站点B与站点A之间可以直接通信,不需要中继
子站点:
当描述站点C为站点A的子站点时, C一般为需要通过A来与CCO完成通信的A的所有子孙站点中的一个
直连子站点:
当站点D为站点A的直连子站点时,说明站点D既是站点A的直连站点,也是站点A的子站点
2. PLC网络参数
2. 1 PLC网络特性
- 单相电路接线
2.三相电路接线
2.2 网络时间参数
2.3 数据链路分层
应用层:实现本地和远程通信单元之间的数据交换,并根据数据链路层进行数据传输。
网络管理子层:实现宽带载波通信网的组网、网络维护和路由管理;对应用层报文进行聚合和分发。
MAC子层:基于两种信道访问机制竞争物理信道。载波侦听多路访问与冲突避免(CSMA/CA)和时分多路访问(TDMA),提供可靠的数据传输。
物理层:对MAC子层报文进行编码、调制后发送到电力线,或者从电力线接收宽带载波信号解调后发送到MAC子层。
3. PLC网络机制
3.1 PLC网络的建立
CCO上电后,首先启动邻居网络监听定时器,进行一段时间的网间协调帧的监听, 以便发现是否存在邻居网络;如果CCO在监听的时间段内,收到邻居网络的网间协调帧,则与邻居网络进行协调, 协调成功后开始发送中央信标,启动组网;
3.2 PLC组网
无论是处于多网络环境还是单网络环境,每个网络的组网过程是一致的,都是一个单独网络的组网过程。
单独组网的过程,主要是CCO通过发送中央信标和安排发现信标发送,以及代理信标的发送,触发逐层级的STA的网络接入请求,来完成整个组网过程, CCO需要给已经入网的STA站点分配TEI, CCO的TEI固定为1,广播报文TEI为0xFFF,本标准CCO分配TEI范围为1~1015,其它地址作为保留,后续扩展使用
CCO在中央信标中,需要安排信标TDMA时隙和CSMA时隙。信标TDMA时隙,是用来指示CCO,PCO,或者STA发送信标。 CSMA时隙,用于让CCO周围的一级站点,向CCO发起关联请求报文,请求接入网络;或者在CSMA时隙中, CCO等发送关联确认,关联汇总指示等报文
3.2.1 PLC组网过程
1、CCO上电后(跟其他网络进行协调,完成后)周期性广播Central Beacon包。
2、第一级设备(能收到Central Beacon包的STA),根据包的内容在对应的CSMA时隙发送关联请求包,CCO会在CSMA时段监听,接收到关联请求后,通过白名单进行身份认证,CCO可以将关联请求的处理结果,通过发送关联确认报文或者关联汇总指示报文告知给STA,形成一级网络。(如果未收到关联确认或者关联汇总指示报文,可以重新发起关联请求;如果入网请求被拒绝,则STA可以根据重新关联时间,等待一段时间间隔后,再次请求入网,也可以选择另外一个网络(切换NID),请求加入网络)
3、第一级网络建立后,CCO会在下次周期的Central Beacon分配Proxy Beacon时隙安排已经入网的第一级设备发送Proxy Beacon 包或者Discover Beacon包(携带中心包的所有时隙分配),第二级设备收到Beacon 包后,也在对应的CSMA发送关联请求,由PCO代发给CCO,CCO的关联确认包也通过PCO进行转发到STA。
3.2.2 PCO的选定
STA收到并解析信标时隙时,发现CCO安排了信标时隙,指示其发送代理信标,则该STA站点,需要设置自己的角色为PCO,并且需要按照CCO的安排时隙,进行代理信标发送。当一个站点成为PCO后,每个信标周期中, CCO都会安排其发送代理信标
注:关联确认报文, 以及关联汇总指示报文,都只能在CSMA时隙中进行发送。
3.3 单网络如何工作
PLC整个网络参数基于Beacon帧,整个网络通讯以一个Beacon周期为一个单位
CCO上电后广播周期性发送Centrl Beacon包携带整个网络设备的BEACON/TDMA/CSMA时间片以及子设备beacon包转发的时间
BEACON 时间片用于CCO PCO STA发送beacon包的时间
TDMA用于发送特定业务包
CSMA和Bind CSMA用于整个网络下设备竞争帧的时间段(入网请求,入网应答都在CSMA)以及特定业务包(在Bind CSMA)
整帧的周期:
1. Beacon timeslot
Central Beacon:
由CCO生成。
1)包含NTB(网络基准时间32位),并使用信标帧中的BTS(时间轴)字段实时通知网络上的STA,
2)包含由CCO决定的时隙分配结果,而CCO决定了sta用于访问信道的模式和时隙在单个IEEE 1901.1网络上,Central Beacon定期发送,发送间隔可以由用户定义。
Proxy beacon:
由PCO生成,包含Central Beacon的所有时隙分配,并携带PCO的子集STA信息,发送的时隙由Central Beacon指定。
Discovery Beacon:
由STA生成,包含Central Beacon的所有时隙分配,发送的时隙由Central Beacon指定。
未入网的的STA收到3种Beacon包后都会根据包里的CSMA时隙发送入网请求包入网,CCO也在CSMA时隙中应答入网结果
2. TDMA timeslot
时间分配序列号跟beacon包复用,特定业务使用
3. CSMA timeslot
信标帧的CSMA时间段为单个相线CSMA时间段,网络层包的发送接收
4. Bind CSMA timeslot
信标帧的CSMA时间段为单个相线CSMA时间段,分割算法同上,特定业务使用
3.4 时序分配机制
一个宽带载波通信网络中的所有设备必须同步到一个共用的时钟。
CCO必须维护一个32位的计时器,叫做网络基准时间(Network Time Base,NTB)。它的时钟由 CCO的25MHz时钟提供。 NTB由在CCO在中央信标中BTS字段发送给设备,每个STA 设备必须同步到这个NTB。
所有STA设备都应该在本地维护一个32位的计时器,叫做NTB_STA,这个 计时器在频率和绝对值上应该与CCO的NTB保持同步。NTB的同步通过接收CCO的中央信标,或者代 理的代理信标来完成。 同步到CCO的NTB的主要作用是以此为基准,解析CCO的时隙分配,从而能够达到全网站点对时隙分配的统一理解和使用。
同时NTB的同步,可以用于物理层的时钟同步,以便能够正确的发送报文信号和解析报文信号。
整个传输周期中各个时间间隙的基于NTB和时隙大小按序列号往后推移
Beacon帧中的主要参数:
时间间隙分配:
3.5 多网络如何工作
3.5.1 多网络中CCO通过白名单对网络进行隔离
协调机制
当存在多个网络时,CCO需要完成NID协商,确定自己的NID防止多个网络使用同一个NID,并确保网络的独立性。(NID一样时,MAC较小的先改变,MAC大的继续保持30分钟,如果30分钟后冲突还在,就改变)
CCO需要协商信标时隙,防止不同网络使用相同的Beacon timeslot
信标帧用于维护IEEE 1901.1网络。当发送不同类型的信标帧时,不同的IEEE 1901.1网络需要占用不同的信标时隙。
协调帧需要在各自网络的CSMA期间发送
发生冲突时
分配机制
1. 谁先完成谁优先使用下一次时间
2. 如果B没收到A的协调包,A收到B的协调包,让B优先使用
网间协调帧
1) 持续时间,持续时间是一个16比 特的字段,表示本网络需要申请占用的时隙长度,单位:1毫秒。
2) 带宽开始偏移,下个带宽时隙开始时 刻的时间偏移,单位:1毫秒,当下个带宽时隙未开始时,该偏移时间表示从当前时刻,到下个带宽时 隙开始时刻的时间偏移,当下个带宽时隙已经开始时,该偏移时间的值为0。
3) 接收到邻居网络号,能够 接收到邻居网络的网络号,表示本网络能够接收到该网络的信号,每次发送多网络协调帧时携带一个邻居网络号,通过多次发送,告知周边邻居网络本网络可接收到的邻居网络。
3.6 路由机制
3.6.1 路由的建立
路由的创建,主要依靠发现列表报文,关联请求报文,关联确认报文,代理变更请求报文,代理变更请求确认等报文中携带的信息进行创建。
3.6.1.1 路由表项
- IEEE1901标准路由条目
2. 实际PLC拓扑网络的路由表
从海思提供的工具HiAssistant获取到的路由信息中总结:
- 低等级的设备拥有到所有比自身高等级的设备路由
- 高等级的设备没有比自己低等级设备的路由除了CCO
注:CCO为最低等级,STA5为最高等级
3.6.1.2 关联请求报文
1.报文格式
2. 形成的路由表项
通过关联请求报文, CCO可以形成到达请求入网站点的间接路由
3.6.1.3 关联请求确认报文
1.报文格式
CCO在关联确认报消息中会携带与关联入网站点相关的路由信息。该信息中包括新入网站点的所有直连STA站点和直连代理站点以及代理站点的所有子站点
2. 形成的路由表项
1)通过关联确认报文,各级代理站点可以形成或者刷新到达请求入网站点的间接路由,同时,也可以形成到达请求入网站点的所有子站点的间接路由,因为关联确认报文中, 路由表信息携带了请求入网站点的所有直连站点和直连站点的子站点。 关联确认报文需要逐级代理进行转发。
注:刚入网的STA为什么会有子节点存在
2) 通过关联确认报文,新入网站点,根据CCO告知的路由表信息表项,可以形成所有子站点的直连路由,以及到达直连子站点的子站点的所有间接路由
3.6.1.4 代理请求报文
2. 形成的路由表项
通过代理变更请求报文,代理站点可以形成到达请求变更站点的直连路由;上级代理在处理转发代理变更请求报文的过程中,也可以形成到达请求变更站点的间接路由。同理, CCO和各级代理都能形成到达请求变更站点的间接路由。
注:代理请求变更的设备,路由已经要发生变更了,是否还有必要生成路由
3.6.1.5 代理变更请求确认报文
1. 报文格式
包含子站点信息,即代理变更请求发起站点的所有子站点的TEI
2. 形成的路由表项
代理变更确认报文和关联确认报文的原理一样,可以使得各级代理站点形成到达其所有子站点的路由
3.6.1.6 发现列表报文
1.报文格式
2. 形成的路由表项
通过发现列表报文,既可以形成直连路由表项,因为能够接收到某站点的发现列表报文,意味着该站点就可能是本站点的直接邻居;也可以形成间接路由表项,因为发现列表报文中,携带着发送发现列表报文站点的所有邻居站点,这些站点未必是本站点的邻居
注:各级站点到达CCO的路由表项形成原理相对简单,当选定一个代理时,那么到达CCO的路由下一跳就可以缺省是代理站点,代理站点会把子站点的报文尽力的转发到CCO,通过代理站点的代理。
3.6.2 路由的维护
在组网过程中以及网络维护的过程中,全网站点最关键的目标就是维护实时的路由表项。路由包括STA站点到达CCO的路由,也包括从CCO或者低层级站点到达最大层级的STA站点的路由。
3.6.2.1 动态路由维护
动态路由维护,主要是指网络中的站点,需要实时的判断周边邻居站点的信道情况,选择更好的代理站点。
组网过程中:站点可以通过信标帧判断周围站点的信道质量
组网完成后:网络中主要的维护报文就是发现列表报文和信标帧,各级站点可以通过判断接收邻居站点的发现列表报文和信标帧的情况,以及邻居站点的变化情况选择更好的代理
1. 代理变更流程
1)当STA站点评估出一个新的代理站点时,可以通过代理变更请求报文,向CCO发起代理变更请求。
2)CCO根据网络拓扑的组成,可以在STA站点申请的备选代理中指定一个站点,作为STA站点的新代理(当CCO判断变更后的网络拓扑层级会超过层级上限(最大支持15个层级)时,不会响应代理变更请求,并且不会发送代理变更请求确认报文)
3)当一个新代理PCO被确认后, CCO需要发送代理变更确认报文,将STA站点以及新代理PCO的情况,通过逐级代理转发给请求代理变更的站点
4)逐级代理在转发代理变更确认等报文的过程中,可以通过该报文中的“子站点条目”等信息,实时的刷新到达“子站点条目”中站点的间接路由
5)STA站点最终也可以根据“子站点条目”信息,刷新本地的直接路由和间接路由
注:在组网完成后,网络维护的过程中,全网站点的路由表项,主要通过代理变更的过程来完成实时刷新
3.6.2.2 数据的路由过程
1. 树形网络路由过程
实际搭建的PLC网络拓扑如下:
1)STA7发送数据到STA5
根据文档和海思沟通且经过实际测试:互相处于同一发现列表的STA可以直接进行通信无需中继(直接路由)
获取到的STA7的发现列表如下:
获取到的PCO3的发现列表如下:
根据以上信息STA7->STA5的数据传输路径:
STA7-> PCO3 ->PCO4->STA5
注:STA5虽然能收到STA7的数据但是MAC地址为0
2) STA5发送数据到STA7
根据文档和海思说法,高层级的设备数据要发送到低层级的设备只需要往代理节点转发(高层级设备没有低层级设备的路由)就可到达CCO再由CCO进行转发,但是经实际测试STA7收不到STA5发过来的数据。针对此问题我们做了PCO3<->STA5的双向数据传输测试
3)PCO3发送数据到STA5
跟STA7->STA5测试结果一样
4)STA5发送数据到PCO3
PCO3无法收到STA5的数据,针对此问题海思解答STA5和PCO3上下行通信成功率比较差,但是我们分别过PCO3/PCO4的双向数据传输和PCO4/STA5的双向数据传输都是正常的且上下行通信成功率分别为46%,13%。
综上:STA5的数据完全可以通过代理转发到达PCO3,所以怀疑海思SDK可能有问题
2. mesh网络路由过程
在PLC网络组网完成后将CCO拿掉,系统会自动组成mesh网络,经测试在上述拓扑中将CCO拿掉STA5与STA7就可以正常通行,恢复时间为0-3分钟左右
3.6.2.3 路由实时修复
站点在转发业务数据时,如果周期性评估的路由无效或者无路由时,可根据业务报文的触发,发起实时的路由修复,以便发现到达业务报文的最终目的地址的实时路由
1. 路由修复相关帧格式
1) 路由请求报文
2) 路由请求确认报文
3)路由应答报文
4) 链路确认请求报文
5) 链路确认回应报文
2.路由修复过程
1)站点O发起路由修复时,以洪泛的形式发送路由请求报文(MMeRouteRequest),对最终目的节点进行搜索
2) 被路由请求报文所搜索的最终站点,在接收到路由请求报文后,需要组织路由回复报文 (MMeRouteReply),并将路由回复报文,以单播报文的形式发送至路由请求报文的发起站点。
站点在转发路由回复报文时,可以使用链路确认请求报文(MMeLinkConfirmRequest),发起链路评估,以便确定路由回复报文的下一个目的站点,过程如下图:
a)STA7发送链路确认请求报文,发起链路评估
b)STA4/STA5/STA6收到链路确认请求报文后,在评估本地的相关路由数据后,确定是否发送链路确认回应报文(MMeLinkConfirmResponse),通过链路回应报文, 携带相关的链路信息, 回应给链路确认报文的发起站点
c)STA7接收到链路确认回复报文后,选择STA5为下一跳的站点,并将路由回复报文转发给下一跳的STA5
d)STA5重复STA7的过程形成新的路由路径
注:报文是广播还是单播
3)发起路由请求的站点在预定时间内收到了相应的路由回复报文,则该站点将向被搜索的最终目的站 点发送路由应答报文(MMeRouteAck),通知该最终目的节点。
3. 路由修复相关测试
系统拓扑如下图所示:
PCO3的发现列表:
STA5的发现列表
从PCO3和STA5的发现列表可知,STA5和PCO3互不为邻居节点,所以需要通过路由通信。
情况1测试:
- PCO3每个1秒向STA5发送数据
- 断开PCO4,STA5无法收到PCO3的数据,3-6分钟后STA5重新收到PCO3的数据
情况2测试:
- PCO3每个1秒向STA5发送数据
- 断开PCO2,STA5无法收到PCO3的数据,0-2分钟后STA5重新收到PCO3的数据
结论:从上述现象可知,STA6是STA5的邻居节点,所以通过路由修复是可以比较快速的恢复路由的,而PCO2不是STA5的邻居列表所以是没法比较快的恢复路由的
3.6.3网络状态维护
CCO需要实时的维护网络的状态,以便回收TEI资源,根据网络规模调整信标发送等。 CCO判断STA的状态有三种,已入网、离线、未入网
3.6.3.1 CCO 判断 STA 离线
- 如果在一个完整的心跳周期(两个路由周期)时间内, CCO发现某个STA站点的活跃次数为0,则CCO判断该STA站点离线。 CCO如果接收到来自判断为离线的STA站点的报文,可重新判定该STA站点在线
- 如果STA站点被CCO通知离线,则STA在离线后,可以重新申请加入网络
3.6.3.2 CCO 判断 STA 未入网
- STA站点处于离线状态,并且连续四个完整的心跳周期(八个路由周期)时间内, CCO接收到该STA站点的报文个数为0,则CCO判断STA处于未入网状态
- CCO如果接收到来自已经判定为未入网的STA站点的报文,需要主动指示该STA站点离线,可以创建离线指示报文,将离线STA站点的信息填充到报文中,进行广播发送,通知网络中的所有站点该STA站点离线。该STA站点执行离线动作后,可再次申请入网
注:STA离线再去申请入网网关不会收到入网事件
3.6.3.3 STA 离线与未入网区别
STA处于离线状态时,如果CCO收到该STA站点任何一个SOF帧,或其他站点携带上来的该STA的心跳报文,则CCO立即将该站点置为已入网状态(不在白名单内的站点除外)。
STA处于未入网状态时, CCO会将该STA站点的TEI等资源回收,该STA站点必须重新进行关联请求才能再次入网
3.6.3.4 STA 判断自己离线
STA站点自己也需要判断自己是否离线。如果STA判断自己离线后,则必须重新申请加入网络。
在以下情形中, STA站点可判断自己离线:
a) STA 站点在加入网络后,如果在一个完整的心跳周期(两个路由周期)内,收不到任何信标帧;
b) STA 站点在连续 4 个路由周期内,如果与代理站点的通信成功率为 0;
c) STA 站点收到 CCO 的“组网序列号”与自身记录的“组网序列号”不同;
d) STA 站点接收到离线指示报文,指示自己离线;
e) 一级 STA 站点,如果检测到 CCO 的 MAC 地址发生变化,且已经连续一个周期;
f) STA 站点发现本站点的代理站点角色变为了发现站点已经连续一个路由周期;
g) 本站点的层级超过最大层级限制(15 级),站点需要离线