楼宇的各类协议
modbus 使用的最多,所有楼宇控制器都有
bacnet 美系代表,比knx占有率高
knx 欧系代表
longxs
bacnet
面向对象的协议
不需要特殊硬件的协议,可以使用485 以太网芯片,都可以开发
协议是开放的
knx
需要专用的芯片,专门的收发器
bacnet ip
基于UDP协议,不用建立TCP连接,所有的通讯,请求之前,不用提前建立连接。所以它的速度很快,不需要握手。上来就发。
bacnet ip 的主站(服务)没有支持多少个连接的说法。 端口是 oxBAC0 47808?
只要防火墙不封 bac0端口就行
只要扫描就能添加到主站配置上去
无法支持广播帧,如果跨交换器,需要bbmb
bacnet mstp
支持多个主站,多个从站
通讯需要令牌
bacnet网络结构
bacnet基本概念
如果是bacnet ip服务,那么需要ip和端口
如果是bacnet mstp服务,那么需要有个mac地址
mstp情况下
主站需要设置mac地址为 0-127
从站需要设置mac地址为 128-254
这个mac地址和以太网的mac地址不同
device instance 不能重复
一个segment里面mac地址不能重复
扫描设备的时候,需要知道设备的ip地址端口号,设备的对象类型实例号
访问对象的时候,需要提供对象描述符 Object Identifier,是个32位的值
对象的 Present Value 是当前值
bacnet 应用层服务
bacnet 请求报文中, Service Choice 表示请求类型,Service Qequest 需要包含 Object Identifier等等
读取的时候,不用告诉服务端,返回的数据类型是什么。服务端返回的时候是什么类型,就什么类型。
应答没有数据,就是 Simple ACK;有数据就是 Complex ACK
要么是请求,要么是响应。
所以不存在请求和响应都分段的情况。
扫描设备
Who—Is 主站发送谁在 1~65535范围内
I-Am 设备回复我是2 我是3 ......
如果设备配置重了,那么I-Am就会出现重复
设备instance在从站可以设置
以上都是广播帧
bacnet属于client-server结构
订阅时候,要指定lifetime。订阅开始后,从站立刻发了所有数据,2分钟时间内,如果没有值变化,从站不发送数据,如果有值变化,从站会发送数据。如果2分钟到了,就自动解散了。下次主站需要重新发送订阅请求。
可以订阅对象(所有属性),或者订阅对象的某个属性。
不经常变的,适合轮询。
经常变的,适合订阅 (COV)
写操作没有订阅,主站发送给从站
不同优先级的主站请求,优先级高的生效,优先级低的不生效;
如果同优先级的主站请求,后到的,生效。
bacnetip BBMD是个物理设备,相当于是个代理,帮助收集本网段内的所有设备的数据
BBMD都是要能知道其他BBMD是谁
bacnet ip协议,支持跨网段查询吗
BACnet/IP 协议本身并不直接支持跨网段通信,但在实际应用中可以通过特定的中间设备来实现跨子网通信。
为了使BACnet/IP设备能够在不同的IP子网间通信,BACnet协议引入了BACnet边界路由器(BBMD, BACnet/Broadcast Management Device)的角色。BBMD设备能够代理并转发BACnet广播消息到其他网络,从而实现了不同IP子网间的BACnet设备互相发现和通信的功能。
因此,借助BBMD,BACnet/IP协议可以间接地支持跨网段查询和其他通信操作。通过配置正确的路由规则和BBMD服务,位于不同IP子网的BACnet设备能够跨越这些子网边界进行交互。
BACnet/IP 协议工作过程中,一定要发广播吗
BACnet/IP 协议确实利用了广播机制来进行设备发现和服务请求,特别是在网络初始化阶段或者寻找特定服务时。例如,当一个BACnet/IP设备新加入网络或者需要查找特定的服务提供者时,会通过发送全局广播或多播消息来实现这一目的。
然而,并非所有BACnet/IP的工作过程都需要广播。一旦设备之间建立起联系,后续的通讯通常会转变为点对点(unicast)方式,比如读写具体对象属性值、执行控制命令等操作。对于跨网段通信,如前所述,会通过BBMD(BACnet Broadcast Management Device)进行中继,而不是直接广播。
总之,虽然广播是BACnet/IP协议的一个重要组成部分,但不是所有通讯都依赖广播,而是根据具体的应用场景和需求选择合适的通讯模式。
能不能跳过广播阶段,直接点对点通信
理论可以,可能实现的比较少。
在BACnet/IP协议中,如果已知目标设备的具体IP地址和端口号,确实可以直接进行点对点(unicast)通信,无需经过广播阶段。例如,在以下情况下:
在系统集成或编程阶段,你已经知道各BACnet/IP设备的网络地址,可以直接指定目标地址进行数据读取或控制操作。
设备之间之前有过通信历史,已经记录了对方的网络地址信息。
但是,在设备初次接入网络或者需要寻找新的服务提供者时,通常还是需要通过广播来发现和建立连接。这是因为BACnet/IP协议设计之初就包含了自动发现和自我描述的特性,以便于设备在网络中的自组织和协同工作。
总结来说,尽管在某些条件下可以直接进行点对点通信,但在实际应用中,广播功能仍然是BACnet/IP网络正常运行和设备间有效互连的重要组成部分。