CN1178429C - 节点装置及其实现家庭网络中控制子网设备间互通的方法 - Google Patents
节点装置及其实现家庭网络中控制子网设备间互通的方法 Download PDFInfo
- Publication number
- CN1178429C CN1178429C CNB021306818A CN02130681A CN1178429C CN 1178429 C CN1178429 C CN 1178429C CN B021306818 A CNB021306818 A CN B021306818A CN 02130681 A CN02130681 A CN 02130681A CN 1178429 C CN1178429 C CN 1178429C
- Authority
- CN
- China
- Prior art keywords
- equipment
- service
- node
- control
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种节点装置,设置于家庭网络上的每个控制子网设备中,用于实现控制子网设备的网络接入与通信,至少包括:微控制/处理器、负责收发网络数据的网络通讯接口以及与每个设备连接的具体应用控制电路;关键在于微控制/处理器中进一步包括:通讯协议栈,用于实现与网络的通讯协议;数据/操作处理模块,包括数据库和解释器,负责将收到的命令译成相应的操作指令;应用接口模块,用于对家庭网络上的家用设备进行实际操作;实时多任务操作系统内核,用于管理、调度和协调通讯协议栈、数据/操作处理模块和应用接口模块间的操作。本发明还公开了一种采用上述装置实现设备间互操作的方法,该方法和装置能实现设备间的互连互通以及资源共享。
Description
技术领域
本发明涉及网络内部通讯技术,特别是指一种节点装置及其实现家庭网络中控制子网设备互通的方法。
发明背景
随着人们物质生活水平的提高,家庭范围内的信息设备、通讯设备、娱乐设备、家用电器、自动化设备、保安监控装置等设备逐渐增多,同时由于个人计算机和因特网在家庭中的迅速普及、电讯技术的蓬勃发展以及智能设备的长足进步,家庭网络日益受到广泛关注,人们对简单、灵活、可靠的家庭网络的需求也愈显强烈。产生了很多与之相关的提法,例如:智能家居(Smart Home)、电子家庭(Electronic Home,e-Home)、数字家园(Digital Family)、网络家居(Network Home)、智能化家庭(IntelligentHome)等等,其涵盖的内容是基本相同的,都源于家庭网络的概念。具体地讲家庭网络(Home network)包括四层含义:①家庭中的信息设备、通讯设备、娱乐设备、家用电器、自动化设备、保安监控装置等互联互通、资源共享,组成家庭智能化、数字化网络系统;②通过网关与社区、互联网连接,实现与家庭外部环境的信息交换;③家庭的设备及其连接的网络应该满足人们安全、方便、舒适、健康与绿色环保的基本需求,为人们提供身心愉悦的体验;④体现以人为本的理念,易于使用、安全可靠、方便维护、价格适宜,满足居家生活的特点。
有鉴于此,申请人在另一专利申请中提出了一种数字家庭网络系统,如图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.设置索引值为查找到的对象表项对应的对象列表偏移地址,并在对象列表中顺序查找对象X对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤d2;
d2.设置索引值为查找到的对象表项对应的成员列表偏移地址,并在成员变量列表中顺序查找成员变量X对应的表项,如果未找到,则返回出错信息后结束,否则,设置索引值为查找到的成员变量表项对应的偏移地址,返回索引指针并结束。
因此,本发明所提供的节点装置及其实现家庭网络中控制子网设备互通的方法,具有以下的优点和特点:
1)由于本发明定义了统一的设备描述标准,能够使控制子网上的任意设备相互识别,进而实现互连互通及资源共享。而且,使任何一个具有相同设备描述规范的设备能够随时接入该控制子网,并与其它已有设备进行控制、查询等通信操作。
2)本发明中的每个控制子网节点采用统一的OOD描述方法和OCL控制语言,既可实现不同厂家产品之间的互操作,又简化了节点的设计,可由第三方设计节点的硬件和软件模块。
3)本发明提出的OOD描述方法具有非常灵活的扩展性,并且在很大程度上避免了不断升级规范以适应新的互操作性要求。
4)由于采用OOD模型,即:基础类→基本服务类→设备的组成结构,使得家用设备的所有功能都可以通过基础类的组合完成,进而所有家用设备都可以通过这种结构形成,不仅简单、方便、灵活;而且,避免了为满足将来不断涌现的新功能不断定义新的类和函数的繁琐。
5)本发明对于基础类的访问方式是确定的,使得嵌入式的程序设计较为简单、且易于实现。
6)本发明对于基本服务类采用规范化的设计,使得各个家用设备所能提供的服务都可以由一些基本服务类组合构成。例如:电视机有“视频显示服务”、“音频播放服务”等,具有良好的互操作性,即设备间不需要对目标系统非常复杂的认知和识别过程,只需要依据规范即可确知目标系统所具备的功能和操作方法。大大简化了节点的设计,从而降低设计成本。例如,设计一个用于开关灯光的按钮时,只需要根据规范具备控制“灯光”的“模拟量控制”这一目标能力。
7)本发明采用的OCL操作指令自身具有以下特点:①长度很短,利于在控制网络上进行传输;②包含足够的控制/查询信息;③符合标准的BNF规范,可以很容易地解析;④兼容性、互操作性、可读性较好。
8)本发明所提出的控制子网设备互操作方法,是在OOD的基础上,将设备间的协调工作抽象到对象和方法的层次,而无需预先知道设备的具体实现方式。譬如,控制A公司生产的电视机的信息符合本发明所规定的OOD和OCL规范,其它厂家无需知道任何关于A公司设计实现,如控制音量等具体细节,只要按照标准的模式向电视机发送信息,就可以控制电视机的工作状态。
附图说明
图1为本发明采用的家庭网络系统结构示意图;
图2为本发明节点装置的结构组成示意图;
图3为本发明节点装置实现的电路原理图;
图4为本发明节点装置中软件系统的结构组成示意图;
图5为本发明中OCL解释器的组成结构示意图;
图6为本发明OCL解释器的工作流程示意图;
图7为本发明中OOD数据库访问模块寻址过程的流程示意图;
图8为本发明面向对象设备模型的分层结构示意图;
图9为本发明中每个设备面向对象模型的组成结构示意图;
图10为本发明OOD模型中每个层次的区分方式示意图;
图11为本发明中成员变量寻址的过程示意图;
图12为本发明中设备连接方式的一实施例图;
图13为本发明中一具体设备连接实例图;
图14为资源管理设备对每个节点的OOD描述信息映像图;
图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)来对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给出了一个基础类与对象类别号对应的应用实例。
基础类名称 | 英文标识 | 对象类别号 |
节点控制 | NODE CONTROL | 01 |
服务控制 | SERVICE PROFILE | 02 |
二值开关控制 | BINARY SWITCH | 05 |
二值传感器输入 | BINARY SENSOR | 06 |
模拟量控制 | ANALOG CONTROL | 07 |
模拟量传感器输入 | ANALOG SENSOR | 08 |
单刀多掷开关控制 | MULTI_STATE SWITCH | 09 |
单刀多掷传感器输入 | MULTI_STATE SENSOR | 0A |
矩阵式开关 | MATRIX SWITCH | 0B |
计量表头 | METER | 0F |
文本显示 | DISPLAY | 10 |
拨号器 | DIALER | 13 |
键盘 | KEYPAD | 14 |
电动机 | MOTOR | 17 |
均衡器 | SYNTHESIZER/TUNER | 19 |
音频发生器 | TONE GENERATOR | 1A |
计数器 | COUNTER | 1C |
时钟 | CLOCK | 1D |
定时器 | TIMER | 1E |
表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_Variable
name=”current_state”
description=”传感器的当前状态(例如0=OFF,1=ON)”
Label=”43”
Access=”ReadOnly”
DataType=”boolean”
Mandatory=”yes”
/>
<Member_Variable
name=”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_Variable
name=”current_state”
description=”传感器的当前状态(例如0=OFF,1=ON)”
Label=”43”
Access=”ReadOnly”
DataType=”boolean”
Mandatory=”yes”
/>
每个对象在服务中以对象类别号(Object Class)和对象编号(Object ID)来区分,其中,对象类别号是对于每个对象唯一确定的逻辑编号,在不同服务中使用同一对象时所用的对象类别号相同,例如:二值开关控制的对象类别号05;而对象编号则是指每个对象在不同服务中使用时实际分配的顺序号,在每个基本服务中,从0x01开始顺序给每个对象分配一个对象编号。
以“照明灯光服务”的描述为例:
//定义一个具体的服务类:灯光
class LIGHT_Service{
public:
Service_ProfileThis_Service_Profile;//1必须包含描述本服务的对象构成
Analog_ControlLight_Level_Control;//2灯光亮度级别控制
Analog_SensorLight_Level_Setting;//3光照传感器
};
上述例子中,灯光服务包括三个对象:This_Service_Profile、Light_Level_Control和Light_Level_Setting,其对象编号和对象类别号的取值如表2所示。
对象名称 | 对象编号(Object ID) | 对象类别号(Object Class) |
This_Service_Profile | 0x01 | 0x02 |
Light_Level_Control | 0x02 | 0x07 |
Light_Level_Setting | 0x03 | 0x08 |
表2
引用对象时,可直接用Object ID来表示针对哪一个对象操作。例如,调整灯光亮度,可用0x02这个Object ID来表示对Light_Level_Control这个对象的操作。
此外,如果某一类别的对象在服务中只有一个实例出现,那么,可用0x00<Object Class>的方式引用。例如:用0x00 0x07来表示对Light_Level_Control这个对象的操作。
基本服务类是将一个或多个基础类组合在一起,构造出一个设备的特定功能子集,一个设备由一个或多个基本服务类构成。在设定基本服务类时,同样要考虑其在不同设备中的重用(reuse)性。
一个家用设备可能提供多种服务(Service),每种服务即为一系列对象的集合,当然也包括对于这些对象的动作(Action)。服务是呈现具体功能应用的实体,例如:在一台电视机中提供了“视频显示服务”,这一服务包括以下对象:“亮度模拟量控制对象”,通常用基础类“模拟量控制”来描述;“对比度模拟量控制对象”,也用基础类“模拟量控制对象”来描述;“信号源切换对象”,一般用基础类“单刀多掷切换对象”来描述。同时,“视频显示服务”中还包括针对这些对象的相应的操作方法。
每个基本服务类同样也对应不同的服务类别号,如表3所示。表3给出了一个基本服务类与服务类别及服务类别号对应的应用实例。
服务类别号 | 服务名称 | 标识符 | |
通用服务 | 00 | 设备统一信息 | Universal |
02 | 用户接口 | User Interface | |
05 | 时钟 | Time | |
音频/视频 | 10 | 音频放大 | Audio Amp |
11 | 传输媒介 | Medium Transport | |
12 | 调谐器 | Tuner | |
13 | 视频显示 | Video Display | |
14 | 音频均衡 | Audio Equalizer | |
15 | 摄像头 | Camera | |
17 | 切换开关 | Switch | |
18 | 音频系统 | A/V System | |
19 | 音频系统控制 | A/V System Control | |
照明 | 20 | 光照传感器 | Light Sensor |
21 | 光照 | Light | |
22 | 光照区域 | Lighting Zone | |
23 | 光照状态 | Light Status | |
29 | 光照区域控制 | Lighting Zone Control | |
通讯 | 30 | 对外通讯 | Telecom |
37 | 内部通讯 | Intercom | |
环境控制 | 40 | 环境区域 | Environmental Zone |
41 | 环境传感器 | Environmental Sensor | |
42 | 环境状态 | Environmental Status | |
43 | 环境区域控制 | Environmental Zone Control | |
44 | 环境区域设备 | Environmental Zone Equipment | |
45 | 环境系统 | Environmental System | |
46 | 通风控制 | Damper Control |
能源/计量 | 50 | 计量表 | Utility Metering |
51 | 计量监视 | Utility Monitoring | |
54 | 负载中心 | Load Center | |
55 | 负载中心控制 | Load Center Control | |
56 | 能源控制 | Energy Control | |
57 | 能源管理 | Energy Management | |
安防 | 60 | 安防传感器 | Security Sensor |
61 | 安防区域 | Security Zone | |
62 | 安防分区 | Security Partition | |
63 | 安防分区控制 | Security Partition Control | |
64 | 安防报警 | Security Alarm | |
厨房电器 | 70 | 洗碗机 | Washer |
71 | 热水器 | Water Heater | |
72 | 烘干机 | Dryer | |
73 | 冰箱 | Refrigerator/Freezer | |
75 | 微波炉 | Oven | |
家庭设施 | 80 | 窗户 | Window |
81 | 窗户控制 | Window Control | |
82 | 门 | Door/Gate | |
83 | 门控制 | Door/Gate Control | |
88 | 电梯 | Lift |
表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所示的状况。
服务名称 | 服务编号(Service ID) | 服务类别号(Service Class) |
用户接口服务1 | 0xA0 | 0x02 |
用户接口服务2 | 0xA1 | 0x02 |
照明灯光服务 | 0xA0 | 0x21 |
表4
需要说明的是,0xDE是一个特殊的服务编号,它被用来表示一个设备中全部的同类服务。例如:一个设备有两个灯光,0xA0 0x21和0xA1 0x21,假如希望在一个操作中把全部灯光打开,那么就在操作命令中声明服务为:0xDE 0x21。更进一步,如果希望对某个设备上的全部服务进行操作,那么可在操作命令中声明服务为:0xDE 0x00,其中,0x00实际上是全体服务(Universal Service)的服务类别号。
基本服务类在具体应用时,同样可通过XML语言进行描述。例如:灯光控制服务的XML描述如下:
<Basic_Service>
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<service
name=”LIGHT”
description=”用于灯光控制以及用户控制的切换开关,可以用在开关型或调光型灯具中”
class=”21”
/>
<object_list>
<Basic_Object>
<Object name=”Index Object”
number=”01”
class=”02”
classname=”Service_Profile”
description=”提供本服务的对象列表索引”
/>
<Member_Variable_List>
<Member_Variable
name=”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_Variable
name=”current_value”
description=”当前灯光的亮度级别”
Label=”43”
Access=”ReadWrite”
DataType=”uil”
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_Variable
name=”current_value”
description=”人工设定的当前亮度级别”
Label=”43”
Access=”ReadOnly”
DataType=”uil”
Mandatory=”yes”
/>
</Member_Variable_List>
</B asic_Object>
</object_list>
</Basic_Service>
为了完成设备内部的操作,本发明还设定了一系列标准动作(Action),来操作每个对象中的成员变量。当对象接收到一个消息时,就会调用消息中所指明的动作,通过操作命令中的不同动作,进而操作对象中的各种成员变量,以执行一个特定的任务。每个动作也对应相应的动作编号,如SetValue的动作编号为0x45,GetValue的动作编号为0x43等等,表5给出了动作及其对应动作编号的具体应用实例。
动作名称 | 动作编号 |
NOP | 40 |
SETOFF | 41 |
SETON | 42 |
GETVALUE | 43 |
GETARRAY | 44 |
SETVALUE | 45 |
SETARRAY | 46 |
ADD | 47 |
INCREMENT | 48 |
SUBTRACT | 49 |
DECREMENT | 4A |
COMPARE | 4B |
SWAP | 4E |
表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所示:
标识名称 | 子网标识(Subnet ID) | 节点标识(Node ID) |
占用字节数 | 2个字节 | 2个字节 |
表6
每个设备可提供多种服务,每个服务又包括若干个对象,每个对象(Object)可在同一个或不同的服务(Service)中重复使用,通过给不同的对象实体使用相同的模型(model),使得每一个类型对象的操作方法是一致的,而不管它被使用在什么服务之中。如此,即可确保在不同设备中对同样对象施加操作命令得到同样的结果,本发明采用OCL语言对OOD对象进行操作。
以控制厨房灯光(Kitchen_Light)设备的亮度(Light)为例,该控制操作用OCL语言描述为:
00 01 3A 02 A0 21 02 45 43 F5 35 30
该指令的描述分析如表7所示:
数据 | 说明 |
00 01 3A 02 | 指Kitchen_Light这个设备的控制子网Address |
A0 21 | 代表Light_A这个服务的Service Number和Service Class |
02 | 代表Light_Level_Control这个Object ID |
45 | 代表SetValue这一动作(Action ID) |
43 | 代表Current_Value这一成员变量(MV_Label) |
F5 35 30 | 代表SetValue的一个参数,50% |
表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所示:
字段编号 | 1 | 2 | 3 |
字段名称 | 服务类别号 | 服务编号 | 偏移地址 |
长度(字节) | 1 | 1 | 2 |
允许的取值 | 00..9F | A0..DE | 任意 |
表8
从表8中可以检索出对应于指令中的服务类别号和服务编号部分,对应的偏移地址就是该服务所包含的对象列表在存储器中的起始位置。比如:十六进制序列
00
A0
90 AD表示服务类别号为0x00,编号为0xA0的服务在存储器中的偏移地址是0x90AD;十六进制序列
40
A0
90 B4表示服务类别号为40,编号为A0的服务在存储器中的偏移地址是0x90B4;十六进制序列
42
A0
90 CF表示服务类别号为42,编号为A0的服务在存储器中的偏移地址是0x90CF。
对象列表的格式如表9所示:
字段编号 | 1 | 2 |
字段名称 | 对象编号 | 偏移地址 |
长度(字节) | 1 | 2 |
允许的取值 | 00..FF | 任意 |
表9
从服务列表中找到属于它的对象列表后,就可以检索出与指令中对象编号对应的偏移地址,这个偏移地址就是该对象所包含的成员变量列表在存储器中的起始位置。比如:
01
90 FB表示对象编号为01的对象在存储器中的偏移地址是0x90FB;
02
91 01表示对象编号为02的对象在存储器中的偏移地址是0x9101;
03
91 2E表示对象编号为03的对象在存储器中的偏移地址是0x912E。
成员变量列表的格式如表10所示:
字段编号 | 1 | 2 | 3 |
字段名称 | 变量标记 | 属性 | 偏移地址 |
长度(字节) | 1 | 1 | 2 |
允许的取值 | a..z,A..Z | 任意 | 任意 |
表10
从对象列表中找到该对象的成员变量列表后,就可以检索出与指令中变量标记对应的偏移地址,这个偏移地址就是变量在存储器中的起始位置。比如:
68
E8
91 AD表示系统地址保存在0x91AD;
61
E8
91 B4表示单元地址保存在0x91B4;
69
1C
91 C0表示配置信息保存在0x91C0;
75 CC
02 A0表示用户回馈保存在0x02A0;
43
20
91 C1表示当前值保存在0x91C1地址。
其中,成员变量从存储格式上分为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所示。
串 | 06 | 35 | 2E | 31 | 45 | 2D | 39 |
说明 | 长度为6 | ″5″ | ″.″ | ″1″ | ″E″ | ″-″ | ″9″ |
表11
3)字符串型变量:存储格式=<物理长度(Physical length)><逻辑长度(Logicallength)><字符串(Character)>*,其中,<Physical length>为内存允许的占用数,可取任意值,以字节为单位;<Logical length>为当前已经占用的字节数,可取任意值;<Character String>=<文字标记(LITE-RAL Token)><Character>*;<LITERAL Token>=EC Hex;<Character>为十六进制的00..7F。
例如:0D 0A 54 4F 4E 45 2F 50 55 4C 53 45 FF FF FF表示″TONE/PULSE″,其对应关系如表12所示。
串 | D | A | 4 | F | E | 5 | F | 0 | 5 | C | 3 | 5 |
说明 | =13 | =10 | T″ | O″ | N″ | E″ | /″ | P″ | U″ | L″ | S″ | E″ |
表12
4)数组变量:存储格式=<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所示。
08 | 05 | 01 | 42 | 02 | 45 | 43 | F5 |
允许总长度为8个字节 | 当前逻辑长度为5个字节 | 每个元素占1个字节 | 环境状态监测服务 | 温度监测对象 | 赋值方法 | ″C″, 当前值成员变量 | 分割符 |
表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指令分析表。
属性 | 控制子网地址 | 服务 | 对象 | 方法 | 成员变量 | 参数 |
取值 | 00 01 03 F2 | 13 | 03 | 45 | 43 | “50%” |
表14
由此形成一条完整的OCL指令,进而对目标设备进行操作。
总之,在实际应用中,设备的描述语言、基础类和基本服务类的划分等均可采用不同的实现方式,只要能保证其实现简单、唯一确定即可。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (6)
1、一种节点装置,设置于家庭网络上的每个控制子网设备中,用于实现控制子网设备的网络接入与通信,至少包括:负责运算和控制的微控制/处理器、负责接收和发送网络数据的网络通讯接口以及与每个设备连接的具体应用控制电路,其中,网络通讯接口和具体应用控制电路均与微控制/处理器互连;其特征在于该微控制/处理器中进一步包括:
通讯协议栈,用于实现与网络的通讯协议;
数据/操作处理模块,包括面向对象设备模型数据库和对象控制语言命令语言解释器,负责将收到的命令翻译成相应的操作指令;
应用接口模块,包括应用程序接口、应用进程代码单元以及外部物理接口,用于对家庭网络上的家用设备进行实际操作;
实时多任务操作系统内核,用于管理、调度和协调通讯协议栈、数据/操作处理模块和应用接口模块之间的操作。
2、一种实现家庭网络中控制子网设备间通信的方法,其特征在于至少包括以下步骤:
a.当设备节点间进行互操作时,先判断该设备节点是否已向资源管理设备进行注册,如果是,则直接进入步骤c;否则,未注册的设备节点向资源管理设备进行注册,资源管理设备创建该节点的设备描述信息;
b.资源管理设备根据需求配置每个节点之间的捆绑关系,并生成设备描述之间的关联信息,然后,将配置好的关联信息下载到家庭网络的每个节点上,每个节点收到关联信息后保存于自身的数据库中;
c.发起方设备节点在自身数据库中查找,找到目标设备的关联信息后,将该关联信息解释为标准控制指令对目标设备节点进行操作。
3、根据权利要求2所述的方法,其特征在于:该方法用面向对象设备模型对每个家用设备节点进行描述,则所述每个节点自身的数据库为面向对象设备模型数据库;并且,该方法在设备间互操作时用对象控制语言对面向对象设备模型中的对象进行操作。
4、根据权利要求3所述的方法,其特征在于:步骤a中所述创建节点的设备描述是将该家用设备节点由一个以上基本服务类组合而成,每个基本服务类包括至少一个基础类,每个基础类又进一步包括至少一个成员变量。
5、根据权利要求3所述的方法,其特征在于:步骤c所述将关联信息解释为标准控制指令进一步包括:
a1.初始化时设置索引值、服务类别号和对象类别号;
b1.在命令标识对应表中查找命令标识值对应的表项,如果未找到该项,则返回出错消息后结束流程;否则,进入步骤c1;
c1.执行步骤b1所找到的表项中存储的动作,设置成员变量的值,然后,跳过分隔符,解释ASCII数字串,并查找服务标识、对象类别号、成员变量所对应变量的数据存储位置,如果未找到,则返回出错消息后结束;否则,将命令串中给出的数值赋给成员变量存储区的数值,当命令解释完成后,对象控制语言解释器返回索引指针。
6、根据权利要求3所述的方法,其特征在于:步骤c所述在面向对象设备模型数据库中查找目标设备的关联信息进一步包括:
a2.初始化时设定索引值,并读取服务标识;
b2.在功能集列表中顺序查找服务标识值对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤c2;
c2.设置索引值为查找到的对象表项对应的对象列表偏移地址,并在对象列表中顺序查找对象X对应的表项,如果未找到,则返回出错信息后结束,否则,进入步骤d2;
d2.设置索引值为查找到的对象表项对应的成员列表偏移地址,并在成员变量列表中顺序查找成员变量X对应的表项,如果未找到,则返回出错信息后结束,否则,设置索引值为查找到的成员变量表项对应的偏移地址,返回索引指针并结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021306818A CN1178429C (zh) | 2002-09-18 | 2002-09-18 | 节点装置及其实现家庭网络中控制子网设备间互通的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021306818A CN1178429C (zh) | 2002-09-18 | 2002-09-18 | 节点装置及其实现家庭网络中控制子网设备间互通的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1466328A CN1466328A (zh) | 2004-01-07 |
CN1178429C true CN1178429C (zh) | 2004-12-01 |
Family
ID=34144565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021306818A Expired - Fee Related CN1178429C (zh) | 2002-09-18 | 2002-09-18 | 节点装置及其实现家庭网络中控制子网设备间互通的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1178429C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050235329A1 (en) * | 2004-04-19 | 2005-10-20 | Broadcom Corporation | Systems and methods for integrated control within a home entertainment system |
CN102088382A (zh) * | 2011-01-29 | 2011-06-08 | 廖锦新 | 一种智能家居系统 |
CN102651703A (zh) * | 2011-02-25 | 2012-08-29 | 中国移动通信集团公司 | 家庭网络的控制方法、系统及装置 |
CN102339234B (zh) * | 2011-07-12 | 2013-04-17 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
CN103616866A (zh) * | 2013-11-27 | 2014-03-05 | 中山大学深圳研究院 | 一种基于嵌入式中间件的数字家庭设备的集成控制方法 |
CN108983632A (zh) * | 2018-10-10 | 2018-12-11 | 安徽省鹏徽物业管理有限公司 | 一种终端式智能家居系统 |
-
2002
- 2002-09-18 CN CNB021306818A patent/CN1178429C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1466328A (zh) | 2004-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1255972C (zh) | 家庭设置的电子装置的远程控制方法和管理设备 | |
CN1738274A (zh) | 无线通信系统 | |
CN1607776A (zh) | 用于管理设备的方法和系统 | |
CN1183717C (zh) | 桥连HAVi子网络和UPnP子网络的方法及实施所述方法的装置 | |
CN1263261C (zh) | 用于建立路由表和用于在自动化系统中路由信号的系统和方法 | |
CN1136697C (zh) | 网络中的用户及装置的命令和控制的方法和设备 | |
CN1146899C (zh) | 在连接到外部网络的家庭网络中的设备通信和控制 | |
CN1266512A (zh) | 适用于面向对象编程语言的硬件加速器 | |
CN1735903A (zh) | 操作历史利用系统及其方法 | |
CN1679062A (zh) | 个人可编程通用遥控装置 | |
CN1230792C (zh) | 台用分接头和利用台用分接头的监测系统 | |
CN100336018C (zh) | 用于对应用启动进行管理的便携式终端和方法 | |
CN1044175A (zh) | 单元管理系统 | |
CN1214330C (zh) | 网络连接设备及采用该设备的网络系统 | |
CN1332553A (zh) | 本地网和外部网之间配备控制设备的通信系统 | |
CN1795465A (zh) | 操作履历利用系统 | |
CN1296585A (zh) | 用于通用数据交换网关的方法和装置 | |
CN1956424A (zh) | 基于分布式网关的通信方法及应用 | |
CN1842782A (zh) | 网络资源信息路由的服务器结构 | |
CN1770708A (zh) | 信息处理系统和方法、电子装置和计算机可读程序 | |
CN1463521A (zh) | 信息处理设备 | |
CN1500345A (zh) | 显示设备和控制方法 | |
CN1684423A (zh) | 信息提供控制方法和信息再现系统 | |
CN1276575A (zh) | 数据库存取系统 | |
CN1751473A (zh) | 用于实现基于策略的网络业务管理的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041201 Termination date: 20200918 |
|
CF01 | Termination of patent right due to non-payment of annual fee |