|
【摘 要】消费总线是美国电气工业协会制定的家电互联规范。本文在介绍国内家庭自动化技术路线的基础上着重讨论的消费总线的物理层,链路层,公共应用语言所涉及的技术和设计方法,并给出了基于消费总线的整体实施方案。
【关键词】消费总线
公共应用语言 家庭自动化
1
引言
国外家庭自动化概念始于70年代。开始时各公司自定标准,不同公司的产品互不兼容,从而极大地阻碍了市场的开拓和技术的发展。近十年来,遵循统一标准已成为不可逆转的潮流。例如:美国的早期标准(X10),日本标准家庭总线(HOME
BUS),欧洲标准安装总线(EIB),澳洲奇胜(CLIPAL)公司的C-BUS等等。1984年,美国电气工业协会的消费电组小组着手制定家电互联的规范,并于1992年发布CEBUS规范(EIA600),即消费总线[1],[2],[3],[4]。1994年成立了消费总线委员会(CIC),专门负责消费总线的有关部门事宜。尽管CEBUS尚处于起步阶段,但已获得包括IBM,HONEYWELL,MICROSOFT,INTELLON,DEMOSYS,LUCENT,PHILIPS,SIEMEMTS等国际著名公司的支持,在智能家居和家庭自动化领域具有举足轻重的影响。
国内家庭自动化处于启蒙阶段。方正电脑的卓越Z系列,海信的海景二代,海尔的E家庭,TCL的家庭信息中心(HID)以及初露端倪的联想HOME战略。这些产品的主要特征就在于,除了计算机原有功能外,借助红外线控制技术附加了对家电的控制,迈出了智能家居的第一步。当然,由于缺乏统一的标准,规范和接口协议,在更多的意义上还是一个概念性的产品。
2
基于CEBUS的家庭自动化总线框图(略)
符合CEBUS标准的家电支持基于公共应用语言(CAL
EIA-721),以及家庭即插即用规范(HOME
PLUG &
PLAY),简称HPnP。因此家电一旦接入电网就可以直接被其它的家电发现并使用,实现家电间的基本互联互操,从而大大降低网络配置工作的复杂性,图1为基于CEBUS的家庭自动化演示系统总体框图。
从网络结构角度看,独立的、分散的、单体测量装置与家电仅仅是CEBUS分布式网络的一个接点,其内涵属现场总线范畴;从信息角度看,已经从简单的状态信息组合和监控处理发展到基于内容的处理融合。CEBUS自动化控制网络摒弃控制中心概念,换言之,任一个网络节点的失效都不会引起系统的瘫痪,因此CEBUS具备高度自治的优良特性,是一种典型的对等(Peer
to Peer)模型结构。
图中所示的设置/监视装置可由电视机、手持设置器、控制面板、计算机、嵌入式家庭网关或单独或兼而有之承担,提供适合于不同群体的多层次操作界面,实现家庭网络复杂的互联互操和工况的监控。必须指出,家庭网络运行时,根据用户的要求传输网络变量,对家电状态进行控制,与设置/监视装置无关。家庭网络经网关与外界连接,可通过因特网、电话线、电视电缆、无线甚至电源线对家电进行远程监控制。实现信息网络与控制网络的集成。网关利用一个代理协议,以便CEBus过度到TCP/IP。例如,通过互联网直接控制家中的照明灯,那么为TCP/IP照明灯付出的成本是难以接受的。况且,一个照明灯所接收的不过是开关和亮度调校等极为有限的信息,根本没有必要为照明灯配置复杂的TCP/IP协议。
3
消费总线的物理层
消费总线的网络模型如图2所示。它是简化的ISO模型,其中的应用层协议包含CAL语言和Home
PnP。限于篇幅,本文只涉及电力载波一种通讯介质,且另文论述网络层和Home
PnP的内容。
3.1电力载波扩频技术
跟一般的电力载波编码方式不同,消费总线的物理层有四种码,分别是:“0”、“1”、“EOF”和“EOP”。CEBus采用扫频技术,载波是正弦信号,从203KHz经过19个周期线性地变为400KHz,再在1个周期内变为100KHz,然后再在5个周期中变为203KHz,整个时间长度为100us,也就是1个UST(Unit
symbo1 time,在消费总线中用UST
作为度量单位)。其波形如下图所示。这种形式的载波称为扫频,也称为扩频,它能够有效地对付电力线上的不确定性干扰。一般来说,由于电器的频繁接入和断开,电力线上经常是某一个频段大负载发生变化,并导致信道恶化。就扫频载波来说,它只损失了部分频率,因而仍然能够检测到信号。根据我们的观察,实验室的电力线往往对某一个频率吸收特别大。例如在计算机房里,同一批计算机的电源采用同样的输入电路,吸收同样的频率,最终使得这个频段的信号几乎衰减到0。传统的电力载波为了对付这种情况,采用了自动跳频技术(frequency
hopping),也就是说如果某一个频率通讯不畅,就切换一个频段再试,但是由于设备复杂代价昂贵,这种技术主要应用在军事和导航系统中。现在在消费总线中提出的这种扫频的方法就能够用低廉的成本解决这一难题。
3.2通讯编码
物理层直接向数据链路层提供服务,数据链路层中,每个数据包由帧头和数据体组成,其中帧头用于解决多机共享信息的竞争问题,CEBus码元格式见表1。
4
数据链路层
数据链路层通过数据包装配,合适的信息访问方法,差错控制,响应和重传机制等,使得有噪音和干扰的数据通道。对网络层而言成为一个无差错的数据通道。[6],[7],[8],[9]
4.1数据包
数据包是由一系列的“域”组成的,每一个域包含的数据有特定的功能,例如寻址和错误检查。为了减少网络的通信量,域的个数和每个域中的内容都是可变的。可以这样认为,一个域是由若于个“1”和“0”组成的,它的结尾有一个“EOF”(End
of field)而若干个域组成的数据包,最后由一个域“EOP”(End
of packet)结尾。也就是说,“EOF”界定了域,而“EOP”界定了数据包。在一个数据包中,如果一个域是可选的,也就是说不一定要包含数据,那么它可以是一个空域,它仅仅由一个“EOF”符号组成。
个域和它们的相对位置决定了一个数据包的格式。消费总线的网络采用了两种基本的数据包格式。普通的数据包格式,它用来传递一个网络数据到相邻节点上。如果源节点需要响应,那么目的节点会发送第二种数据包:响应。
普通数据包有两个派生类型。第一种包含了一种校验码可以让介质访问子层来检错:第二种没有校验码,检错是由物理层守成的。除此之外,响应帧也可以包含或者不包含目的地址
普通数据帧格式用价质访问子层来检错的数据包必须符合下面的格式:
仅使用物理层检错的数据包必须符合下面的格式:
其中每一个小方格中是一个域,每一个域是由0和1的序列组成的,每一个域以EOF结尾,而最后一个域以EOP结尾。这两种数据包的差别仅仅是其末尾是否含有校验序列(FCS).下面我们来详细描述每一个域的含义。
PRE(Premple)——帧头,用于解决共享信道时的竞争
Control--控制域,描述数据包的“类型”“优先级”,“服务类型”和“序列号”
DA,SHC——目的地址
SASHC--源地址
lnformation--信息域
FCF--帧校验序列
4.2数据链路层设计
我们采用的芯片是美国的lntellon公司制造的P300。它的应用方块图如下所示。左边是主控制器,例如单片机8051,它从P300收发命令,并解释执行命令,还要对设备进行相应的控制;中间是P300,它由A/D、D/A、数据链路层控制器等组成。右边的是P300和电力线的耦合电路。
5
公共应用语言
公共应用语言(COMMON
APPLICATION
LANGUAGE)简称CAL。CAL制定了一整套完备的严格的设备描述语言,其内容涵盖了家庭中可能拥有的全部家电。该语言采用面向对象的方法,把任意一个家电设备按照功能分解成几个预定义的对象模型在面向对象的编程语言中,一个对象由数据和操作这些数据的函数组成。在消费总线中,这些对象也有数据(称为实例变量)和操作(称为方法)组成。不同的设备可以采用相同的对象,用相同的方法操作,但控制结果随役备的不同而有不同意义和不同的结果。
5.1CAL功能
CAL是应用层中的一个子层,提供两种主要功能:资源分配和控制。CAL将用户层的请求转换成“应用层服务数据单元”(APPLICATION
LAGER SERVICE DATA
UNIT)简称ASDU,并传递到消息传递子层进行发送。接收方调用CAL解释程序,执行接收到的ASDU。CAL的网络资源分配功能是指请求、使用、释放CEBUS的网络资源,包括:设备地址、组地址、系统地址、数据频道等,这些资源一般保存在“节点控制”(Node
Control)对象中。地址分配是CAL的一个重要功能。“节点控制对象”(Node
Control
0bject)负责管理三种地址:系统地址、设备地址和组地址。设定地址有静态或动态两种方式,前者用于设定系统地址,它拷贝同系统中设备的地址,后者动态地寻找一个在本系统地址下未被占用的地址,用于设定设备地址。组地址可以通过静态或动态的方法获得,由用户决定是否将一个设备加入某个组。例如,如果希望把室内的某些灯当作一个来对待,可以选择一个组地址,然后请求这些灯都加入这个组中来,那么只要一次命令传输就可以控制它们了。
5.2CAL的组成元素及结构
在支持消费总线的设备中,设备的每一个控制功能都可以看作一个对象。要将收音机的音量提高,只要向收音机的“音量控制”对象发送一条消息:“音量递增3”。它接收到该消息之后,就会给一个相关的实例变量加3,这个变量在实现时就像“可视化”编程语言中的“属性”一样,改变它的值会引起一个函数调用,实际效果就是通过接口电路将收音机的音量提高3(3可以是百分数,也可以是其它有意义的单位,视实现方法而定)。CAL把上面提到的这种消息放在数据包中,称作“应用层服务数据单元”(Application
Service Data Unit)简称ASDU。ASDU可以被发送到一个节点,一组节点,甚至是所有节点,当然这些通讯节点都与特定的设备关联,例如电视,收音机,VCD,洗衣机,灯光等。可以把这些设备比作是一个邮局,接收到消息之后再把它们发送到最终的目的地——对象。
在消费总线中,虽然没有C++那样明确的继承关系,但是实际上这种继承性表现在:一个对象在不同的“上下文”(Context)中实现,会有不同的物理意义,但是它们却同时保留了基本对象的特征。CAL用一种层次关系描述设备的功能。一个设备可以分成几个上下文,其中总是有一个通用上下文(Universal
Context)由它控制“设备级”的命令,例如命名,寻址等等。除此之外,一个设备还有若干个其它上下文,它们代表了这个设备按照功能分的子系统,下图表示的一个计算机的可能的实现。音量和调谐就是电视机中上下文的例子,上下文再次被分为对象,每个对象就代表了上下文中的一种控制功能,对象分为若干类,每一类代表一种共有功能。例如,类号为07的对象是“模拟控制对象”(Analog
Control Object)它可以用来代表音量控制,温度调节,或者是调光器。一个对象的具体功能完全是由他所属的上下文所决定的。图5的声音上下文中,有音色控制和音量控制。每个对象包含“实例变量”,“当前值”就是音量控制中的一个实例变量,它代表了当前的音量。每个对象都能够解释执行方法,方法更新实例变量,并完成实际的操作。例如对于音量中的“当前值”应用“递增”方法,就会使音量增大一定的幅度。
5.3CAL语法
CAL的语法通过BNF(Backus-Naur)表达式描述,它可以严格地描述语法规则。表2是扩展的BNF符号意义:
CAL语言对命令,操作列表,消息,参数传递和消息响应都给予规范的形式化描述,细内容可参阅EIA721文档。
5.4CAL方法
CAL目前定义了24种“方法”(Method),其意义类似程序设计中的“函数”,所不同的是有些控制程序运行的语句如IF,WHILE—DO,DO—WHILE等也被归为“方法”,归入为“复杂方法”(Complex
Method)复杂方法是由“简单方法”递归定义,语法也与C语言类似。CAL中实例变量有4种数据类型,不是每个方法都能够操作任意一种变量。下表列出了CAL所有的方法和变量类型的关系。“必须”指如果一个对象中有这种类型的实例变量,就必须要支持这种方法:“推荐”是指对这种类型的实例变量推荐使用这种方法操作;“可能”是指对这种实例变量的操作可以用这种方法。
5.5对象规格说明书
在ELA600.81中预定义了27中对象,我们介绍其中的几种
5.6CAL应用实例
有一个立体声音响设备有三种输出音响方式:立体声(STEREO)、单声道(MONO)和环绕立体声(REV
ST)。显然这是一个多路开关。开关的位置保存在实例变量current_positon中,开关的功能保存在实例变量function_of_position中。现在另外一个设备需要知道方式的名称,它送如表4所示的指令
6
结论
基于消费总线的家庭自动化系统原型和部分产品已在国外得到应用。本项目组完成的演示系统于2000年6月19日赴美国大西洋城展示(国家贸促会资助),得到国外同行的高度评价,同年11月5日杭州西湖博览会展示,媒体和国内同行兴趣浓厚。消费总线的推广有赖于IT行业和家电企业的认同。
参考文献
1、American Society of Heating,Refrigerating,and
Airconditioning Engineer.ANSI/ASHRAE Standard 135-1995:BACnet-A
Data Communication Protocol for Building Automation and Control
Networks [M].Atlanta,Georgia,USA,1995
2、惠晓实等,ABC/IP的互联网扩展(下)[J]工业设计CAD与智能建筑,2000(4):20-22
3、徐正元,张义。BACnet与Internet的互联[J]工业设计CAD与智能建筑,2001(1):38-40
4、杨斌等,LonWorks网络与LAN、Internet互联的解决方案[J]计算机研究,2000(5):41-44
5、张继东等,现场总线与以太网互联研究[J]计算机工程,2001(5):19-21
6、Bill Swan Building Wide-Area Networks with
BACnet[E],http://www.bacnet.org
7、Seork-Kyu Kweon
|