节点装置及其实现家庭网络中控制子网设备间互通的方法

文档序号:7919891阅读:192来源:国知局
专利名称:节点装置及其实现家庭网络中控制子网设备间互通的方法
技术领域
本发明涉及网络内部通讯技术,特别是指一种节点装置及其实现家庭网络中控制子网设备互通的方法。
有鉴于此,申请人在另一专利申请中提出了一种数字家庭网络系统,如

图1所示,该系统主要由网关11、一个以上主干网设备12和多个控制子网设备13构成,该网关11可以进一步包括两部分门户网关110和控制网关111,门户网关110与控制网关111之间通过宽带接口相连。基于此系统结构可以看出,该数字家庭网络由主干网和控制子网两个子网组成,其中,由门户网关110及与其连接的家用设备所形成的网络部分称为主干网,主干网主要用于实现信息设备、通讯设备、娱乐设备等的互连;而由控制网关111及与其连接的家用设备所形成的网络部分称为控制子网,控制子网主要用于实现家用电器、自动化设备、保安监控装置等设备的互连。该数字家庭网络的核心思想就是使家庭网络上的家用设备互连互通、资源共享。在此家庭网络系统中,门户网关、控制网关和服务器可统称为资源管理设备,用于管理网络资源。一般来说,主干网中的设备均具有较强的存储、计算能力,而控制子网中的设备存储、计算能力非常有限。
在数字家庭网络中,主干网与控制子网分别采用不同的网络协议实现各自网络设备间的互连互通与资源共享,主干网与控制子网之间通过门户网关与控制网关之间的互连实现通信,控制网关负责进行控制子网到主干网的设备描述映射,使主干网可以访问控制子网中的设备。对控制子网中设备和服务的操作也可以转变为对控制网关上相关服务的操作。但是,连接于控制子网中的设备多种多样,并没有统一的标准定义,甚至有的是非智能化设备,根本不可能与其它设备或控制网关相互识别。因此,如果没有统一的装置和设备描述来实现设备间的控制和互操作,家用设备之间或家用设备与控制网关之间就不能完成互连互通,更不可能实现资源共享。
本发明的另一目的在于提供一种实现家庭网络中控制子网设备间互通的方法,使通过节点装置连接于家庭网络控制子网的设备能根据统一的设备描述相互识别,以实现设备间的互连互通以及资源共享。
为达到上述目的,本发明的技术方案是这样实现的一种节点装置,设置于家庭网络上的每个控制子网设备中,用于实现控制子网设备的网络接入与通信,至少包括负责运算和控制的微控制/处理器、负责接收和发送网络数据的网络通讯接口以及与每个设备连接的具体应用控制电路,其中,网络通讯接口和具体应用控制电路均与微控制/处理器互连;关键在于该微控制/处理器中进一步包括通讯协议栈,用于实现与网络的通讯协议;数据/操作处理模块,包括数据库和解释器,负责将收到的命令翻译成相应的操作指令;应用接口模块,包括应用程序接口、应用进程代码单元以及外部物理接口,用于对家庭网络上的家用设备进行实际操作;实时多任务操作系统内核,用于管理、调度和协调通讯协议栈、数据/操作处理模块和应用接口模块之间的操作。
该装置进一步包括状态指示单元,用于显示节点的当前状态,其与微控制/处理器相连;外部存储器,用于存储节点信息,其与微控制/处理器互连。
所述数据/操作处理模块中的数据库为面向对象设备模型(OOD)数据库。所述数据/操作处理模块中的解释器为对象控制语言(OCL)命令语言解释器。
一种采用上述装置实现家庭网络中控制子网设备间通信的方法,该方法至少包括以下步骤a.当设备节点间进行互操作时,先判断该设备节点是否已向资源管理设备进行注册,如果是,则直接进入步骤c;否则,未注册的设备节点向资源管理设备进行注册,资源管理设备创建该节点的设备描述信息;b.资源管理设备根据需求配置每个节点之间的捆绑关系,并生成设备描述之间的关联信息,然后,将配置好的关联信息下载到家庭网络的每个节点上,每个节点收到关联信息后保存于自身的数据库中;c.发起方设备节点在自身数据库中查找,找到目标设备的关联信息后,将该关联信息解释为标准控制指令对目标设备节点进行操作。
上述方法用面向对象设备模型(OOD)对每个家用设备节点进行描述,并在设备间互操作时用对象控制语言(OCL)对面向对象设备模型中的对象进行操作。那么,步骤a中所述创建节点的设备描述是将该家用设备节点由一个以上基本服务类组合而成,每个基本服务类包括至少一个基础类,每个基础类又进一步包括至少一个成员变量。
步骤c所述将关联信息解释为标准控制指令进一步包括a1.初始化时设置索引值、服务类别号和对象类别号;b1.在命令标识(ID)对应表中查找命令ID值对应的表项,如果未找到该项,则返回出错消息后结束流程;否则,进入步骤c1;c1.执行步骤b1所找到的表项中存储的动作,设置成员变量的值,然后,跳过分隔符,解释ASCII数字串,并查找服务ID、对象类别号、成员变量所对应变量的数据存储位置,如果未找到,则返回出错消息后结束;否则,将命令串中给出的数值赋给成员变量存储区的数值,当命令解释完成后,OCL解释器返回索引指针。
步骤c所述在OOD数据库中查找目标设备的关联信息进一步包括a2.初始化时设定索引值,并读取服务标识(ID);b2.在功能集列表中顺序查找服务标识(ID)值对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤c2;c2.设置索引值为查找到的对象表项对应的对象列表偏移地址(Offset),并在对象列表中顺序查找对象X对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤d2;d2.设置索引值为查找到的对象表项对应的成员列表偏移地址,并在成员变量列表中顺序查找成员变量X对应的表项,如果未找到,则返回出错信息后结束,否则,设置索引值为查找到的成员变量表项对应的偏移地址,返回索引指针并结束。
因此,本发明所提供的节点装置及其实现家庭网络中控制子网设备互通的方法,具有以下的优点和特点1)由于本发明定义了统一的设备描述标准,能够使控制子网上的任意设备相互识别,进而实现互连互通及资源共享。而且,使任何一个具有相同设备描述规范的设备能够随时接入该控制子网,并与其它已有设备进行控制、查询等通信操作。
2)本发明中的每个控制子网节点采用统一的OOD描述方法和OCL控制语言,既可实现不同厂家产品之间的互操作,又简化了节点的设计,可由第三方设计节点的硬件和软件模块。
3)本发明提出的OOD描述方法具有非常灵活的扩展性,并且在很大程度上避免了不断升级规范以适应新的互操作性要求。
4)由于采用OOD模型,即基础类→基本服务类→设备的组成结构,使得家用设备的所有功能都可以通过基础类的组合完成,进而所有家用设备都可以通过这种结构形成,不仅简单、方便、灵活;而且,避免了为满足将来不断涌现的新功能不断定义新的类和函数的繁琐。
5)本发明对于基础类的访问方式是确定的,使得嵌入式的程序设计较为简单、且易于实现。
6)本发明对于基本服务类采用规范化的设计,使得各个家用设备所能提供的服务都可以由一些基本服务类组合构成。例如电视机有“视频显示服务”、“音频播放服务”等,具有良好的互操作性,即设备间不需要对目标系统非常复杂的认知和识别过程,只需要依据规范即可确知目标系统所具备的功能和操作方法。大大简化了节点的设计,从而降低设计成本。例如,设计一个用于开关灯光的按钮时,只需要根据规范具备控制“灯光”的“模拟量控制”这一目标能力。
7)本发明采用的OCL操作指令自身具有以下特点①长度很短,利于在控制网络上进行传输;②包含足够的控制/查询信息;③符合标准的BNF规范,可以很容易地解析;④兼容性、互操作性、可读性较好。
8)本发明所提出的控制子网设备互操作方法,是在OOD的基础上,将设备间的协调工作抽象到对象和方法的层次,而无需预先知道设备的具体实现方式。譬如,控制A公司生产的电视机的信息符合本发明所规定的OOD和OCL规范,其它厂家无需知道任何关于A公司设计实现,如控制音量等具体细节,只要按照标准的模式向电视机发送信息,就可以控制电视机的工作状态。
图15为资源设备对节点OOD描述的具体实施例示意图;图16为每个节点设备描述之间的关联示意图。
在数字家庭网络中,位于控制子网的设备通常是最基本的、最简单的家用设备,比如冰箱、洗衣机、微波炉、电灯、电视、电动装置等等,这些设备本身没有采用统一的协议,更不能实现通信功能,如果将这类设备直接连入家庭网络中是根本无法实现的。于是,本发明提出了一种节点装置,放置于每个控制子网上的家用设备中,来完成控制子网设备的接入功能和通信功能。此时,每个家用设备就相当于网络上的一个节点。该节点装置的组成结构如图2所示,至少包括微控制器/微处理器201、网络通讯接口202、状态指示单元203和具体应用的控制电路204组成,还可以选用外部存储器205。
其中,微控制器/微处理器201是节点的核心,负责运算和控制,其他单元都与之相连;网络通讯接口202是节点与控制子网的连接接口,负责接收和发送网络数据,其与微控制器/微处理器相连接;状态指示单元203对外界(用户)显示节点的当前状态,其与微控制器/微处理器相连接;具体应用的控制电路204是节点装置与每个设备的具体连接电路,不同的设备连接电路不太相同;微控制器/微处理器通过该电路实现对设备的控制,其与微控制器/微处理器相连接;外部存储器205是微控制器/微处理器的存储扩展,在某些应用中可以不使用,其与微控制器/微处理器相连接。图3给出了该节点装置实现的电路原理图。
该节点装置的软件系统运行于一个实时多任务操作系统内核401上,如图4所示,该软件系统可分为三大层通讯协议栈层402,包括与通讯相关的协议栈,用于实现通讯协议,是节点软件的底层;数据/操作处理层403,包括数据库和解释器,负责将接收到的命令翻译成相应的操作指令,是节点软件的中间件;应用接口层404,包括应用程序接口(API)、应用进程代码以及外部物理接口,应用程序接口(API)负责实现对“传统”电器软件的连接,是节点软件的对外接口。在此软件结构中,应用进程代码及外部物理接口是“传统”电器设备的微处理器所具有的应用代码,而通讯协议栈、数据库、解释器和应用程序接口(API)是为实现网络化而增加的代码。
各种家用设备中设置统一的处理装置后,还必须有统一的通信语言以及对每个家用设备统一的描述方法,如此,所有家用设备之间才能相互读懂对方表达的意思,才能进一步实现互连互通和资源共享。因此,本发明采用面向对象的设备模型(OOD)对每个设备进行描述,采用对象控制语言(OCL,Object Oriented Device Model)来对OOD对象进行控制和操作。相应的,本发明节点软件中数据/操作处理层包括的数据库和解释器即为OOD数据库和OCL解释器。当然,本发明中所提到的家用设备均指家庭网络中的控制子网设备。
在实际应用中,虽然每个网络设备内部都建立有OOD数据库,对家用设备的每个动作都会有相应的命令,但仍需要一种操作将数据库和命令语言结合在一起,也就是说,需要一个“解释器”来将操作指令序列转换为针对数据库的一系列实际操作,本发明采用的就是OCL解释器。
图5所示即为OCL解释器的组成结构框图。该OCL命令语言解释器建立在OOD虚拟设备数据库的基础上,其一方面与应用接口层中的应用程序进行交互,以实现从虚拟数据库到实际设备动作的变换;另一方面与通讯协议层的网络通讯栈进行交互,以实现设备的网络化。OCL解释器主要包括OCL分析模块501、OOD数据库访问模块502、远程访问模块503和事件通知模块504。
在OCL解释器中,OCL分析模块501是OCL解释器的核心,用于翻译从通讯协议栈接收到的OCL命令,并将应用程序产生的远程操作指令翻译成为OCL命令。该OCL分析模块501与OOD数据库访问模块502连接,为OCL分析模块提供设备描述。事件通知模块503和远程访问模块504是连接OCL分析模块501和应用程序的中间件。其中,事件通知模块503负责将OCL分析模块501翻译出的指令通知应用程序,远程访问模块504负责将应用程序产生的远程访问指令通知OCL分析模块501。
OCL解释器一般要执行两个任务1)解析网络上收到的消息,基于消息更新数据结构,并产生一个事件来通知应用程序;2)解析应用程序发出的远程访问请求,并将其整合成OCL命令串,交给网络通讯层。在解析网上收到的消息时,进一步包括执行对于目标服务/对象的查找,判断目标是否存在?如果不存在,返回一个出错消息;如果存在,则对参数成员变量执行操作。如果该操作产生一个返回值,例如getValue或getArray命令,则这个值将以“回复消息”形式发出。应用程序进程同样需要访问OOD虚拟设备数据库来写入更新的数据,或者查看任意新的、已被网络更新的值,该操作也通过调用OCL解释器来完成。
OCL解释器向设备提供了发送命令消息给远程设备的能力,并响应进来的命令消息。所发送的命令通常利用尽量少的、同时能保证设备控制灵活性的字节数编码命令包。举个例子来说,执行打开一盏灯的操作,那么,需要给“灯”这一设备的OCL解释器发送一串16进制字节序列的命令,如21 02 45 43 F5 31 30 30。其中,21是电灯的服务类别号;02是“模拟量控制”的对象类别号;45是设定值(SetValue)方法;43是“当前值”变量(对应ASCII字符为“C”);F5是一个分隔符;31是“1”的ASCII表示;30是“0”的ASCII表示;30是“0”的ASCII表示。该“打开”命令使用SetValue方法发送一个“100”的值给和灯亮度相关的“当前值”变量,可通过定义“当前值”来设置灯光的亮度。
以命令字节序列为21 02 45 66 F5 37为例,OCL解释器的工作流程如图6所示初始化时设定索引值Index=操作指令序列的起始地址;服务类别号=起始地址后的第一个值21,对象类别号=起始地址后的第二个值02;然后在命令标识(ID)对应表中查找命令ID=起始地址后的第三个值的表项,本实施例中,该表项存储的动作是置值SetValue;如果未找到该项,则返回出错消息,说明该命令是未知命令。如果找到该项,则转到相应的命令处理子程序SetValue中,设置MVx=起始地址后的第四个值43,即成员变量C,之后,跳过分隔符F5,解释ASCII数字串,并调用数据库寻址程序,查找服务ID、对象类别号、成员变量所对应变量的数据存储位置,如果未找到,则返回出错消息,说明该变量是未知变量;如果找到,则将命令串中给出的数值赋给成员变量存储区的数值,当命令解释完成后,OCL解释器返回索引指针。
如果某个成员变量的寻址路径为服务编号Svr ID→对象编号Objx→变量标号MVx,则访问该成员变量时的寻址流程如图7所示初始化时设定索引值Index=功能集列表起始地址,并读取服务ID;在功能集列表中顺序查找类标识(Class ID)=服务ID的表项,如果未找到该项,则返回出错信息,说明查找失败;如果找到该项,则设置Index=查找到的对象表项对应的Obj_list_Offset,并在对象列表中顺序查找Object_Num=Objx的表项,如果如果未找到该项,则返回出错信息,说明查找失败;如果找到该项,则设置Index=查找到的对象表项对应的Mvlist_offset,并在成员变量列表中顺序查找标号Label=成员变量MVx的表项,如果未找到该项,则返回出错信息,说明查找失败;否则,设置Index=查找到的成员变量表项对应的MV_Offset,然后结束并返回索引Index指针。
由于每个家用设备分别提供不同的使用功能,该设备可以被看作是各种功能的载体。本发明就是将设备所提供的功能看作设备所提供的服务,认为设备是其所提供服务的综合体,因此,本发明通过描述设备所提供的服务来达到描述设备的目的。
对于每个设备,可从提供服务的角度将一个设备由所提出的多个基本服务类(Basic Service Class)有机结合而成,每个基本服务类代表一系列特定功能的应用,而每个基本服务类又进一步划分为若干个基础类(AtomClass)。所谓基础类主要是指通常不能或不需要进一步再分割的基本单元,例如一个“二值按钮”,基础类枚举了基本的操作/执行元素,设备功能由这些基础类组合,基础类是可重用的。这种由基础类构成基本服务类,再由基本服务类描述设备的体系结构即称为面向对象的设备模型(OOD,Object Oriented Device Model),其分层体系如图8所示。
OOD中的基础类(Atom Class)是一个单一功能实体的模型,用来执行家用设备中一个单一的控制任务。
一般来说,基础类是这样得到的选择任意一个家用设备,将它的功能和结构进行不断细分,直到不能再进一步分离为止。由此可以得到多个独立的可操作对象。实际上,这些对象往往具有一定的共性,从而可以合并到一起,合并后的对象就成为基础类。
需要指出的是,对每个家用设备做分析的主要目的是为了让它可以被控制子网上的其他节点进行控制或查询。因此,在分析中最关心的内容是该家用设备有可能公开给控制子网上的信息。例如用户可以施加到设备上的各种操作、设备上的一些工作状态等等。分析不同类型的家用设备,即可得到多个不同的基础类,但随着分析样本的增大,会发现新的基础类越来越少,最后可得到一个比较确定的基础类集合,利用该集合中的基础类,可构造出现存的和将来可能出现的绝大部分家用设备。
每个基础类只是一种功能类别,并不代表一个具体的应用,除非将其放入一个特定的服务中。例如“二值传感器”在“微波烹饪服务”中呈现两种具体应用实体“微波炉门检测对象”、“食物存在检测对象”。再比如“模拟量控制”是一个基础类,而“亮度模拟量控制”不能作为基础类,因为根据基础类的获取原理,“亮度模拟量控制”还可以进一步划分为“亮度”和“模拟量控制”两个因素,“亮度模拟量控制”只是“模拟量控制”在灯光服务中对亮度控制对象的具体表现,不具有通用性。故此,只有“模拟量控制”能作为基础类。
在本发明中,所得到的每个基础类都对应一个对象类别号(ObjectClass),以便于用控制语言来描述,如表1所示。例如“模拟量控制对象”(Analog Control Object)的对象类别号为0x07,该基础类可以被用来表示音量控制、灯光亮度级别、温度调整级别,在应用描述时直接用0x07即可。表1给出了一个基础类与对象类别号对应的应用实例。

表1由于基础类属于面向对象设备模型的基本组成部分,因此,所定义的每个基础类也可称为一个对象,在每个对象中还包含一系列的成员变量(Member Variable),如图9所示,每个设备的OOD模型又可进一步形成图9的结构,一个OOD对象可以包括成员变量A、成员变量B、成员变量C以及其它成员变量等多个成员变量,每个对象的主要功能通过其内部的成员变量(MV)集合来实现。
针对每个成员变量设置一个标号,称为变量标号(MV_Label),该标号在同一个对象中是唯一的。例如当前值(Current_Value)的标号是0x43,也就是ASCII字符“C”的编号、位置号(Number_of_Positions)的标号是0x6E,也就是ASCII字符“N”的编号。
以“二值传感器”为例,在实际应用中可通过XML语言对基础类进行描述<Basic_Object>
<Object name=”BINARY_SENSOR”class=”06”description=”一个二值(1/0)类型的传感器,例如人体探测传感器”/>
<Member_Variable_List>
<Member_Variablename=”current_state”description=”传感器的当前状态(例如0=OFF,1=ON)”Label=”43”Access=”ReadOnly”DataType=”boolean”Mandatory=”yes”/>
<Member_Variablename=”function_of_state”description=”描述传感器各状态的书面文字,可用于界面显示”
Label=”46”Access=”ReadWrite”DataType=”array(2,8)”Mandatory=”no”/>
</Member_Variable_List>
</Basic_Object>
上述程序语言描述说明基础类“二值传感器”的名称(name)设定为“BINARY_SENSOR”;其对象类别编号(Object Class)为06;所提供的设备描述信息是“一个二值(1/0)类型的传感器,例如人体探测传感器”。接下来,在<Member_Variable_List>和</Member_Variable_List>的范围内,逐个列出了希望在二值传感器对象中存在的成员变量,每个成员变量都以下列类似的方式定义<Member_Variablename=”current_state”description=”传感器的当前状态(例如0=OFF,1=ON)”Label=”43”Access=”ReadOnly”DataType=”boolean”Mandatory=”yes”/>
每个对象在服务中以对象类别号(Object Class)和对象编号(Object ID)来区分,其中,对象类别号是对于每个对象唯一确定的逻辑编号,在不同服务中使用同一对象时所用的对象类别号相同,例如二值开关控制的对象类别号05;而对象编号则是指每个对象在不同服务中使用时实际分配的顺序号,在每个基本服务中,从0x01开始顺序给每个对象分配一个对象编号。
以“照明灯光服务”的描述为例
//定义一个具体的服务类灯光class LIGHT_Service{publicService_ProfileThis_Service_Profile;//1必须包含描述本服务的对象构成Analog_ControlLight_Level_Control;//2灯光亮度级别控制Analog_SensorLight_Level_Setting;//3光照传感器};上述例子中,灯光服务包括三个对象This_Service_Profile、Light_Level_Control和Light_Level_Setting,其对象编号和对象类别号的取值如表2所示。

表2引用对象时,可直接用Object ID来表示针对哪一个对象操作。例如,调整灯光亮度,可用0x02这个Object ID来表示对Light_Level_Control这个对象的操作。
此外,如果某一类别的对象在服务中只有一个实例出现,那么,可用0x00<Object Class>的方式引用。例如用0x00 0x07来表示对Light_Level_Control这个对象的操作。
基本服务类是将一个或多个基础类组合在一起,构造出一个设备的特定功能子集,一个设备由一个或多个基本服务类构成。在设定基本服务类时,同样要考虑其在不同设备中的重用(reuse)性。
一个家用设备可能提供多种服务(Service),每种服务即为一系列对象的集合,当然也包括对于这些对象的动作(Action)。服务是呈现具体功能应用的实体,例如在一台电视机中提供了“视频显示服务”,这一服务包括以下对象“亮度模拟量控制对象”,通常用基础类“模拟量控制”来描述;“对比度模拟量控制对象”,也用基础类“模拟量控制对象”来描述;“信号源切换对象”,一般用基础类“单刀多掷切换对象”来描述。同时,“视频显示服务”中还包括针对这些对象的相应的操作方法。
每个基本服务类同样也对应不同的服务类别号,如表3所示。表3给出了一个基本服务类与服务类别及服务类别号对应的应用实例。


表3每个服务在设备中以服务类别号(Service Class)和服务编号(ServiceID)来区分,所谓服务类别号是指对于每种服务类别确定的、相应的逻辑编号,在不同设备、不同应用中使用同一类服务时所用的服务类别号相同;而服务编号是指每种服务在不同设备、不同应用中使用时实际分配的顺序号,即同一类服务在不同设备中使用时分配的服务编号都不相同,服务编号从0xA0开始,最大的编号是0xDE。同样,服务中的每个对象同样用对象编号(Object ID)来进行区分,每个基本服务中,从0x01开始顺序给每个对象分配一个对象编号。
举个例子来说,某个设备包括两个按钮和一盏灯光,也就是说,由两个“用户接口服务”和一个“照明灯光服务”组成。其中,“用户接口服务”的服务类别号是0x02,“照明灯光服务”的服务类别号是0x21;那么,在应用中“照明灯光服务”的服务编号是0xA0,而两个“用户接口服务”的服务编号将依次设置为0xA0、0xA1。因此,0xA0 0x02就唯一代表“用户接口服务1”、0xA1 0x02就唯一代表“用户接口服务2”、0xA0 0x21就唯一代表“照明灯光服务”。在实际控制灯光时,操作命令中需给出0xA0、0x21来完成对灯光的控制。服务用Service Class和Service ID来区分可表示为表4所示的状况。

表4需要说明的是,0xDE是一个特殊的服务编号,它被用来表示一个设备中全部的同类服务。例如一个设备有两个灯光,0xA0 0x21和0xA1 0x21,假如希望在一个操作中把全部灯光打开,那么就在操作命令中声明服务为0xDE 0x21。更进一步,如果希望对某个设备上的全部服务进行操作,那么可在操作命令中声明服务为0xDE 0x00,其中,0x00实际上是全体服务(Universal Service)的服务类别号。
基本服务类在具体应用时,同样可通过XML语言进行描述。例如灯光控制服务的XML描述如下<Basic_Service>
<spec Version>
<major>1</major>
<minor>0</minor>
</spec Version>
<servicename=”LIGHT”description=”用于灯光控制以及用户控制的切换开关,可以用在开关型或调光型灯具中”class=”21”/>
<object_list>
<Basic_Object>
<Object name=”Index Object”number=”01”class=”02”classname=”Service_Profile”description=”提供本服务的对象列表索引”/>
<Member_Variable_List>
<Member_Variablename=”object_list”description=”列出本服务中用到的对象”Label=”6F”Access=”ReadOnly”DataType=”array”Mandatory=”yes”/>
</Member_Variable_List>
</Basic_Object>
<Basic_Object>
<Object name=”Light Level Control”
number=”02”class=”07”classname=”Analog_Control”description=”控制灯光的光照强度,0表示全暗,100表示全亮”/>
<Member_Variable_List>
<Member_Variablename=”current_value”description=”当前灯光的亮度级别”Label=”43”Access=”ReadWrite”DataType=”ui1”Mandatory=”yes”/>
</Member_Variable_List>
</Basic_Object>
<Basic_Object>
<Object name=”Light Level Setting”number=”03”class=”08”classname=”Analog_Sensor”description=”在控制器上接受用户的输入,如果是开关型灯光,0表示暗,100表示亮”/>
<Member_Variable_List>
<Member_Variablename=”current_value”
description=”人工设定的当前亮度级别”Label=”43”Access=”ReadOnly”DataType=”ui1”Mandatory=”yes”/>
</Member_Variable_List>
</Basic_Object>
</object_list>
</Basic_Service>
为了完成设备内部的操作,本发明还设定了一系列标准动作(Action),来操作每个对象中的成员变量。当对象接收到一个消息时,就会调用消息中所指明的动作,通过操作命令中的不同动作,进而操作对象中的各种成员变量,以执行一个特定的任务。每个动作也对应相应的动作编号,如SetValue的动作编号为0x45,GetValue的动作编号为0x43等等,表5给出了动作及其对应动作编号的具体应用实例。

表5每个动作往往可以带一个或多个参数,参数之间以F5分隔。例如动作编号为45的设置值(SetValue)动作可带两个参数变量标号(MV_Label)和变量值(Value)。如果Value没有被提供,则表明直接引用缺省变量值(default_value)。例如45 43 F5 32 35 35表示设定变量标号为43的变量值为255;45 43表示设定变量标号为43的变量值为缺省值(default_value)。
对于一个符合本发明所提出规范的设备来说,某些动作是必须实现的。比如如果一个对象包含布尔(Boolean)变量,则对象要支持SetOn,SetOff,SetValue和GetValue;如果一个对象包含数字的(Numeric)变量,则对象要支持SetValue和GetValue;如果一个对象包含字符串(cstr)变量,则对象要支持SetValue和GetValue;如果一个对象包含队列(Array)变量,则对象要支持SetArray和GetArray。
从上述基础类和基本服务类的描述可以看出,对于任何家用设备的描述只需考虑其功能和服务即可,而无需考虑该设备的厂家、实现细节等其它因素。
在家庭网络中,由于传输媒介的速率限制,不应传送过大的数据帧;并且要求控制帧应该容易被嵌入式的设备来解释执行。基于上述基础类、基本服务类以及设备之间的关系描述,如图10所示,图10表示出了每一层元素的区分方式。其中,设备是网络节点,由控制子网的地址(Address)来区分;服务代表有意义的功能集合,用服务类别号(Service Class)和服务编号(Service ID)来区分;对象是最基本的构造单元,用对象编号(ObjectID)来区分。
由于每个家用设备在控制子网上以节点(Node)形式存在,整个控制子网中的每个节点都拥有独一无二的地址,其地址的格式如表6所示

表6每个设备可提供多种服务,每个服务又包括若干个对象,每个对象(Object)可在同一个或不同的服务(Service)中重复使用,通过给不同的对象实体使用相同的模型(model),使得每一个类型对象的操作方法是一致的,而不管它被使用在什么服务之中。如此,即可确保在不同设备中对同样对象施加操作命令得到同样的结果,本发明采用OCL语言对OOD对象进行操作。
以控制厨房灯光(Kitchen_Light)设备的亮度(Light)为例,该控制操作用OCL语言描述为00 01 3A 02 A0 21 02 45 43 F5 35 30该指令的描述分析如表7所示

表7举个例子来说明设备OOD模型的具体描述方法。比如,存储器根据其功能可分为三类断电不保持的可读可写存储器、断电可保持的可读可写存储器、断电可保持的只读存储器。随机存取存储器(RAM)可随时读写,断电后不保持;只读存储器(ROM)一次写入后只能读出;闪存(FLASH)和可擦写存储器(E2PROM)等属于断电后可保持的存储器。因此,家用设备的数据库根据数据信息的特点,选择相应的存储器来存储数据。例如产品序列号信息出厂时固化保存在ROM中;网络地址在配置后,存储于FLASH或E2PROM中;而对于灯光亮度值这类随时可能变化且断电后并不需要保持的变量,可存储于RAM中。
通常,将数据库的“服务→对象→成员变量”指针保存在FLASH中;将变量的值根据成员变量的特点存储在RAM、FLASH或ROM等区域中;“成员变量”指针指向成员变量数据的实际存储地址。那么,成员变量寻址将按照下列顺序“服务→对象→成员变量”。
以访问服务类别号=0x02、对象编号=0x03、成员变量=0x43的寻址过程为例首先在服务列表中找到类别为0x02的表项,其对应的偏移地址就是该服务包含的对象列表地址;然后,在上述偏移地址所指向的对象列表中找到编号为0x03的表项,同样,得到对应的成员变量列表偏移地址;最后,在成员变量列表中找到0x43,对应的偏移地址就是该变量具体内容所存放的位置,其中,服务列表的组成及变量寻址过程如图11所示。
可见,只要给出02 03 43这一串十六进制序列,就可以通过上述方法访问到该成员变量。服务列表的格式具体如表8所示

表8从表8中可以检索出对应于指令中的服务类别号和服务编号部分,对应的偏移地址就是该服务所包含的对象列表在存储器中的起始位置。比如十六进制序列00A090 AD表示服务类别号为0x00,编号为0xA0的服务在存储器中的偏移地址是0x90AD;十六进制序列40A090 B4表示服务类别号为40,编号为A0的服务在存储器中的偏移地址是0x90B4;十六进制序列42A090 CF表示服务类别号为42,编号为A0的服务在存储器中的偏移地址是0x90CF。
对象列表的格式如表9所示

表9从服务列表中找到属于它的对象列表后,就可以检索出与指令中对象编号对应的偏移地址,这个偏移地址就是该对象所包含的成员变量列表在存储器中的起始位置。比如0190 FB表示对象编号为01的对象在存储器中的偏移地址是0x90FB;0291 01表示对象编号为02的对象在存储器中的偏移地址是0x9101;0391 2E表示对象编号为03的对象在存储器中的偏移地址是0x912E。
成员变量列表的格式如表10所示

表10从对象列表中找到该对象的成员变量列表后,就可以检索出与指令中变量标记对应的偏移地址,这个偏移地址就是变量在存储器中的起始位置。比如68E891 AD表示系统地址保存在0x91AD;61E891 B4表示单元地址保存在0x91B4;691C91 C0表示配置信息保存在0x91C0;75CC02 A0表示用户回馈保存在0x02A0;432091 C1表示当前值保存在0x91 C1地址。
其中,成员变量从存储格式上分为4种布尔型变量、数值型变量、字符串型变量、数组变量,每种类型成员变量的存储格式分别表示如下1)布尔型变量存储格式=<布尔值>,其中,布尔值的取值为十六进制的0和1;该布尔值长度为1;取0表示假,取1表示真。
在成员变量列表中,偏移地址指向一块长度为1字节的RAM地址,该类型变量是唯一无需指定串长度的,其长度总为1。
2)数值型变量存储格式=<串长度><编号串(Number String)>,其中,串长度可取任意值,即十六进制的00..FF;<Number String>=[″-″]<整型串(Integer String)>[″.″<Integer String>[″E″[″-″]<Integer String>]];<Integer String>=<数字(Digit)>+,<Digit>取值为0到9;总长度为串长度加上1个字节。
例如06 35 2E 31 45 2D 39表示5.1E-9,其对应关系如表11所示。

表113)字符串型变量存储格式=<物理长度(Physical length)><逻辑长度(Logical length)><字符串(Character)>*,其中,<Physical length>为内存允许的占用数,可取任意值,以字节为单位;<Logical length>为当前已经占用的字节数,可取任意值;<Character String>=<文字标记(LITE-RAL Token)><Character>*;<LITERAL Tokeh>=EC Hex;<Character>为十六进制的00..7F。
例如0D 0A 54 4F 4E 45 2F 50 55 4C 53 45 FF FF FF表示″TONE/PULSE″,其对应关系如表12所示。

表124)数组变量存储格式=<Physical length><Logical length><元素大小(Element size)><数据值(Data Value)>*,其中,<Physical length>为内存允许的占用数,可取任意值,以字节为单位;<Logical length>为当前已经占用的字节数,可取任意值;<Element size>可取任意值;<DataValue>=<数据标记(DATA Token)><Integer String><ESCAPE Token><Any Value>*;<ESCAPE Token>为十六进制的F6;<DATA Token>为十六进制的F4。
比如在某一个传感器上的“report_header”成员变量取值为05 42 02 4543 F5,其对应关系如表13所示。

表13成员变量数据可选择四种存储器来存放,由属性字段中的取值来指定,00-RAM、01-ROM、10-NVM、11-FLASH。其中,ROM是只读的;NVM、FLASH可按照一定的方式写入,掉电后数据可保持;RAM是可读可写的,但是掉电或复位后会丢失数据。在RAM中,同样开辟一定长度的区域存放数据,由成员变量列表,指向该内存地址。
根据数据库存储器类别,数据存储空间可分为三个段表格段(TABLE Segment),位于FLASH,起始地址为0x8000;可读可写数据段(RAM_DATA Segment),位于RAM,起始地址为0x00B0;只读或NVM数据段(FLASH_DATA Segment),位于FLASH,起始地址为0xA000。
每个段中的数据都是连续存放的,表格段的每个表列是定长的。其中,表格段,从Table Segment偏址开始,存放了服务列表、对象列表、成员变量列表等几张表格,它们是嵌套结构并且连续存放,但成员变量的具体取值则存放在可读可写数据段(RAM_DATA Segment)和只读或NVM数据段(FLASH_DATA Segment)中。该服务列表共1+4*Services个字节,格式描述为Len(1)Item_1(4)Item_2(4)Item_3(4)...Item_n(4);对象列表共1+3*Objects个字节,格式描述为Len(1)Item_1(3)Item_2(3)Item_3(3)...Item_n(3);成员变量共1+4*MVs个字节,格式描述为Len(1)Item_1(4)Item_2(4)Item_3(4)...Item_n(4),该格式描述参见图11所示。
基于本发明的节点装置和以上所有设备描述,家庭网络上的各个设备之间即可实现相互访问,并通过网络进行相互间的数据交换。这里提到的设备是指包含节点装置,并具备一定功能的一个或一组系统,它包括但不仅限于消费电子设备、家用电器、家用设施等。例如一盏电灯、一台微波炉、水表或一组安防传感器。所称的网络以一种或几种通讯介质作为总线,提供各种设备间传输数字化数据的能力。通讯介质可以是电力线、红外线、无线射频、双绞线、同轴电缆、光纤等。图12给出了一种设备间的简单连接方式,即设备1、设备2、设备3和设备4通过总线方式连接在网络上。更具体地,图13给出了一个设备联网的具体实例,多个灯具、扬声器、卫星接收机、音响、电视机、两个电话机、计算机、录像机、机顶盒、摄像头、2个传感器、水/电/煤气表等家用设备通过各种通讯介质连接在一个家庭网络中。该网络是对等型的,面向报文分组并使用载波侦听多重访问和冲突检测协议(CSMA/CD)。
利用本发明节点装置的软件和硬件结构支持,同时采用上述说明的设备描述方法、OOD数据库访问方法以及OCL命令语言解释方法,家庭网络上的设备和设备之间便能够进行控制和查询的互操作。当多个设备互连时,每个设备通过所分配的地址信息来相互区别。当某个设备需要给另外一个设备发送信息时,需要知道对方的地址信息才能将数据发送给对方;但当某个设备需要给某个特定的对象发送信息时,它可以使用广播地址(0000)来使所有的设备都接收并处理这条信息。例如让所有灯光打开的命令可以是00 00 21 02 45 66 F5 37;而打开某一盏地址为03 42灯具的指令则是03 42 21 02 45 66 F5 37。
假定存在两个设备A和B,设备A和设备B遵循同一种标准规范,当设备A要控制设备B时如果设备A上预置了对设备B的访问细节,那么设备A可以直接对设备B进行控制和查询;如果设备A上不存在对设备B的访问细节,但是,由于设备A遵循标准规范,它了解规范所定义的一系列基础对象的操作方法,那么,设备A只需要从设备B上获取索引信息,并结合标准规范信息,即可实现对设备B的控制和查询。设备间进行互操作过程之前至少包括以下步骤1)当设备新加入网络时,向资源管理设备进行注册,资源管理设备将创建每个节点的OOD描述信息映像,如图14所示,分别对四种设备用不同的基础类进行组合描述。以电视机具体来说,如图15所示,电视机包括两个基本服务类视频显示服务和音频播放服务,视频显示服务又包括信号源切换对象和亮度模拟量控制对象两个基础类;音频播放服务又包括信号源切换对象和增益模拟量控制对象两个基础类;每个基本服务类中还包括一个索引对象,用于提供当前服务包含了其余哪些对象;另外,该设备还包括一设备整体描述服务,该服务包括节点控制对象和索引对象,该服务在每个设备中都必须具有,用来提供寻址、初始化配置、查找其它服务等功能。
为了描述设备地址、群组地址、该设备由哪些服务构成等信息,在设备中总存在一个特殊的服务整体描述服务(Universal Service),该服务中包含节点控制对象和索引对象,用来提供寻址、初始化配置、查找其它服务的功能,其中,节点控制对象包含设备的地址、配置信息等;索引对象提供了此设备包含哪些服务的索引列表。由此,网络上的其它设备就可以通过读取新设备上的一系列索引获得新设备的相关信息。UniversalService相当于一个控制中心,存储有每个节点的一些规范信息,如厂家名称、型号、设备名称、设备所属类别等等,同时存储有设备级别的一些参数,如电源是否有电等,该服务通常只需包含一个Node_Control基础类。
2)用户通过资源管理设备提供的用户界面,按照自身需要配置各个节点之间的关联(或称为捆绑关系),如图16所示,在这一配置中,设备A的“切换开关”对象和设备B的“灯光开关控制”对象相捆绑;设备A的“旋钮开关”和设备C的“灯光调光控制”对象相捆绑;而设备C的“灯光调光控制”对象和设备D的“显示屏”对象捆绑;而设备C的“光照传感器”对象又和设备A的“显示屏”对象进行捆绑。
3)资源管理设备将配置好的关联信息下载到每个网络节点上。例如,设备A的“切换开关”对象”在发生动作时将结果报告给设备C的“灯光开关控制”对象。那么,在设备A的“切换开关”对象中,应该保存以下信息a>“发出报告需满足的条件”在本例中是“开关状态变量发生改变”,它包含一个布尔表达式,例如温度值变量>40;b>“接收报告的目标地址”在本例子中是设备C的HACN地址;c>“接收报告的服务编号”;在本例子中是指“照明控制服务”,编号21;d>“接收报告的对象编号”;在本例子中是指“模拟量控制对象”,编号02;e>“向接收报告对象发出的动作编号”;在本例子中是指“设定值”,编号45;f>“接收报告的成员变量编号”;在本例子中指“当前模拟量值变量”,编号43;g>“发送报告的模式”;在本例子中可选择“在条件满足的时刻发送报告”,其包含几种情况①仅在条件满足的时刻发送一个报告,也就是“发出报告需满足的条件”的布尔表达式计算的结果从False转变为True的一瞬间,产生报告;②在条件满足时,按照指定的时间间隔,持续发送报告,也就是“发出报告需满足的条件”的布尔表达式计算的结果为True时,产生报告。条件是否满足由OCL解释器不断检查,如果满足,则按照发送报告的模式将报告组合成一条有效的OCL命令,发送给目标设备。
经过以上a>~g>的配置,设备A就可以在开关状态变量发生变化时,把“开关状态变量”的新取值发送到设备C的“当前模拟量值变量”上。上述配置及相关信息应保存在节点装置的OOD数据库中。
4)至此,配置过程完成,设备可以自动完成相互间的操作。
以调节电视机的显示亮度为50%为例,需要获得以下信息<1>该电视机设备的控制子网地址,例如00 01 03 F2,是预先分配或指定的;<2>视频显示服务的服务类别号,本实施例中该服务类别号为13;<3>亮度控制对象的对象编号,本实施例中该对象在视频显示服务中的对象编号为03;<4>操作该对象的OCL方法,由于其是一个模拟量对象,可以采用SetValue(45)方法来操作对象中的Current_Value(43)成员变量;<5>操作参数,由于需要调整亮度到50%,所以参数为“50%”。
归纳起来,各项参数以及相应的取值如表14所示,表14为电视机显示亮度OLC指令分析表。

表14由此形成一条完整的OCL指令,进而对目标设备进行操作。
总之,在实际应用中,设备的描述语言、基础类和基本服务类的划分等均可采用不同的实现方式,只要能保证其实现简单、唯一确定即可。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种节点装置,设置于家庭网络上的每个控制子网设备中,用于实现控制子网设备的网络接入与通信,至少包括负责运算和控制的微控制/处理器、负责接收和发送网络数据的网络通讯接口以及与每个设备连接的具体应用控制电路,其中,网络通讯接口和具体应用控制电路均与微控制/处理器互连;其特征在于该微控制/处理器中进一步包括通讯协议栈,用于实现与网络的通讯协议;数据/操作处理模块,包括数据库和解释器,负责将收到的命令翻译成相应的操作指令;应用接口模块,包括应用程序接口、应用进程代码单元以及外部物理接口,用于对家庭网络上的家用设备进行实际操作;实时多任务操作系统内核,用于管理、调度和协调通讯协议栈、数据/操作处理模块和应用接口模块之间的操作。
2.根据权利要求1所述的装置,其特征在于该装置进一步包括状态指示单元,用于显示节点的当前状态,其与微控制/处理器相连。
3.根据权利要求1所述的装置,其特征在于该装置进一步包括外部存储器,用于存储节点信息,其与微控制/处理器互连。
4.根据权利要求1所述的装置,其特征在于所述数据/操作处理模块中的数据库为面向对象设备模型(OOD)数据库。
5.根据权利要求1所述的装置,其特征在于所述数据/操作处理模块中的解释器为对象控制语言(OCL)命令语言解释器。
6.一种采用上述装置实现家庭网络中控制子网设备间通信的方法,其特征在于至少包括以下步骤a.当设备节点间进行互操作时,先判断该设备节点是否已向资源管理设备进行注册,如果是,则直接进入步骤c;否则,未注册的设备节点向资源管理设备进行注册,资源管理设备创建该节点的设备描述信息;b.资源管理设备根据需求配置每个节点之间的捆绑关系,并生成设备描述之间的关联信息,然后,将配置好的关联信息下载到家庭网络的每个节点上,每个节点收到关联信息后保存于自身的数据库中;c.发起方设备节点在自身数据库中查找,找到目标设备的关联信息后,将该关联信息解释为标准控制指令对目标设备节点进行操作。
7.根据权利要求6所述的方法,其特征在于该方法用面向对象设备模型(OOD)对每个家用设备节点进行描述,并在设备间互操作时用对象控制语言(OCL)对面向对象设备模型中的对象进行操作。
8.根据权利要求7所述的方法,其特征在于步骤a中所述创建节点的设备描述是将该家用设备节点由一个以上基本服务类组合而成,每个基本服务类包括至少一个基础类,每个基础类又进一步包括至少一个成员变量。
9.根据权利要求7所述的方法,其特征在于步骤c所述将关联信息解释为标准控制指令进一步包括a1.初始化时设置索引值、服务类别号和对象类别号;b1.在命令标识(ID)对应表中查找命令ID值对应的表项,如果未找到该项,则返回出错消息后结束流程;否则,进入步骤c1;c1.执行步骤b1所找到的表项中存储的动作,设置成员变量的值,然后,跳过分隔符,解释ASCII数字串,并查找服务ID、对象类别号、成员变量所对应变量的数据存储位置,如果未找到,则返回出错消息后结束;否则,将命令串中给出的数值赋给成员变量存储区的数值,当命令解释完成后,OCL解释器返回索引指针。
10.根据权利要求7所述的方法,其特征在于步骤c所述在OOD数据库中查找目标设备的关联信息进一步包括a2.初始化时设定索引值,并读取服务标识(ID);b2.在功能集列表中顺序查找服务标识(ID)值对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤c2;c2.设置索引值为查找到的对象表项对应的对象列表偏移地址(Offset),并在对象列表中顺序查找对象X对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤d2;d2.设置索引值为查找到的对象表项对应的成员列表偏移地址,并在成员变量列表中顺序查找成员变量X对应的表项,如果未找到,则返回出错信息后结束,否则,设置索引值为查找到的成员变量表项对应的偏移地址,返回索引指针并结束。
全文摘要
本发明公开了一种节点装置,设置于家庭网络上的每个控制子网设备中,用于实现控制子网设备的网络接入与通信,至少包括微控制/处理器、负责收发网络数据的网络通讯接口以及与每个设备连接的具体应用控制电路;关键在于微控制/处理器中进一步包括通讯协议栈,用于实现与网络的通讯协议;数据/操作处理模块,包括数据库和解释器,负责将收到的命令译成相应的操作指令;应用接口模块,用于对家庭网络上的家用设备进行实际操作;实时多任务操作系统内核,用于管理、调度和协调通讯协议栈、数据/操作处理模块和应用接口模块间的操作。本发明还公开了一种采用上述装置实现设备间互操作的方法,该方法和装置能实现设备间的互连互通以及资源共享。
文档编号H04Q3/545GK1466328SQ0213068
公开日2004年1月7日 申请日期2002年9月18日 优先权日2002年9月18日
发明者罗嘉, 李明, 任艳频, 张渊毅, 罗予晋, 孟闯, 姜珊, 罗 嘉 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1