LonWorks是美国Echelon公司1992年推出的局部操作网络,最初主要用于楼宇自动化,但很快发展到工业现场网。LonWorks技术为设计和实现可互操作的控制网络提供了一套完整、开放、成品化的解决途径。
一、LonWorks的神经元芯片
LonWorks技术的核心是神经元芯片(Neuron Chip)。该芯片内部装有3个微处理器:MAC处理器完成介质访问控制;网络处理器完成OSI的3~6层网络协议;应用处理器完成用户现场控制应用。它们之间通过公用存储器传递数据。
在控制单元中需要采集和控制功能,为此,神经元芯片特设置11个I/O口。这些I/O口可根据需求不同来灵活配置与外围设备的接口,如RS232、并口、定时/计数、间隔处理、位I / O等。
神经元芯片还有一个时间计数器,从而能完成Watchdog、多任务调度和定时功能。神经元芯片支持节电方式,在节电方式下系统时钟和计数器关闭,但状态信息(包括RAM中的信息) 不会改变。一旦I/O状态变化或网线上信息有变,系统便会激活。其内部还有一个最高1.25 M bps、独立于介质的收发器。由此可见,一个小小的神经元芯片不仅具有强大的通信功能, 更集采集、控制于一体。在理想情况下,一个神经元芯片加上几个分离元件便可成为DCS系统中一个独立的控制单元。
二、完善的开发平台
LonWorks提供的不仅仅是一套高性能的神经元芯片,更重要的是,它提供了一套完整的开发平台。工业现场中的通信不仅要将数据实时发送、接收,更多的是数据的打包、拆包、流量处理、出错处理。这使控制工程师不得不在数据通信上投入大量精力。LonWorks在这方面提供了非常友好的服务,提供了一套完整的建网工具----LonBuild。
首先,它提供了一套C语言的编译器,从而大大减少了开发时间。在这个编译器中,提供了对11个I/O非常详尽的库函数。在通信方面,它也提出了一个全新的概念----网络变量。通过网络变量,网络上的通信只需将相关节点上的网络变量连接一下即可。网络变量是应用程序定义的一个特殊静态变量,可以是ANSI C所定义的各种类型,也可以是自定义类型,还可以规定优先级、响应方式等。网络变量被定义为输入或输出,当定义为输出的网络变量被赋予新值时,与该输出变量相连的输入网络变量就会被立刻赋予同样的新值。
另外,LonBuild还集成开发环境和编译于一体,具备C调试器,可在多个仿真器上调试应用程序,并具备网络协议分析和通信分析的功能。
三、LonTalk:面向对象的网络通信协议
LonTalk是LonWorks的通信协议,固化在神经元芯片内。LonTalk局部操作网协议是为LonWo r ks中通信所设的框架,支持ISO组织制定的OSI参考模型的7层协议,并可使简短的控制信息在各种介质中非常可靠地传输。表1概括了LonTalk在OSI参考模型中每层所提供的服务。
LonTalk协议是直接面向对象的网络协议,具体实现即采用网络变量的形式。又由于硬件芯片的支持,使它实现了实时性和接口的直观、简洁等现场总线的应用要求。
1.LonTalk MAC的特点
介质访问控制(MAC)子层是OSI参考模型的数据链路层的一部分。目前在不同的网络中存在多种介质访问控制协议,其中之一就是大家熟悉的CSMA(载波信号多路侦听)。LonTalk正是使用该协议,但具有自己的特色。
CSMA协议要求一个节点在发送数据前侦听网络是否空闲。一旦监测到线路空闲后,不同的协议动作不同。这样在重负载的情况下,不同协议的执行结果不同。例如,Ethernet采用CSM A /CD协议,一旦检测到碰撞,采用避让算法,这种方法在重负载时导致网络介质传输率变得极低。另一些CSMA协议使用时间片规则去访问介质,使节点在限制的时间片访问介质,这样可以大大减少两个数据报发生碰撞的可能性。P-坚持CSMA和LonTalk的CSMA就是使用时间片去访问介质。
LonTalk协议使用一个改进的CSMA介质访问控制协议,称为预测的P-坚持CSMA。LonTa lk协议在保留CSMA协议优点的同时,注意克服它在控制中的不足。目前存在的MAC协议(如IEEE 802.2、802.3、802.4、802.5)都不能在重负载下很好地保持网络高效率、支持大网络系统和多通信介质。
如果有很多网络节点等待网络空闲,一旦网络空闲,这些节点都会马上发送报文而产生碰撞。它们产生碰撞后会后退一段时间,假如这段时间相同,就会发生重复碰撞,这将使网络效率大大降低。在预测的P-坚持CSMA中,所有LonWorks节点等待随机时间片间隔访问介质, 这就避免了以上情况的发生。在LonWorks中,每个节点发送前随机插入1~16个很小的随机时间片。在空闲网络中,每个节点发送前平均插入8个随机时间片。
在P-坚持CSMA中,当一个节点有信息需要发送时并不立即发送,而是等待一个概率为 P的随机时间片。而LonTalk协议可根据网络负载动态调整P值。时间片的增加通过一个N值,插入的随机时间片为N×16,这个N值的取值范围是1~63。LonTalk称N为网络积压的估计值,是对当前发送周期有多少个节点有报文需要发送的估计。LonTalk协议根据网络积压动态地调整介质访问,允许网络在轻负载情况下用较短的时间片,在重负载情况下用较长的响应时间片。
对照实验表明,36个LonWorks节点互联,采用一般P-坚持算法,当每秒要传输的报文达500 ~1000包时,碰撞率从10%上升到54%;而采用预测的P-坚持算法,在500包以下时碰撞率与前者相当,在500~1000包时稳定在10%。
对所有令牌环网络,LonTalk具有对多介质的支持,但这些介质必须在总线上具有环的结构 ,令牌在这个环线上轮巡。这对使用电力线和无线电作为介质的网络显然不可行,因为网上所有节点几乎能同时收到令牌。同时,令牌环网络还需增加令牌丢失时的恢复机制、令牌快速应答机制,这些都增加了硬件上的开销,使网络成本增加。
对令牌总线网络,LonTalk在令牌中加入网络地址,从而在物理总线上建立一个逻辑环的结构,使令牌在这个逻辑环上轮巡。但是,在低速网络中令牌轮巡时间变得很长。另外,令牌总线在有节点上网或下网时都会发生网络重构。在电池供电的系统中,会因经常休眠和唤醒而导致网络上下网时频繁重构;在恶劣的环境中,常会发生令牌丢失而导致网络重构。这些网络重构会大大降低网络的效率。同时,由于网络地址的限制,每个网络至多只有255个节点。
我们常用的CSMA/CD(如Ethernet),在轻负载情况下具有很好的性能;在重负载情况下, 过多的碰撞使网络效率变得极低。
目前,在现场总线中还有一种十分流行的网络----Canbus。它采用无主结构,这一点大大优于Bitbus。其MAC层上的管理很有特色。它也采用CSMA方式,但将网络上的节点分成不同的优先级,采用支配位(0)和避让位(1)、以及总线回读的方法实现非破坏性总线仲裁。即当两个节点同时向网络传递信息时,优先级低的节点主动停止发送,而优先级高的节点可不受影响地继续传输,这可以有效地避免总线碰撞。但是,这要求网络一定要同步,这对多介质的情况显然不适用。另外,对各节点不太需要优先级的网络,由于不得不定义一个优先级,因而当网络通信较繁忙时,有些优先级低的节点可能很长时间不能发送信息。因此,Canbus较适合介质单一、节点数目较少的小网络。
综上所述,Lon的MAC子层具有以下优点:支持多介质的通信,支持低速率的网络,可在重负载情况下保持网络性能,支持大型网络。
2.LonTalk对优先级的支持
在LonWorks网络中,为提高紧急事件的响应时间,提供了一个可选择的优先级机制。该机制允许用户为每个需要优先级的节点分配一个特定的优先级时间片,并保证有且只有一个节点拥有这样的优先级时间片。在发送过程中,优先级数据报将在该时间片内把数据报发送出去。优先级时间片为0~127,0是不需等待立即发送,1是等待1个时间片,2是等待2个时间片 ,依此类推。低优先级的节点需等待较多的时间片,而高优先级的节点需等待较少的时间片 ,这个时间片加在P-概率时间片之前。非优先级的节点必须等待优先级时间片都完成后, 再等待P-概率时间片后发送。因此,加入优先级的节点总比非优先级的节点有更快的响应时间。
3.LonTalk对多介质的支持
LonTalk协议对各种介质的支持是独立的。Lon的神经元芯片可以容许的通信介质类型非常广泛,如双绞线、电力线、无线电、红外线、同轴电缆、光纤等。
4.LonTalk对多通道的支持
一个通道是指在物理上能独立发送报文(不需要转发)的一段介质。LonTalk规定,一个通道至多有32385个节点,一个网络可以由一个或多个通道组成,通道之间通过路由器来连接。
这样,不仅可实现多介质在同一网络上的连接,而且可减轻一个通道的网络信道过于拥挤。
5.LonTalk对大网络的支持
网络地址可以有以下三层结构:
第一层结构是域。域的结构可以保证在不同的域中通信彼此独立。例如,不同的应用节点共存在同一通信介质中(如无线电),不同的域的区分可以保证它们的应用完全独立,不会彼此干扰。
第二层结构是子网。每个域最多有255个子网,一个子网可以是一个或多个通道的逻辑分组 ,有一种子网层的智能路由器产品可以实现子网间的数据交换。
第三层结构是节点。每个子网最多有127个节点,所以一个域最多有255×127=32385个节点。任一节点可以分属一个或两个域,容许一个节点作为两个域之间的网关,也容许一个传感器节点将采集到的数据分别发向两个不同的域。
节点也可以被分组,一个分组在一个域中跨越几个子网或通道。在一个域中最多有256 个分组,每个分组对需应答服务最多有64个节点,而无应答服务的节点个数不限。一个节点可以分属15个分组去接收数据。分组结构可以使一个报文同时被多个节点接收。
另外,每个神经元芯片有一个独一无二的48位ID地址。这个地址由厂方规定,一般只在网络安装和配置时使用,可以作为产品的序列号。
通道并不影响网络的地址结构,域、子网和分组都可以跨越多个通道。
6.LonTalk的报文服务
LonTalk协议提供了四种类型的报文服务:
·应答方式或端对端的应答服务:当一个节点发送报文到另一个节点或分组时,每个接收到报文的节点都分别向发送方应答。如果发送方在应答时间内没有收到全部应答,则重新发送该报文。重发次数和应答时间都是可选的。报文应答服务由网络处理器完成,不必由应用程序来干预。报文ID号确保节点不会收到重复的报文。
·请求/响应方式:当一个节点发送报文到另一个节点或分组时,每个接收到报文的节点都分别向发送方响应。如果发送方在响应时间内没有收到全部响应,则重新发送该报文。重发次数和响应时间都是可选的。报文响应服务由应用处理器完成,可以包含数据,是由应用处理器完成的,适合远程过程调用和客户/服务器的应用。
·非应答重发方式:当一个节点发送报文到另一个节点或分组时,不需每个接收到报文的节点向发送方应答或响应,而是重复多次发送同一报文,使报文尽量可靠地被接收方收到。这种方式适于节点较多的分组的广播发送,从而避免因节点响应而使网络过载。
·非应答方式:当一个节点发送报文到另一个节点或分组时,不需每个接收到报文的节点向发送方应答或响应,也不必重复多次发送同一报文,只发一次即可。这种方式适合对可靠性要求不高,但报文长度较长、需要速度较高的报文。
7.LonTalk网络认证
LonTalk支持报文认证。收发双方在网络安装时约定一个6字节的认证字,接收方在接收时判断报文是否经过发送方认证,只有经过发送方认证的报文方可接收。
8.碰撞检测
Lon支持在通信介质上的硬件碰撞检测(如双绞线)。LonTalk可以将正在发送的碰撞报文自动取消,重新再发。如果没有碰撞检测,若碰撞发生,只有到响应或应答超时时才会重发报文。
四、LonWorks与现场总线
按照国际电工委员会(IEC)的叙述,把低级或底层的工业数据总线定名为现场总线。其基本要求包括:以串行通信的方式取代传统的4~20mA的信号传输,并且一条现场总线可为众多的可寻址的现场设备实现多点连接;支持底层的现场智能设备与高层的系统利用公用介质交换信息;现场总线的协议在物理层和链路层与OSI模型有相同的含义。目前,一些公司、厂商所推出的现场总线产品,其基本要求大体与上述内容类似。
从前面对LonWorks的分析介绍可以看出,LonWorks的性能覆盖了IEC关于现场总线的推荐规范,而且应用更加灵活。
①神经元芯片是一个很好的低成本的现场总线处理器。它处理现场互联的全部任务,还能处理现场传感器、执行器的动作,以及简单的数字逻辑运算等现场任务。
②以IEEE P1118(ver 3.0)制定的现场总线功能要求为例,与LonWorks的性能做一比较 :在物理层上的比较见表2,在链路层上的比较见表3,在应用层上的比较见表4。
③LonTalk是OSI参考模型面向现场对象应用的一个子集。它比现场总线历来推荐的功能覆盖面更广,如支持多介质、大网络。这为工厂制造自动化的测、控、管一体化提供了全局性的解决方案,而且都可通过固化有LonTalk协议的神经元芯片实现,只需用一个神经元和某种网络的专用控制器相连构成的桥接器同生产管理级、厂级互联。另外,它比现场总线以往提供的应用服务更友好、更方便,用户只需按对象来定义和连接网络变量。
④LonWorks支持各种拓扑结构,不限于总线,选择不同的收发器可构成星形、环形、树形或混合形结构;而寻址由协议来解决,这样现场互联更加灵活。
综上所述,LonWorks是一种全新的现场总线。它为全分散式的现场设备提供了可互操作的控制网络,已获得世界上140多个公司、组织的确认,并组成LonMark协会。目前,有1500家组织选择它,在各行各业成功地构成了应用系统。