LonWorks协议称为LonTalk协议,它和ANSI/EIA709.1控制网络标准是Lon-Works系统的核心。
1.体系结构
LonTalk协议是Echelon公司在P坚持载波侦听多址访问(P-Persistent CSMA)协议的基础上改进而成的,遵循ISO/OSI参考模型,提供了OSI参考模型所定义的全部7层服务,是支持LonWorks节点间可靠通信和有效使用通信介质的各种服务的集合。
表6-2给出了对应于7层OSI参考模型的LonTalk协议层及每层所提供的服务。
表6-2 LonTalk协议层
2.物理信道
LonTalk协议支持以不同通信介质分段的网络。它支持的介质包括双绞线、电力线、射频、红外线、同轴电缆和光纤等。每个LonWorks节点都需要物理地连接到信道上,信道是数据包的物理传输介质;LonWorks网络由一个或多个信道组成,多条信道间由路由器连接。路由器是连接两个信道,并控制两个信道间数据包传送的器件。路由器有四种不同的安装算法:配置路由器、自学习路由器、桥和重复器,可以使用任何一种算法来安装路由器。
由桥或重复器连接的通道合称为段。节点可以看到相同段上的其他节点发送的数据包,而智能路由器(配置路由器和自学习路由器)根据设置决定是否继续向前传送数据包,因此可以用来分离段中的网络交通,从而增加整个系统的容量和可靠性。
信道的传输速率取决于介质和收发器的设计,综合考虑传输距离、吞吐量、节点电耗和成本后,可以在一种介质上安装不同传输率的收发器。
3.网络地址结构
LonTalk协议唯一确定了LonTalk数据包的源节点和目的节点(可以是一个或几个节点)。同时,路由器也使用这些地址来选择如何在两个信道之间传输数据包。
LonTalk协议定义了一种使用域(Do-main)、子网(Subnet)和节点地址(Node Addresses)的分层式逻辑编址方式,如图6-5所示。使用这种方式编址,替换网中的节点变得非常简单,只需将替代节点的地址编成与原节点一致,不需进行其他任何修改。为了便于进一步对多个分散的节点寻址,Lon-Talk协议还定义了另外一类使用域和组(Group)地址的编址方式。
(1)域地址的组成 域是一个或多个信道上节点的逻辑集合,通信只能在配置于同一个域中的节点之间进行,因此域形成了一个虚拟网络。两个域可以使用相同的信道,所以域可以用来防止不同网络上节点间的互相干扰。例如,在两个相邻的建筑物中,在相同的频率上使用收发器的所有节点,都位于相同的信道上。为防止各个节点上应用程序之间的干扰,每个建筑物的所有节点将被配置为属于各自不同的域。
图6-5 分层式逻辑编址示意图
一个节点可以配置为属于一个域,也可以配置为同时属于两个域,同时作为两个域的成员的一个节点,可以用作两个域之间的网关。因此,虽然LonTalk协议不支持两个域之间的通信,但是通过属于两个域的节点上的应用程序可以实现两个域之间数据包的传输。
域是通过Domain ID(域标识符)来标识的,可以将Domain ID配置为0、1、3或6字节,长度为6字节的Domain ID可以保证是唯一的。然而,6字节的Do-main ID为每个数据包增加了6字节的开销。使用较短的Domain ID可以减少这个开销,这可以根据实际需要的不同而由系统安装决定。
(2)子网地址的组成 一个子网是一个域内节点的逻辑集合,一个子网最多可以包括127个节点,在一个域中最多可以定义255个子网。在一个子网内的所有节点必须位于相同的段上,子网不能跨越智能路由器,如果将一个节点配置为同属于两个域,那么它必须同时属于每个域上的一个子网。(www.xing528.com)
除了下列情况外,可以将一个域中的所有节点都配置在一个子网内:
1)节点位于由智能路由器分隔的不同段内,这是由于子网不能跨越智能路由器,智能路由器两端的节点必须属于不同的子网;
2)网络的节点数目超过了127,因此如果将所有节点配置为同一个子网,就超过了一个子网能够允许的最大节点数。
(3)节点地址的组成 子网内的每一个节点被赋予一个在该子网内唯一的节点号,这个节点号为7位,所以每个子网最多可以有127个节点,这样在一个域中最多可以有32385个节点。到目前为止,这是自动控制网络能够提供的最大节点数。
另外,LonTalk协议还提供了组地址,组是一个域内节点的逻辑集合,与子网不同的是,组内的节点不在乎它们在域内的物理位置。
对于“一对多”的网络变量和报文标签的连接,组是利用网络带宽的一种有效的方法,组由1字节的组号来标识,所以一个域最多可以包含256个组。
4.通信服务
(1)消息服务 网络提供的通信服务要使网络同时实现高的有效性、快的响应时间、好的安全性以及高的可靠性是不可能的,实际网络提供的通信服务只能是在这几个方面的折中。LonTalk协议提供了4种基本类型的报文服务:应答、请求/响应、非应答重发及非应答。
1)应答服务:应答服务,也称为端对端的应答服务,它是最可靠的服务类型。当消息发送到一个节点或一组节点时,发送节点将等待所有应收到该消息的节点发回应答。如果发送节点在预定的某个时间内未收到所有应收到的应答,则发送节点时间溢出,并重发该消息。重发消息的次数以及时间溢出值可选择设定。应答由网络处理器产生,应用处理器不必过问。
2)请求/响应服务:请求/响应服务也是最可靠的服务类型。当请求消息发送到一个节点或一组节点时,发送节点等待所有收到该消息的节点发回响应。同样,它也有时间溢出值以及重发次数可选择设定。响应可包括数据,所以这种服务类型特别适合远程过程调用客户机/用服务器(Client/Server)应用。
3)非应答重发服务:非应答重发服务也被称为重发服务。它的可靠性较应答服务低,当对大的节点组广播时,为避免接收过多响应造成网络过负荷,通常采用该服务类型。
4)非应答服务:非应答服务可靠性最差,当需要极高的传送速率或大量的数据要发送时,通常采用这种服务类型。不过,采用该服务类型应用程序无法知道发出的消息是否丢失,又无重发机制,所以它的可靠性是最低的。
(2)碰撞检测LonTalk协议使用其独有的碰撞避免算法,称为预测的P坚持CSMA(Predictive P-Persistent CSMA)算法。该算法具有在过负荷的情况下,信道仍然能通过接近最大能力的负荷,而不会由于过多的碰撞而使通过量降低。当使用支持硬件碰撞检测的通信介质(如双绞线)时,只要收发器检测到碰撞的发生,LonTalk协议可以有选择地取消数据包的传输。它允许降低立刻重新发送被碰撞破坏的包。若没有碰撞检测,假定使用的服务为确认或请求/响应服务,节点将不得不等待到重试时间结束,才能知道节点没有接收到目的节点的确认,这时,节点才重发该数据包。对于非确认服务,未检测到的碰撞意味着包没有被接收到,并且不作任何重试。
(3)优先级LonTaIk协议有选择地提供优先级机制,以提高对重要数据包的响应时间。协议允许用户在信道上分配优先级时间槽,它专用于具有优先级的节点。为每个节点分配优先级时间槽的网络管理工具,可以保证只有一个节点在信道上被赋予了一个特定的优先级时间槽。信道上,每个优先级时间槽对每个报文的传输至少增加了两位的时间,开销的大小主要取决于波特率、晶体振荡器准确度和收发器的需要。例如,使用一个1.125Mbit/s的TP/XF-1250双绞线收发器,同时信道上的所有节点的晶体振荡器准确度为0.2%或更好,则每个优先级时间槽为30位时间宽。在数据包的周期内的优先级部分,由于没有任何介质的竞争,配置有优先级的节点比没有优先级的节点具有较快的响应时间。优先级与碰撞检测的组合,使得响应时间是有限的,而不是无限的。分配给节点的优先级时间槽,用于从该节点发送所有具有优先级的包。从一个节点发送的一个、所有的或一些包,可被标记为使用节点的优先级服务。节点内的每个网络变量和报文标签都有相应的优先级设计,并可在编译时设置。对于网络变量,在安装过程中或安装后可有选择地改变其优先级设计。
较小的优先级数,代表较高的优先级。来自一个节点的具有优先级时间槽2的优先级包,将在来自一个节点的具有优先级时间槽4的优先级包之前被发送;将节点的优先级设为0,表示该节点的任何包都不在优先级时间槽中被传输,无论报文服务赋值是在节点编译或安装时。时间槽1是为网络管理工具保留的,以保证任何应用不能在一个信道停止由网络管理工具发出的中断。应用节点的有优先级的包,可使用槽行为2到127(视介质和在信道上分配的槽数而定)。
当节点内生成一个优先级包后、在挂起的所有的无优先级输出包被传送之前,该优先级包将在优先级队列被传送出节点。同样,当一个优先级包到达路由器时,它便加入到了路由器队列的前面(但在所有已排队的优先级包之后),如果已配置了路由器的优先级时间槽,则它使用路由器的优先级向前传送。
(4)证实LonTalk协议支持证实服务,由证实报文的接收者来决定是否发送者被批准分送该报文,从而可以防止对节点及它们应用的非证实访问。证实的使用配置给每个单独的网络变量,网络管理事务也可以选择为证实。
证实由在安装时配给节点的48位密钥来实现,证实报文的发送者和接收者都对该密钥进行处理。当证实报文被发送,接收者要求发送者提供证实,每次使用不同的随机数查问。然后,发送者使用该证实密钥和来自原始包的数据实现查问和响应的传输。接收者将这个对查问的答复与它自己对查问的转换作比较,如果匹配,该事务成功。使用的转换算法被设计为,即使你知道口令和响应,要推导出密钥是什么也将是非常困难的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。