Knx ip协议和Java实现
Knx ip协议和Java实现
介绍
KNXnet/IP 是一种通过 IP 网络(如本地 LAN 或 Internet)连接到 KNX 总线的协议。因此,让我们从KNX开始。
那么什么是KNX?
KNX 是楼宇自动化的开放标准。楼宇自动化是一个广泛的术语,涵盖了许多用例,包括但不限于:
- 打开窗户时关热。
- 根据室内空气质量控制通风。
- 使用单个开关打开或关闭所有光源。
- 根据光照水平自动调整窗帘(并在触发火灾报警时打开)。
为了实现所有这些不同的用例,许多不同的传感器和执行器需要能够进行通信。KNX标准规定了如何与此类设备建立网络,以及设备必须如何通信以确保互操作性。
KNX 网络
为了建立KNX网络,所有楼宇自动化设备都连接到总线,并通过在总线上发送和接收消息(称为电报)进行通信。示例网络可能如下所示:
这辆公共汽车上有三盏灯和四个开关。
总线上的每个设备都有一个唯一的单独地址(也称为物理地址)。单个地址是用点分隔的数字,例如交换机 A 具有单独的地址 3.4.1。在对设备进行编程时使用单独的地址,并识别给定电报的发送者。
除了单个地址之外,设备还可以与一个(或多个)组地址相关联。组地址是用斜杠分隔的数字,例如,交换机 A 与组地址 4/1/1 相关联。创建网络逻辑时使用组地址。当交换机 A 与 4/1/1 关联时,这意味着按下交换机将导致交换机向组地址 4/1/1 发送电报。
Lamp A 还与组地址 4/1/1 相关联 - 这意味着此致动器将侦听此地址上的电报。当它收到电报时,它将打开或关闭,具体取决于它收到的电报的内容。
因此,对于这个特定的网络,交换机A到C用于控制灯A到C,因为它们的组地址匹配。此外,所有灯都与4/4/1相关联,Switch X也与之相关联。这意味着Switch X可用于通过一次按压来控制所有灯具。
可以将组地址视为全局变量。连接到网络的任何设备都可以写入和读取这些变量。这样做只需要能够向网络发送电报。让我们仔细看看电报。
KNX 电报
当交换机(或其他传感器)需要告诉网络它已更改状态时,它通过向网络发送 GroupValueWrite 报文来实现此目的。电报将包含几个不同的字段,其中最重要的是:
服务:电报的类型。GroupValue在组写入的情况下写入。
发件人:发送消息的设备的个人地址。
目标地址:它所针对的组地址。
值:传感器上的新值。
如果在关闭状态时按上面的开关 A,它将发送如下电报:
服务:GroupValueWrite。
发件人:3.4.1。
目的地:4/1/1。
值:开。
网络上的每个设备都将接收电报,并且那些被编程为侦听此组地址的设备现在可以采取相应的行动。
**如果设备需要知道交换机 A 的状态,则必须向网络发送 GroupValueRead 电报。**假设 Lamp A 中的微控制器重新启动并丢失了其状态。它将发送如下电报:
服务:GroupValueRead.
发件人:2.4.1。
目的地:4/1/1。
值:不适用。
同样,所有设备都将收到该消息。由于交换机 A 拥有此组地址,因此它负责响应。它将通过发送 GroupValueResponse 来实现此目的:
服务:GroupValueResponse。
发件人:3.4.1。
目的地:4/1/1。
值:开。
如前所述,可以将组地址视为变量,因此它还具有与其关联的类型。这称为数据点类型(简称 DPT)。所有 DPT 都有一个名称和一个 ID(例如 具有 ID )。DPT 描述了几种不同的属性:DPT_TimePeriodMsec7.002
基本类型(例如,对于简单类型,布尔值,整数,浮点数,字符等 ) 对于日期时间等字段也可以是多值的。
值的有效范围(例如 )。0 ms … 65535 ms
单位(例如 )。ms
分辨率(例如 )。1 ms
值必须如何编码。
在一个组地址上解决的所有 GroupValueWrites 和 GroupValueResponses 的值将使用相同的 DPT 进行编码。由于电报中未指定数据点类型,因此只能通过将组地址映射到数据点类型来发现电报的正确解码方案。
返回 KNXnet/IP
如前所述,连接到总线的任何设备都将接收在其上发送的所有消息。事实上,有多种物理介质可用于创建 KNX 总线。总线通常基于连接所有不同设备的双绞线电缆,但也可以通过电力线电缆,中程无线电波和IP网络进行增强。KNXnet/IP 是用于在 IP 网络上扩展 KNX 总线的协议。
要使用 IP 网络扩充 KNX 总线,需要将 KNX IP 接口连接到总线。此 IP 接口充当 KNXnet/IP 服务器。服务器将侦听通过 的连接。UDP(可选也可选 TCP)。
要与 KNX 总线上的设备进行通信,客户端必须建立与 IP 接口的连接。客户端可以请求以下三种类型的连接之一:
管理,用于设备配置和管理。
隧道,由监控系统用于与 KNX 网络通信。
路由,用于在两个网络之间中继电报。
对于所有连接类型,都使用两个通信通道 - 核心和数据。核心通道用于在客户端和服务器之间建立连接,并通过常规检测信号进行维护。这适用于所有连接类型。
数据通道用于在客户端和 KNX 总线之间交换电报。电报使用通用外部消息格式 (CEMI) 进行编码。连接类型决定了交换哪些电报以及交换规则是什么。