CN103621049A - 用于在多点网络中自动分配地址给设备的***和方法 - Google Patents
用于在多点网络中自动分配地址给设备的***和方法 Download PDFInfo
- Publication number
- CN103621049A CN103621049A CN201280030023.6A CN201280030023A CN103621049A CN 103621049 A CN103621049 A CN 103621049A CN 201280030023 A CN201280030023 A CN 201280030023A CN 103621049 A CN103621049 A CN 103621049A
- Authority
- CN
- China
- Prior art keywords
- equipment
- address
- dynamic address
- dynamic
- identifier
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5092—Address allocation by self-assignment, e.g. picking addresses at random and testing if they are already in use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5038—Address allocation for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种自动分配地址给耦合到共享总线的设备的***和方法。在一个实例中,一种用于分配地址给网络内的多个设备的***包括存储器和耦合到存储器的至少一个处理器。该***被配置为指示所有多个设备分别从第一组动态地址中选择第一动态地址,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备,指示具有标识至少两个设备的第一动态地址的所有多个设备分别从第二组动态地址中选择第二动态地址,并且分别将另一个不同静态地址分配给具有唯一标识设备的第二动态地址的每个设备。
Description
背景
技术领域
本技术领域一般涉及计算机设备之间的通信,并且更具体地涉及用于经由总线耦合的寻址设备的***和方法。
背景讨论
采用共享总线拓扑的一些网络标准,在工业应用中具有广泛的安装基础。这些网络标准包括MODBUS、CAN、I2C和许多基于无线的网络,例如WLAN、Zigbee和蓝牙。这些网络有各种各样的成功原因,并且一些成功的原因包括易于实现、材料的低成本和在噪声、工业环境中的稳定的性能。这些标准中,实施MODBUS的网络是特别流行的。
MODBUS是一种基于字节的通信协议,其中一个设备称为主设备,驱动与一个或多个称为从设备的其它设备进行通信。MODBUS的规范包括在两个部分中:应用层和物理层/链路层。应用层协议是用于主设备和从设备之间交换数据的通用定义。来自应用层的消息以帧的形式进行封装,这些帧然后通过物理/链路层被发送。存在定义MODBUS的多种不同的物理/链路层协议,包括在串行线路上的MODBUS。
根据MODBUS协议的可用的通信模式包括广播和事务。广播是主设备发送给耦合到包括主设备的网络中的所有从设备的消息。在标准MODBUS实施中,从设备并不响应于广播。广播可用来将来自主设备的数据发送到所有的从设备。
相反,事务是由从主设备单播到从设备的请求消息进行初始化。事务是由从设备发回主设备的响应消息完成。事务可以用来把来自主设备的数据发送到特定的从具体并用于在主设备处接收确认,或从从设备获取数据。
通过共享总线拓扑通信的设备通过各种方法被分配地址。根据一些方法,人们通过手动操纵设备的元件(例如双列直插式开关)设置设备的地址。在其它方法中,人们通过软件应用程序配置设备地址,该软件应用程序将地址存储在位于设备中的存储器内。当配置使用MODBUS协议(例如串行线路协议上的MODBUS)进行通信的设备时,地址常常在设备制造期间或在其初始安装期间进行配置。
串行线路上的MODBUS通常被实施于RS-485总线上,并且耦合到RS-485总线的所有这些设备可以检测通过总线传输的消息。因此,在串行线路上的MODBUS使用地址来唯一标识***中的每个从设备。对于事务,用于单播的从设备的地址被包括在待发消息中,并且指定哪个从设备应该接收、处理且对该消息做出响应。对于广播,特定的保留地址包括在待发消息中,待发信息将其作为所有从设备接收和处理的广播进行标识。
发明内容
本文公开的各方面和实例示出了将通信地址分配给连接到以共享总线拓扑进行配置的网络的一个或多个未编址的设备的***和过程。根据一些实例,地址分配过程由控制器自动进行,该控制器通过共享的多点总线与未编址设备进行通信。在这些实例中,该控制器与未编址设备既进行广播通信,又进行离散的点对点事务。在事务中,该控制器提供在网络中唯一标识未编址设备的地址。进一步,在这些实例中,未编址设备在存储器中存储所提供的地址并将其自身配置为在网络通信期间识别它们的地址。因此,本文公开的各方面和实例减轻与网络通信的配置设备相关联的管理负担,并且允许设备将在不需要地址配置程序的专门的知识的情下被安装。
根据一个实例,控制器将与未编址设备经由共享RS-485通信总线进行通信。在该实例中,每个设备具有通常称为序列号的唯一标识符。序列号的集合的基数可以大于产生地址的标识符的集合的基数。该实例是基于串行线通信协议上的MODBUS,尽管它不是严格符合该协议,因为它需要多个设备来响应于相同的请求。然而,由于串行线路上的MODBUS没有规定任何载波侦听机制(即,一种机制,主机通过该机制在其写到总线上时监控总线,以便检测冲突),每个设备可以单独地遵循MODBUS协议。因此现有的MODBUS的实施可以采用这个实例自动生成设备地址。
根据另一实例,提供了一种用于给网络内的多个设备分配地址的***。该***包括存储器和耦合到存储器上的至少一个处理器,并且该***被配置为指示所有的多个设备分别从第一组动态地址中选择第一动态地址,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备,指示具有标识至少两个设备的第一动态地址的所有多个设备分别从第二组动态地址中选择第二动态地址,并且分别将另一个不同静态地址分配给具有唯一标识设备的第二动态地址的每个设备。
通过至少部分提供第一组动态地址的第一地址的指示给所有的多个设备和提供第一组动态地址的最后地址的指示给所有的多个设备,该***可以被配置为指示所有的多个设备分别选择第一动态地址。在该***中,第一组动态地址可以具有与第二组动态地址的基数不同的基数。另外,该***还可以被配置成分别从具有唯一标识设备的第一动态地址的每个设备中接收确认。进一步,该***还可以配置成分别使用由设备所选的第一动态地址向每个设备请求标识符,并且分别从唯一标识设备的第一动态地址的每个设备中接收标识符,其中,响应于接收到设备的标识符,***被配置成分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备。该标识符可以包括以下中至少一个:序列号、微处理器标识符、从随机数生成器生成的数和从真随机数生成器生成的数。此外,该***还可以被配置以分别使用由设备所选的第二动态地址向每个设备请求标识符,并且响应于未接收到标识符,中断分配地址。
根据另一实例,提供了一种使用计算机为多个设备分配地址的计算机实施的方法。该计算机包括存储器和耦合到存储器的至少一个处理器。该方法包括如下动作:通过计算机经由网络指示所有的多个设备分别从第一组动态地址中选择第一动态地址,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备,指示具有标识至少两个设备的第一动态地址的所有多个设备分别从第二组动态地址中选择第二动态地址,并且分别将另一个不同静态地址分配给具有唯一标识设备的第二动态地址的每个设备。
在该方法中,通过计算机指示所有的多个设备分别选择第一动态地址的动作可以包括如下动作:提供第一组动态地址的第一地址的指示给所有的多个设备,并且提供第一组动态地址的最后地址的指示给所有的多个设备。另外,指示具有标识至少两个设备的第一动态地址的每个设备分别选择第二动态地址的动作可以包括指示每个设备从具有与第一组动态地址的基数不同的基数的第二组动态地址中选择。
该方法可以进一步包括分别从具有唯一标识设备的第一动态地址的每个设备中接收确认的动作。此外,该方法还可以包括以下动作,分别使用由设备所选的第一动态地址向每个设备请求标识符,并且分别从具有唯一标识设备的第一动态地址的每个设备中接收标识符,其中,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备的动作响应于接收到设备的标识符。此外,分别接收标识符的动作可以包括接收以下中至少一个:序列号、微处理器标识符、由随机数生成器生成的数和由真随机数生成器生成的数。此外,此方法可以进一步包括以下动作,分别使用由设备所选的第二动态地址向每个设备请求标识符,并且响应于未接收到标识符,中断分配地址。
根据另一实例,提供了一种非暂时性计算机可读介质。计算机可读介质具有用于将地址分配给网络中的多个设备的存储在其上的指令序列。这些指令包括一些指令使至少一个处理器指示所有的多个设备分别从第一组动态地址中选择第一动态地址,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备,指示具有标识至少两个设备的第一动态地址的所有多个设备来分别从第二组动态地址中选择第二动态地址和分别将另一个不同静态地址分配给具有唯一标识设备的第二动态地址的每个设备。
该指令序列可包括一些指令,通过指示具有标识至少两个设备的第一动态地址的所有多个设备从具有与第一组动态地址的基数不同的基数的第二组动态地址中进行选择,这些指令将使至少一个处理器指示具有标识至少两个设备的第一动态地址的所有多个设备分别选择第二动态地址。进一步,该指令序列可能包括一些指令,这些指令还使得至少一个处理器分别从具有唯一标识设备的第一动态地址的每个设备中接收确认。此外,指令序列可包括一些指令,这些指令还使得至少一个处理器分别使用由设备所选的第一动态地址向每个设备请求标识符,并且分别从具有唯一标识设备的第一动态地址的每个设备中接收标识符,其中,分别将不同静态地址分配给具有唯一标识设备的第一动态地址的每个设备的动作是响应于接收到设备的标识符。另外,该指令序列可能包括一些指令,这些指令还使得至少一个处理器通过接收序列号、微处理器标识符、从随机数生成器生成的数字和从真随机数生成器生成的数中的至少一个分别接收标识符。此外,该指令序列可能包括一些指令,这些指令还使得至少一个处理器分别使用由设备所选的第二动态地址向每个设备请求标识符,并且响应于未接收到标识符,中断分配地址。
根据另一实例,提供了一种将地址分配给网络内多个设备的***。该***包括:第一设备,其被配置为向所有的多个设备发出第一指令,该第一指令请求多个设备中的每一个分别从第一组动态地址中选择第一动态地址,接收来自具有唯一标识设备的第一动态地址的多个设备中的第一子集的任何一个的至少一个第一响应,并且分别将第一不同静态地址的第一分配发给第一子集的每个设备。在该***中,多个设备中的每一个被配置成从第一设备接收第一指令,选择第一个动态地址以响应于接收到第一指令,向第一设备发出第一指令的第一响应,从第一设备接收第一不同静态地址的第一分配,并且将第一不同静态地址存储为通信地址。
在***中,第一设备可进一步配置成将第二指令发送至所有的多个设备(第二指令请求不属于第一子集的多个设备中的每一个分别从动态地址的第二集合中选择第二动态地址),接收来自多个设备的第二子集的任何一个的至少一个第二响应(第二子集的每个具有唯一标识设备的第二动态地址),并且分别将第二不同静态地址的第二分配发给第二子集的每个设备。此外,***中多个设备的每个还可以被配置成从第一设备中接收第二指令,选择第二动态地址以响应于接收第二指令,发送第二指令的第二响应至第一设备,接收来自第一设备的第二不同静态地址的第二分配,并且存储第二不同静态地址作为通信地址。另外,多个设备中的每一个可被配置成随机地选择第一动态地址。进一步,多个设备中的每一个被配置为以唯一标识符对第一指令进行响应。另外,唯一标识符可以基于以下中至少一个:序列号、微处理器标识符、从随机数生成器生成的数和从真随机数生成器生成的数。
还有一些方面、实例,以及这些实例性方面和实例的优势在下面详细讨论。此外,应当理解,无论是前面的信息和下面的详细描述仅仅是各个方面和实例的说明性实例,并且旨在提供用于理解所要求保护的各方面和实例的本质和特征的概述或框架。本文所公开的任何实例可以以任何方式结合任何其它实例,并且与至少一种本文所公开的对象、目标和需要相一致,而且引用“实例”、“一些实例”、“可替换的实例”、“各种实例”、“一个实例”、“至少一个实例”以及“这个和其它实例”等并不一定是相互排斥的,而是旨在指示结合实例所述的特定的特征、结构或特性可以包括在至少一个实例中。本文所出现的这些术语不一定都指同样的实例。
附图简述
下面参照所附各图讨论至少一个实例的各个方面,附图并不一定按照比例绘制。所用附图为各种不同的方面和实例提供例证和进一步理解,并被并入且构成本说明书的一部分,但不作为任何具体实例的限制的定义。附图与说明书其余部分一起用来解释所描述的和要求保护的各方面和实例的原理以及操作。图中,各图所示的每个相同的或几乎相同的组件用相似的标号表示。为了清楚起见,并非每个组件都在每个附图中标出。这些图中:
图1是地址分配***的一个实例的功能示意图;
图2是可以执行本文公开的过程和功能的计算机***的一个实例的功能示意图;
图3是一个描述一种自动将地址分配至目标设备的过程的流程图;
图4是一个示出建立配置会话的过程的流程图;
图5是一个示出进行配置循环的过程的流程图;
图6是一个示出将地址自动分配至目标设备的另一过程的流程图;
图7是一个描述将目标设备配置成使用所分配的地址的过程流程图;
图8是一个示出初始化配置会话的过程的流程图;
图9是一个示出处理配置消息的方法的流程图;
图10是一个示出将目标设备配置成使用所分配的地址的另一过程的流程图;
图11是一个示出实例性执行自动分配地址的过程的时序示意图;
图12是一个描绘使用各种尺寸的动态区域的自动地址分配过程的性能的曲线图;以及
图13是一个示出基于自动地址分配过程的分组的流程图。
具体实施方式
在至少一个实例中,经由共享总线网络耦合到一个或多个地址目标设备的地址源设备实施一个接口,源设备通过此接口接收一个指示以便初始化地址分配过程。该接口包括被配置用于从外部实体(如用户或外部***)接收指示的硬件和软件。一旦接收到指示,该接口执行地址分配过程。地址分配过程从一组预定义地址中将唯一地址分配至目标设备,这组预定义地址称为“地址空间”,与共享总线网络所用的通信协议相兼容。
在一些实例中,地址分配过程将地址空间分为两个区域:静态区域和动态区域。对于正常通信,目标设备的每一个都在静态区域中将具有唯一地址。对于由地址分配过程初始化的通信,目标设备中的每一个都在动态区域中具有地址,如下所述,每个目标设备的动态地址可以是或可以不是唯一的。
根据涉及采用MODBUS协议的网络的一些实例,地址分配过程是由用户通过用户接口进行触发的。根据这些实例,一旦被触发,地址分配过程从来自主设备的广播消息开始,指示所有从设备将自身配置为使用来自动态区域的通信地址。为了实施该指令,每个从设备将放弃其当前静态地址,从动态区域中产生随机(或伪随机)地址,并且将自身配置成使用该生成的动态地址进行通信。使用动态区域中的地址的所有从设备设置本文被称为“动态池”。
各种实例使用各种随机数生成器以生成随机数。例如,根据一个实例,利用一种基于伽罗瓦有限域(Galoisfinitefields)的算法——自主线性反馈移位寄存器(ALFSR)。在该例中,ALFSR的状态在每次迭代中缓冲,而比特按所需顺序地从缓冲中抽取用于伪随机数生成器的多个输出。进一步,在该实例中,ALFSR直到缓冲为空之前不再迭代。该程序有助于增加基于ALFSR的伪随机数生成器的“随机”。
在一个实例中,地址分配过程进行一个或多个循环。每个循环的目标是在动态区域中寻找从设备,判定它们的序列号,并通过为它们分配来自静态区域的地址将它们移动到静态区域。一旦从设备被移动到静态区域,它则从动态池中被移除并不再参与这个实例的地址分配过程。然而,要理解的是,可以初始化地址分配过程的另一实例,此时来自主设备的广播消息将命令所有从设备移回到动态池。
继续这个实例,地址分配过程的每一循环如下进行。主设备在动态区域中遍历每个地址。对于每个动态地址,主设备选择动态地址,并且单播事务请求消息至所选的动态地址。已经选择所选动态地址的任何从设备用它们的序列号的值进行响应。如果主设备没有接收到事务请求消息的响应,主设备确定没有从设备采用所选的动态地址。
如果主设备接收“乱码”响应(例如,响应的CRC校验失败),则主设备确定两个或两个以上从设备已经采用所选的动态地址。这种确定是由于乱码响应指示在共享总线上同时通信的两个或两个以上从设备产生的冲突导致的。因为,在这个实例中,一个以上的从设备已经采用所选的动态地址,主设备不能有效地单播到单个从设备以分配静态地址。因此,所有冲突的从设备将保留在动态池中。在后续循环中,主设备将试图把冲突的从设备从动态池中清除。
如果主设备接收到有效响应(例如,响应通过CRC校验),主设备将消息单播回所选的动态地址。该消息将静态地址分配给从设备,并且从设备确认该分配。从设备现在从动态存储池中被除去,并且不需要参与地址分配过程的后续循环。
一旦主设备遍历所有动态地址,这一循环结束。如果这一循环中存在任何冲突,那么在动态池中仍然存在从设备,需要另一循环。为了开始另一循环,主设备发送另一广播消息指示动态池中的所有从设备在动态区域中选择其他随机地址。这将趋向于将冲突的从设备分布到其它地址,因此它们不再发生冲突。假设在最后的循环中从动态池中清除至少一个从设备,产生冲突的几率在后续循环中将降低。经过一系列循环,可以预期冲突的可能性将趋向于零,从而允许所有从设备从动态池中被清除,并且被分配静态地址。
当没有从设备留在动态池中时,该地址分配过程的实例结束。主设备判断在这种情况中主设备在整个循环(即从任何动态地址)中是否没有接收任何响应(乱码或其它)。在其它实例中,一旦主设备执行其中主设备没有接受乱码响应的循环,主设备可以确定动态池为空。没有任何乱码响应可以指示没有冲突,因此,在这一循环中,动态池中的所有从设备从动态池中移除。然而,在某些情况下,可能尽管有冲突,仍然接收到有效消息,并且分配静态地址。该情况将在下文中讨论。
该实例体现了这样的理解:尽管一些通信协议(如互联网协议)允许未编址设备请求通信地址,但其它通信协议(例如MODBUS)不允许。因此,一种需要从设备使用服务器初始化地址分配的地址分配协议(例如DHCP)不能用在MODBUS网络上,因为从设备不能初始化事务以在总线上声明其存在。此外,该实例反应了一种理解,即序列号通常不能用作MODBUS地址,因为,在大多数序列号分配方案下,该MODBUS地址空间小于一个由潜在序列号组成的地址空间。
本文讨论的方法和装置的实例并不限于应用于在以下描述中阐述的或在附图中示出的结构细节和组件布置。这些方法和装置能够以其它的实例进行实施,并能够以各种方式进行实践或执行。本文提供的特定实施的实例仅用于说明的目的,并非旨在限制性的。特别是,结合任何一个或多个实例进行讨论的动作、组件、元件和特征不旨在在任何其他实例排除类似的作用。
同样,本文所使用的措辞和术语是用于描述的目的,而不应认为是限制。本文中以单数形式所涉及的本***和方法的实例、组件、元件或动作的任何参考也可以包括具有复数的实例,本文中以复数形式的任何实例、组件、元件或动作的参考也可以只包括具有单数的实例。任何单数或复数形式的参考不是用来限制本公开的***或方法、其组件、动作或元件。本文所使用的“包括”、“包含”、“具有”、“含有”、“涵盖”及其变化意味着包括其后列出的项目和其等效物以及其它项目。“或者”的引用可以理解为包括在内,使得使用“或者”所述的任何术语可以表示任何的单个的、一个以上,以及所描述的所有术语。
地址分配***
本文公开的各种实例在一个或多个计算机***上实施地址分配***。图1示出了这些实例的其中一个——地址分配***100。如图所示,地址分配***100包括用户102和通过网络112连接到设备106、108和110的服务器104。在所示的实例中,服务器104是使用计算机***来实施的,如下面参照图2进一步讨论的计算机***。在某些实例中,设备106、108和110也是计算机***。如图所示,服务器104包括地址管理器114,并且设备106、108和110分别包括地址客户端116、118和120。
在其它实例中,设备106、108和110包括计算资源,但主要功能是作为设备而非计算机***。例如,在这些实例中,设备106、108和110可以是不间断电源、电流互感器或智能电池和无线ZigBee设备等。因此,在这些实例中,设备106、108和110中包括的计算资源是有限的,且被改装以支持这些设备的运行。
网络112可以包括任何通信网络,计算机***可以通过该网络发送或提供信息。例如,网络112可以是公共网络(例如互联网),并且可以包括其它公共或私有网络(例如局域网(LANs)、广域网(WANs)、外部网和内部网)。在一些实例中,网络112利用了共享网络总线,并且使用非常适用于工业或家庭应用的标准。这些网络标准中的一些包括通信协议,例如以太网上的C-BUSTM和TCP/IP,串行协议,例如MODBUSASCII/RTU、串行线路上的MODBUS、DMX512和JCI-N2。在其它实例中,网络112利用了无线总线,并且实施无线协议,例如ZigBee和蓝牙。例如,根据一个实例,服务器104和设备106、108和110分别是通过无线总线进行通信的主CT模块和从CT模块,例如在2010年5月28日提交的名为“用于监测电流和电力使用的***和方法(SYSTEMANDMETHODFORMONITORINGELECTRICALCURRENTANDPOWERUSAGE)”的共同待决的美国专利申请序列号为12/789,922中参照图5所描述的主CT模块502和从CT模块504,该申请通过引用被本文整个地并入。进一步,在至少一个实例中,网络112包括半双工介质,其只允许用于一种设备在给定的一段时间内发出消息。进一步,根据该实例,网络112不包括冲突检测和避免设施。
如图所示,服务器104通过用户102应用以通过网络112将地址分配到设备106、108和110。特别是,驻留在服务器104上的用户接口组件提供用户接口,地址管理器114通过该接口接收来自用户102的地址分配请求。在各种实例中,地址分配请求包括要求执行各种自动地址分配过程的信息,这将在下文参照图3-11进一步描述。根据所请求的特定自动地址分配过程,所需信息可以包括指示用于自动地址分配的设备的信息,属于临时地址空间的一组地址将被用于将操作地址分配给目标设备,并且,属于操作地址空间的一组地址在正常操作期间将被目标设备使用。在一些实例中,该临时地址空间被称为“动态地址空间”,而操作地址空间被称为“静态地址空间”。在至少一个实例中,该用户接口组件被包括在地址管理器114中。
地址管理器114通过进行一个或多个自动的地址分配过程处理地址分配请求。更具体地,在一些实例中,地址管理器114实施一个***接口,地址管理器通过该接口与地址客户端116、118和120交换和处理配置消息。地址管理器114执行的自动地址分配过程的特定实例在下面参考图3-11进一步描述。
在另一实例中,中间设备位于网络112中,并且在服务器104和设备106、108和110中间。根据这个实例,用户界面接口不包括在地址管理器114中。而是,根据这个实例,用户接口组件是驻留在服务器104上的独立组件,并且地址管理器114驻留在中间设备上。进一步,根据这个实例,服务器104提供地址分配请求给地址管理器114,并且,如上面所讨论的,地址管理器114提供地址信息给目标设备。
继续参照图1的实例,地址客户端116、118和120中的每一个分别自动为设备106、108和110配置通信地址。更具体地,地址客户端116、118和120中的每一个实施***接口,每一地址客户端通过该接***换和处理来自地址管理器114的配置消息。交换和处理的具体通信消息根据地址管理器114实施的自动地址分配过程进行变化。地址客户端116、118和120中的每个进行的至少一个实例性过程在下面参照图3-11进一步讨论。
使用许多不同的技术,信息可以在本文公开的这些组件、或任何元件、组件和子***之间流动。这些技术包括,例如,使用标准协议(例如MODBUS)在网络上传递信息,在存储器中的模块之间传递信息,以及通过写入文件、数据库、数据存储器或一些其它非易失性数据存储设备进行传递信息。另外,指针或其它信息的引用可以被发送和接收来代替或添加到信息的备份。相反地,信息可进行交换代替或添加到指针或其它信息的引用。用于传送信息的其它技术和协议可以在没有脱离本文所公开的实例的范围的情况下使用。
此外,地址分配***100的实例可以包括被配置为执行本文所描述的处理过程和功能的多种硬件和软件组件,并且实例不限于特定的硬件组件、软件组件或它们的组合。例如,根据一些实例,地址分配***100使用分布式计算机***来实施。一个这种分布式计算机***的实例以下参照图2进一步进行讨论。
信息(包括在地址分配请求和响应中的地址信息)可以以能够在计算机可读介质(除其它结构外包括平面文件、索引文件、分级数据库、关系数据库或面向对象数据库)上存储信息的任何逻辑结构存储在服务器104和设备106、108和110上。数据可使用唯一和外键关系和索引进行建模。唯一和外键关系和索引可以在各种字段和表之间建立以确保数据完整性和数据交换性能。
本文所公开的接口(包括***接口和用户接口)与各个供应商和消费者交换(即提供或接收)信息。这些供应商和消费者可以包括任何外部实体,除了其它实体,还包括用户和***。在使用信息或将信息提供给其它组件之前,本文公开的每个接口都可以限制输入预定义组的值,并且验证输入的任何信息。另外,在与外部实体进行交互之前或期间,本文公开的每个接口可以验证外部实体的身份。这些功能可以防止错误数据引入到地址分配***100或防止未经允许即可进入到地址分配***100。
计算机***
如以上参照图1讨论的,本文所描述的各个方面和功能可以作为在一个或多个计算机***中执行的专用硬件或软件组件。有许多目前在使用的计算机***的实例。这些实例除其它之外包括网络设备、个人计算机、工作站、主机、联网客户机、服务器、媒体服务器、应用服务器、数据库服务器和web服务器。计算机***的其它实例可以包括移动计算设备(例如蜂窝电话、个人数字助理、平板计算机和笔记本计算机)和网络设备(例如负载平衡器、路由器和交换机)。进一步,各个方面可位于单个计算机***上,或者可以分布在连接到一个或多个通信网络的多个计算机***中。
例如,各个方面和功能可以分布在一个或多个计算机***中,这些***被配置为向一个或多个客户端计算机提供服务,或作为分布式***的一部分执行总体任务。另外,各个方面可执行在客户端-服务器或多层***上,包括分布在执行各种功能的一个或多个服务器***中的组件。因此,各个实例并不限于执行在任何特定的***或***组上。更进一步地,各个方面和功能可以实施在软件、硬件或固件或它们的任意组合上。因此,各个方面、过程和功能可以使用各种硬件和软件配置实施于各个方法、动作、***、***元件及组件中,并且实例不限于任何特定的分布式体系结构、网络或通信协议。
参照图2,示出了其中实施各个方面和功能的分布式计算机***200的功能示意图。如图所示,分布式计算机***200包括一个以上的交换信息的计算机***。更具体地,分布式计算机***200包括计算机***202、204和206。如图所示,计算机***202、204和206可以通过通信网络208互相连接并且交换数据。网络208可包括任何通信网络,计算机***可以通过该网络交换数据。为了使用网络208交换数据,计算机***202、204和206和网络208可以使用各种方法、协议和标准,其中,包括:RS-485、RS422、光纤信道、令牌环、以太网、无线以太网、蓝牙、IP、IPV6、TCP/IP、UDP、DTN、HTTP、FTP、SNMP、SMS、MMS、SS7、JSON、SOAP、CORBA、RESET和Web服务。为了确保数据传输安全,计算机***202、204和206可以经由网络208发送数据,使用的各种安全措施包括,例如,TLS、SSL或VPN。尽管分布式计算机***200示出了三个网络化计算机***,但分布式计算机***200并不局限于此,并且可以包括使用任何介质和通信协议的网络化的任何数目的计算机***和计算设备。
图2描述了一个分布式计算机***200的特殊实例,该***包括计算机***202、204和206。如图2所示,计算机***202包括处理器210、存储器212、总线214、接口216和数据存储设备218。为了实施本文公开的至少某些方面、功能和过程,处理器210执行一系列操控数据的指令。处理器210可以是任何类型的处理器、多处理器、控制器或微控制器。一些实例性处理器包括市场上可购买到的处理器,例如StellarisARMCortex-M3、IntelXeon、Itanium、Core、Celeron、Pentium、AMDOpteron、SunUltraSPARC、IBMPower5+和IBM主机芯片。处理器210通过总线214被连接到其它***组件(包括一个或多个存储器设备212)。
在计算机***202的操作期间,存储器212存储程序和数据。因此,存储器212可以是相对高性能、易失性的随机存取存储器,例如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。但是,存储器212可以包括存储数据的任何设备,例如磁盘驱动器或其它非易失性存储设备。各种实例可以将存储器212组织为有针对性的,且在一些情况下,独特的结构以执行本文描述的功能。这些数据结构可以设置尺寸和组织为存储特定的数据和数据类型的值。
计算机***202的组件是通过互连件(例如总线214)耦合。总线214可以包括一个或多个物理总线(例如,在相同机器内集成的组件之间的总线),也可以包括包含专用或标准计算总线技术(例如IDE、SCSI、PCI和无限带宽)的***元件之间的任何通信耦合。因此,总线214使通信(例如数据和指令)在计算机***202的***组件之间进行交换。
计算机***202也可以包括一个或多个接口设备216,例如输入设备、输出设备以及输入/输出设备的组合。接口设备可以接收输入或提供输出。更具体地,输出设备可以为外部展示提供信息。输入设备可以接收来自外部源的信息。接口设备的实例包括键盘、鼠标设备、轨迹球、麦克风、触摸屏、打印设备、显示屏、扬声器和网络接口卡等。接口设备允许计算机***202能够与外部实体(例如用户和其它***)交换信息和通信。
数据存储器218包括计算机可读和可写的非易失性(非暂时)数据存储介质,在该介质上存储定义由处理器210执行的程序或其它对象的指令。数据存储器218还可以包括这样的信息,该信息是被记录在介质上或介质内,并在执行程序期间由处理器210进行处理。更具体地,信息可以存储在一个或多个数据结构中,该结构具体地被配置成保存存储空间或提高数据交换性能。指令可以持久存储为编码信号,并且指令可使处理器210执行本文所述的任何功能。例如,介质可以是光盘、磁盘或闪存等。在操作中,处理器210或其它一些控制器将数据从非易失性记录介质中读取到另一存储器(例如存储器212)中,该另一存储器允许处理器210比包括在数据存储设备218中的存储介质更快地存取信息。然而,存储器可以位于数据存储设备218或存储器212中,处理器210处理存储器中的数据,然后,在处理完成后,拷贝数据至与数据存储器218关联的存储介质。各种组件可以管理数据在存储介质和其它存储元件之间移动,并且这些实例并不局限于特定的数据管理组件。进一步,这些实例不限于特定存储器***或数据存储器***。
尽管计算机***202以举例的方式显示为一种类型的计算机***,在其中可以实践各种方面和功能,这些方面和功能不限于在图2所示的计算机***202上实施。与图2所示的相比,各种方面和功能可以在具有不同的体系结构或组件的一个或多个计算机上实践。例如,计算机***202可包括专门编程的专用硬件,例如适于执行本文公开的特定操作的专用集成电路(ASIC)。而另一个实例可以使用运行MACOSSystemX的网格化的多个通用计算设备执行相同功能,其中MotorolaPowerPC处理器和几个专用计算设备运行专用硬件和操作***。
计算机***202可以是计算机***,其包括管理至少一部分包括在计算机***202中的硬件元件的操作***。在一些实例中,处理器或控制器(例如处理器210)执行操作***。可以执行的特定操作***的实例包括Micrium公司的MICROC/OS-II、基于Windows的操作***(例如微软公司的WindowsNT、Windows2000(WindowsME)、WindowsXP、WindowsVista或Windows7操作***)、苹果计算机的MACOSSystemX操作***以及许多基于Linux的操作***分布的一个(例如,RedHat公司的企业版Linux操作***、SunMicrosystems的Solaris操作***,或各种来源的Unix操作***)。许多其它操作***可以被使用,并且实例不限于任何特定的操作***。
处理器210和操作***一起定义计算机平台,该计算机平台用于用高级编程语言编写应用程序。这些组件应用程序可以是在通信网络(例如,互联网)上使用通信协议(例如TCP/IP)的可执行的、中间的、字节码或翻译码。类似地,各个方面可使用面向对象的编程语言来实施,例如.Net、SmallTalk、Java、C++、Ada或C#(C-Sharp)。也可以使用其它面向对象的编程语言。可选地,可以使用功能、脚本或逻辑编程语言。
另外,各个方面和功能可以在非编程环境中实施,例如,当在浏览器程序的窗口查看时,HTML、XML或其它格式创建的文档呈现图形用户界面的各个方面或执行其它功能。进一步,各个实例可被作为编程的或非编程的元件,或任何它们的组合来进行实施。例如,可以使用HTML实现网页,同时网页内调用的数据对象可以用C++编写。因此,该实例不局限于特定的编程语言,任何合适的编程语言都可以使用。因此,本文所公开的功能组件可包括被配置成执行本文所描述的功能的各种各样的元件(例如专用硬件、可执行代码、数据结构或对象)。
在一些实例中,本文公开的组件可以读取参数,这些参数影响组件所执行的功能。这些参数可以物理存储在任何形式的适当的存储器中,包括易失性存储器(例如随机存储器)或非易失性存储器(例如磁性硬盘驱动器)。另外,参数可以以适当的数据结构(例如由用户模式应用程序定义的数据库或文件)或共享数据结构(如操作***定义的应用程序注册表)进行逻辑存储。另外,提供一些实例用于***和用户接口,允许外部实体来修改所述参数,从而设置组件的行为。
自动分配地址过程
如上文所讨论的,一些实例执行导致地址经由网络分配给一个或多个设备的过程。更具体地,根据一个实例,设备(例如服务器104)包括执行过程以将操作地址分配给一个或多个其它设备(例如设备106、108和110)的一个或多个组件(例如地址管理器114)。图3示出了这样的过程(过程过程300)的实例。如图所示,过程过程300包括如下动作:建立一个配置会话、进行配置循环,并且确定在配置循环期间是否从耦合到网络的设备中接收任何响应。
在动作302中,配置会话被建立在控制地址分配过程的源设备和耦合到网络的一个或多个目标设备之间。在至少一个实例中,源设备和目标设备在地址分配请求中被指定,该地址分配请求是由用户102输入或由外部***提供。根据另一实例,源设备执行特定初始化和分配功能,这些功能使得源设备能够支持本文公开的地址分配过程。在该实例中,源设备还提供了在对目标设备初始化过程中产生的信息的一部分。在动作302中执行的过程的一个实例在下文参考图4进一步讨论。
在动作304中,实施配置循环。在一些实例中,源设备通过尝试给目标设备分配地址来实施配置循环。动作304中所执行的过程的一个实例将在下文中参考图5进一步加以说明。
在动作306中,确定在配置循环过程中是否发生了任何冲突。根据至少一个实例,源设备通过分析在通信循环期间从目标设备接收到的消息来做此确定。如果检测到有任何冲突,则源设备通过重新建立动态区域,请求设备留在动态池中来从动态区域中重新选择地址并执行动作304来实施一个或多个后续配置循环。然而,在至少一个实例中,源设备将所执行的配置循环的数目限制到预定数目,以防止出现***失控的可能性。如果没有检测到冲突,则源设备终止过程300。
在另一个实例中,源设备周期性地确定是否有任何目标设备留在动态区域中,且如果不是这样,则终止过程过程300。源设备可通过请求并接收留在动态区域内的任何设备的序列号做此判断。而且,在此实例中,可通过各种事件(例如,源设备接收到来自多于阈值数目的目标设备的响应或源设备搜索到多于阈值比例的动态区域)来触发该判断。根据过程300的地址分配过程使源设备能够高效且有效地用目标设备的正常运作期间使用的地址来配置目标设备。
为了接收通过执行过程300所提供的地址分配,目标设备(例如,设备106、108和110)包括至少一个组件,例如,执行与过程300相反的过程700的地址客户端116、118和120。参考图7来示出过程700的一个实例。如图所示,过程700包括初始化配置会话、处理配置消息和进入正常操作模式的动作。
在动作702中,配置会话在目标设备上被进行初始化。在一个实例中,目标设备从源设备接收初始化信息,且目标设备处理初始化信息以准备其自身从源设备中接收操作地址信息。动作702中所执行的过程的一个实例在下文中参照图8将进一步加以讨论。
在动作704中,配置消息由目标设备来处理。在一个实例中,目标设备通过接收、处理并响应于各种配置消息将其自身配置成使用分配的操作地址。动作704中所执行的过程的一个实例在下文中将参考图9进一步加以说明。
在动作706中,进入了正常操作模式。根据至少一个实例,在建立将在正常操作期间使用的通信地址之后,目标设备进入正常操作模式,在此模式中,其使用通信地址在网络上进行通信。根据过程700的地址分配过程使目标设备能够高效且有效地被使用在目标设备的正常运作期间所使用的地址进行配置,从而规避与手动配置过程相关的成本和困难。
源设备程序
如参考过程300的动作302在上文中所讨论的,在一些实例中,源设备,例如,服务器104,建立与一个或多个目标设备的会话。图4示出示例性过程400,其可由源设备实施以实现此目的。如图所示,过程400包括确定地址空间、初始化地址信息和命令从设备来选择动态地址的动作。
在动作402中,源设备确定将在自动地址分配过程中使用的一个或多个地址空间。根据一个实例,源设备识别可用于根据在网络上采用的网络协议与目标设备通信的一组地址。一旦识别出此地址空间,源设备就将地址空间分为动态区域和静态区域。每一个区域中包括的地址数目将根据动态池中包括的目标设备的数目和可用的静态地址的总数来变化。在一个实例中,动态区域中包括的地址的数目等于预期的目标设备的数目乘以常数,例如,2。
在动作404中,源设备初始化地址信息中的一个或多个元素。此信息的初始化可包括分配变量以储存当前静态地址和当前动态地址,且将这些变量的值分别设定成将要被分配的下一个静态地址和将要被分配静态地址的下一个动态地址。而且,此初始化可删除适用于先前实施的自动地址分配过程的任何已储存的静态地址信息。接下来,在动作406中,源设备向目标设备发出指令,请求所有目标设备从动态地址空间中选择临时通信地址。一旦完成过程400,源设备准备开始给目标设备自动分配操作地址。
如参考过程300的动作304在上文中所讨论的,在一些实例中,源设备,例如,服务器104,实施配置循环,其该配置循环中源设备分配操作地址给一个或多个目标设备。图5示出示例性过程500,其可由源设备实施以实现此目的。如图所示,过程500包括几个动作,每一个动作将在下文中进一步加以讨论。
在动作502中,源设备确定当前动态地址变量的值是否小于或等于最后的动态地址。如果不是这样,则源设备终止过程500。否则,在动作504中,使用当前动态地址,源设备发送当前静态地址的值给任何目标设备。在动作506中,源设备确定在预定时间段内是否接收到有效响应。如果不是这样,则源设备执行动作510。否则,在动作508中,源设备将当前静态地址变量的值设定成静态地址区域内的下一个静态地址。在动作510中,源设备将当前动态地址变量的值设定成动态地址区域内的下一个动态地址。一旦完成过程500,源设备已经完成了一个地址配置循环,并且,可能已经分配操作地址给一个或多个目标设备。
在一些实例中,源设备可采用另一种搜索方法,而不是如上文所讨论的通过执行动态区域的顺序搜索来实施配置循环。例如,根据一个实例,源设备对动态区域执行二分法搜索。根据此实例,给出包括地址N到N+R-1的动态区域子集,源设备通过使用子集内的通信地址,即在N(含)和N+(R/2)-1(含)之间,请求任何目标设备的标识符(例如,序列号)来对子集进行搜索。如果源设备接收到单个响应,则源设备分配唯一的静态地址给响应的目标设备。如果源设备没有接收到响应,则源设备接下来通过使用在N+(R/2)和N+R-1之间的通信地址来请求目标设备的序列号来对动态区域的另一半进行搜索。然而,如果源设备接收到针对地址N到N+(R/2)-1的序列号请求的多个响应(即,子集中存在冲突)且N到N+(R/2)-1包括多个地址,则源设备用存在冲突的动态地址范围(例如,N到N+(R/2)-1)递归地调用二分法搜索函数的另一个实例。此二分法搜索方法递归地重复,直到搜索出动态区域且识别出单个的目标设备并分配静态地址为止,或直到接收多个响应的动态区域的那部分不能进一步细分,即,仅包括一个动态地址为止。使用此方法,源设备可用单个请求快速消除动态区域的大部分。
在源设备搜索包括关于三个目标设备的地址1到5的动态区域的特殊实例中:其中一个目标设备使用动态地址4,且另外两个目标设备使用动态地址5,源设备从请求具有动态地址1到3的任何一个目标设备的标识符开始。因为三个目标设备都没有使用动态地址1到3中的任何一个,所以源设备没有从目标设备接收到响应。接下来,源设备请求具有动态地址4到5的任何一个目标设备的标识符。因为所有三个目标设备都使用4到5范围内的动态地址,所以源设备接收到多个响应。因此,源设备递归地调用关于动态地址范围4到5的搜索函数。
接下来,源设备请求具有动态地址4的任何一个目标设备的标识符。因为三个目标设备中的一个使用动态地址4,所以源设备从目标设备接收到单个响应。在接收到单个响应之后,源设备分配唯一的静态地址给响应的目标设备。然后,源设备请求具有动态地址5的任何一个目标设备的标识符。因为三个目标设备中的两个使用动态地址5,所以源设备接收到多个响应。然而,因为动态地址范围5到5不能进一步细分,所以源设备终止此二分法搜索函数的实例。然后,源设备返回到前一个二分法搜索函数实例,二分法搜索终止,因为前一个动态区域1到5已经搜索过了。在此实例中,源设备可通过实施后续配置循环,尝试分配留在动态池中的两个目标设备。
图6示出分配操作地址给MODBUS网络内的一个或多个设备的过程的另一个实例。根据此实例,使用二进制RTUMODBUS通信模式以9600bps来传送消息。如图6中所示,过程600从动作602开始,在动作602中主设备对所有从设备播送初始的“EnterDynamicPool(进入动态池)”命令,并在发送其他的消息之前等待适量的时间(在MODBUS中称作“周转时间”)用于从设备执行所述命令的动作。在此实例中,周转时间配置成约11ms。广播消息包括命令内的#TARGET_ALL参数,从而指示MODBUS网络上的所有从设备进入动态池。根据MODBUS应用协议,当执行动作602时,主设备包括消息内的“WriteMultipleRegisters(写入多个寄存器)”函数,传送所述EnterDynamicPool(进入动态池)命令给从设备。写入函数的MODBUS寄存器地址指定哪个命令要被执行且写入的寄存器值是命令的参数。
在至少一个实例中,嵌入到命令消息中的应用层数据包如表格1中所示的那样格式化。消息格式表格(例如,表格1)列出消息中的每一个1字节的字段。为了清楚起见,列出了MODBUS字段名和过程600所使用的字段名。每一个字段的值或者是常数或者是变量。当值是固定的时,常数被列出作为引号内的文本值。前缀为#字符且不带引号列出的常数是任意常数。任意常数的定义必须对参与过程600的所有设备都是相同的,但是常数的具体值不是必需的。
表格1
在此实例中,消息指定指示EnterDynamicPool命令的MODBUS寄存器地址。EnterDynamicPool命令始终取4个字节的参数数据(对应于两个MODBUS寄存器,因为每个MODBUS寄存器是16位的)。第一个寄存器值指定目标类型。这是枚举值,指定此命令针对哪些从设备,即,在此情况下,哪些从设备应放弃其静态地址并进入动态池。目前对目标类型来说有两个可能的值:#TARGET_ALL和#TARGET_DYN。#TARGET_ALL的值指示总线上的所有从设备应执行此命令,#TARGET_DYN的值指示只有准备进入动态池的从设备应执行此命令。
第二个MODBUS寄存器值是一对字节,指定在此过程600实例化期间将被使用的动态区域的边界。一个字节指定动态区域中的第一地址,另一个字节指定动态区域中的最后一个地址。在一个实例中,第一地址是动态区域的下界,且第二地址是动态区域的上界,但是这并不是对所有实例是严格要求的。在一些实例中,从设备将这两个值中较小的那个解译为第一地址,且将所述值中较大的那个解译为最后一个地址。在此实例中,给出的值包括在动态区域内。
在EnterDynamicPool命令执行期间出现的通信错误可用各种方式进行处理。例如,根据一个实例,主设备在进一步进行过程600之前多次发送EnterDynamicPool命令,以降低防止从其中一个设备接收并处理命令的通信错误可能性。在另一个实例中,主设备遍历静态区域中所包括的地址,使用每一个静态地址发出消息,以确保接收不到响应。在又一个实例中,从设备被配置成提供视觉指示,指示其已经接收到命令,且用户在主设备发出命令之后检查从设备。
在一些实例中,主设备可基于期望进入动态池的从设备的数目和地址空间中的地址的总数动态地选择动态区域。较大的动态区域将会降低冲突的数目,且因此,降低清空动态池所需循环的数目。然而,较大的动态区域将会增加在每一个循环中需要被访问的地址的数目,且因此,增加完成循环所需的时间。此外,较大的动态区域可能需要较小的静态区域,因为这两个区域存在于单个地址空间内。在一些实例中,主设备平衡这些效果,以缩短完成自动地址分配过程所需的时间。
图12示出使用各种尺寸的动态区域来自动分配地址所需的时间。如图12中所示,在主设备在循环开始时将动态区域的尺寸调整到动态池内的从设备的数目的两倍的情况下,自动地址分配过程完成得较快。因此,在此实例中,改变动态区域的尺寸导致的结果是优于在循环中维持恒定尺寸。
同样在动作602,主设备清除所有已储存的静态地址分配。而且,主设备将变量“saddr”初始化成静态地址区域中的第一地址。主设备使用saddr变量来追踪下一个可用的静态地址。
要理解的是,只需要在有必要分配新的静态地址给每一个从设备时用#TARGET_ALL将所有从设备定为目标。例如,这可能是这样的情况,如果几个从设备发生故障或已经从***中移除但没有更新主设备使用的静态地址的列表。将所有从设备定为目标来自动寻址是确保主设备已更新关于网络状态的信息的一种方式(虽然不一定是最佳方式)。
在一些实例中,存在于网络上的一部分从设备可能已经分配并储存了静态地址。如果主设备具有关于从设备使用了哪些静态地址的列表,则过程600可以从将#TARGET_DYN定为目标开始,在此情况下,只有还没有静态地址的新的从设备将参与,允许过程完成得更快。在一个实例中,主设备可在发出包括#TARGET_DYN命令的消息之前将其自身的序列号广播给所有从设备。将在下文中进一步讨论的是,根据此实例,已经具有所分配的静态地址的从设备将主设备所广播的序列号与已分配其当前静态地址的主设备的序列号进行比较。而且,在此实例中,检测到这些序列号并不相同的任何一个从设备放弃为其分配的静态地址,使得从设备将参与由主设备实施的未来的地址分配过程。以此方式,使用与没有所分配的静态地址的未初始化的从设备相同的过程,可将从预先存在的网络中移除的从设备添加到由新主设备控制的新网络中。
每一个循环从动作604开始,主设备初始化两个附加变量“daddr”和“rcount”。daddr变量追踪接下来将使用哪个动态地址,并初始化EnterDynamicPool命令中所定义的动态区域中的第一地址。rcount变量记录在循环期间接收到的响应(有效或其它)的数目,并初始化为0。
在动作606中,主设备判断daddr变量是否具有动态区域内小于或等于EnterDynamicPool命令中所定义的动态区域中的最终地址的序数值。如果是这样,则主设备执行动作608。否则,主设备执行动作624。
在动作608中,主设备单播ReadSerialNumber(读取序列号)请求给地址“daddr”并等待响应。主设备使用ReadSerialNumber命令来检索从设备的唯一序列号。在MODBUS应用协议中,此命令采用“ReadInputRegisters(读取输入寄存器)”函数的形式。根据MODBUS应用协议,当执行动作608时,主设备包括在消息内传送ReadSerialNumber请求给从设备的“ReadInputRegisters”函数。MODBUSReadInputRegisters函数被用于在从设备中检索数据。将要从中被读取的寄存器地址指定将被检索是哪些数据。
在至少一个实例中,嵌入到请求消息中的应用层数据包如表格2中所示的那样格式化。
表格2
在此实例中,寄存器地址指定将要被检索的序列号。此地址由字节的常数对#SERIAL_NUMBER_ADDR_HI和#SERIAL_NUMBER_ADDR_LO来表示。组成序列号的寄存器的数目固定在具体的应用常数值#SERIAL_NUMBER_SIZE。这个值必须大到足以容纳整个序列号。要理解的是,为了严格符合MODBUS,序列号必须不能超过122个寄存器(244个字节)。这是基于可一次写入的寄存器的最大数目,和过程600所施加的附加约束条件,这将在下文中加以讨论。在执行ReadSerialNumber请求或响应期间发生的通信错误可通过在执行完过程600之后使主设备或用户计算在静态区域中的从设备的数目来处理,以确保所有从设备都在静态区域内。
在动作610中,主设备确定在发送ReadSerialNumber请求和接收响应之间是否已经过了预定的时间段。在至少一个实例中,此预定的时间段(称作超时时段,被配置成约2ms)。如果是这样,则在动作612中,在执行下一次迭代之前,主设备确定已经超时,并使daddr变量递增到动态区域中的下一个地址。否则,主设备继续等待,直到预定的时间段过去为止或直到接收到响应为止。在动作614中,如果在预定的时间段结束之前接收到响应,则主设备使rcount变量递增。
在动作616中,主设备确定响应是否是有效的。在一个实例中,通过对响应执行完整性检验来确定有效性。此完整性校验可验证响应的格式以及响应中所包括的数据(例如,经由16位的MODBUSCRC校验)。如果响应被确定是无效的(畸形或失败的完整性校验),则在动作612中,主设备使daddr变量递增到动态区域中的下一个地址,并继续进行下一次迭代。
在动作618中,响应及时到达,且似乎是有效的,所以主设备使用saddr变量的当前值作为要分配的静态地址且使用前一个响应的序列号作为目标来将“AssignStaticAddresstoSerialNumber(将静态地址分配给序列号)”请求单播给由daddr变量指定的地址。然后,主设备等待响应。主设备使用AssignStaticAddresstoSerialNumber(将静态地址分配给序列号)请求将来自地址空间的静态区域的具体地址分配给具有序列号的从设备。如同上述EnterDynamicPool命令一样,使用MODBUSWriteMultipleRegisters函数来发出AssignStaticAddresstoSerialNumber(将静态地址分配给序列号)请求,该MODBUSWriteMultipleRegisters函数具有特定寄存器地址值以指示其是AssignStaticAddresstoSerialNumber请求。
根据MODBUSWriteMultipleRegisters格式,消息字节3和4指定写入的寄存器的数目,且字节5指定消息的有效载荷中所包括的数据字节的数目。写入的寄存器的数目(消息八位字节3和4)是由常数#ASSIGN_SA_SN_SIZE_R表示的应用程序的具体值。这个值必须至少比相关常数#SERIAL_NUMBER_SIZE大1,该#SERIAL_NUMBER_SIZE指定容纳序列号所需寄存器的数目。其必须至少大1,因为此消息包含完整的序列号和额外的一个寄存器,以指定静态地址。需要注意的是,按照MODBUS规范,#ASSIGN_SA_SN_SIZE_R的值可能不会超过123(这是可立即写入的寄存器的最大数目)。这也是为什么序列号被限制为122个寄存器(244个字节)的原因。消息字节5的字节计数就等于寄存器计数的两倍。这个值由常数#ASSIGN_SA_SN_SIZE_B来表示,且这个值必须等于两倍的#ASSIGN_SA_SN_SIZE_R。
请求(消息字节6和7)中的第一个寄存器值是分配给从设备的静态地址。地址不能超过8位,所以此寄存器中的第一个字节固定在0x00。寄存器的第二个(最低有效)字节包含静态地址。
寄存器值的剩余部分是被分配到地址的从设备的序列号。要理解的是,从设备不需要将此序列号严格地解译为写入命令,因为对任何一个设备而言,都没有必要将给定的序列号实际储存在给定的地址。反而是,序列号被用作将基于序列号的具体设备定为目标的方式,而不是只通过通信地址,这将在下文中加以说明。序列号作为一系列字节来顺序发送,其中序列号的第一个字节在消息中偏移量为8。
在动作620中,主设备确定有效响应(确认)是否已经在预定时间段结束之前到达。主设备可使用响应的格式或内容来校验响应的有效性,如在上文动作616中所述。在动作622中,如果以及时的方式接收有效响应,则主设备记录分配或使saddr变量递增到下一个静态地址。在至少一个实例中,主设备通过储存已分配的静态地址与分配了静态地址的从设备的序列号之间的关联来记录分配。如果在预定时间段结束之前接收到无效响应,或没有接收到响应,则主设备不会记录分配,且不会使saddr变量递增,使得对下一次分配,将又使用相同的静态地址。
一旦循环因为daddr变量具有大于动态区域中的最终地址的序数值(即,dadder变量已经递增到集合的末尾)而结束,主设备就执行动作624来准备下一个循环。在动作624中,主设备确定rcount变量是否等于0。如果是这样,则主设备确定在当前循环期间没有接收到响应(有效的或无效的),且因此,主设备终止过程600。根据另一个实例,主设备接收并储存将被添加到网络中的从设备的数目,并在分配静态地址给储存数目的从设备之后终止过程600。
在另一个实例中,主设备周期性地确定是否有任何从设备留在动态区域中,且如果不是这样,则终止过程600。此确定可通过各种事件来触发,例如,主设备已经从多于阈值数目的从设备接收到响应,主设备已经搜索多于阈值比例的动态区域,或主设备已经完成地址分配循环。而且,在此实例中,主设备根据以下过程做出此确定。首先,主设备广播新的EnterDynamicPool命令,将动态池中的从设备定为目标,并指定一个地址(或数量相对少的地址)的动态区域。接下来,主设备使用一个地址或数量相对少的地址来请求任何从设备的序列号。如果主设备接收到此请求或多个请求的任何响应,则主设备重新开始过程600。否则,主设备终止过程600。
如果rcount变量不等于0,则主设备执行动作626。在动作626中,主设备广播另一个EnterDynamicPool命令,这次将#TARGET_DYN定为目标。然后,主设备通过执行动作604开始另一个循环。根据过程600进行处理使主设备能够将操作地址自动分配给耦合至MODBUS网络的每一个从设备。
根据另一个实例,主设备在实施自动地址分配过程,例如,过程600之前确定网络上的任何从设备是否还未被分配静态地址。在此实例中,主设备发送EnterDynamicPool命令,为动态区域指定单个地址(或数量相对少的地址),并只请求那些还没有静态地址的从设备选择动态地址。在对这些请求进行处理之后,没有静态地址的从设备将在同一动态地址(或几个动态地址)上,所以,主设备可经由,例如,如上文所讨论的,ReadSerialNumber请求,快速确定有任何这种从设备存在。如果找到了没有静态地址的从设备,则主设备可实施自动地址分配程序,例如,过程600。
在另一个实例中,主设备执行基于分组的自动地址分配过程,其实例在图13中被绘示为递归过程1300。在动作1302中,主设备通过单播指定两个或多个预定地址的动态区域的EnterDynamicPool命令将网络上成组的从设备的预定子集分配给从设备子集。因此,根据此实例,每一组都与动态区域内的两个或多个地址的动态地址相关联。而且,在此实例中,初始的预定义从设备子集包括在网络上还没有分配的静态地址的所有从设备。在一些实例中,预定的从设备子集和两个或多个预定地址均传给递归过程1300,通过初始化递归过程1300的过程,根据预定流程在动作1302内产生,或储存在可由递归过程1300存取的预定变量(例如,全局变量)内。
在动作1304中,主设备通过请求已采用与所述群组相关联的动态地址的任何从设备的序列号针对从设备搜索下一组。在动作1306中,主设备通过确定在超时时段结束之前是否没有接收到序列号请求的响应来确定群组中是否不包括从设备。如果主设备没有及时接收到响应,则主设备进行到动作1308。否则,主设备进行到动作1310。
在动作1308中,主设备确定是否所有的群组都已经被搜索过了。如果是这样,则主设备终止当前递归过程1300的实例。否则,主设备返回到动作1304。
在动作1310中,主设备通过确定是否在超时时段结束之前接收到序列号请求的单个响应来确定是否只有一个从设备被包括在所搜索的群组中。在动作1312中,如果主设备接收到单个及时响应,则主设备分配静态地址给响应的从设备。否则,主设备确定有多个从设备被包括在群组中,并进行到动作1318。虽然在图13中所示的实例中,主设备通过消除其它可能性的过程来确定有多个从设备被包括在群组中,但是在其它实例中,可在主设备接收到序列号请求的多个响应的情况下肯定地做此确定。
在动作1312中,主设备发送当前静态地址的值给响应的从设备。在动作1314中,主设备确定是否在预定的时间段内接收到有效的响应。如果不是这样,则主设备执行动作1318。否则,在动作1316中,主设备将当前静态地址变量的值设定成静态地址区域内的下一个静态地址。
在动作1318中,主设备通过将与群组相关联的动态地址提供给递归过程1300的下一个实例来设定将在递归过程1300的下一个实例中使用的从设备的预定子集,使其包括群组内的从设备。除此之外,主设备还将与递归过程1300的当前实例还未搜索的任何群组相关联的动态地址提供给递归过程1300的下一个实例,以防止递归过程1300的下一个实例利用这些已经利用过的动态地址。接下来,主设备执行递归过程1300的下一个实例。以此方式,主设备将继续递归地执行过程1300,直到所有从设备都已被分配了静态地址为止。
在另一个实例中,作为其制造过程的一部分,主设备被配置成要被添加的从设备的数量作为其安装过程的一部分。根据此实例,要被添加的从设备的配置数目等于与主设备封装在一起的从设备的数目。而且,在此实例中,主设备基于配置的要被添加的从设备的数目来调整其地址分配过程。例如,在一个实例中,主设备在分配地址给配置数目的从设备之后终止自动地址分配过程。在另一个实例中,主设备在分配地址给配置数目的从设备之后确定是否有额外的从设备驻留在动态池内,且如果没有额外的从设备驻留在动态池内,则终止自动地址分配过程。在又一个实例中,主设备可基于配置的从设备的数目来调整用于分配地址的动态区域的尺寸。
如上所述,图13中所示的过程1300作为递归过程来进行实施。然而,实例并不限于基于群组的自动地址分配过程的递归实施和包括迭代实施一些实例。在至少一个实例中,基于群组的自动地址分配过程是利用群组尺寸(动态区域尺寸)2的二进制自动地址分配过程。
目标设备程序
如在上文参照过程700的动作702所讨论的,在一些实例中,目标设备,例如,设备106、108和110中的任何一个,初始化配置会话。图8示出示例性过程800,其可由目标设备来实施,以实现此目的。如图所示,过程800包括初始化参数、接收请求来选择动态地址和采用动态地址的动作。
在动作802中,目标设备执行初始化过程。此初始化过程可包括例如将目标设备的通信地址参数设定成使目标设备只处理广播消息的值之类的动作。除此之外,初始化程序还可进一步分配指示静态地址是否已分配给目标设备的“分配”变量。初始化过程可进一步将分配变量的值设定成指示目标设备还未被分配静态地址的值。
在动作804中,目标设备接收请求来从动态区域中选择动态地址。根据一个实例,目标设备使用随机或伪随机方法来选择动态地址。真随机数生成器可以采取许多形式。例如,目标设备可使用ADC来测量断开连接的引脚,并使用噪声作为随机值。来自反向偏置PN结的噪声还可被取样且用于此目的。一般而言,随机值将需要通过散列算法或通过使用它们来为伪随机数生成器设定种子来进行提取。
接下来,在动作806中,通过将通信地址参数的值设定成选出的动态地址的值,目标设备采用选出的动态地址作为其通信地址。一旦过程800完成,目标设备准备参与目标设备可能被分配静态地址的配置循环。
如在上文中参照过程700的动作704所讨论的,在一些实例中,目标设备,例如,设备106、108和110中的任何一个,处理配置消息。图9示出示例性过程900,其可由目标设备来实施,以实现此目的。如图所示,过程900包括几个动作,每一个动作将在下文中进一步加以讨论。
在动作902中,目标设备从网络接收消息。在动作904中,目标设备确定消息是否包括分配静态地址给目标设备的请求。如果不是这样,则目标设备执行动作906。否则,目标设备执行动作910。
在动作906中,目标设备确定当前消息是否包括重新初始化请求。如果是这样,则在动作908中,目标设备从动态区域中重新选择动态地址,并通过将重新选出的动态地址的值设定为通信地址参数的值将其自身配置成使用重新选出的动态地址。否则,目标设备通过执行动作902从网络接收另一个消息。
在动作910中,目标设备通过将在请求中接收到的静态地址的值分配给通信地址参数将其自身配置成使用静态地址。接下来,在动作912中,目标设备响应于指示静态地址已成功被分配的消息,并终止过程900。
图10示出通过MODBUS网络内的从设备来接收操作地址的过程的另一个实例。在一些实例中,每一个耦合至MODBUS网络的从设备相互独立地执行图10中所示的过程1000。图10中所示的实例是以从设备处于正常操作模式为背景提出的,因为,在此实例中,就其本身而论,没有特定触发器使从设备进入地址分配模式。相反,在动作1030中,明确提出与过程1000有关的特殊消息的特定情况,且所有其它处理用“特定应用处理”来表示。
如图10中所示,过程1000从动作1002开始,其中从设备初始化两个变量。第一个变量是“saddr_p”变量,其储存指示从设备是否已分配了静态地址的推测(“布尔”)值。最初,执行过程1000的从设备没有静态地址,所以saddr_p变量被设定成值0。第二个变量是“addr”变量,其指示从设备的通信地址。在图10中所示的实例中,最初,从设备未被分配通信地址,所以addr变量被设定成特定值Null(空)。这个值将不会与任何一个单播地址相配,所以从设备将不会作用于任何单播消息。然而,Null值将与广播地址相配,因此使从设备接收并处理广播消息。
从设备从动作1004开始进入无限循环,在动作1004中,从设备等待接收有效消息。在动作1006中,一旦接收到有效消息,从设备确定消息是否是定址到所有从设备的广播消息。如果是这样,则从设备执行动作1010,否则,从设备执行动作1008。
在动作1008中,从设备已确定消息不是广播消息,所以从设备将消息中的地址与储存在addr变量中的其自身地址进行比较,以确定消息是否已定址于此。如果从设备确定addr变量的值(例如,Null值)与消息中所包括的地址不相配,则从设备循环返回到动作1004,以接收另一个消息。否则,从设备确定消息是定址到从设备的单播消息,并执行动作1010。
在动作1010中,从设备确定消息是否包括EnterDynamicPool命令。如果不是这样,则从设备执行动作1020。如果是这样,则在动作1012和1014中,从设备确定该命令是否将其定为目标。在动作1012中,从设备读取消息,通过在TargetType字段中加入#TARGET_ALL值来确定EnterDynamicPool命令是否将所有从设备定为目标。如果是这样,则从设备执行动作1018。
否则,从设备执行动作1016。在动作1014中,从设备通过在TargetType字段中加入#TARGET_DYN值来确定命令是否仅将留在动态池中的从设备定为目标。如果是这样,则从设备执行动作1016。如果不是这样,则从设备忽略命令,并执行动作1004来等待另一个消息。
在动作1016中,从设备通过校验saddr_p变量来确定其是否是动态池的一部分,saddr_p变量初始为0(假)。如果saddr_p变量的值为0,则从设备在动态池中。因此,命令将从设备定为目标,所以,从设备执行动作1018。否则,saddr_p变量的值不为0,这指示从设备具有所分配的静态地址。因此,从设备不是动态池的一部分,并不是命令的目标,并执行动作1004,以等待另一个消息。
在动作1018中,从设备将saddr_p变量设定成0(假),以指示其不再具有静态地址,因为命令将从设备置于动态池中。同样在动作1018中,从设备从EnterDynamicPool命令所定义的动态区域中选择随机地址,并将此值分配给其“addr”变量,从而采用动态区域中的随机确定的地址作为其通信地址。在命令处理完成之后,从设备执行动作1004,以等待另一个消息。
在动作1020中,从设备确定消息是否包括ReadSerialNumber请求。如果不是这样,则从设备执行动作1024。如果是这样,则从设备执行动作1022以在“ReadSerialNumber”响应中发回其序列号,然后执行动作1004,以等待另一个消息。在至少一个实例中,嵌入到响应消息中的应用层数据包如表格3中所示那样格式化。
表格3
响应消息中的第二个字节是序列号中的数据字节的数目。这被固定在由常数#SERIAL_NUMBER_SIZE_B表示的特定应用值。序列号由字节的序列组成。消息中的这些字节从消息中的序列号的第一个字节开始依序发送,偏移量为2,如表格中所示。在表格中,容纳序列号所需的16位寄存器的数目用N来表示。序列号可以是2N个字节或2N-1个字节(即,最终寄存器可能只具有一个相关的数据字节)。主设备和从设备期望了解字节的正确数目,且在适当情况下,忽视最终字节。然而,最终字节必须仍要在响应中发送,即便是未使用也是如此。如之前所说明的,序列号不能超过244个字节。
在动作1024中,从设备确定消息是否包括AssignStaticAddresstoSerialNumber(为序列号分配静态地址)请求。如果不是这样,则从设备在执行动作1004以等待另一个消息之前执行动作1030。如果消息包括AssignStaticAddresstoSerialNumber请求,则在动作1026中,从设备确定请求中的序列号是否与其自身的序列号相配。如果请求中的序列号与从设备的序列号并不相配,则从设备忽视请求,并执行动作1004来等待另一个消息。
如果请求中的序列号与从设备的序列号相配,则从设备执行动作1028。在动作1028中,从设备通过将请求中所包括的静态地址分配给addr变量来接受地址分配。从设备还将其saddr_p变量设定成1(真),以指示从设备具有所分配的静态地址。最后,从设备通过将“AssignStaticAddresstoSerialNumber”响应回传给主设备来确认分配成功,然后执行动作1004来等待另一个消息。在至少一个实例中,嵌入到响应消息中的应用层数据包如表格4中所示的那样格式化。
表格4
AssignStaticAddresstoSerialNumber响应就是一个确认,且并不包含从设备的任何额外数据。根据请求,消息字节1和2只重复AssignStaticAddresstoSerialNumber命令值,且根据请求,字节3和4重复16位寄存器计数值。按照MODBUS规范,这个值可能不超过123,且由常数#ASSIGN_SA_SN_SIZE_R来表示。
在执行AssignStaticAddresstoSerialNumber响应期间发生的通信错误可通过使主设备单播其尝试分配的简单请求来处理。如果主设备接收到响应,则主设备可将响应作为确认进行处理。
根据在上文参照图6所讨论的一个实例,主设备可在对还未被分配静态地址的从设备发出进入动态池的请求之前向从设备广播其序列号。在此实例中,将所分配的但可能并不是唯一的静态地址储存在addr变量中的从设备还储存将静态地址分配给从设备的主设备的标识符。而且,根据此实例,已有所分配的静态地址的从设备将主设备所广播的序列号与分配其当前静态地址的主设备已储存的序列号进行比较。而且,在此实例中,检测到这些序列号并不相同的任何一个从设备将addr变量的值设定成Null,使得从设备将参与由主设备进行的未来的地址分配过程。以此方式,可在未分配静态地址的情况下使用与未初始化的从设备相同的过程,将从预先存在的网络中移除的从设备添加到由新主设备控制的新网络中。
在特定实例中,过程300到1000各描绘一个特定的动作序列。这些过程中所包括的动作可由,或使用如本文中所讨论的那样专门配置的一个或多个计算机***来执行。一些动作是可选的,且正因如此,根据一个或多个实例,可以被省略。此外,还可改变动作的顺序或添加其它的动作,而不背离本文中所讨论的***和过程的范围。此外,如上文所讨论的,在至少一个实例中,动作由特定的、专门配置的机器,即根据本文所公开的实例而配置的计算机***上,进行执行。
使用场合
图11提供执行示例性地址分配过程1100的时序图。如图11中所示,时间从顶部流向底部和水平线指示设备之间的消息互换。过程从1102开始,在1102中主设备向所有地址广播EnterDynamicPool命令。命令中的TargetType字段被设定成#TARGET_ALL。DynRegionBounds字段所使用的精确值在此实例中不指定。
一旦接收到此消息,所有从设备将放弃其当前分配的地址(如果有的话),并从命令中指定的动态区域中随机选出新地址。由于这是广播消息,没有从设备响应它。因此,在发送另一个消息之前,主设备必须等待适量时间以确保所有从设备有时间作用于命令。
一旦此时间过去,第一个循环就从1104开始,主设备向第一个动态地址(即,前一个EnterDynamicPool命令中指定的两个边界中较小的那个)单播ReadSerialNumber请求。选择第一个动态地址作为其通信地址的任何从设备将用ReadSerialNumber响应做出响应,提供其序列号。在图11中所示的实例中,只有一个从设备选择第一动态地址,且该从设备用其序列号做出响应。
当主设备接收到此响应时,其确定有从设备在动态地址上,所以主设备尝试将该从设备移出动态池并移入静态区域。这在1106,通过向第一动态地址单播AssignStaticAddresstoSerialNumber请求来实现。此请求包含主设备想要分配给从设备的静态地址和主设备在ReadSerialNumber响应中接收到的序列号。当从设备接收到此请求时,从设备确认消息中所包括的序列号与其自身序列号相配,然后接受分配的静态地址,从而离开动态池。从设备通过用ReadSerialNumber响应对主设备做出响应来确认分配。当主设备接收到此响应时,主设备将地址分配记录在其自身的记录中。
在1108,主设备前进到动态区域中的下一个地址并发送另一个ReadSerialNumber请求。在此实例中,没有从设备选择此动态地址,因此,主设备未接收到响应。在预定超时时段过去之后,主设备继续进行到动态区域中的下一个地址。
在1110,对ReadSerialNumber请求的响应作为乱码数据包进入主设备,这意味着其是畸形的且不能被解析,或对其所做的数据完整性校验失败。这最有可能指示,在此动态地址上发生冲突,意味着一个以上从设备选择此动态地址作为其通信地址。在这种情况下,主设备不能有效地分配静态地址给冲突的从设备中的任何一个,因为其全部共享一个通信地址,且主设备不知道它们中的任何一个的有效序列号。因此,在此地址上冲突的所有从设备将继续进行下一个循环。
在1112,主设备通过广播另一个EnterDynamicPool命令初始化下一个循环。然而,假定此循环不是初始循环,主设备只将留在动态池中的从设备定为目标,因为在最后一个循环中从动态池中清除到静态地址区域中的那些从设备无需参与此循环。因此,请求的TargetType字段被设定成#TARGET_DYN。通过此命令,主设备为动态区域设定边界。要理解的是,主设备并不需要将在此循环中使用的边界设定成第一个循环中使用的边界;主设备具有基于当前情况来改变边界的选择。例如,在此循环中,仍在动态池中的从设备的数目最有可能减少。因此,主设备可使用较小的动态区域以更快地对区域进行处理,因为主设备可能已确定了在第一个循环中被清除的从设备的阈值数目。相反地,如果第一循环中发生多于阈值数目的冲突,则主设备可在下一个循环中扩大动态区域。
同样,在发出命令之后,开始发送ReadSerialNumber请求之前,主设备等待适当的周转时间。在1114,主设备发送请求给第一动态地址。在该实例中,在第一循环中,存在从设备在此地址上。在当前循环中,主设备未接收到响应,指示没有从设备在此地址上。这说明特定从设备所选择的动态地址可在循环之间改变。
在等待响应预定时间之后,主设备继续进行到下一个动态地址,并发送另一个ReadSerialNumber请求。在1116,主设备接收到显然有效的ReadSerialNumber响应。因此,主设备将AssignStaticAddresstoSerialNumber请求回传给动态地址。该请求包括空闲的静态地址和在前一个响应中接收到的序列号的指示。然而,根据此实例,在1118,主设备未接收到对该请求的响应,且该请求超时。
这种超时可指示各种问题。例如,根据一个实例,超时指示网络故障。根据另一个实例,超时指示主设备或从设备通信故障。然而,在又一个实例中,尽管一个事实是前一个响应是有效的(即,前一个响应是良好的,且通过数据完整性校验),但是其所包括的序列号不同于发出响应的从设备的其中的一个的序列号,且因此,没有从设备确认分配。如果实际上在动态地址上有冲突,则可能会发生这种情况,且因此,两个或多个从设备均响应于ReadSerialNumber请求,每一个从设备用其自身的序列号来响应。在这种情况下,有微小但不为零的机会,冲突会产生良好的甚至通过数据完整性校验的响应,但是响应中所报告的序列号将是所有响应的从设备的序列号的组合(此组合的性质取决于通信的物理层,即,位元实际上如何在通信介质上存在)。
当这种非差错引发冲突出现时,地址分配过程仍将正常起作用。当主设备发送分配请求中所生成的序列号时,序列号将不会与从设备中的任何一个相匹配,因此,没有从设备将接受分配。在这种情况下,缺少AssignStaticAddresstoSerialNumber响应,而非缺少有效的ReadSerialNumber响应向主设备指示有冲突。一旦有效超时时段内未接收到响应,主设备仅照常进行到下一个动态地址。
在1120,主设备发送另一个ReadSerialNumber请求给另一个动态地址,并取回有效的ReadSerialNumber响应。继续1122,主设备发送另一个AssignStaticAddresstoSerialNumber请求,并接收有效的AssignStaticAddresstoSerialNumber响应,指示从设备用序列号接受静态地址分配。
这最后一对事物处理(ReadSerialNumber和AssignStaticAddresstoSerialNumber)似乎没有冲突,但是情况不一定是这样。可能有两个或多个从设备在此动态地址上发生冲突,但是用正确的序列号,冲突的ReadSerialNumber响应实际上会产生良好的无差错响应。可能会发生这种情况,这取决于实际冲突的序列号和冲突的数据如何在物理层中组合。例如,通过将浮动总线而写入零且通过主动驱动总线而写入一的物理层可能会导致冲突的数据产生逐位OR(或)的冲突消息。在这种情况下,值为1的所有位元都将幸免于冲突,所以,某些消息组合可能会导致其中一个消息整体幸免于冲突。尽管此冲突不会被主设备的至少一个实例(即,没有附加差错检测机制的示例性主设备)直接检测到,但是此冲突也不会损害地址分配过程,因为静态地址分配仍是成功的,因此,动态池的尺寸在下一个循环中缩小。
然而,假定在此实例中主设备不能检测某类(虽然罕见)冲突,在主设备接收到对ReadSerialNumber请求的至少一个响应的任何一个循环之后,可能有至少一个从设备留在动态池中。因此,为了确保所有从设备都已被清除,分配过程的至少一个实例继续进行,直到在最终循环内,没有从设备在任何一个动态地址响应为止。这将保证没有起作用的从设备留在动态池中。而且,根据此实例,因为这些未检测到的冲突是罕见的,所以在主设备检测到没有冲突的循环之后,主设备可使用较小的动态区域。通过使用较小的动态区域,主设备可更迅速地实施最终循环。
本文所公开的***和方法可应用于各种环境,并与各式各样的设备一起使用。例如,在一个实例中,住宅电力***利用本文所公开的自动地址分配过程来给测量住宅内分支电路电流的电流互感器分配地址。在另一个实例中,工业电力***利用自动地址分配过程来给多个并联的不间断电源分配地址。在又一个实例中,自动控制***利用自动地址分配过程来给分配在车内的传感器的地址。其它示例性地址分配过程可提供静态地址给家庭自动化设备以及显示器、安保和安全设备、电力和其他能量监测设备、配电设备、不间断电源、HVAC和其它温度管理设备、照明控制***、智能或移动电插座和电器控制设备。因此,本文所公开的示例性***和过程适用于需要低成本和高稳健性数据通信的环境。
已经描述了至少一个实例的几个方面,要理解的是,本领域技术人员不难想到各种改动、修改和改进。例如,虽然说明书的大部分讨论了具有共享总线拓扑的MODBUS网络内的地址分配,但是也可以在具有共享总线拓扑但是利用MODBUS以外的标准的其它网络中使用实例。例如,实例可在具有以下特性的任何一个网络中使用:共享总线拓扑、支持单播和广播消息发送的通信协议、不超过8位的通信地址、具有不超过244个字节的唯一标识符的目标设备、能检测到接收到确定是乱码的(不良的或失败的完整性校验)消息且能检测到并处理响应超时的源设备。除此之外,实例还可在通过单个设备中的本地总线连接的设备之间实施。此类改动、修改和改进被认为是本公开的一部分,且被认为包括在本文所讨论的实例的范围内。因此,前述说明和附图仅用于示例。
Claims (25)
1.一种将地址分配给网络内的多个设备的***,包括存储器和耦合到所述存储器的至少一个处理器,并且所述***被配置成:
指示所有的所述多个设备分别从第一组动态地址中选择第一动态地址;
分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备;
指示所述多个设备中具有标识至少两个设备的第一动态地址的所有设备分别从第二组动态地址中选择第二动态地址;以及
分别将另一个不同静态地址分配给具有唯一标识所述设备的第二动态地址的每个设备。
2.根据权利要求1所述的***,其中,所述***被配置为至少部分通过以下操作来指示所有的所述多个设备分别选择第一动态地址:
提供所述第一组动态地址的第一地址的指示给所有的所述多个设备;以及
提供所述第一组动态地址的最后地址的指示给所有的所述多个设备。
3.根据权利要求1所述的***,其中所述第一组动态地址具有不同于所述第二组动态地址的基数的基数。
4.根据权利要求1所述的***,其中所述***还被配置为分别从具有唯一标识所述设备的第一动态地址的每个设备接收确认。
5.根据权利要求1所述的***,其中所述***还被配置成:
分别使用由所述设备所选的所述第一动态地址向每个设备请求标识符;以及
分别从具有唯一标识所述设备的所述第一动态地址的每个设备接收所述标识符,其中,响应于接收到所述设备的所述标识符,所述***被配置成分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备。
6.根据权利要求5所述的***,其中所述标识符包括以下中至少一个:序列号、微处理器标识符、由随机数生成器生成的数和由真随机数生成器生成的数。
7.根据权利要求1所述的***,其中,所述***还被配置成:
分别使用由所述设备所选的所述第二动态地址向每个设备请求标识符;以及
响应于没有接收到标识符,中断分配地址。
8.一种使用计算机将地址分配给多个设备的计算机实施的方法,所述计算机包括存储器和耦合到所述存储器的至少一个处理器,所述方法包括:
通过计算机经由网络指示所有的所述多个设备分别从第一组动态地址中选择第一动态地址;
分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备;
指示所述多个设备中具有标识至少两个设备的第一动态地址的所有设备分别从第二组动态地址中选择第二动态地址;以及
分别将另一个不同静态地址分配给具有唯一标识所述设备的第二动态地址的每个设备。
9.根据权利要求8所述的方法,其中,通过所述计算机指示所有的所述多个设备分别选择第一动态地址的操作包括:
提供所述第一组动态地址的第一地址的指示给所有的所述多个设备;以及
提供所述第一组动态地址的最后地址的指示给所有的所述多个设备。
10.根据权利要求8所述的方法,其中,指示具有标识至少两个设备的第一动态地址的每个设备分别选择第二动态地址的操作包括:指示每个设备从具有与所述第一组动态地址的基数不同的基数的第二组动态地址中进行选择。
11.根据权利要求8所述的方法,还包括分别从具有唯一标识所述设备的第一动态地址的每个设备接收确认。
12.根据权利要求8所述的方法,还包括:
分别使用由所述设备所选的所述第一动态地址向每个设备请求标识符;和
分别从具有唯一标识所述设备的第一动态地址的每个设备接收所述标识符,其中,分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备的动作是响应于接收到所述设备的所述标识符而进行的。
13.根据权利要求12所述的方法,其中,分别接收所述标识符包括接收以下中至少一个:序列号、微处理器标识符、由随机数生成器生成的数和由真随机数生成器生成的数。
14.根据权利要求8所述的方法,还包括:
分别使用由所述设备所选的所述第二动态地址向每个设备请求标识符;以及
响应于没有接收到标识符,中断分配地址。
15.一种在其上存储有指令序列的非短暂性计算机可读介质,所述指令序列用于将地址分配给网络内的多个设备,所述指令序列包括将使至少一个处理器进行以下操作的指令:
指示所有的所述多个设备分别从第一组动态地址中选择第一动态地址;
分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备;
指示所述多个设备中具有标识至少两个设备的第一动态地址的所有设备分别从所述第二组动态地址中选择第二动态地址;和
分别将另一个不同静态地址分配给具有唯一标识所述设备的第二动态地址的每个设备。
16.根据权利要求15所述的非短暂性计算机可读介质,其中,所述指令序列包括将使所述至少一个处理器进行以下操作的指令:通过指示所述多个设备中具有标识至少两个设备的第一动态地址的所有设备从具有不同于所述第一组动态地址的基数的基数的第二组动态地址中进行选择,指示所述多个设备中具有标识至少两个设备的第一动态地址的所有设备分别选择第二动态地址。
17.根据权利要求15所述的非短暂性计算机可读介质,其中,所述指令序列包括还使得所述至少一个处理器进行以下操作的指令:分别从具有唯一标识所述设备的第一动态地址的每个设备接收确认。
18.根据权利要求15所述的非短暂性计算机可读介质,其中,所述指令序列包括还使得所述至少一个处理器进行以下操作的指令:
分别使用由所述设备所选的所述第一动态地址向每个设备请求标识符;以及
分别从具有唯一标识所述设备的第一动态地址的每个设备接收所述标识符,其中,分别将不同静态地址分配给具有唯一标识所述设备的第一动态地址的每个设备的动作是响应于接收到所述设备的所述标识符而进行的。
19.根据权利要求18所述的非短暂性计算机可读介质,其中,所述指令序列包括还使得所述至少一个处理器进行以下操作的指令:通过接收以下中至少一个:序列号、微处理器、由随机数生成器生成的数和由真随机数生成器生成的数,来分别接收所述标识符。
20.根据权利要求15所述的非短暂性计算机可读介质,其中,所述指令序列包括还将使得所述至少一个处理器进行以下操作的指令:
分别使用由所述设备所选择的所述第二动态地址向每个设备请求标识符;和
响应于没有接收到标识符,中断分配地址。
21.一种用于将地址分配给网络内的多个设备的***,所述***包括:
第一设备,其被配置为:
向所有的所述多个设备发出第一指令,所述第一指令请求所述多个设备中的每一个分别从第一组动态地址中选择第一动态地址;
从所述多个设备中具有唯一标识所述设备的第一动态地址的第一子集中的任何一个接收至少一个第一响应;以及
分别发出第一不同静态地址的第一分配给所述第一子集的每个设备,
其中,所述多个设备中的每一个被配置为:
从所述第一设备接收所述第一指令;
选择所述第一动态地址以响应接收到所述第一指令;
向所述第一设备发出对所述第一指令的第一响应;
从所述第一设备接收所述第一不同静态地址的所述第一分配;以及
存储所述第一不同静态地址作为通信地址。
22.根据权利要求21所述的***,其中,所述第一设备还配置成:
发出第二指令到所有的所述多个设备,所述第二指令请求所述多个设备中不属于所述第一子集的每一个设备分别从第二组动态地址中选择第二动态地址;
从所述多个设备的第二子集的任何一个接收至少一个第二响应,所述第二子集的每一个具有唯一标识所述设备的第二动态地址;以及
分别发出第二不同静态地址的第二分配给所述第二子集的每个设备,
其中,所述多个设备中的每个还被配置成:
从所述第一设备接收所述第二指令;
选择所述第二动态地址以响应接收到所述第二指令;
向所述第一设备发出对所述第二指令的第二响应;
从所述第一设备接收所述第二不同静态地址的所述第二分配;以及
存储所述第二不同静态地址作为通信地址。
23.根据权利要求21所述的***,其中,所述多个设备中的每一个被配置成随机地选择所述第一动态地址。
24.根据权利要求21所述的***,其中,所述多个设备中的每一个被配置为以唯一标识符对所述第一指令进行响应。
25.根据权利要求24所述的***,其中,所述唯一标识符是基于以下中至少一个:序列号、微处理器标识符,由随机数生成器生成的数和由真随机数生成器生成的数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/089,678 US8700747B2 (en) | 2011-04-19 | 2011-04-19 | System and method for automatically addressing devices in a multi-drop network |
US13/089,678 | 2011-04-19 | ||
PCT/US2012/034115 WO2012145423A1 (en) | 2011-04-19 | 2012-04-18 | System and method for automatically addressing devices in a multi-drop network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103621049A true CN103621049A (zh) | 2014-03-05 |
Family
ID=46051934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280030023.6A Pending CN103621049A (zh) | 2011-04-19 | 2012-04-18 | 用于在多点网络中自动分配地址给设备的***和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8700747B2 (zh) |
EP (1) | EP2700212B1 (zh) |
CN (1) | CN103621049A (zh) |
AU (1) | AU2012245501B2 (zh) |
DK (1) | DK2700212T3 (zh) |
WO (1) | WO2012145423A1 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454208A (zh) * | 2017-08-24 | 2017-12-08 | 广东雅达电子股份有限公司 | 一种为从节点设备分配网络地址的方法 |
CN107450487A (zh) * | 2016-05-31 | 2017-12-08 | 布里斯托公司商用名远程自动化解决方案 | 经由远程终端单元实现通信的方法和装置 |
CN107735736A (zh) * | 2014-11-20 | 2018-02-23 | 深圳市大疆创新科技有限公司 | 用于可移动物体的功能模块的编址方法 |
CN108028862A (zh) * | 2015-09-21 | 2018-05-11 | 高通股份有限公司 | 标识共享总线上的多个相同设备 |
CN109040334A (zh) * | 2018-07-12 | 2018-12-18 | 山东师范大学 | 静态的内网映射方法、外网服务器、内网通信设备及*** |
CN109286546A (zh) * | 2018-11-20 | 2019-01-29 | 成都信息工程大学 | 一种多点接入式智能互联设备及互联通信方法 |
CN109618567A (zh) * | 2016-08-19 | 2019-04-12 | 豪夫迈·罗氏有限公司 | 用于增强bluetooth*绑定的方法和*** |
CN109792431A (zh) * | 2016-10-05 | 2019-05-21 | 天体电子学先进电子***公司 | 包括***自动终止的多点分支通信***的自动寻址和配置 |
CN109961540A (zh) * | 2017-12-26 | 2019-07-02 | 南京工程学院 | 一种nfc智能车锁控制方法 |
CN109992547A (zh) * | 2017-12-29 | 2019-07-09 | 深圳市优必选科技有限公司 | 主从设备地址分配***及方法 |
CN110868784A (zh) * | 2018-08-08 | 2020-03-06 | 广州彩熠灯光有限公司 | 舞台灯光数据双向同步通信方法及***、存储介质及装置 |
CN111741143A (zh) * | 2020-06-03 | 2020-10-02 | 杭州炬华科技股份有限公司 | 一种电测仪表Modbus地址在线分配的方法、装置 |
CN111818492A (zh) * | 2020-05-20 | 2020-10-23 | 上海橙群微电子有限公司 | 蓝牙信标及其数据的传输方法、可读存储介质 |
CN113037886A (zh) * | 2021-03-05 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 网络设备的管理方法、装置、介质以及电子设备 |
CN113612868A (zh) * | 2021-08-06 | 2021-11-05 | 深圳市欧瑞博科技股份有限公司 | 设备地址分配方法、装置以及*** |
CN115037718A (zh) * | 2022-06-01 | 2022-09-09 | 大峡谷照明***(苏州)股份有限公司 | 基于地址区间的灯具uid识别方法、装置、设备及介质 |
CN118101624A (zh) * | 2024-04-19 | 2024-05-28 | 深圳市智安新能源科技有限公司 | 智能电池的并联组网方法、装置、电池以及存储介质 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010131149A1 (en) * | 2009-05-13 | 2010-11-18 | Koninklijke Philips Electronics N.V. | A method for assigning a network address for communicating in a segmented network |
US9638726B2 (en) | 2012-04-12 | 2017-05-02 | Schneider Electric It Corporation | System and method for detecting branch circuit current |
WO2013162536A1 (en) | 2012-04-25 | 2013-10-31 | Schneider Electric It Corporation | Current monitoring device |
US9851382B2 (en) | 2012-12-27 | 2017-12-26 | Schneider Electric USA, Inc. | Power meter with current and phase sensor |
KR101454991B1 (ko) * | 2013-01-21 | 2014-11-04 | 서울대학교산학협력단 | 무선 네트워크에서 네트워크 가입 방법 |
EP3014462A4 (en) * | 2013-06-28 | 2017-03-29 | Schneider Electric IT Corporation | System and method for automatically addressing devices in a multi-drop master/slave network |
KR101816944B1 (ko) * | 2013-10-02 | 2018-01-09 | 엘에스산전 주식회사 | UART Ring 통신의 ID 자동 설정방법 |
US9784773B2 (en) | 2013-11-06 | 2017-10-10 | Schneider Electric It Corporation | Intelligent sensor network in a load center |
WO2015102605A1 (en) | 2013-12-31 | 2015-07-09 | Schneider Electric It Corporation | Automatic sub-millisecond clock synchronization |
US10878323B2 (en) | 2014-02-28 | 2020-12-29 | Tyco Fire & Security Gmbh | Rules engine combined with message routing |
US10379873B2 (en) | 2014-02-28 | 2019-08-13 | Tyco Fire & Security Gmbh | Distributed processing system |
US9513364B2 (en) | 2014-04-02 | 2016-12-06 | Tyco Fire & Security Gmbh | Personnel authentication and tracking system |
WO2015192376A1 (zh) * | 2014-06-20 | 2015-12-23 | 奇点新源国际技术开发(北京)有限公司 | 一种为总线上的挂载节点分配有序编号的方法及装置 |
US9934191B2 (en) * | 2014-07-31 | 2018-04-03 | Neofocal Systems, Inc. | Systems and methods for assigning addresses to serially arranged circuit nodes |
DE102014117797A1 (de) | 2014-10-10 | 2016-04-14 | Ebm-Papst Mulfingen Gmbh & Co. Kg | Dynamisch adressierbares Master-Slave-System sowie Verfahren zum dynamischen Adressieren von Slave-Einheiten |
CN105138485A (zh) * | 2015-08-21 | 2015-12-09 | 上海斐讯数据通信技术有限公司 | 一种串行总线地址管理装置 |
DE102015216850A1 (de) * | 2015-09-03 | 2017-03-09 | Tridonic Gmbh & Co Kg | Adressierungsverfahren für Gebäudetechnikgerätebusteilnehmer |
JP6436242B2 (ja) * | 2015-09-17 | 2018-12-12 | 株式会社安川電機 | 産業機器の通信システム、通信方法、及び産業機器 |
US10860541B2 (en) | 2016-04-11 | 2020-12-08 | Johnson Controls Fire Protection LP | Fire detection system with distributed file system |
US10453320B2 (en) * | 2016-04-11 | 2019-10-22 | Johnson Controls Fire Protection LP | Addressing method for slave units in fire detection system |
CA3022653C (en) | 2016-05-02 | 2024-06-11 | Sew-Eurodrive Gmbh & Co. Kg | Method for integrating a further bus subscriber into a bus system, and bus system |
CN106789498B (zh) * | 2016-12-05 | 2019-12-20 | 广州视源电子科技股份有限公司 | Modbus通信网络的网络地址分配方法、从节点设备与通信*** |
US20180270117A1 (en) * | 2017-03-17 | 2018-09-20 | Microchip Technology Incorporated | Unified Centralized Network Stack |
US10320742B2 (en) * | 2017-06-01 | 2019-06-11 | American Sterilizer Company | Address assignment system and method for surgical lighthead components |
CN107566396A (zh) * | 2017-09-28 | 2018-01-09 | 郑州云海信息技术有限公司 | 一种基于动态口令增强服务器vpn协议安全的方法 |
CN110073637B (zh) * | 2017-11-24 | 2022-05-13 | 乐博益思株式会社 | 主机设备及从机设备、以及包括其的识别号设定装置 |
US10563884B2 (en) | 2018-01-29 | 2020-02-18 | Lennox Industries Inc. | Auto addressing for HVAC units |
KR102475542B1 (ko) * | 2018-03-21 | 2022-12-07 | 엘에스일렉트릭(주) | 이기종 필드버스용 게이트웨이 시스템 |
IT201800003980A1 (it) | 2018-03-26 | 2019-09-26 | Stmicroelectronics Application Gmbh | Procedimento di comunicazione, sistema, dispositivi, segnale e veicolo corrispondenti |
CN108521474B (zh) * | 2018-03-30 | 2021-05-25 | 青岛海尔空调电子有限公司 | 多联式控制***的地址竞争方法 |
US11808589B1 (en) * | 2018-05-04 | 2023-11-07 | Staples, Inc. | Dynamic allocation of resources used in delivery |
GB2579233A (en) * | 2018-11-27 | 2020-06-17 | Edwards Ltd | A method relating to controllers of a vacuum pumping and/or abatement system |
US10805262B1 (en) * | 2019-06-10 | 2020-10-13 | Banner Engineering Corp. | Modbus system having actual and virtual slave addresses and slave sensors |
DE102019128651A1 (de) | 2019-10-23 | 2021-04-29 | Infineon Technologies Ag | Vorrichtung für einen digitalen Eindraht-Bus, Master-Vorrichtung, Sensor und Verfahren zum Zuweisen von Adressen an mehrere Vorrichtungen auf einem digitalen Eindraht-Bus |
CN113010463B (zh) * | 2019-12-20 | 2024-05-14 | 林德(中国)叉车有限公司 | 一种用于锂电池管理的iic通信方法及*** |
IT202000012328A1 (it) * | 2020-05-26 | 2021-11-26 | Carel Ind Spa | Metodo di assegnazione di un indirizzo operativo |
CN111431785A (zh) * | 2020-06-11 | 2020-07-17 | 南京北路自动化***有限责任公司 | 一种can总线节点自组网方法 |
CN112073280B (zh) * | 2020-09-07 | 2022-04-08 | 阳光新能源开发股份有限公司 | 基于Modbus协议的通信方法、装置及通信设备 |
DE102020134167A1 (de) * | 2020-12-18 | 2022-06-23 | Beko Technologies Gmbh | Verfahren zur Adresskonfiguration für ein Master/Slave-System |
US20220377051A1 (en) * | 2021-05-20 | 2022-11-24 | Ford Global Technologies, Llc | Vehicle network address assignment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1255007A (zh) * | 1998-11-23 | 2000-05-31 | 朗迅科技公司 | 用于确定唯一识别公共总线上硬件单元地址的方法和设备 |
CN1515122A (zh) * | 1998-10-06 | 2004-07-21 | ����ɭ�绰�ɷ�����˾ | 从外部分组网向移动无线台传送数据分组的方法和设备 |
CN1547830A (zh) * | 2001-08-31 | 2004-11-17 | ������������ʽ���� | 网络连接装置、连接***以及网络连接方法 |
CN101034938A (zh) * | 2007-04-05 | 2007-09-12 | 中兴通讯股份有限公司 | Epon网络中onu的远程管理ip地址的配置方法 |
US20080120370A1 (en) * | 2006-11-22 | 2008-05-22 | Brian Chan | Virtual Meeting Server Discovery |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4506324A (en) | 1982-03-08 | 1985-03-19 | The United States Of America As Represented By The Secretary Of The Navy | Simulator interface system |
JP2802088B2 (ja) | 1989-02-06 | 1998-09-21 | 株式会社日立製作所 | プロトコル選択切替方法 |
GB9026347D0 (en) | 1990-12-04 | 1991-01-23 | Racal Res Ltd | Improvements in or relating to data communications |
JP2636534B2 (ja) | 1991-03-22 | 1997-07-30 | 三菱電機株式会社 | 通信システム |
US5745699A (en) | 1993-09-24 | 1998-04-28 | Apple Computer, Inc. | Dynamic address assignment in an arbitrarily connected network |
US6125122A (en) | 1997-01-21 | 2000-09-26 | At&T Wireless Svcs. Inc. | Dynamic protocol negotiation system |
US5968136A (en) | 1997-06-05 | 1999-10-19 | Sun Microsystems, Inc. | Apparatus and method for secure device addressing |
EP1124351A3 (en) | 2000-02-11 | 2003-11-05 | Alcatel USA Sourcing, L.P. | Communication protocol for nodes connected in a daisy chain |
US20040059815A1 (en) * | 2001-01-24 | 2004-03-25 | Buckingham Duane W. | Guest room service and control system |
US7003676B1 (en) | 2001-05-10 | 2006-02-21 | Advanced Micro Devices, Inc. | Locking mechanism override and disable for personal computer ROM access protection |
US7111050B2 (en) | 2001-08-02 | 2006-09-19 | International Business Machines Corporation | Private memory access in multi-node system |
US7308576B2 (en) | 2001-12-31 | 2007-12-11 | Intel Corporation | Authenticated code module |
US7107459B2 (en) | 2002-01-16 | 2006-09-12 | Sun Microsystems, Inc. | Secure CPU and memory management unit with cryptographic extensions |
US20040088541A1 (en) | 2002-11-01 | 2004-05-06 | Thomas Messerges | Digital-rights management system |
CN1836402B (zh) | 2003-05-30 | 2012-04-25 | Lg电子株式会社 | 家庭网络***及其配置*** |
US7519698B2 (en) | 2003-09-26 | 2009-04-14 | Ricoh Co., Ltd. | Method and system for extracting information from networked devices in a multi-protocol remote monitoring system |
US7506125B2 (en) | 2003-09-29 | 2009-03-17 | Hitachi, Ltd. | Information terminals for receiving content with survival time and forwarding content to different information terminal after changing the survival time |
GB0410151D0 (en) * | 2004-05-07 | 2004-06-09 | Zeus Technology Ltd | Load balancing & traffic management |
US20060235997A1 (en) * | 2005-04-18 | 2006-10-19 | Sytex, Inc. | Methods And Sytems For Resolving Internet Protocol (IP) Address Conflicts Using Agents For A Zero Configuration Network |
US20070002833A1 (en) * | 2005-06-30 | 2007-01-04 | Symbol Technologies, Inc. | Method, system and apparatus for assigning and managing IP addresses for wireless clients in wireless local area networks (WLANs) |
US7796589B2 (en) | 2005-08-01 | 2010-09-14 | American Power Conversion Corporation | Communication protocol |
US9660808B2 (en) | 2005-08-01 | 2017-05-23 | Schneider Electric It Corporation | Communication protocol and method for authenticating a system |
US7561599B2 (en) | 2005-09-19 | 2009-07-14 | Motorola, Inc. | Method of reliable multicasting |
TWI465085B (zh) | 2006-02-14 | 2014-12-11 | Interdigital Tech Corp | Wlan服務中提供可靠多播服務方法及系統 |
US7860007B2 (en) | 2006-07-28 | 2010-12-28 | Deutsche Telekom Ag | Method and communication system for optimizing the throughput of a TCP flow in a wireless network |
US8897193B2 (en) | 2006-08-01 | 2014-11-25 | Samsung Electronics Co., Ltd. | Multicast packet transmitting method over wireless communication network and wireless communication network system using the method |
US8102799B2 (en) * | 2006-10-16 | 2012-01-24 | Assa Abloy Hospitality, Inc. | Centralized wireless network for multi-room large properties |
FR2916598A1 (fr) | 2007-05-24 | 2008-11-28 | Thomson Licensing Sas | Procede de transmission de paquets de donnees et procede de reception correspondant |
US7729366B2 (en) * | 2007-10-03 | 2010-06-01 | General Instrument Corporation | Method, apparatus and system for network mobility of a mobile communication device |
US7565470B2 (en) | 2007-12-04 | 2009-07-21 | Holylite Microelectronics Corp. | Serial bus device with address assignment by master device |
US8024459B2 (en) * | 2008-05-19 | 2011-09-20 | Eddy H. Wright | Systems and methods for monitoring a remote network |
US8316136B2 (en) * | 2009-05-22 | 2012-11-20 | Silver Spring Networks, Inc. | Multi-protocol network registration and address resolution |
US8296488B2 (en) | 2009-04-27 | 2012-10-23 | Abl Ip Holding Llc | Automatic self-addressing method for wired network nodes |
EP2287689B1 (de) | 2009-07-27 | 2012-11-14 | Ziehl-Abegg AG | Vorrichtung und Verfahren zur Adressierung einer Slave-Einheit |
US9267826B2 (en) | 2010-05-28 | 2016-02-23 | Schneider Electric It Corporation | System for self-powered, wireless monitoring of electrical current, power and energy |
US20120182994A1 (en) * | 2011-01-18 | 2012-07-19 | Cisco Technology, Inc. | Address compatibility in a network device reload |
-
2011
- 2011-04-19 US US13/089,678 patent/US8700747B2/en active Active
-
2012
- 2012-04-18 EP EP12720044.2A patent/EP2700212B1/en active Active
- 2012-04-18 AU AU2012245501A patent/AU2012245501B2/en active Active
- 2012-04-18 CN CN201280030023.6A patent/CN103621049A/zh active Pending
- 2012-04-18 WO PCT/US2012/034115 patent/WO2012145423A1/en active Application Filing
- 2012-04-18 DK DK12720044.2T patent/DK2700212T3/en active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1515122A (zh) * | 1998-10-06 | 2004-07-21 | ����ɭ�绰�ɷ�����˾ | 从外部分组网向移动无线台传送数据分组的方法和设备 |
CN1255007A (zh) * | 1998-11-23 | 2000-05-31 | 朗迅科技公司 | 用于确定唯一识别公共总线上硬件单元地址的方法和设备 |
CN1547830A (zh) * | 2001-08-31 | 2004-11-17 | ������������ʽ���� | 网络连接装置、连接***以及网络连接方法 |
US20080120370A1 (en) * | 2006-11-22 | 2008-05-22 | Brian Chan | Virtual Meeting Server Discovery |
CN101034938A (zh) * | 2007-04-05 | 2007-09-12 | 中兴通讯股份有限公司 | Epon网络中onu的远程管理ip地址的配置方法 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10661912B2 (en) | 2014-11-20 | 2020-05-26 | SZ DJI Technology Co., Ltd. | Addressing method for functional modules of a movable object |
CN107735736A (zh) * | 2014-11-20 | 2018-02-23 | 深圳市大疆创新科技有限公司 | 用于可移动物体的功能模块的编址方法 |
CN107735736B (zh) * | 2014-11-20 | 2020-10-02 | 深圳市大疆创新科技有限公司 | 用于可移动物体的功能模块的编址方法 |
CN108028862A (zh) * | 2015-09-21 | 2018-05-11 | 高通股份有限公司 | 标识共享总线上的多个相同设备 |
CN107450487A (zh) * | 2016-05-31 | 2017-12-08 | 布里斯托公司商用名远程自动化解决方案 | 经由远程终端单元实现通信的方法和装置 |
CN109618567A (zh) * | 2016-08-19 | 2019-04-12 | 豪夫迈·罗氏有限公司 | 用于增强bluetooth*绑定的方法和*** |
CN109792431A (zh) * | 2016-10-05 | 2019-05-21 | 天体电子学先进电子***公司 | 包括***自动终止的多点分支通信***的自动寻址和配置 |
CN107454208A (zh) * | 2017-08-24 | 2017-12-08 | 广东雅达电子股份有限公司 | 一种为从节点设备分配网络地址的方法 |
CN107454208B (zh) * | 2017-08-24 | 2020-05-08 | 广东雅达电子股份有限公司 | 一种为从节点设备分配网络地址的方法 |
CN109961540A (zh) * | 2017-12-26 | 2019-07-02 | 南京工程学院 | 一种nfc智能车锁控制方法 |
CN109992547A (zh) * | 2017-12-29 | 2019-07-09 | 深圳市优必选科技有限公司 | 主从设备地址分配***及方法 |
CN109992547B (zh) * | 2017-12-29 | 2021-04-20 | 深圳市优必选科技有限公司 | 主从设备地址分配***及方法 |
CN109040334A (zh) * | 2018-07-12 | 2018-12-18 | 山东师范大学 | 静态的内网映射方法、外网服务器、内网通信设备及*** |
CN110868784A (zh) * | 2018-08-08 | 2020-03-06 | 广州彩熠灯光有限公司 | 舞台灯光数据双向同步通信方法及***、存储介质及装置 |
CN110868784B (zh) * | 2018-08-08 | 2021-06-22 | 广州彩熠灯光股份有限公司 | 舞台灯光数据双向同步通信方法及***、存储介质及装置 |
CN109286546A (zh) * | 2018-11-20 | 2019-01-29 | 成都信息工程大学 | 一种多点接入式智能互联设备及互联通信方法 |
CN109286546B (zh) * | 2018-11-20 | 2023-08-29 | 深圳市卓越信息技术有限公司 | 一种多点接入式智能互联设备及互联通信方法 |
CN111818492A (zh) * | 2020-05-20 | 2020-10-23 | 上海橙群微电子有限公司 | 蓝牙信标及其数据的传输方法、可读存储介质 |
CN111818492B (zh) * | 2020-05-20 | 2024-05-24 | 上海橙群微电子有限公司 | 蓝牙信标及其数据的传输方法、可读存储介质 |
CN111741143A (zh) * | 2020-06-03 | 2020-10-02 | 杭州炬华科技股份有限公司 | 一种电测仪表Modbus地址在线分配的方法、装置 |
CN113037886A (zh) * | 2021-03-05 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 网络设备的管理方法、装置、介质以及电子设备 |
CN113612868A (zh) * | 2021-08-06 | 2021-11-05 | 深圳市欧瑞博科技股份有限公司 | 设备地址分配方法、装置以及*** |
CN113612868B (zh) * | 2021-08-06 | 2023-08-29 | 深圳市欧瑞博科技股份有限公司 | 设备地址分配方法、装置以及*** |
CN115037718A (zh) * | 2022-06-01 | 2022-09-09 | 大峡谷照明***(苏州)股份有限公司 | 基于地址区间的灯具uid识别方法、装置、设备及介质 |
CN118101624A (zh) * | 2024-04-19 | 2024-05-28 | 深圳市智安新能源科技有限公司 | 智能电池的并联组网方法、装置、电池以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
AU2012245501A1 (en) | 2013-10-31 |
EP2700212B1 (en) | 2018-06-13 |
AU2012245501B2 (en) | 2016-09-29 |
US8700747B2 (en) | 2014-04-15 |
US20120271924A1 (en) | 2012-10-25 |
DK2700212T3 (en) | 2018-09-24 |
WO2012145423A1 (en) | 2012-10-26 |
EP2700212A1 (en) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103621049A (zh) | 用于在多点网络中自动分配地址给设备的***和方法 | |
EP3526987B1 (en) | Iot provisioning service | |
US10970138B2 (en) | Modular applications using a common provisioning service | |
EP3526713B1 (en) | Automatic provisioning of iot devices | |
US20160142370A1 (en) | System and method for automatically addressing devices in a multi-drop master/slave network | |
CN109886693B (zh) | 区块链***的共识实现方法、装置、设备和介质 | |
CN111464356B (zh) | 一种区块共识周期切换方法、装置及计算机设备 | |
CN111970337B (zh) | 跨云环境下的p2p网络通信构建方法、***、介质及终端 | |
US20210373929A1 (en) | Offline configuration method and apparatus for intelligent device | |
CN112118322B (zh) | 一种网络设备的数据同步方法、网络设备及*** | |
Biswas et al. | A novel leader election algorithm based on resources for ring networks | |
CN110708400B (zh) | 网络地址分配方法、装置、节点设备及存储介质 | |
CN112040015B (zh) | 一种共识节点列表生成方法及相关装置 | |
CN110495157A (zh) | 在通信设备之间进行串行通信的通信*** | |
CN114528139A (zh) | 数据处理和节点部署的方法、装置、电子设备及介质 | |
CN112416847A (zh) | Redis集群创建方法、***及装置 | |
CN108156195B (zh) | 一种业务数据检查方法和*** | |
CN112134735B (zh) | 一种自动扩容***的方法及装置 | |
CN114172864B (zh) | 物联网终端地址分配方法及装置 | |
CN109039770A (zh) | 一种服务器cmc的刷新方法、装置及相关设备 | |
CN113132233B (zh) | 数据处理方法、软件定义网络控制器和数据处理*** | |
CN111200513B (zh) | 服务器启动方法、服务器及集群服务器*** | |
US20160212205A1 (en) | Subnetworks of peer to peer networks | |
CN113572850A (zh) | 一种数据同步方法、装置、服务器及存储介质 | |
CN113938467A (zh) | 机器节点地址分配及状态确认方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140305 |