恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

02-BACnet协议结构详解

  • 首页
  • 资讯中心
  • /
  • 02-BACnet协议结构详解

相关资讯

外贸B2B询盘真假难辨?SEO流量筛选法帮你过滤90%垃圾询盘 2026/8/14 1:44:25
SAP 在 Agentic AI 时代真正的胜负手,模型之外的流程、语义与治理 2026/8/14 1:44:25
前端表格开发终极指南:3 步用 Tabulator 打造可交互数据网格 2026/8/14 1:44:25

最新资讯

华中师大838考研专业课:数据结构、操作系统、计算机网络核心考点与复习策略
Muse Spark 1.1 实战测评:AI代码生成助手的安装、核心功能与工程实践指南
从矿机到AI集群:算力转型实战指南与HPC部署详解
智慧园区数字孪生技术实战:从三维建模到实时数据驱动的架构设计
10个提升Claude Code协作效率的实战技巧:从精准提问到深度集成
AI应用开发:从功能堆砌到体验优化的减法思维实践

今日推荐

青岛煜鹏网站建设公司如何帮助传统企业实现数字化转型破局与增长路径
内蒙古生产建设兵团四师三十四团知青网站:承载岁月记忆与青春荣耀的精神家园
梅州市住房与城乡建设局官网:获取权威建筑信息、政策解读与民生服务的最佳平台入口

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

02-BACnet协议结构详解

发布时间:2026/8/14 1:44:25
02-BACnet协议结构详解 目录BACnet 协议结构详解四层模型与 OSI 对照一、BACnet 协议总体结构二、与 OSI 七层模型的对照三、各层职责详解1. 物理层Physical Layer2. 数据链路层Data Link Layer3. 网络层Network Layer4. 应用层Application Layer四、BACnet 协议栈数据流五、BACnet 协议栈的 C 语言抽象六、小结BACnet 协议结构详解四层模型与 OSI 对照一、BACnet 协议总体结构BACnet 标准采用分层体系结构但并未照搬完整的 OSI 七层模型而是根据楼宇自动化的实际需求精简为四层结构对应 OSI 模型中的应用层、网络层、数据链路层和物理层。这种简化既保证了功能完整性又降低了实现复杂度使 BACnet 可以运行在资源有限的嵌入式设备上。┌─────────────────────────────────────────────────┐ │ BACnet 应用层Application Layer │ ← 对象、服务、APDU 编解码 ├─────────────────────────────────────────────────┤ │ BACnet 网络层Network Layer │ ← 跨网络寻址与路由 ├─────────────────────────────────────────────────┤ │ BACnet 数据链路层Data Link Layer │ ← 帧封装、介质访问 ├─────────────────────────────────────────────────┤ │ BACnet 物理层Physical Layer │ ← 电气特性、传输介质 └─────────────────────────────────────────────────┘二、与 OSI 七层模型的对照OSI 层次OSI 功能BACnet 是否实现BACnet 对应内容7 应用层用户接口、应用协议✅BACnet 应用层6 表示层数据格式转换❌不实现5 会话层会话管理❌不实现4 传输层端到端可靠传输❌不实现由应用层确认机制替代3 网络层路由与寻址✅BACnet 网络层2 数据链路层帧封装、差错控制✅多种链路层技术1 物理层电气与机械特性✅多种物理介质可以看到BACnet省略了表示层、会话层和传输层。其中传输层的可靠传输功能由应用层的确认服务机制承担会话管理则通过应用层的请求-应答模式实现。这种设计在楼宇自动化场景下完全够用且显著降低了协议栈复杂度。三、各层职责详解1. 物理层Physical Layer物理层定义了信号传输的电气特性、连接器形式和传输介质。BACnet 使用的物理介质主要有RS-485最常用的串行总线半双工标称最长 1200 米实际可用距离随波特率升高而缩短MS/TP 跑 115.2 kbps 时工程上需留足余量。标准规定 32 个单位负载Unit Load但现代收发器多为 1/8 单位负载物理上可挂 256 个节点BACnet MS/TP 主站地址上限为 127。Ethernet 物理介质10/100/1000 Mbps 以太网使用双绞线或光纤。注ARCNET、LonTalk 属于自带介质访问机制的完整链路层技术归并在下文数据链路层表格中介绍BACnet/IP 也不属于物理层它运行于 UDP/IP 之上物理介质复用以太网/光纤等承载 IP 的介质。2. 数据链路层Data Link Layer数据链路层负责将数据封装为帧、实现介质访问控制MAC和差错检测。BACnet 支持以下链路层链路层技术物理介质速率典型场景MS/TPMaster-Slave/Token PassingRS-485≤ 115.2 kbps楼层级控制器PTPPoint-To-PointRS-232 / Modem≤ 115.2 kbps拨号连接BACnet-2020 起已从标准移除Ethernet双绞线/光纤10 Mbps主干网络ARCNET同轴/双绞线2.5 Mbps早期项目LonTalk电力线/双绞线78 kbps~1.25 Mbps历史项目BACnet-2012 起已从标准移除BACnet/IPUDP/IP取决于 IP 网络现代主流BACnet/SCSecure ConnectWebSocket over TLS取决于 IP 网络高安全性现代项目MS/TP 是 BACnet 在 RS-485 总线上的链路层规范是 BACnet 最具特色的链路层之一。它采用主从 令牌传递混合机制既支持多主站又保证无冲突访问。BACnet/SC 则是 2019 年新增的安全链路层它基于 WebSocket over TLS 建立加密通道不再需要 BBMD 等广播管理设施即可穿越防火墙同时提供设备身份认证能力正逐步成为对网络安全有要求的项目的首选。3. 网络层Network LayerBACnet 网络层负责在不同 BACnet 网络之间进行寻址与路由。每个 BACnet 网络有一个 16 位的网络号Network Number设备在每个接入的网络接口上各有一个 MAC 地址长度和格式取决于链路层MS/TP 为 1 字节Ethernet 为 6 字节BACnet/IP 为 6 字节即 4 字节 IP 2 字节端口——因此同时接入两个网络的路由器拥有多个 MAC 地址。网络层将网络号 MAC 地址组合成 BACnet 设备地址使报文可以跨越多个异构网络传输。网络层报文NPDUNetwork Protocol Data Unit头部包含以下关键字段版本号Version固定为 0x01。控制字段Control Byte指示报文类型应用报文还是网络层控制报文、是否包含目的地址、是否需要应答等。目的网络号 / 源网络号用于跨网络寻址。跳数计数器Hop Count防止报文环路最大 255。4. 应用层Application Layer应用层是 BACnet 的核心定义了对象模型、服务集合和 APDUApplication Protocol Data Unit的编解码规则。应用层报文通过 NPDU 的数据部分传输。应用层主要功能对象访问读写设备中的对象属性。事件与报警订阅对象值变化、确认报警。文件传输上传/下载设备中的文件。设备发现Who-Is / I-Am 用于设备发现Who-Has / I-Have 用于对象发现。远程设备管理时间同步、设备重启、通信控制。四、BACnet 协议栈数据流以一次读取温度值为例展示数据从应用层到物理层的封装过程应用层ReadProperty-Request对象Analog Input, 实例1, 属性Present Value ↓ 封装为 APDU 网络层添加 NPDU 头部目的网络号、目的地址、源地址 ↓ 封装为 NPDU 链路层添加帧头、帧尾、CRCMS/TP 或 Ethernet 帧 ↓ 封装为帧 物理层转换为 RS-485 / Ethernet 电信号发送接收端则按相反顺序逐层解封装最终将温度值返回给应用层处理。五、BACnet 协议栈的 C 语言抽象以下代码片段展示了 BACnet 协议栈各层接口的典型抽象方式/* 物理层接口发送/接收字节 */ typedef struct { int (*send_bytes)(const uint8_t *data, uint16_t len); int (*receive_bytes)(uint8_t *buf, uint16_t maxlen, uint16_t timeout_ms); void (*init)(void); } bacnet_physical_layer_t; ​ /* 数据链路层接口发送/接收帧 */ /* 注MAC 地址长度随链路层而变MS/TP 为 1 字节Ethernet/BACnet-IP 为 6 字节故按变长缓冲区设计 */ typedef struct { int (*send_frame)(const uint8_t *dest_mac, uint8_t mac_len, const uint8_t *pdu, uint16_t pdu_len); int (*receive_frame)(uint8_t *src_mac, uint8_t *mac_len, uint8_t *pdu, uint16_t maxlen); void (*init)(void); } bacnet_dll_layer_t; ​ /* 网络层接口发送/接收 NPDU */ typedef struct { int (*send_npdu)(const bacnet_address_t *dest, const uint8_t *npdu, uint16_t len); void (*receive_npdu)(const uint8_t *npdu, uint16_t len); } bacnet_network_layer_t; ​ /* 应用层接口处理 APDU */ typedef struct { int (*send_apdu)(const bacnet_address_t *dest, const uint8_t *apdu, uint16_t len, bool expect_reply); void (*receive_apdu)(const bacnet_address_t *src, const uint8_t *apdu, uint16_t len); } bacnet_application_layer_t; ​ /* 协议栈整体结构 */ typedef struct { bacnet_physical_layer_t physical; bacnet_dll_layer_t dll; bacnet_network_layer_t network; bacnet_application_layer_t application; } bacnet_stack_t;这种分层接口设计使 BACnet 协议栈具有良好的可移植性——只需替换物理层和链路层实现即可将同一套应用层代码运行在 MS/TP、Ethernet、BACnet/IP 或 BACnet/SC 之上。六、小结BACnet 通过精简的四层结构实现了 OSI 七层模型的核心功能在保证楼宇自动化所需能力的同时大幅降低了实现成本。理解 BACnet 的分层结构是深入学习其对象模型、服务机制和网络层路由的基础。后续文章将分别展开各层的细节从对象模型到编程实践逐步揭开 BACnet 协议的全貌。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号