ARCNET局域网的协议剖析和应用技术
1 引言
ARCNET最初由美国Datapoint公司于1977年成功开发并用于办公局域网中,后来以太网以其更快的传输速率和大量的数据传输量使办公室网络的需求由ARCNET转向以太网。而ARCNET时间的确定性,数据传输的可靠性和组网的灵活性,使其在工业实时控制系统中找到了新的应用途径―嵌入式控制系统的应用。
ARCNET广泛应用于实时控制的各个领域,诸如印刷、电力、船舶、铁路运输、楼宇自动化等领域都可以见到它的身影。
ARCNET常常嵌入到具体系统中,国外很多仪器设备都设有ARCNET网络接口标准。目前全球已有大约1000万个ARCNET节点应用于工业控制领域中[2]。国内的应用也有一定发展,一些技术人员开始尝试用ARCNET网络构造实时控制系统,完成国外进口产品的升级换代。但其发展还远远不够,为了更好地推广ARCNET技术,促进工业自动化的发展,本文从ARCNET的技术及应用等角度,加以介绍。
2 ARCNET工作机制
ARCNET局域网采用了优化的令牌总线协议(IEEE802.4),除了具有令牌总线网的一般特点外,还具有如下特点:
①网络中每个节点保存有下一个节点的逻辑地址,可以生成一个网络活动节点地址表。
②为了避免目的节点没有空闲缓冲区而引起信息的丢失,设置了空闲缓冲区查询帧,通过查询可以减少不必要的数据重传,提高了网络运行效率。
ARCNET是一个真正开放标准协议,1999年成为美国国家标准ANSI/ATA878.1。从OSI 参考模型来看,它提供了网络的物理层和数据链路层服务,说明ARCNET能方便地在两个节点之间实现数据包的发送和接收。
2.1 逻辑环的建立
在ARCNET网络中,每个节点均有一个唯一的MAC(Medium Access Control)地址,其取值范围为0~255,其中0是网络广播地址。每个节点在系统初始化或重构时确定它在逻辑环中的下一个节点,并将下一个节点的ID值保存在各自专用的寄存器NID(Next ID)中,并按MAC地址从小到大的顺序构成一个逻辑环路。图1是一个典型的4个节点的逻辑环。
a 网络拓扑结构
b 逻辑环
图1 逻辑环的建立
令牌作为一组独特的信号序列,沿着逻辑环从一个节点传向逻辑邻居(而非物理邻居),因而与节点在网络上的物理位置以及网络的拓扑结构无关。
2.2 节点的进网或退网
当一个节点加电或840ms(2.5Mbps速率下)没有收到令牌时,它即发出一个重构脉冲,使总线终止一切活动,造成令牌丢失,从而引发系统重构。经过重构形成新的逻辑环,新节点也就加入网络中。重构时间的多少取决于网上节点的多少和数据传输速率的大小,通常为20~30ms。
当一个节点由于故障或断电而退出网络时不需要进行整个逻辑环的重构,因为当逻辑环的上一个节点(存有退网节点的ID值)向它发送令牌时,不可能收到它的响应,因而令牌发送者将它的NID值加1,重发令牌,直到收到响应,即找到逻辑环中新的下一个节点为止(实际上新的下一个节点就是故障节点在原逻辑环的下一个节点),节点的退网也就完成。
根据现场实际情况,多数网络故障是节点故障,对于ARCNET网络,只需该节点退网,即可保证网络中其它节点正常工作。由于节点退网无需网络重构,因而网络故障恢复时间很短。网络中节点的增加或退出都是由网络自动完成,不需外界的介入。
2.3 数据的接收和发送
ARCNET局域网的数据传输速率为156.25K~10Mbps,其用户数据的长度为0~507字节,有两种ARCNET数据帧模式,其中短帧模式用户数据的最大长度为253字节,长帧模式用户数据的最大长度为507字节,只要按一定的格式将用户数据写入协议控制器内置的2K RAM中,在数据发送时,协议控制器会自动将其组织到ARCNET的数据帧中。传输数据在协议控制器内置的2K RAM中的存放格式如图2所示。
地址短帧模式长帧模式
0 SID 0 SID
1 DID 1 DID
2 256-N 2 0
. 未用 3 512-N
. DATA 1 . 未用
. DATA 2 . DATA 1
. . . DATA 2
. . . .
. DATA
N-1
. DATA N-1
2 5 5 DATA N 5
1
1
DATA N
N为用户数据的长度;SID为源节点地址;DID为目的节点地址;DID为0表示广播地址
图2 传输数据在2K RAM中的存放格式
在数据传送的过程中,一旦源节点CPU将待发的用户数据写入协议控制器的内部RAM,在该节点持有令牌时,相当于接收到令牌传送帧(ITT,Invitation to Tran***it,简称令牌),首先向目的节点发送一个空闲缓存查询帧(FBE,Free Buffer Enquiry),查询目的节点是否有足够的接收缓存,目的节点如有,则回答一个确认帧(ACK, Acknowle-dgement),否则回答一个否认帧(NAK, Negative Acknowledgement)。源节点只有收到来自目的节点的ACK帧后才向其发送一个含有用户数据的数据帧(PAC, Packet)。如果目的节点收到了数据,且通过了CRC校验,则回送一个ACK帧,告诉源节点数据接收成功,否则目的节点不回发任何信息,导致源节点超时,源节点认为数据发送失败,等下一次收到令牌时重发该数据帧,至此节点传输过程结束,令牌被传递给下一个节点。图3是节点156向节点255发送数据包的具体过程。
a 等待令牌信号
b 检查是否可发送
c 可发送回答确认
d 送出数据
e 发送完成
f 令牌传向下一个节点
图3 数据的传送过程
ARCNET支持广播消息。广播消息发出后无需回送确认帧,通过消息广播一次可以将消息传送给网络上的所有节点,可见广播速度很快。