信息与控制
Information and Control
1999年　第28卷　第5期　Vol.28　No.5　1999



基金会现场总线数据链路层工作机理及其实现

胥正川　王　宏　王　智

　　摘　要：本文概要介绍了基金会现场总线的网络结构， 主要讨论了基金会现场总线数据链路层的工作机理及其实现． 
　　关键词：现场总线,基金会现场总线，协议，网络，工业控制
　　中图分类号：TP319　　　　　　文献标识码：B

THE MECHANISM OF FOUNDATION FIELDBUS DATA LINK LAYER
AND ITS IMPLEMENTATION
XU Zheng-chuan WANG Hong WANG Zhi
(Computer Center, Shenyang Institute of Automation, Chinese Acade my of Sciences)
Abstract: The outline of the network architecture of foundat ion fieldbus is introduced, the mechanism and implementation of foundation field bus data link layer is primarily discussed.
Key words: fieldbus, foundation fieldbus, protocol, network, ind ustry control

1　引言
　　近年来随着基金会现场总线(Foundation Fieldbus)技术的蓬勃发展，该技术引起了工程界的普遍关注，越来越多的有关人员对它进行了大量的研究和开发．本文概要介绍了基金会现场总线的网络结构，主要论述了基金会现场总线数据链路层的网络结构、工作机理及其实现．
2　基金会现场总线的网络通讯结构
　　基金会现场总线使用事先组态好的通讯通道（称为虚拟通讯关系，简称VCR）在设备之间传送信息．基金会现场总线规范中定义了如下三种类型的VCR：
　　A）发布/订阅（Publisher/Subscriber）VCR
　　数据由发布者广播到网络上，订阅者侦听网络上的数据广播并收取相关信息．该VCR是缓冲的、网络触发的、单向的(BNU)，缓冲的即指它是通过数据链路层的发送与接受缓冲区，发送和接受消息的；网络触发的即指它依照数据链路层的调度发送消息，这个调度是由链路活动调度器（LAS）来维护和强制实现的；单向的即指它向一个或多个接收 者发送无须确认的消息，数据是单向传送的．
　　B）客户/服务器（Client/Server）VCR
　　由客户发出一个请求，服务器作出响应．在不同的VCR中，某一个设备既可以是客户，也可以是服务器．该VCR是排队的、用户触发的、双向的(QUB)，排队的即指它是通 过数据链路层的发送和接收队列，发送和接收消息的；用户触发的即指它在上层用户发出请求后，客户端才开始动作，并且它还是非调度的，即是在调度表规定的时间之外收到通行令牌（PT）时才把数据发送出去；双向的即指它在客户和服务器之间进行有确认的请求和应答，仅有此类VCR是双向的．
　　C）报告分发（Report Distribution）VCR
事件报告由源设备广播到网络上，并由收集设备侦听并接收．该VCR是排队的、用户触发的、单向的(QUU)，排队的即指它是通过数据链路层的发送和接收队列发送和接收消息的；用户触发的即指它是在上层用户发出请求后，数据链路层才开始动作的，并且它是非调度的，即是在调度表规定的时间之外收到通行令牌（PT）时才把数据发送出去； 单向的指事件报告只向网络上广播而不要求确认，收方只收不发．
　　为了支持这些VCRs，基于国际标准化组织（ISO）的OSI参考模型七层协议标准，基金会现场总线系统结构定义了三层通讯结构．第一层是物理层—规定信号是如何传送；第二层是数据链路层—规定网络在设备间是如何共享和调度；第三层是应用层—规定通讯 的报文格式．其三层结构如图1所示.

图1　现场总线网络体系结构
3　数据链路层概述
3.1 数据链路层的定义
　　数据链路层（DLL）在基金会现场总线中处于第二层，它在物理层传“位”信息的基础上，在相邻节点间传送被称为帧的数据信息，DLL也可能在传输中出现差错，也需进行检错、纠错而向上层提供无错的透明传送．数据链路层软件是协议栈中最基本的软件． 
　　在基金会现场总线中，DLL定义了一系列服务于应用层的功能，向下与物理层接口，使用物理层的服务．DLL提供原语服务及相关事件、与原语服务及相关事件有关的参数及格式，以及这些服务及事件的相互关系．DLL为用户提供了可靠的、透明的数据传 送服务．在基金会现场总线网络结构中，数据链路层的作用尤为重要．因为所有连接到同一物理通道上的应用进程实际上都是通过链路层的实时管理来协调的．由于在工业过程中实时性的重要性，在现场总线中采用了集中式的管理方式．在集中式管理下，物理通道可被有效地利用起来，并可有效地减少或避免实时通信的延时．
3．2 链路活动调度器（LAS）的定义和功能
　　在基金会现场总线中所有的链路上都要求有一个且仅有一个链路活动调度器（LAS ）．该LAS在数据链路层被用作总线仲裁器．LAS的功能如下：
　　—能认知新设备并将新设备加入到链路中去．
　　—能从链路中除去没有响应的设备．
　　—能在链路上发布数据链路时间和调度时间．
　　—在调度时间内轮询(poll)那些以缓冲区存储数据的设备．
　　—在调度时间之间发送优先级驱动的令牌给某设备．
　　在基金会现场总线中凡能够成为LAS的设备称为链路主设备（Link Master Devices）， 其他所有设备被称为基本设备（Basic Devices）．(见图2)

图2　现场总线设备类型

4　数据链路层的功能
　　数据链路层被分成两个工作层，一个提供对总线的访问（数据链路层低层功能），另一个是 在数据链路使用者之间控制数据传输（数据链路层高层功能）．这两个层协同集成工作，因此不把它们看成是两个网络子层．
4．1 数据链路层低层（介质访问）功能
　　从介质访问的观点来看，数据链路层是以集中令牌传送总线的补充集合运作的．每个总线有一个集中的介质访问控制点，即指链路活动调度器（LAS），以及一个或多个可持 有令牌的设备，即指基本设备．每个网络中的总线即是指一条链路．包含一条或多条链路的网络被看作是扩展链路，扩展链路中的链路是由桥联接起来的．（本文不讨论扩展链路）． 
4.1.1 基本设备（Basic Devices）
　　基本设备是指那些能持有令牌并作出响应的设备．所有的设备，包括LAS都有基本设备的功能，即它们都有接受令牌（并发起数据传输）的能力．
　　令牌给予设备在总线上传送数据的权利．在任一时刻只能有一个设备持有令牌．LAS 能给设备分发两种令牌．第一种是轮询（poll），在轮询时必须立即给出已知地址的数据．这种令牌通过发送强制数据帧（CD DLPPDU）得以实现．第二种是以给予设备在一定时 间段内的对总线的访问权，这种访问权有三种优先级，这种令牌通过发送通行令牌数据帧（PTDLPDU）得以实现．
强制数据帧（CD DLPDU）仅在基金会网络中被用来支持发布/订阅（Publisher/Subsc riber）VCR．每个发布者通过数据链路缓冲区发布其数据，传送缓冲区的内容作为对CD DLPDU的响应．通常CD DLPDU从LAS发往发布者的缓冲区数据链路地址．在这种情况下 ， LAS依照其调度循环发送CD DLPDU．
　　CD DLPDU也可以由订阅者VCR端点发出，但仅当订阅者端点收到上层的强制服务请 求时这种情况才会发生．在这种情况下，仅当该设备收到通行令牌（PT）才发出CD DLPDU ．允许以这种方式发送CD DLPDU的VCR端点是非周期的．
　　通行令牌数据帧（PT DLPDU）用于所有其它数据的发送．当设备收到通行令牌时它 得到在一定时间内发送数据的权利．时间大小在通行令牌数据帧中被给定．
　　通过扫描上层放置于数据链路服务访问点（DLSAP）和数据链路连接端点（DLCEP） 上的请求的类型，设备选择要发送的数据链路协议数据帧（DLPDU）类型．数据链路服 务访问点用于传送所有使用无连接数据链路层服务的报文，它也用于传送建立发布/订阅和 客户/服务器VCR的报文．数据链路连接端点用于传送发布/订阅和客户/服务器上所有其 它报文的传送．
　　被选择的请求是最旧的（最早放置），优先级最高（大于或等于在通行令牌中规定的优先级）且在令牌持有时间内能被发送的请求．
　　当设备没有剩下的数据需要发送时，它将令牌显式地返回给LAS．如果它仍然有尚未发送的请求需要发送，就向LAS请求更多的令牌持有时间．
4.1.2 链路主设备(Link Master Devices)
链路主设备是能成为LAS的设备．如果一个链路有两个以上的链路主设备，在启动 或它认为当前LAS失败期间，链路主设备通过竞争产生LAS．竞争的过程是选择节点 地址最小的链路主设备做LAS．没有成为LAS的链路主设备被作为LAS的备份．
4.2 数据链路层上层（数据传送）功能
　　基金会现场总线提供三种机制传送数据，一种无连接方式，两种面向连接方式．无连接方式用于支持报告分发VCR．一种面向连接的方式用于支持发布/订阅VCR，另一种用于支持客户/服务器VCR．
4.2.1 用于发布数据（Published Data）的面向连接的数据传输
发布数据的传送主要是来自于发布者的数据链路数据帧通过缓冲区进行发送．发布者不 必分辨订阅者，被发布者传送的数据传送帧只包含一个地址，即发布者的地址．订阅者事先 知道发布者的地址，由订阅者侦听并接收发布者传送的数据帧．
　　当由发布者建立连接时，它向本链路的所有订阅者发送建立连接数据帧（EC DLPDU）,此EC DLPDU不要求响应．若由订阅者建立连接时，它和发布者一样动作，但它要求 发布者对它进行响应．当发布者收到来自订阅者的EC DLPDU时，它再次对本链路广播EC D LPDU．订阅者把它发出EC DLPDU后接收到的第一个EC DLPDU用来完成打开连接的过程． 订阅者所使用的EC DLPDU可能是一开始由发布者发送的，也有可能是发布者响应订阅者而 发送的．当连接被打开后，订阅者开始侦听数据传送 数据链路数据帧(DT DLPDU）并忽 略以后收到的来自于这个发布者的EC DLPDU．
　　若发布者收到带有发布者DLCEP地址的CD DLPDU，发出DT DLPDU作为立即响应，此时 发布数据传输发生．如果该地址的DLCEP的连接还未被打开，或相关缓冲区还没有收到其 初始化更新，则没有响应该CD DLPDU的DT DLPDU被发出．
　　发布数据传输可以是调度的（由LAS发送CD DLPDU）或非调度的（由订阅者发送CD DL PDU）．对某一个连接者而言，所有DT DLPDU都以相同的（为该VCR规定的）优先级进行传输．这种传输可能是有序的，比如数据的重复传送能被检查出来．若发布者在传送间隔之间没有更新其缓冲区时，其数据副本被传送出去．被调度的发布数据仅在本地链路上被发送．
4.2.2 用于进行请求／响应交换的面向连接的数据传输
　　请求／响应数据传输主要用于客户／服务器之间的通过队列进行数据传输．作为发起者 的客户VCR端点或对等机（peer）VCR端点，发送请求给服务器，服务器对之作出响应， 返回信息表明它上层接不接受该请求．一旦开始进行在连接之上的数据传输，则所有DT D LPDU都以相同的优先级进行传输．
　　这种连接方式提供两种服务质量，经典的（CLASSICAL）和乱序的（DISORDERED） ．经典的是指数据链路层将竭力有序地传输和递送DT DLPDU，并且在不能达到此目标时 断开连接．如果必要的话它会进行一次重试．乱序的是不同的，它可以按到达的次序向上层 递送被传送的数据，即使数据流中有空隙也不予理会（这种空隙是由丢失DT DLPDU数据 帧引起的）．至于经典的，进行一次重试后，若失败则该数据链路层将被断开．
4.2.3 无连接数据传输
　　无连接数据传输主要用于在DLSAP之间通过队列进行独立DLPDU的传送．数据链路层不保存相关信息来进行传输控制．因为目标地址可以被组态成DLSAP组(Group)地址（即多点传送），即允许多报告源（发布者）来发送给同一组地址，所以这种传输类型被用来分发报告．这也就允许报告池（接收者）不必分辨报告源及其位置．
因为所有无连接都是独立的，所以每次传送优先级都得分别规定．然而对每个VCR ，只能有一个优先级被规定．上层使用它作为该VCR规定的优先级，所有的数据传输都 必须由上层给出其优先级．
5　数据链路层的实现
　　我们采用ANSI C语言和一种嵌入式实时操作系统进行混合编程，已经实现了基金会现场 总线规范（specification）和协议（protocol）所规定的数据链路层的所有功能．
在我们的实现方法中，这种嵌入式实时操作系统完成任务的创建，任务间的调度、通讯 、同步，内存的管理和定时器的创建、删除和管理．其余部分均用ANSI C编程实现．
图3给出了我们编制的数据链路层程序的一个简要的数据流图．下面我们来讨论下面这个数据流图．



图3　数据键路层简要数据流图

　　在网络的层状结构中，我们称上层对下层的命令为请求，下层对请求的回应为确认，下层向上层报告的消息为指示，上层对指示的回应为响应．
该图第一部分给出了数据流的总体走向．在发送方，应用层进程向下的数据流为请求或响应，经过A发送过程的处理，形成DLPDU放入非调度请求队列（Q(US)），在收到PT令牌后，发出最早放入队列且优先级最高的DLPDU，每个DLPDU都有一个在时间集中的定时器与之对应，若在收到PT前该定时器超时，则进行一系列操作，如断开连接等．DLPDU发出后，取消该定时器．该DLPDU发出后，若需要确认，则为之重新启动一定时器来进行差错控制．如果数据链路层收到CD令牌，则从发送缓冲区中取出用户数据，形成DT DLPDU后直接发往物理层，而不用发往Q(US)．
　　在接收方，收到的DLPDU经过B接收过程的处理后，生成指示或确认后，将它发送给应用层进程．
　　在A处理过程中，经过请求或响应判断后，根据不同的情况进行处理．具体地说，若收到的是建立连接（EC）请求，则形成EC DLPDU发往Q(US)；若收到的是强制服务请求，则形成CD DLPDU发往Q(US)；若收到的是数据（Data）请求，则形成DT DLPDU控制帧，当该请 求是发往数据链路服务访问点（DLSAP）或与队列相关的数据链路连接端点（DLCEP）的时侯 ，则从发送队列中取出用户数据，与已生成的DT DLPDU控制帧合在一起形成DT DLPDU，发往 Q(US)，当该请求是发往与缓冲区相关的数据链路连接端点（DLCEP）的时侯，则从发送缓冲 区中取出用户数据，与已生成的DT DLPDU控制帧合在一起形成DT DLPDU，发往Q(US)；若收 到的是单元数据（UnitData）请求，则从从发送队列中取出用户数据，形成DT DLPDU，发往 Q(US)；若收到的是响应（注：只可能是建立连接响应），则形成EC DLPDU，发往Q(US)． 
　　在B处理过程中，经过DLPDU判断后，根据不同的情况进行处理．具体地说，若收到的是EC DLPDU，则当连接已建立时，向应用层发送建立连接确认，并形成不带用户数据的DTDLPDU，发往Q(US)，当连接未建立时，向应用层发送建立连接指示；若收到的是DCDLPDU， 则向应用层发断开连接指示；若收到的是DT DLPDU，则向应用层发数据指示（Data Indicat ion），且根据相关联的是接收队列或接收缓冲区，分别将DT DLPDU中带的用户数据送入接 收队列或接收缓冲区；若收到的是CD DLPDU，则重发发送缓冲区内容，形成带用户数据的DT DLPDU，发往Q(US)．
　　数据链路层的主要数据流向就是如此．基于这个数据流图我们编制了基金会现场总线协议栈中数据链路层的程序．
6　结语
　　本文给出了基金会现场总线数据链路层工作机理的简单介绍，并给出了实现方式的简要叙述．我们所设计的程序达到了预期的目标，能完成基金会现场总线协议中所规定的数据链路层的各项功能．基金会现场总线在我国目前仍处于发展阶段，还有很多工作等着我们去做，愿与诸君共勉！ 
作者简介：胥正川，1973年生，硕士研究生．研究领域为现场总线通信协议栈软件开发 ．
　　　　　王　宏，1963年生．研究领域为网络通信及工业自动化控制系统．
　　　　　王　智，1969年生，博士生．研究领域为通信系统建模．
作者单位：中国科学院沈阳自动化所计算中心　沈阳　110015
参考文献
1　FOUNDATION(tm) Fieldbus Specifications System Architecture． Revision 1.0,Fieldbus Foundation,1996
2　FOUNDATION(tm) Fieldbus Specifications Data Link Protocol Specification． Revision 1.0,Fieldbus Foundation,1996
3　Computer Network (Third Edition) Andrew S. Tanenbaum
收稿日期：199-04-21
