Knx ip协议和Java实现
Knx ip協議和Java實現
- Knx ip協議和Java實現
- 介紹
- 那么什么是KNX?
- KNX 網絡
- KNX 電報
- 返回 KNXnet/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) 進行編碼。連接類型決定了交換哪些電報以及交換規則是什么。
Java實現
github地址
總結
以上是生活随笔為你收集整理的Knx ip协议和Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法设计与分析】02 货郎问题与计算复
- 下一篇: 思维模型分享