计算机工程
COMPUTER ENGINEERING
1999年 第25卷 第12期 vol.25 No.12 1999



CEBus中的电力线载波网技术及改进
吴　刚　王伟艺　唐志强　陈章龙　涂时亮
　　用模拟技术在电力线上传递载波信号很早就有了。把电力线通信技术、网络、微控制器相结合，是在现有基础上推进家庭自动化的最现实途径。即以电力线为物理媒介，把分布在住宅各个角落的微控制器和家用PC机连成一个网络。其优点是：电力线和信号线合一，无须布设信号线，人们原来使用和维护电器的习惯都不受影响；家电无须增加双绞线、红外等接口，只要在内部配备电力线载波通信芯片，再更新程序就行了，对老式家电的改造也很容易；家电的信息量小，电力线载波速度慢的缺点不突出；除了家庭，它还可作为智能大楼的后备网络；由于底层功能实现了芯片化，接入设备比较便宜。目前市场上此类芯片有LM1893(国家半导体)、ST7536(SGS Thomson公司)、SSC-P300(Intellon公司)等。
　　美国Electronic Industries Association于1992年正式发布了针对家庭的电器联网标准CEBus(消费电子总线、家庭总线)，编号EIA-600；后又经过若干次修改，并一直受到EIA的下属组织Consumer Electronics Manufactures Association的大力推广。CEBus已获American National Standards Institute承认。
　　下面先简要介绍CEBus，再从硬件和策略两个角度提出改进思路。下文的"设备"指具有CEBus接口的家电。
1 CEBus 简介
　　CEBus是参考ISO的OSI七层模型[2]设计的，其基本架构和主要原语在图1中示出，可看出它比OSI模型要简单得多，但未来有可能增加传输层，实际上，CEBus的设计者考虑了多种媒体，包括电力线、红外线、无线电、双绞线、同轴电缆乃至光纤。本文的重点在于电力线(PL)。
　　MDP子层负责往电力线上发送信号，该子层还不间断地侦听电力线的状态。如果电力线上有载波，就说明电力线处于S状态，否则就处于I状态。显然，只要有一台设备试图使电力线处于S态(发送载波)，整条电力线就处于S态。载波的频率范围是100K到400K。SE子层用原语M_STATE.request通知MDP子层发送或不发送载波，而MDP用M_STATE.indication报告SE电力线的状态。假设MDP在不发送载波时发现电力线处于S态(侦听到别人的载波)，它会立刻拒绝SE要它发送载波的请求。

图1CEBus的架构和主要原谱
　　编/解码工作是在SE子层实现的。CEBus标准规定，当媒体是电力线时，SE子层还要能够查错。CEBus采用NRZ编码体制，用脉冲宽度表示信号。4种信号及其脉冲宽度是："1"(1UST)，"0"(2UST)，"EOF"(3UST)，"EOP"(4UST)。EOF即End of Field，EOP即End of Pocket。UST即Unit Symbol Time，是编码和解码的计时基准，由SE子层给出。1个UST在100微秒左右。MAC子层用PH_CC_DATA.request命令SE发出4种信号中的一种。但是，如果侦听到别人的载波，则SE用PH_CC_STATUS.indication向MAC报告"CHANNEL_ACTIVE"，并且等解码成功以后用PH_CC_DATA.indication报告别人发出的信号。
　　CEBus要求收到的包的正确率达到98%。整个物理层的功能已经芯片化，某些芯片还包括了数据链路层的功能。
　　MAC子层提供带或不带应答的无连接数据传送服务。如SE不负责查错，则MAC承担查错任务。MAC还要生成包的控制域，以标明包的类型、优先级、服务级别和序列号。优先级分3级，"高"级专门用于与人交互的进程和开环控制的进程，其他进程为"中"或"低"级。
　　LLC子层是个空壳，只转发命令，无实质性工作。
　　网络层负责路由、路桥(brouter)、确定网址、流量控制、给数据分段、丢弃无线媒体收到的重复包等。由于网络层已超然于媒体之上，所以要考虑信息的跨媒体传输问题。
　　应用层可以通过原语向网络层指明：优先级、是否需要应答、是否有网址、是否使用流量控制、路由方式、允许在什么媒体上传输、是否使用路桥以及路桥的网址等等。
　　由于CEBus覆盖了家庭中的一切传输媒体，所以有"路桥"的概念。路桥指能在无线媒体(红外线或射频)与有线媒体(电力线、同轴电缆、双绞线或光纤)之间转发包的设备。一台内藏微控制器、配备CEBus软件的电视是红外线和电力线之间的路桥，因为它和电力线相连，同时还使用红外遥控器。一台类似的无绳电话则是无线电、电力线和双绞线之间的路桥。跨媒体传输提高了网络的健壮性和灵活性，同时也使生活空前方便。例如，电视购物时可用电视遥控器发出指令，经红外线、电力线到家用PC，再由PC通过互连网发出购物信息，或在院子里用无绳电话经过射频、电力线打开空调。NPDU中可包含两个路桥的网址，配合"允许在什么媒体上传输"选项，为跨媒体传输提供了足够的灵活性。
　　路由方式有洪水路由(flood routing)和目录路由(directory routing)两种。
　　洪水路由：包向任何一个可能的地方转发，但受前述媒体和路桥的限制。
　　目录路由：包仅被位于传输路径上的路由器转发。任何一个设备，当它上电或改动网址时，都要发出一个"ID包"以声明自己的新网址。该ID包将传遍网络，帮助路由器更新各自的路由表。如果路由器在转发一个包时，发现自己的路由表中没有该包的目的网址，它就通过设置一个标志位，把该包变为"ID需求包"然后转发。目的网址收到ID需求包后，要发出一个ID包。所以路由器的设置是全自动的。
　　CEBus在防止碰撞方面的策略基本是：发送前如发现电力线处于S态，则推迟发送直至侦听到EOP。侦听到EOP以后，再等10个UST以防应答和重传。这10个UST之后，高优先级的包再随机等待0到3个UST后开始发送；中优先级的包等待4到7个UST；低优先级的包等待8到11个UST。每个包的开头是随机生成的8位二进制码，用来让其他电器探测到S态，达到争取信道的目的。此外，如某设备刚刚成功地发送了一个包，它在下次发送前还会额外再等4个UST。最后，发生碰撞时，试图使电力线处于I态的设备发现电力线是S态，它会自动停止，等别人发完了再重发。
　　由于电力线的传输质量较差，为保证收到可能要重复发若干次。这时凭序列号会丢弃重复收到的包。
　　应用层通过CAL(Common Application Language)和应用程序连接。CAL是CEBus专为设备之间相互通信而设计的面向对象语言。网络资源的分配和控制也通过CAL完成。在目前的CEBus标准中只有一个信道(control channel)，将来可能要增加1个或几个data channel，届时资源分配将复杂起来。
　　由于家庭中很多地方是控制工作的，所以CAL中安排了一种安全机制：一台设备可以验证另一台设备的身份。有两种验证方式，一是握手式验证：设E是加密函数，S1是和设备甲有关的常量，S2是和设备乙有关的常量。S1、S2可以是设备标号、类型代码等。甲产生随机数R，把X=E(S1，R)放在Challenge_Request类型的包里传给乙，即甲向乙"挑战"或"质疑"。乙求出A = E-1(S1, X)、B=E(S2，A)，把B放在Authenticate_Response包里传给甲("应战"或"答疑")。甲求出Y = E-1(S2, B)，如果Y=R，则乙的资格得到确认。二是不握手验证。E、S2如上所述，R是一个双方都知道的变量，如时间。乙向甲发出X=E(S2，R)，甲求出A = E-1(S2, X)，如A=R，则乙被确认。一般说，仅当乙要对甲做某些敏感控制时，甲才会去验证乙的身份，并于验证成功后执行乙在验证前发出的控制指令，即"先指示，后验证，再执行"。
　　智能化住宅的服务器无疑是家用PC。CAL的面向对象特性使CAL很容易在PC上应用。但是，对于分布在家庭各个角落的微控制器来说，CAL不实用。考虑到PC数量远少于微控制器，并且PC使用高级语言、又有CAL支持，而微控制器主要使用汇编语言、多为实时控制、目前还没有单片`机支持CEBus，就得到结论：智能化住宅软件开发的重点和难点是在微控制器上，微控制器程序员完全可以抛开应用层，在较低层次上介入CEBus体系。为了提高微控制器软件开发、维护效率及可靠性，需要专为微控制器设计的实时多任务操作系统。如FDCX05、FRMX96等[3]。
2 对CEBus的改进
　　图2 示出了根据CEBus构造智能化住宅的大体情况。

图2 家用PL网的拓扑
　　对电力线载波影响最大的干扰是PC机等使用的开关电源，其噪声覆盖了载波频段。对策是使用小而便宜的阻波器，开关电源通过它与电力线相连，如图3 。这就可以消除开关电源的干扰。当然，实际应用中可能仅部分开关电源使用了阻波器，再考虑到电器随意开关，所以线路质量不稳定。

图3阻波器的使用
　　主张在入户电表上也安装阻波器，把家庭内部的PL网与外面相隔离。内部的PL网走私人信息，外部的PL网走公共信息，例如每户家庭的耗电量、用水量、整个大楼的安全信息、中央空调的控制信息等，从而提高健壮性、保密性(信息无法在外界和家庭内部之间传递)，同时也降低网络负载。主人可用电话、互连网从外面访问家里的PL网。
　　如何保证包在电力线上可靠地传输，这在CEBus中只简单地提到两点：物理层要保证收到的包的正确率达98%；发送方重复发送。这实际上限制了CEBus网络的规模，如果网络较大就不实用了。家用电力线载波网的应用环境的特点是由不懂计算机的大众使用，家电的布置非常随意且经常变动，而且还要一定的可靠性。所以，提出用"随机转发"方法，不要路由器，任何一台设备都负责转发包，保证包传遍PL网，从而实现了方便性(用户不需要任何计算机知识，可随意改动电器布置)和可靠性(保证收到每一个包)。代价是降低了带宽利用率，好在家电的信息量本来就很小。
　　方法是：每一个包都有一个"生命力"域，记其值为A。当某设备甲要发送包时，它给A赋初值 > 0，某台设备乙收到该包，如果乙就是包的目的地，那么乙可能发或不发应答包；如果乙不是目的地，且从序列号判断该包不在自己的缓冲区里，且A > 0，则把包放在缓冲区里，A减1，等待随机时间后发送包；如果乙不是目的地，且从序列号判断该包已经在自己的缓冲区里，且该包的生命力为A1，则把缓冲区里包的生命力值改为A和A1中较小的，若新的生命力值>0，则再等待随机时间后发送包，否则从缓冲区中删去该包；如果乙发现自己收到的是一个应答包，且该包所要应答的包P正在自己的缓冲区里，则从缓冲区中删掉P。图4给出了工作流程和数据结构。在后面的改进方案中，要在该图中的＠处插入一个操作。

图4随机转发方法的流程和数据结构
　　该方法的合理性在于它所依赖的不是整个PL网上的质量M，而是相邻两台设备之间的传输质量m。M是某设备能正确地收到网上任何一台设备发出的包的概率，CEBus要求M达到0.98。m是某设备正确地收到与它相邻的设备发出的包的概率。根据实验，不论接入PL网的设备多少，只要适当用阻波器排除干扰，传送距离对m的影响就很小。从而传输可靠性就比较稳定。当然，M对传输速度还是有影响的。
　　该方法要求较大的缓冲区，这对目前的16位微控制器来说不成问题。
　　该方法使所有设备的通信规程都一样，便于芯片化，节省CPU，降低软件开发成本，方便开发者和最终用户。
　　随机转发方法的缺点是显然的。如图5所示，假设有n个相邻的设备都收到了一个包，那么在下一次转发中包到达距离为k跳的设备A的概率是：

图5 随机转发的缺点

　　　　　　　　　
　　当k恒定时，P是n的单调减函数。这是因为离A较远的设备会和离A近的设备争夺转发包的机会。
　　克服上面缺点的思路是改进硬件，使它能测量接收包时刻的通信质量。当质量较高时，就认为该包能顺利到达下一个设备，于是就不转发。这样，当某设备发送一个包时，在所有能正确接收该包的设备中，仅通信质量较差的设备才能转发。通信质量用误码率衡量[4]。实际上，SSC-P300中就有查错功能，只是没提供给外界而已。改进后的转发策略是在图4的@处增加判断，如该包的误码率低于阈值，中断返回，否则继续。
　　已经研究出的低频载波技术允许信号在电力线上传输很远的距离，甚至能穿过变压器，非常可靠。可以在电力线上同时使用高频和低频信号，用低频信号完成网络配置和转发调度工作。两者取长补短，可大大提高网络性能。另外，Adaptive Network公司正在研究速率达100K的电力线载波技术。建议应给予足够的重视。
作者单位：复旦大学计算机系微机实验室，上海200433
参考文献
1 Electronic Industries Asso- ciation. EIA-600，1995
2 Andrew S T. Computer Networks，Prentice Hall. 1996-11
3 涂时亮，张友德. 单片微 机控制技术. 上海：复旦 大学出版社，1994-11
4 普罗基斯.约翰 G著. 齐怀 亮译. 数字通信. 北京：电 子工业出版社，1988-10
