Bacnet协议报文格式详解(一)

article/2025/11/1 9:29:45

       系统实现基于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个字节的网络号。作用是命令一个路由器释放所建立的点到点连接。

 


http://chatgpt.dhexx.cn/article/EVCjWgiW.shtml

相关文章

bacnet (收集)

嵌入式系统中BACnet-MS/TP协议栈的实现 一个BACnet设备由一个网络号码和一个MAC地址唯一确定 bacnet MS/TP 走的是485网络 https://www.eefocus.com/mcu-dsp/226727 1 引言 20世纪90年代,Internet经历了爆炸性发展,成为垄断全球的计算机网络。以Cisc…

BACnet

BACnet通讯协议(一) BACnet协议(A Data Communication Protocol for Building Automation and Control Networks),是由美国采暖、制冷和空调工程师协会(ASHRAE)制定的一个楼宇自动控制技术标准文件,BACnet协议最根本的目的是提供…

BACnet协议

BACnet协议 BACnet协议层包括物理层,链路层,网络层,应用层和BACnet安全层。 我们知道BACnet是用于楼宇自动化和控制网络的简短形式的数据通信协议。BACnet是主要行业供应商产品中常用的自动化和控制协议之一,如江森自控&#xff…

BACnet协议详解——初识BACnet架构

文章目录 BACnet协议架构BACnet简化的架构简化的四层BACnet体系结构选取BACnet 网络的拓扑结构安全最后声明BACnet协议架构 国际标准化组织在制定计算机网络通讯协议标准时定义了一个模型,称为开放系统互联参考模型(OSI(ISO 7498)。模型的目的是解决计算机与计算机之间普遍…

BACnet基础入门

BACnet入门:一、简单了解 前言协议栈层级与拓扑结构1.层级体系2.拓扑结构 协议栈的相关内容1.应用层a.设备b.对象c.属性e.服务f.扩展g.安全h.互操作基本模块(BIBBs)i.一致性声明(PICS)j.其他 2.网络层3.数据链路与物理层 工具源码参考 前言 …

BACnet协议介绍

BACnet为BuildingAutomation andControlnetworks的简称,台湾通常翻译为“建筑自动化控制网路通讯协定”,而中国大陆则译为“楼宇自动化与控制网络”。 前言 BACnet是用于智能建筑的通信协议,是国际标准化组织(ISO)、美…

认识BACnet协议

一、什么是BACnet? BACnet,Building Automation and Control networks的简称,即楼宇自动化与控制网络。是用于智能建筑的通信协议。 一般楼宇自控设备从功能上讲分为两部分:一部分专门处理设备的控制功能;另一部分专…

【块存储block源码分析】 linux内核模块ceph nbd源码分析

jewel 版本支持 rbd-nbd 的特性,需要 map 支持较多特性的 rbd image 时,可以使用该 nbd driver NBD(Network Block Device) 可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。NBD是一个内核模块,…

用户增长 - BG/NBD概率模型预测用户生命周期LTV(二)

文章目录 1 理论1.1 BG / NBD概率模型介绍1.2 Gamma-Gamma模型2 实践案例2.1 lifetimes实践案例一:在线零售业务的交易2.1.1 数据解读2.1.2 BG / NBD - 预期交易的frequency /recency 热力图2.1.3 顾客留存概率热力图2.1.4 评估模型效果方式一:模型验证重…

使用BG/NBD模型与Gamma-Gamma模型预测客户的生命周期价值CLV/LTV

1. 背景 客户生命周期价值CLV: CLV是Customer Lifetime Value的简称,用来衡量一个客户(用户)在一段时期内对企业有多大价值,也称为LTV。 假如一个客户两年内在某商店内消费2000元,这2000元就是CLV,具有预测性。 CLV…

nbd 相关概念及操作

周五(3月6号)笔者发现有台物理机上挂载了一个并非常用的nbd设备,估计是之前人做的测试留下来的,决定卸载它,顺带了解了下nbd的设备信息。 什么是nbd 全称是network block device,类似于nfs,远程设备可以挂载&#xff…

qemu-nbd挂载虚拟机镜像文件系统

qemu-nbd挂载虚拟机镜像文件系统 基本原理操作步骤1.加载NBD驱动2. 连接 qemu-nbd3.挂载4.解挂 虚机文件系统为LVM实例1.加载驱动2.连接qemu-nbd3.挂载lvm分区4.卸载盘符 虚机文件系统为非LVM虚机文件系统为NTFS 基本原理 nbd(网络块设备: Network Block Device&am…

linux qemu-nbd介绍

1. 介绍 NBD(Network Block Device),即网络块设备。可以将一个远程主机的磁盘空间,当作一个块设备来使用。就像一块硬盘一样使用它,你可以很方便的将另一台服务器的硬盘空间,增加到本地服务器上。NBD与NFS有所不同&am…

centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件

基本原理 nbd(网络块设备: Network Block Device),利用qemu-nbd将qemu虚拟机镜像挂载到Linux上。   展开来讲,nbd可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,你可以很…

linux nbd模块,Centos7.3 安装编译nbd模块-Go语言中文社区

未安装nbd模块 [zhaojqlocalhost ~]$modprobe nbd modprobe: FATAL: Module nbd not found. 查看linux版本 [zhaojqlocalhost ~]$cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [zhaojqlocalhost ~]$uname -r 3.10.0-514.26.2.el7.x86_64 安装 [rootlocalhost…

linux nbd模块,Centos7.3 安装编译nbd模块

未安装nbd模块 [[email protected] ~]$ modprobe nbd modprobe: FATAL: Module nbd not found. [[email protected] ~]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected] ~]$ uname -r 3.10.0-514.26.2.el7.x86_64 安装 [[email protected] …

NBD(Network Block Device)简介及基本使用

NBD指的是Network Block Device,正如其名字的意思,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。 你可能会想NFS(Network File System)不是已经可以实现通过网络挂载各种文件系统并进行访问了吗,…

微信开放平台开发者认证

1.邮箱注册,激活账号 2.企业认证 3.登陆微信开放平台,进行开发者认证 4.填写认证信息 5.发票选择,可以选择不开发票 6. 支付费用300 备注:如有疑问,请联系作者!

微信开放平台开发(3) 移动应用微信登录

在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现移动应用微信登录的功能。 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号&#x…

微信开放平台之第三方平台开发,模板小程序如何提交?

大家好,我是悟空码字 12月25日,天气晴朗,阳光普照,今天是圣诞节。因为疫情影响,小羊人的增多,街上放眼望去,人烟稀少。楼下除了几个十一二岁的小男孩在玩耍,也没有像往日老人悠闲打…