微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 电力线通信自动抄表系统中的电能表捕获算法

电力线通信自动抄表系统中的电能表捕获算法

时间:06-26 来源:互联网 点击:
基于电力线通信(PLC)的自动抄表(AMR)应用在我国已有十多年历史。近几年来,技术的发展重点从点对点通信能力转向了网络系统能力,从而使自动抄表产品达到了实用的程度。目前,自动抄表技术正处于从小批量应用转向大面积推广的阶段。在这一阶段遇到了一些阻力。例如互联互通、模块互换等问题已经引起了业界的充分注意,并在国网公司的协调下制定了初步的可行解决方案和计划。但是,还有一些现实的问题未被充分注意和讨论,而这些问题有可能成为抄表系统大批量应用的瓶颈。本文着重讨论配电台区与电能表的管辖关系问题,它涉及到系统初始的施工量和日常的维护量。
1 典型的PLCAMR体系
典型的PLCAMR体系由三级系统构成:主站、集中器和电能表终端。主站负责管理全局的集中器与电能表信息,可通过光纤、GPRS、公话网或其他方式与集中器通信;集中器一般每个配电台区安装一个,管理所在台区的全部电能表,其日常工作是通过电力线通信采集各电能表数据;电能表负责计量用电户的各类用电量。
当前的集中器虽然不同程度地具备了自学习路由知识和自组网络的能力,但还不能基于纯零知识开始工作。只有在了解了要管辖的电能表编号及其计量项目后才能工作,这就要求电力营销部门理清配电台区的用电户档案,尤其是电能表编号,通过主站将这些资料下发到台区集中器,才能启动自动抄表。同样,在抄表系统运行过程中,当台区内发生更换电能表、新增用电户或者台区之间发生线路切换等业务时,必须及时正确地维护集中器中的用户资料。由于电力公司通常是按照面向人工抄表的习惯划分组织用户资料(例如按街道顺序组织),理清配电台区与用电户的关系往往需要耗费很大的人力。所以经常因为台区集中器装入了错误的表号而导致费时费力的现场排查工作,尤其对于用电历史长的老城区,理清电能表与台区的关系极其困难,成为普及自动抄表技术的关键瓶颈。
解决上述问题的本质在于系统能够从零知识开始工作。所谓零知识是指初始时主站只知道有哪些配电台区和集中器,但是并不清楚哪些电能表属于哪个台区的集中器;集中器仅知道自己的编号(ID),但不知道有哪些,有多少电能表隶属自己;电能表仅知道自己的编号(还有自己的计量项目),但不知管辖自己的集中器是谁。
在上述条件下,要求集中器能够自动获取所在台区已经安装的全部电能表表号(及其可抄读数据项)。在对等网络中这一要求较容易满足,因为对等网络的任意节点都可以主动地启动通信业务,只要配以载波冲突检测和随机回避等待机制即可完成主动注册任务。但目前国家电网关于自动抄表的通信协议都是主从结构的,电能表作为通信节点只有被动应答的能力,不能主动发起通信任务[1-4]。为了适应主从体系结构,本文设计了专门的电能表捕获算法。该算法的优点在于不需要额外的空间资源,线性时间,倘若台区内有n个电能表,算法可在O(n)次报文跳转时间内完成搜索任务。
2 表号捕获算法
假设电能表编号的区间为[a,b](实际应用中a=0,b=1012,或者说是6 B的BCD码)。表号捕获算法的核心思想比较简单,有2点:
(1)对于给定的表号区间I=[a,b],利用报文冲突判断出3种情况:在区间I中恰有1只电能表;在区间I中无电能表;在区间I中存在多只电能表。
(2)利用二分搜索技术快速缩减查找空间。
以下分4个子节描述基于上述思想的表号捕获算法。为了简明本文略去实现细节。在以后的叙述中,集中器和电能表统称为节点。
2.1 判定给定区间的邻居分布情况
首先定义一种查询报文Q={IDsource,a,b}。其中IDsource为报文源节点(发出者)的编号,IDmin≤a≤b≤IDmax。报文Q向编号在区间[a,b]内的节点发出查询请求,凡是编号在此区间的节点(即编号IDme满足a≤IDme≤b的节点)收到该报文后立即回应一个报文R={IDme,r},报出自己的编号IDme和自己的属性r。
定义了以上2种报文,节点IDsource判定给定区间[a,b]的邻居情况的方法是依靠区别冲突信号与背景噪音的能力。这种能力是指当有多个节点同时发送报文时,接收节点虽然由于报文冲突不能正确地收到任何一个报文,但不会和无报文(线路上只有背景噪音)混为一谈,接收者能够根据冲突信号与背景噪音的特征差异判断出有多个报文同时到达并造成了冲突。正如当多人同时讲话时,可能听不清楚任何一个人说的内容,但能够断定有多人在讲话。如果PLC的物理层能够将冲突信号与背景噪音区分出来,则一个节点IDsource就可以发送报文Q={IDsource,a,b},然后利用载波侦听判定其周围节点的编号。在给定编号区间[a,b]内的3种分布情况为:
(1)正确完整地侦听到一个报文R={IDme,r}:说明存在编号为IDme的节点,且是唯一的一个编号在a和b之间的节点。
(2)未能正确地侦听到任何一个报文,并且线路只有背景噪音:说明没有节点其编号在a和b之间;
(3)未能正确地侦听到任何一个报文,但是存在冲突信号:说明存在多个节点,其编号在a和b之间。
然而,目前的PLC技术还不能提供区分冲突信号与背景噪音的能力,从而分辨不清情况(2)、(3)。目前的低成本技术仅能做到接收到报文或者接收不到报文。在未收到报文时,区分不出是情况(2)还是情况(3)。对于低成本的载波芯片,实现这一功能目前还是一项极具挑战性的任务。在此,本文给出一个方法可绕过这一难题。该方法利用报文冲突实现这一功能,在收不到报文时,利用报文冲突进一步区分出是的确没有报文,还是由于多个节点同时发送报文造成了冲突。采用该方法需要付出额外的代价是:多一次报文应答过程;源节点需要事先知道一个确实存在的节点IDknown;需要定义一种新型的报文S={IDsource,IDknown,a,b}。
S型报文比Q型报文多了一个已知节点的编号IDknown,该报文的功能是令编号为IDknown的节点或编号处于a、b之间的节点收到该S报文后立即回应R型报文,报出自己的编号和属性。区分上述3种情况的算法如下:
算法1 WhoIn(a,b):
算法说明:该算法的输入是两个非负整数 a、b,使得[a,b]形成节点ID区间; 设运行该算法的节点的ID为IDsource,节点IDsource已知其一个邻居节点IDknown,算法要求IDknown不属于区间[a,b];该算法判定节点IDsource有一个、还是没有、还是有多个邻居其ID属于区间[a,b];对应这三种情况,算法分别报告唯一邻居的ID、或者ZERO、或者MANY。
send out a packet Q={IDsource,a,b}
wait for a packet R
if a packet R={IDme,r} arrived
then return IDme //*IDme is the unique neighbor
in[a,b]*/
else if a=b
then return ZERO
else send out a packet S={IDsource,IDknown,a,b}
wait for a packet R
if a packet R={IDme,r} arrived
then return ZERO //*Dme must be IDknown
and whose packet has not been
collided*//
else if no packet received
then return MANY //*IDme must have been interfered with some neighbors
in[a,b]*//
end if
end if
显然,该算法最坏情况下也能在4次报文跳转的时间内作出正确判断。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top