BACnet初学者教程,第四章:介绍 BACnet 虚拟链路层

news/2024/11/19 5:51:31/文章来源:https://www.cnblogs.com/cj94/p/18348203

第四章:介绍 BACnet 虚拟链路层

平时调试BACnet协议,一个好用的 BACnet 调试工具和模拟器必不可少,推荐一款:
官网地址:https://www.redisant.cn/bacnetexplorer

虚拟链路层 (VLL) 背后的基本概念是向现有的 BACnet 网络层呈现某些网络拓扑和功能的视图,利用新协议中内置的任何功能并根据需要添加功能以维护现有标准中的 BACnet 网络视点。

当前的介绍仅限于 IPv4,但 VLL 可以轻松为任何其他类型的网络开发。其概念是不仅使用其他协议的数据链路层,而是在节点和/或进程之间建立协作,以便从更高层协议的角度来看,它们被构造为数据链路。只要设备或进程可以被唯一地识别,并且有一种方法可以将消息分发给协作组中的所有设备或进程,就可以使用新的虚拟链路层来寻址它们。

在下图中,BACnet 虚拟链路层 (BVLL) 的控制信息被指定为 BACnet 虚拟链路控制信息 (BVLCI)。每个 BVLCI 字段至少有三个字段:BVLC 类型、BVLC 功能和 BVLC 长度。请注意,BVLCI 类型字段的值为 X'81'。这用于指示这是 BACnet/IP 的 BVLC 信息,并将虚拟链路消息与 NPCI 版本字段(当前为 X'01')区分开来。(BACnet 隧道路由器发送的消息与 BACnet/IP 消息的区别在于这个初始八位字节。两者都通过 UDP 发送,原则上都可以由同一设备在 X'BAC0' 的同一 UDP 端口上接收。)

image

每个不同的 BACnet/IP 消息都与特定的 BVLC 功能相关联。

B/IP单播

image

首先要讨论的问题是设备如何相互通信。它们通过使用目标 B/IP 地址向对方发送“单播”消息来实现这一点。BACnet 消息本身是如何打包的?显而易见的解决方案是利用 UDP 数据包的“数据”部分来包含 APDU。IP 已经有一个网络层,因此最简单的解决方案似乎是仅封装 BACnet 帧的 APDU 部分。但 NPCI 可能包含重要信息,例如版本号、优先级、是否应将消息路由到非 BACnet/IP 节点等。因此,整个 NPDU 都被封装了。

另一个问题是,一些 BACnet/IP 设备可能需要知道消息是如何传送的,是通过单播还是广播寻址。我们很快就会明白为什么。由于一些商用 IP 协议实现不向接收者提供此信息,因此我们必须创建一种万无一失的方法,使寻址模式可用于更高的协议层。输入 BVLL“原始单播 NPDU”和“原始广播 NPDU”。

image

BVLCI 表示这是一个原始单播-NPDU。这个简单例子中的 NPCI 表明这是“等待回复的数据”。

B/IP广播

image

除了设备之间直接通信之外,还需要一种机制来广播消息,以便所有 B/IP 设备都能接收到该消息。我们将使用现有的标准来广播 UDP 数据包。

UDP 广播数据包被“发送”到 IP 地址,该 IP 地址包含广播设备的子网以及主机部分中的全 1。例如,如果设备的地址为 128.253.109.10,子网掩码为 255.255.255.0,则它可以使用广播地址 128.253.109.255。虽然大多数网络也允许使用 IP 广播地址 255.255.255.255,但由于某些实施者遇到了一些 IP 协议栈限制,我们已排除 BACnet/IP 的这种可能性。

image

BVLCI 表示这是一个原始广播 NPDU。NPCI显示这不是“等待回复的数据”,即广播数据。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.redisant.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/779554.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读零信任网络:在不可信网络中构建安全系统12源代码和构建系统

读零信任网络:在不可信网络中构建安全系统12源代码和构建系统1. 建立应用信任 1.1. 软件正在吞噬整个世界 1.2. 零信任网络需要关注应用程序的安全性,这似乎违反直觉,毕竟网络是不可信的,因此可以预见网络上存在不可信的应用 1.3. 运行在数据中心的软件堪称一切魔法之源,因…

雷达气象相关词汇(二 偏振参量)

参考自https://www.radartutorial.eu/15.weather/wr20.en.html 双偏振雷达 使用双偏振是区分冰雹和雨滴的一种方法。雷达发射和接收线性极化电磁波信号,并在水平和垂直偏振之间快速切换,在单个发射脉冲之间或在脉冲组之间交替。现代双偏振雷达通常同时传输两个偏振方向。示意…

第十章 自定义模块

10.1 导入模块 1.什么是python模块? ​ Python模块(Module),是一个Python文件,以.py结尾 模块可以定义函数,类和变量,模块里也能包含可执行的代码 2.模块的作用: ​ python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能 3.模块的导入方式: # 模块在使用…

雷达气象相关词汇(一 扫描模式)

参考自https://www.radartutorial.eu/15.weather/wr20.en.html https://en.wikipedia.org/wiki/Plan_position_indicator PPI(平面位置显示) A plan position indicator (PPI) is a type of radar display that represents the radar antenna in the center of the display, wi…

searchLights 动画

LOGO扫光效果.logo { width: 200px; height: 70px; display: flex; line-height: 70px; position: relative; overflow: hidden } .logo img { width: 100%; height: 70px } \3c p>.logo:before { } \3c br> @-webkit-keyframes searchLights { } \3c br> @-o-keyfram…

JavaWeb后端开发2024-08-08

Maven Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。Maven作用 依赖管理统一的项目结构项目构建仓库安装Maven<mirror> <id>alimaven</id> <name>aliyun maven</name> <u…

Golang语言之gRPC程序设计示例

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.RPC协议介绍1.什么是RPC2.什么是GRPC3.安装gRPC环境3.1 使用gRPC的前提3.2 安装protoc3.3 安装go plugin二.Protocol Buffer的使用指南1.使用Protocol Buffer的基本流程概述2.编写产品服务等proto文件…

迅雷赚钱宝1代刷OpenWRT单网口接在主路由下,内网访问正常,外网无法访问的解决办法。

1. 问题缘由OpenWRT单网口NAS(迅雷赚钱宝1代),接在主路由下面提供NAS服务,配置有基于eth0的DHCPv6Client来获取IPv6公网IP,以实现通过IPv6公网,提供对外的NAS服务。发现在局域网访问DDNS-go的管理界面9876端口正常访问,DDNS-go已允许外网访问,但通过手机数据流量模拟外…

c#农历开源库

https://6tail.cn/calendar/api.html非常牛逼 Unity将当前时间转为天干地支using System; using Lunar; using UnityEngine;public class GanZhiTimeConverter : MonoBehaviour {private void Start(){var solar = Solar.FromDate(DateTime.Now);Debug.Log(solar.Lunar.YearInG…

关于算法竞赛,青岛农业大学ACM实验室简介

大家好,我是青岛农业大学ACM实验室的杨兴睿,一名帅气的acmer~( ̄▽ ̄~)(~ ̄▽ ̄)~,尽管你在官网或者其他地方看过各种各样天花乱坠的宣传,我可以很明确的告诉你那是不真实的,今天用这篇博客给大家介绍一下最真实的ACM实验室。 我们先从算法竞赛开始讲起吧,算法竞赛也是…

18. 内置函数

1. 概念 内置函数是python解释器自带的函数,不需要导入模块就能使用,69个官网介绍https://docs.python.org/3/library/functions.html#staticmethod 2. 数据类型转换  8个(1)整数类型转换 int# 将内容为整数的字符串转换为整型 a = 666 print(int(a)) # 666(2)浮点数…

全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系

对象是某个类型的实例,是内存中的实体,有类型和属性;在Python中,类型本身也是对象,所有的类型(类)都是type类型的实例。全网最适合入门的面向对象编程教程:33 Python 的内置数据类型-对象 Object 和类型 Type 的关系摘要: 对象是某个类型的实例,是内存中的实体,有类…