系统实现基于BACnet/IP(又称B/IP)网络进行通讯。BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持的定向和广播信息。本实现关于BACnet协议定义主要可分为三层:B/IP网络虚拟层,BACnet网络层和BACnet应用层。B/IP提供了TCP/IP一样的通讯结构,采用UDP的通讯方式。本文接下来将对此三层结构进行详细的讲解。

其文本协议的大致格式如下:

BACnet/IP

BACnet网络层

BACnet 应用层

BVLC Type

BVLC Function

Length

NPDU

APDU

BVLC Type: 0x81,代表BACnet/IP网络

BVLC Function: 指定报文的类型,何种作用;本应用使用的报文类型分为两种:

0A:点对点通讯

0B:广播通信

Length: 指定报文的长度,包括BVLC Type、BVLC Function以及本身在内

BACnet  NPDU结构

1.协议版本号

每个NPDU的第一个字节是一个8比特的无符号整数,标识BACnet协议的版本号。目前的BACnet协议的版本号是(1)。

2.网络层协议控制信息

NPDU的第二个字节是控制字节,表示后面的某个特殊NPCI域的存在。控制字节中每个比特的作用如下:

比特位

意义

比特值

比特值的含义

比特7

标志报文类型

0

表示NPDU传送的是一个包含BACnet APDU的数据报文,报文类型域不存在。

1

表示NPDU传送的是一个网络层报文,报文类型域存在。

比特6

保留

0

目前置0。

比特5

目标指示器

0

DNET, DLEN, DADR, Hop Count 不存在

1

DNET, DLEN, Hop Count 存在

DLEN = 0表示广播MAC,DADR不存在

DLEN > 0规定了DADR域的长度

比特4

保留

0

目前置为0。

比特3:

源指示器

0

SNET, SLEN, SADR 不存在

1

SNET, SLEN, SADR 存在

SLEN = 0无效

SLEN > 0规定了SADR域的长度

比特2

N-UNITDATA 中的data_expecting_reply

参数

0

存在一个网络层报文期待的应答(除BACnet-Confirmed-Request-PDU,BACnet-ComlexACK-PDU段外)。

1

存在一个BACnet-Confirmed-Request-PDU,一个BACnet-ComlexACK-PDU段,或者一个网络层报文期待的应答。

比特1,0

网络优先级

11

关于楼宇安全性的报文。

10

关于楼宇关键设备的报文。

01

紧急报文。

00

一般报文。

3.特殊域的内容

DNET:最终目标网络号,2个字节。

DLEN:最终目标的MAC层地址的长度,1个字节,0表示对目标网络的广播。

DADR:最终目标的MAC层地址。

SNET:初始源网络号,2个字节。

SLEN:初始源的MAC层地址的长度,1个字节。

SADR:初始源的MAC层地址。

Hop Count:递减计数器值,用来防止报文不被循环路由。1个字节,初始化为X‘FF’。当报文通过每个路由器时,其值被至少减一。如果路由器发现该值已为0,则丢弃此报文。

4.网络层报文类型

如果控制域中的比特7为1,这表示此报文是一个网络层报文,其报文类型域存在。这是个1字节的域,其内容表示报文携带的各种网络层的控制信息。

5.生产商专有网络层报文

如果控制域的比特7为1和报文类型域的值为X‘80’至X‘FF’时,Vendor ID域存在,生产商可以有2个字节来编码自己的专有网络层报文类型。

6.   网络层协议报文

在BACnet中,有十种网络层协议报文,它们的作用是进行路由器自动配置,路由表的维护,和网络层拥塞控制。下面介绍这十种报文。

  • Who-Is-Router-To-Network报文

格式为:网络报文类型域是X‘00’,后面有2个字节的网络号。作用是:①节点用来确定通达某目标网络的下一个路由器;②帮助路由器更新路由表。当省略2字节的网络号时,接收此报文的路由器要返回其所有可通达的目标网络的列表。

  • I-Am-Router-To-Network报文

格式为:网络报文类型域是X‘01’,后面有2个字节的网络号。作用是列出通过发送此报文的路由器可以到达的网络号。

  • I-Could-Be-Router-To-Network报文

格式为:网络报文类型域是X‘02’,后面有2个字节的网络号和1个字节的性能指标。作用是响应包含有特定网络号的Who-Is-Router-To-Network报文,由能够建立到达特定目标网络的点到点连接的半路由器使用,其网络号就是所响应的报文中包含的特定网络的网络号。性能指标表明这种连接的质量。

  • Reject-Message-To-Network报文

格式为:网络报文类型域是X‘03’,后面有1个字节的原因说明和2个字节的网络号。作用是一个拒绝报文,直接发给生成被拒绝的报文的节点,网络号就是被拒绝报文中的网络号。在拒绝原因字节中是一个无符号的整数,其值所表示的意义如下:

(0):其它差错。

(1):本路由器不能直接连接到所指示的目标网络以及不能发现任何一个能够连接到所指示的目标网络。

(2):本路由器忙,目前不能接收关于所指示目标网络的报文。

(3):这是一个不可识别的网络层报文类型。

(4):报文太长,不能路由到所指示的目标网络。

  • Router-Busy-To-Network报文

格式为:网络报文类型域是X‘04’,后面是可选择的2个字节的网络号。作用是被路由器用来通知停止接收通过本路由器向某特定目标网络或者所有网络发送的报文。此报文通常用广播MAC地址发向相应的网络。如果没有可选择的2个字节的网络号,则表示到所有网络的报文都不接收。

  • Router-Available-To-Network报文

格式为:网络报文类型域是X‘05’,后面是可选择的2个字节的网络号。作用是被路由器用来通知开始或者重新开始接收通过本路由器向某特定目标网络或者所有网络发送的报文。此报文通常用广播MAC地址发向相应的网络。如果没有可选择的2个字节的网络号,则表示到所有网络的报文都可接收。

  • Initialize-Router-Table报文

格式为:网络报文类型域是X‘06’。作用是初始化一个路由器的路由表或者查询当前路由表的内容。此报文有一个数据段,包含有初始化路由表的信息。

  • Initialize-Router-Table-Ack报文

格式为:网络报文类型域是X‘07’。作用是对初始化路由表报文的应答,表示路由器的路由表已经改变,或者已被查询。此报文的数据段具有与它应答的初始化路由表报文相同的格式。

  • Establish-Connection-To-Network报文

格式为:网络报文类型域是X‘08’, 后面有2个字节的网络号和1个字节的“中止时间值”。作用是命令一个半路由器创建一个通达指定网络的点到点连接。2个字节的网络号指出要半路由器连接的目标网络。1个字节的“中止时间值”规定了在没有NPDU到达的情况下,连接保留的时间。当此值为0时,表示连接永久保留。

  • Disconnect-Connection-To-Network报文

格式为:网络报文类型域是X‘09’, 后面有2个字节的网络号。作用是命令一个路由器释放所建立的点到点连接。

Bacnet协议报文格式详解(一)相关推荐

  1. QUIC报文格式详解

    QUIC的packet分为Special Packets和Regular Packets两种,其中各自又有两种不同的packet 特殊报文: 版本协商报文(Version Negotiation Pa ...

  2. icmp报文格式_TCP/IP(二):IP报文格式详解

    1. IP 报文格式 0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 ...

  3. ICMP报文格式详解

    1 引言 2 ICMP报文的类型 3 ICMP地址掩请求与应答 4 ICMP时间戳请求与应答 5 ICMP端口不可达差错 1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错以及其他需要注意 ...

  4. IPv4 和 IPv6 报文格式详解

    文章目录 1 概述 2 报文格式 2.1 IPv4 2.2 IPv6 2.3 两者区别 3 网工软考真题 1 概述 2 报文格式 2.1 IPv4 中文名 英文名 长度 bit(位) 解释 版本 Ve ...

  5. HTTP 请求报文、响应报文格式详解

    HTTP请求报文格式: 图片只做参考 HTTP请求报文主要由请求行.请求头部.请求正文(附属体)3部分组成 1,请求行 由3部分组成,分别为:请求方法.URL(见备注1)以及协议版本,之间由空格分隔 ...

  6. 54.UDP报文格式详解

    相比 TCP 协议,UDP 协议的报文结构相对简单.本节将详细讲解 UDP 报文的格式. UDP 报文格式 每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分.报头由 4 个 16 位长(2 ...

  7. tcp报文格式udp报文格式详解

    http://blog.csdn.net/a19881029/article/details/29557837 TCP(Transmission Control Protocol)传输控制协议是一种面 ...

  8. 数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理

    数据链路层.网络层.传输层----网络通信原理 物理层 数据链路层 eNSP抓包实验 网络层 ICMP协议概述 eNSP抓包实验 ARP协议概述 eNSP抓包实验 传输层 TCP协议 eNSP抓包 三 ...

  9. TCP/IP(五):UDP 报文格式详解

    1.概述 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连 ...

最新文章

  1. Visual C++ 时尚编程百例019(串行化)
  2. 设定printf在终端输出的颜色
  3. 某厂面试:如何优雅使用 SPI 机制
  4. java怎么实现邮箱机制_JAVAMAIL实现与详细机制
  5. SQL server数据异地备份到OSS
  6. 服务器性能优化的8种常用方法
  7. Active Directory Get User's groups using LDAP
  8. PreferenceScreen 悬浮清除按钮
  9. 重磅!《中华人民共和国个人信息保护法》今日起施行!
  10. 如何用PS缩小图片而清晰度不变?
  11. TestNG单元测试框架详解
  12. 移动Web开发基础-Viewport
  13. 聚观早报|中国将是ChatGPT主要对手;​iPhone 15将使用USB-C接口
  14. Phoenix官方教程 (九) Channel
  15. 【Linux基础】Ubuntu 20.04系统安装(完整版)
  16. 顶点缓冲区与着色器 (The Cherno + LeranOpenGL)笔记
  17. matlab 实现完整的正弦波信号发生器
  18. 制定新的计划,走起(r13笔记第1天)
  19. Scala 简介 [摘自 Scala程序设计 ]
  20. 心理测评系统选购指南

热门文章

  1. iphone绿屏还没有修复计算机,苹果承认iPhone12绿屏,后期会修复,快看看你的绿吗?...
  2. 实战落地微服务架构商城项目-part01
  3. MySQL 45 讲 | 13 为什么表数据删掉一半,表文件大小不变?
  4. 从零开始做一个SLG游戏(五):UI系统之弹窗功能
  5. 初一计算机说课记录,初中信息技术《工作表中数据的处理》说课稿
  6. 计算机病毒(Virus)是谁发明的?
  7. Hofzinser Ace Problem(1)——刘谦的基础流程及改进
  8. 总结远程finalshell等远程工具连接不上原因
  9. 打打游戏就毕业了?论移动开发者的“职业素养”!
  10. 九月亚洲时尚首饰及配饰展业界交流汇点:领导时尚潮流