4.5 BACnet数据链路和物理层规范
前面分析了数据链路和物理层是BACnet四层级简易模型中的应用层和网络层,接下来分析数据链路和物理层并介绍:BACnet的5种数据链路/物理层的规范;BACnet数据链路/物理层的功能、主要服务原语以及帧结构。
4.5.1 BACnet数据链路/物理层支持和自定义的局域网技术
考虑应用环境的多样性,BACnet标准定义的物理层和数据链路层支持多种局域网技术,这些局域网技术中包括自定义的局域网技术,如主—从/令牌数据链路协议MS/TP网络和PTP通信网络。物理层和数据链路层支持的其他局域网技术,如LonWorks网络、ARCnet网络和以太网都是已有的局域网技术,即直接借鉴了现有的标准化技术及相应的标准。其中LonWorks网络及控制技术在工控及楼宇自控领域广为使用,以太网技术更是引导着网络技术的发展潮流。
不同局域网技术所建立的网络在数据传输速率、传输的数据帧格式(报文分组格式)、网络使用的传输介质及组成设备都彼此不同。这些异构网络之间一般不能直接连接通信,但这些不同的局域网技术各有特长,分别适用于不同的应用环境。
BACnet标准目前将上述五种类型的数据链路/物理层技术作为自己所支持的数据链路/物理层技术进行规范,形成其协议和标准。BACnet选择这些局域网技术的原因是从实现协议的硬件的可用性、数据传输速率、与传统BAS的兼容性和设计的复杂性等方面考虑的。
4.5.2 BACnet的以太网规范
以太网是当前应用极为广泛的局域网技术,其协议包括逻辑链路控制协议(LLC)、载波侦听多路访问/冲突检测(CSMA/CD)媒质访问控制协议和相应的物理介质协议等。ISO 8802-3标准是以太网标准,标准将以太网分为MAC层和物理层。其中MAC层通过该标准中的“LLC子层/MAC子层界面服务规范”向LLC子层提供服务。
1.BACnet网络对ISO 8802-2逻辑链路控制协议(LLC)的使用
BACnet网络使用LLC的数据链路服务来传送BACnet链路服务数据单元(LSDU)。一个LS-DU包含一个网络层协议数据单元(NPDU)。使用ISO 8802-3局域网技术的BACnet设备使用DL-UNITDATA原语传送LLC参数。
DL-UNITDATA原语中包括的参数有:信源地址、信宿地址、要传输的数据以及优先级控制。源地址和目标地址各自分别是一个6B由网络接口硬件确定的[MAC地址和1B的链路服务访问点(LSAP)]参数。LSAP的值为X‘82’,就表示该LSDU内包含有BACnet数据。数据参数就是来自网络层的NPDU。
2.MAC原语所要求的参数
ISO 8802-3 MAC层原语是MA-DATA.request和MA-DATA.indication。这些是用源节点和目标节点的MAC地址封装的LLC数据的帧结构,图4-6是这种帧的数据结构图。其中,APDU是应用层协议数据单元,NPCI是网络层协议控制信息。DSAP和SSAP分别是目标节点和源节点的链路服务访问点参数,在此情况下,其值都为X‘82’,表示帧内包含有BACnet数据。整个帧由物理介质传送到目标节点设备。
图4-6 BACnet标准的以太网数据帧结构
4.5.3 BACnet的ARCnet局域网规范
1.ANSI/ATA 878.1—1999标准
ARCnet是1977年由Datapoint公司开发的一种局域网(LAN)技术,这是一种很成熟的嵌入式实时局域网技术,数据传输速率为2.5Mbit/s。ARCnet技术采用令牌总线(token-bus)的媒质访问方式来管理LAN上工作站和其他设备之间的共享线路,网络中的每个节点设备可以设置等待发送报文时间的最大值,用这种方式解决应用的可靠性问题。在ARCnet中,LAN服务器总是在一条总线上连续循环地发送一个空信息帧。当有设备要发送报文时,它就在空帧中插入一个“令牌”以及相应的报文。当目标设备或LAN服务器接收到该报文后,就将“令牌”重新设置为0,以便该帧可被其他设备重复使用。这种方案是十分有效的,特别是在网络负荷大的时候,它为网络中的各个设备提供平等使用网络资源的机会。
ARCnet网络技术采用了美国国家标准(ANSI/ATA 878.1—1999)。(ARCnet Trade Associa-tion,ATA)致力于在不同的应用中推广这种嵌入式网络技术。ATA是ANSI(美国国家标准局)认可的标准研发协会,并指定该协会对ANSI/ATA 878.1—1999标准进行维护更新。BACnet标准将ANSI/ATA 878.1—1999 ARCnet局域网标准,包括未来的扩展,作为自己的标准。同时,仍然使用ISO 8802-2中的Class I LLC和类型1不确认的无连接模式服务作为逻辑链路控制协议。
2.LLC原语的参数和LLC原语向ARCnet MAC层的映射
(1)LLC原语的参数
BACnet网络使用DL-UNITDATA原语传送LLC参数。DL-UNITDATA原语中的参数是信源地址、信宿地址、数据和优先级。信源地址和信宿地址就是由网络接口硬件确定的介质访问控制地址,分别占用1B。
1B的链路服务访问点参数和系统代码(SC)参数各自也占用1B。LSAP的值都为X‘82’,表示本LSDU内包含有BACnet数据。SC的值为X‘CD’,表示此数据结构是一个BACnet帧。数据参数就是来自网络层的NPDU。ARCnet MAC层运行在只有一个服务类别的单优先级模式下,所以没有优先级参数的规范。
(2)LLC原语向ARCnet MAC层的映射
类型1不确认的无连接LLC服务直接映射成ARCnet的MAC原语MA-DATA.request。没有指示原语传递给LLC子层,但是从目标MAC子层有一个确认返回。ARCnet不允许其MSDU的长度为253B、254B或者255B。长度为0~252B的BACnet LPDU作为ARCnet MPDU帧的整个MSDU,其中MPDU中具有1B的信息长度(IL)域。长度为253~504B的BACnet LPDU作为ARCnet MP-DU的MSDU的前部分,后面加上3B不确定数值,长度达到256~507B,其中MPDU中具有2B的信息长度域。在接收方,如果检测到ARCnet的MP-DU信息长度域有2B,则要去掉MSDU中的最后3B。ARCnet中不能传输长度超过504B的LPDU。
3.MAC原语所要求的参数
ARCnet网络MAC层原语是MA-DATA.request、MA-DATA.indication和MA-DATA.confirmation。LLC数据帧中包含有信源节点和信宿节点的MAC地址,图4-7是LLC数据帧的结构图。其中,APDU是应用层协议数据单元,NPCI是网络层协议控制信息。DSAP和SSAP分别是信宿节点和信源节点的链路服务访问点参数,在此情况下,其值都为X‘82’,表示帧内包含有BACnet数据。整个帧由物理介质传送到目标节点设备。
图4-7 LLC数据帧的结构图
4.5.4 MS/TP局域网规范
1.BACnet MS/TP概述
BACnet MS/TP即主—从/令牌数据链路协议,“MS”含义:MASTER/SLAVE(主/从),“TP”的含义:TOKEN PASSING(令牌传递)。BACnet MS/TP的数据通信模式实质上一种主从数据通信模式,但是这种模式是基于令牌传递过程进行的。在令牌传递(TOKEN PASSING)的过程中,哪个节点设备获得令牌,就承担了主从数据通信中的主站点角色,那些没有获得令牌的节点设备都处于“从站点”状态。MS/TP协议是一个数据链路层的标准,该标准定义了MS/TP网络的物理层采用技术成熟的EIA-485标准,而EIA-485又具有较好抗干扰和低成本的特点,所以MS/TP局域网是一种具有较好性能/价格比的楼宇自控网络。
MS/TP局域网中,存在主站点(Master)和从站点(Slave)两种工作方式不同的站点,使用“令牌(Token)”机制作为媒质访问控制方式。令牌只在主站点间传递,但主站点只有在得到令牌时,才能访问传输介质并向传输信道发送信息帧,否则与从站点一样只能处于接收和监听状态。在数据帧的传送过程中,从站点始终得不到令牌,因此只能进行监听和接收数据帧,并在响应主站点时才具有发送响应帧的能力。当MS/TP网络完全由主站点组成,此时MS/TP网络就是一个对等令牌访问网络。当MS/TP网络只有一个主站点时,MS/TP网络就是一个工作于主从模式的网络。这就是说:MS/TP网络可以在对等模式下工作,也可以在主从模式下运行,网络的组织方式较为灵活。
在MS/TP局域网中,节点设备或站点地址用1B来表示。MS/TP标准将地址255作为广播通信的地址,因此一个MS/TP网络最多可以挂接255个站点。其中,主站点的地址编码范围是0~127,从站点地址编码范围是0~254。MS/TP网络在进行站点地址分配时,一般情况下将0地址分配给与MS/TP网络直接连接的路由器。
MS/TP网络使用一个令牌来控制设备对网络总线的访问。当主节点掌握令牌时,就可以通过总线发送数据帧。收到主站点请求报文的其他主站点根据请求发送响应报文,网络中的从站点在收到主站点请求报文时,向主站点发送响应报文。当一个主站点在发送完报文之后,就将令牌传递给下一个主站点。如果主站点要发送多个报文,在它掌握令牌的期间内,发送的报文数量受到限制,最多发送Nmax_info_frames个数据帧,下来的事情就是将令牌传递给下一个主站点,这一轮的报文发送就结束了,如果还有报文要发送,就只能等待下一次再掌握令牌重复上述过程了。
令牌传递过程中某站点发送报文后,不进行发送确认,但是要侦听接收令牌的节点是否开始使用令牌。
MS/TP网络定义了从节点不能掌握令牌,因此规定所有节点,不论是否握有令牌,都必须对请求报文作出响应。发出请求报文的主节点在收到应答之前不释放令牌。收到请求报文的从节点要立即发回应答报文,而收到请求报文的主节点可以选择发回应答报文或者发送一个“延迟应答”报文,告知它将延迟应答到它自己掌握令牌时再发送。
当得到令牌的站点由于故障无法继续正常通信时,MS/TP网络的通信出现非正常中断,每个站点会自动计算通信中断的静默时间,如果超过规定的静默时间,则会随机出现一个站点并产生新的令牌,继续令牌传递过程,保证通信的正常进行。一个主站点在传出令牌后会监视其他站点对令牌的使用情况,如果得到令牌的站点进入不对令牌进行操作的实效状态,则该站点会被自动从令牌环中剔除。
对于有新站点加入的情况:在令牌传递过程中,站点或控制器在得到令牌时对本网段的空余位置发出查询命令,如果得到正确应答,说明有新的站点或控制器申请加入令牌环,就把令牌传递给新的站点或控制器,使其自动加入到令牌环中。于是,新的站点或控制器加入网络,MS/TP网络会自动识别,无需重新配置。由哪个站点或控制器何时发出查询命令,是由BACnet的算法决定的,这个算法的目的是使查询命令不占用过多的网络时间,并且新控制器可以在一个可接受的时间内被发现。
MS/TP网络技术的基础是在物理层使用EIA-485标准。由于EIA-485标准只是一个物理层标准,不能解决设备访问传输介质的问题,因此主从/令牌传递(MS/TP)协议才能提供数据链路层功能。通过MS/TP链路层标准和物理层EIA-485标准组合,解决了链路层的介质访问和物理层的硬件接口通信问题。
MS/TP EIA-485网络使用屏蔽双绞线作为信号传输介质,特征阻抗为100~130Ω。EIA-485节点有3种类型,分别是具有网络偏置电阻的节点、具有本地偏置电阻的节点和无偏置电阻的节点。
2.服务规范
MS/TP网络提供两个数据链路层服务原语,向网络层提供服务,这两个服务原语分别是DL-UNITDATA.request和DL-UNITDATA.indication。前者由网络层传递给MS/TP实体,请求使用不确认的无连接方式向一个或者多个远程节点的网络层实体发送一个网络层协议数据单元(NP-DU)。后者由MS/TP实体传递给网络层,通知有一个来自远程实体的NPDU到达。
3.MS/TP网络的通信过程
BACnet MS/TP网络的通信过程如图4-8所示,在实际工程应用中,通信过程中的某些步骤可能会被省略或跳过了,在图4-8中,令牌传送到3号控制器,3号控制器恰巧没有数据要发送,于是令牌就直接传递给下一个控制器。或者是3号控制器命令4号控制器,但该命令是一个无需回答的命令,如果4号控制器没有应答,则3号控制器接下来就命令1号控制器。当前得到令牌的控制器发出什么样的命令取决于网络层和应用层的需求。
图4-8 BACnet MS/TP网络的通信过程
MS/TP网络工作时会遇到一些意外情况,如得到令牌的控制器突然出现故障,通信过程就暂时中断,网络中的其他控制器自动计算这种暂时中断造成的寂静时间,一旦这种计时超过规定值,由令牌产生算法就会产生新的令牌并为某台控制器得到,使MS/TP网络的正常通信过程继续下去。
当某个得到令牌的控制器一直没有执行后续的操作时,站点删除算法会自动将该控制器从令牌环中删除;当有新的控制器加入,由新站点的插入算法,将该控制器加入令牌环。新的控制器加入网络后,BACnet MS/TP会自动识别。
4.MS/TP帧结构
MS/TP网络的帧格式如图4-9所示,帧结构由:前导码、帧类型、目标地址、信源地址、帧长度、帧头CRC、数据段、数据CRC、填充段组成。
(1)前导码
该域占2B,标志MS/TP帧的开始,其值为X’55FF’。
(2)帧类型
该域占有1B,用来区别不同类型的MS/TP帧类型。MS/TP局域网规范定义了8种类型帧:
1)00:令牌;
2)01:主节点轮询帧;
3)02:响应主节点轮询帧;
4)03:测试请求帧;
5)04:测试响应帧;
6)05:BACnet数据期待响应帧;
7)06:BACnet数据不期待响应帧;
8)07:响应延迟帧;
9)08~127:保留为ASHRAE所用帧;
10)128~255:生产商定义的专用帧。
要注意的是,目标地址域值为255(X‘FF’)表示此帧为广播帧,而源地址域的值不允许为255。地址值0~127可用来表示主节点和从节点,而地址值128~254只能用来表示从节点。数据域的长度为0~501B。
图4-9 BACnet的MS/TP局域网的帧格式
5.MS/TP网络媒质访问控制算法
MS/TP网络的令牌传递方式和令牌逻辑环的维护方法影响着媒质访问控制算法,而且在MS/TP网络由于令牌传递是对等的,因此就不再支持有关优先级的算法。
MS/TP网络媒质访问控制算法主要有:令牌传递算法、新站点的插入算法、站点删除算法、多令牌检测算法、令牌产生算法和帧发送算法等。
6.BACnet MS-TP帧实例
以Whois、Iam为例说明BACnet MS-TP帧格式。
(1)没有查找范围的Whois
数据包长度:19B。
数据包详情:(十六进制格式)(红色为数据包头,结尾处为Padding字符0xFF)。
55 FF 06 FF 01 00 08 85 01 20 FF FF 00 FF 10 08 15 B6 FF
(2)带有查找范围的Whois
数据包长度:23B。
数据包详情:(十六进制格式)(红色为数据包头,结尾处为Padding字符0xFF)。
55 FF 06 FF 01 00 0C 78 01 20 FF FF 00 FF 10 08 09 00 19 FF 21 B9 FF
(3)Iam应答信息
数据包长度:30B。
其中,Iam的信息中包括Max APDU=244 VendorID=04 DeviceInstance=000002。
数据包详情:(十六进制格式)(红色为数据包头,结尾处为Padding字符0xFF)。
55 FF 06 FF 02 00 13 27 01 20 FF FF 00 FF 10 00 C4 02 00 00 02 21 F4 91 03 21 04 E6 77 FF
·WhoIs Without range limit
·Length:19
·Data:55 FF 06 FF 01 00 08 85 01 20 FF FF 00 FF 10 08 15 B6 FF
·WhoIs With range limit(0~255)
·Length:23
·Data:55 FF 06 FF 01 00 0C 78 01 20 FF FF 00 FF 10 08 09 00 19 FF 21 B9 FF
·IAM
·IAm with max apdu=244 VendorID=04 00 00 02=Device instance
·Length:30
·Data:55 FF 06 FF 02 00 13 27 01 20 FF FF 00 FF 10 00 C4 02 00 00 02 21 F4 91
032104 E677 FF
4.5.5 BACnet网络架构
BACnet网络架构如图4-10所示。在管理层采用以太网作为管理网络,BACnet工作站挂在管理网上。控制网络可以选ARCnet网络、MS/TP网络网络、以太网、LonWorks网络、PTP网络中的一种,也可以同时使用这些网络的其中两种或两种以上。每一个不同的控制网络都构成了一个不同的通信域和控制域,两种不同的控制网络之间可以使用网关来实现互联,构成一个连通域,控制网络和管理网络之间是通过网间路由器或网络控制器(也叫全局控制器)来实现互联的。从BACnet网络架构图中可以看到:不同厂商制造的产品可以应用在同一个BACnet系统中。
这里需要强调的是:一般情况下,使用以太网作为底层的控制网络是指要使用工业以太网,而不是指普通的商业以太网或办公以太网,如果使用普通的商业以太网作为控制网络,网络应设置为全双工运行模式,而且仅适于组织小规模点数较少且现场环境不是较恶劣的情况下的BAS。
图4-10 BACnet网络架构