1. KNXプロトコル階層化(OSIモデルの簡素化)
KNXプロトコルは主にOSIモデルの簡略版4つのレベルに分かれている。
| OSIレイヤ | KNXの実装 | 機能の説明 |
|---|---|---|
| 物理層は | TP(ツイストペア)、RF、IP | 物理メディア(KNX TP1バス、無線周波数、KNXnet/IPトンネルなど)を定義します。 |
| データリンク層 | KNX Data Link Layer | バス調停、衝突検出、フレーム検証(チェックサムなど)を管理します。 |
| ネットワーク層 | KNX Network Layer | ルーティング(マルチキャスト/ブロードキャスト)、アドレスフィルタリング(物理アドレスとグループアドレス)を処理します。 |
| アプリケーション層 | KNX Application Layer | データセマンティクス(DPTタイプなど)、デバイス間の相互作用ロジック(読み取り/書き込み/応答)を定義します。 |
2.通信モード
(1)マルチキャスト(グループコミュニケーション)
- 目的はデバイスはグループアドレスにデータを送信し、そのグループアドレスに加入しているすべてのデバイスが受信して処理します。
- 特徴は照明制御、シーントリガーなどに適した効率的な1対多通信。
- 例:例:
グループアドレス1/2/3ライトコマンドを受信し、このアドレスにバインドされたすべてのライトが動作します。
(2)ポイントツーポイントPoint-to-Point
- 目的はデバイスは物理アドレスを介して直接通信します(構成、診断など)。
- 特徴はデバイスの初期化または保守に使用するターゲット物理アドレスを明示的に指定する必要があります。
- 例:例::中央設備
0.0.1センサーに向かって1.1.10温度データの要求
3.メッセージの種類
KNXメッセージの分割標準フレームL_Dataそして、“フレームの拡張”L_Data Extended:
| タイプの種類 | 制御フィールド値 | データ長の制限 | 適用可能なシーン |
|---|---|---|---|
| 標準フレーム | 0xBC | <15バイト | 一般制御命令(スイッチ、パーセント) |
| 拡張フレーム | 0xBF | 25 5バイト | ビッグデータ転送(ログ、構成など) |
4.アドレス構造
(1)物理アドレス
- フォーマット形式:
エリア4bit.ライン4bit。デバイス8 bit→ 2バイト。 - 例:例:
1.2.3→0x12 0x03(バイナリ)0001 0010 0000 0011)。 - 目的は:ポイントツーポイント通信またはデバイス構成に使用されるデバイスを一意に識別します。
(2)グループアドレス
- フォーマット形式:
主グループ5bit/中間グループ3 bit/サブグループ8 bitまたはメイングループ5bit/サブグループ11 bit→ 2バイト。 - 例:例:
3/2/1→0xE3 0x21(バイナリ)1110 0011 0010 0001)。5/2047→0xA5 0xFF(バイナリ)1010 0101 1111 1111)。- 目的は:論理グループ化、デバイスサブスクリプショングループアドレスは、1対多通信を実現します。
5.データ表現APDU
(1) DPT(Data Point Type)
KNXの採用DPTの標準データ·セマンティクスの定義形式主なタイプ。サブタイプ(例えば、DPT 1.001ブールスイッチ):
| DPTの例 | データ長さ | 説明書は |
|---|---|---|
| DPT 1.001 | 1 bit | boolean(0=オフ、1(オープン)。 |
| DPT 5.001 | 1バイト目 | パーセンテージ(0x00=0%,0xFF=100%)。 |
| DPT 9.001 | 2バイト。 | 温度(浮動小数点など)0x0C00=24°C)。 |
| DPT 16.001 | 14バイト | 文字列ASCIIエンコードなど"KNX")。 |
(2)APDU構造
- TPCI(Transport Control)メッセージの種類(データ要求、確認など)をマークする1バイト。
- APCI(Application Control)操作タイプ(読み取り、書き込み、応答)を定義する1バイト。
- データ負荷:DPT符号化による実データ。
例:例:
- スイッチ書き込みコマンド:
TPCI= 0 x 00书き込み,APCI=0x80(DPT 1.001)データ=0 x 0 1(オープン)。 - 温度読み取りリクエスト:
TPCI= 0 x 40読み取り,APCI= 0 x 00データなし。
6.通信サービス
(1)ポーリング
- マスターデバイスは、スレーブデバイスにデータを積極的に要求します(センサーの状態を照会するなど)。
- メッセージの例:
制御フィールド= 0 xBC,宛先アドレス=センサーの物理アドレス,APCI= Read Request。
(2) 確認(Acknowledge)
- 受信側は、信頼性を確保するためにACK(肯定応答フレーム)を返信する必要があります。
- 例:例制御コマンドを受信して戻る
ACKメッセージ(0 x B 0)。
(3)再試行メカニズム
- ACKが受信されない場合、送信者は指定されたタイムアウト後にメッセージを再送信します(通常は最大3回)。
7.セキュリティメカニズム
- 伝統的なモデル:暗号化なし、物理層セキュリティ(バスアクセス制御など)に依存します。
- KNX Secureデータ暗号化(AES-128)と認証を追加し、改ざんや盗聴を防止します。
- セキュリティメッセージの例:標準フレームに暗号化負荷とMAC(メッセージ認証コード)を追加します。
8.実際のデバッグの推奨事項
- バッグ·ツール。Wireshark +の使い方KNXプラグインバストラフィックを分析し、特定のグループアドレスをフィルタリングします。
- エラーチェック。:
- チェックサムエラー:メッセージの不一致または結果をチェックします。
- アドレス競合物理アドレスとグループアドレスが一意であることを確認します。
- ETSの構成:ETSプロジェクトでDPT型をバインドし、データ解析エラーを回避します。
KNXプロトコルでは、メッセージタイプは主にコントロールフィールドそして、TPCI(Transport Control Information)異なるメッセージタイプは、異なるシナリオ(制御命令、データ要求、応答など)に適しています。一般的なKNXメッセージタイプの詳細な説明と例を以下に示します。
1.標準フレームL_Data Standard
- コントロールフィールド:
0xBC - データ長さ<<15バイト
- 適用可能なシーン:通常の制御命令(スイッチ、パーセンテージ、状態読み取りなど)。
例:スイッチ制御
BC 11 0A E1 03 01 01 80- コントロールフィールド
0xBC標準フレーム、通常の優先度。 - ソース·アドレス
0x110A(1.1.10)。 - 宛先アドレス
0xE103(1/2/3のグループアドレス) - データは
0x01スイッチ状態(オン)。 - チェックサム
0x80異なるか計算された結果。
2.“フレームの拡張”L_Data Extended
- コントロールフィールド:
0xBF - データ長さ>> 25 5バイト
- 適用可能なシーンビッグデータ転送(文字列、ログ、複雑な構成など)。
例文字列の送信
BF 23 05 E2 51 0E 10 4B 4E 58 20 54 65 73 74 00 00 00 5C- コントロールフィールド
0xBF優先度の低い拡張フレーム。 - ソース·アドレス
0x2305(2.3.5)。 - 宛先アドレス
0xE251(2/5/1) - データ長さ
0x0E14バイトのデータです - データは
0x10 4B 4E 58 20 54 65 73 74 00 00 00: - DPT 16.001文字列、内容は
"KNX Test"(ASCIIコード) - チェックサム
0x5C計算してください。
3.確認応答フレーム(ACK/NACK)
- コントロールフィールド:
0xB0(ACK)または0xB1(NACK) - 構造は:データ部分なし、制御フィールドとチェックサムのみ。
- 適用可能なシーン:受信者が確認または拒否を返す。
例:ACK確認
B0 00 00 00 00 00 00 B0- コントロールフィールド
0xB0:確認フレーム(ACK)。 - チェックサム
0xB0自分だけの違いや結果は0xB0。
4.ポーリングリクエスト
- コントロールフィールド:
0xBC(標準フレーム) - TPCI:
0x40(リクエストを読む) - 適用可能なシーン:マスターデバイスがスレーブデバイスのデータをアクティブに要求します。
例温度センサデータの読み取り
BC 00 01 12 34 01 40 00 2D- ソース·アドレス
0x0001(ユニット0.0.1)。 - 宛先アドレス
0x1234(センサーの物理アドレスは1.2.5 2) - データ長さ
0x01データの1バイト。 - TPCI+APCI
0x40:読み取り要求(データ負荷なし)。 - チェックサム
0x2D計算してください。
5.レスポンスフレーム
- TPCI:
0x80(回答を書く)0xC0(回答を読む) - 適用可能なシーン:デバイスが要求に応答するデータまたはステータス。
例温度センサーがデータを返す
BC 12 34 00 01 02 06 00 5C- ソース·アドレス
0x1234(センサーアドレス1.2.5 2) - 宛先アドレス
0x0001(ユニット0.0.1)。 - データ長さ
0x022バイトのデータ。 - データは
0x0600温度値(DPT 9.0 01、24.0°C)。 - チェックサム
0x5C計算してください。
6.ブロードキャストフレーム
- 宛先アドレス:
0x0000(アドレスゼロ) - 適用可能なシーン:デバイスは、バスのすべてのノードにグローバルコマンドを送信します(システムリセットなど)。
例グローバルリセット命令
BC 00 01 00 00 01 FF 01- ソース·アドレス
0x0001(中央設備)。 - 宛先アドレス
0x0000放送アドレス。 - データは
0xFFリセット命令(カスタム符号化)。
7.セキュリティメッセージ
- コントロールフィールド:
0xBCまたは0xBF(暗号化マークと組み合わせる) - 構造は:標準フレームに暗号化負荷とMAC(メッセージ認証コード)を追加します。
- 適用可能なシーンデータの改ざんや盗聴を防止する。
例(簡略化された暗号メッセージ)
BC 11 0A E1 03 10 01 80暗号化] MAC] 2A- データのセクション:平文データ
0x01より長いバイトに暗号化される。 - MAC:データの整合性を検証するために使用されます(AES-128計算など)。
主な比較表
| メッセージの種類 | コントロールフィールド | データ長さ | TPCI | 典型的なシーン |
|---|---|---|---|---|
| 標準フレーム | 0xBC | <15バイト | 0x00 | スイッチ制御、パーセンテージ調整 |
| 拡張フレーム | 0xBF | 25 5バイト | 0x00 | 長いテキスト、複雑な構成 |
| ACKの確認 | 0xB0 | なしなし。 | - | 成功応答の受信 |
| NACKリジェクト | 0xB1 | なしなし。 | - | 受信失敗応答 |
| リクエストを読む。 | 0xBC | 1バイト目 | 0x40 | センサデータのアクティブな要求 |
| 応答を書く。 | 0xBC | Variableシングル | 0x80 | デバイスステータス更新の確認 |
| ブロードキャストフレーム | 0xBC | Variableシングル | 0x00 | システムレベルの命令(リセットなど) |
注意事項について
- TPCIとAPCI:
- TPCI(トランスポート制御)は、メッセージタイプ(読み取り、書き込み、応答)をマークします。
- APCI(アプリケーション制御)は、特定の操作(DPTタイプなど)を定義します。
- アドレスフィルタリングデバイスは、宛先アドレス(物理アドレスまたはサブスクライブグループアドレス)に一致するメッセージのみを処理します。
- チェックサム常に先頭のすべてのバイトの排他的和
これらの例が、KNXの異なるメッセージタイプの書き方を理解するのに役立つことを願っています。公式プロトコル文書とETSツール検証の組み合わせを推奨します。
次の例を示します。
例1スイッチ制御標準フレーム
シーンはこちら物理的な住所1.1.10のデバイス宛グループアドレス1/2/3照明の指示を出す。
メッセージメッセージ:
BC 11 0A E1 03 01 01 80- コントロールフィールド
0xBC標準フレーム、通常の優先度。 - ソース·アドレス
0x110A:機器のアドレス1.1.10。 - 宛先アドレス
0xE103:グループのアドレス1/2/3(E1グループアドレスタイプを表します。 - データ長さ
0x01データの1バイト。 - データは
0x01スイッチの状態(0x01=オープン、0x00=オフ)。 - チェックサム
0x80:BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80。
例2温度センサーデータ拡张フレーム
シーンはこちら::センサー2.3.5温度の報告22.5°Cグループアドレスへ2/5/1。
メッセージメッセージ:
BF 23 05 E2 51 02 06 00 5C- コントロールフィールド
0xBF優先度の低い拡張フレーム。 - ソース·アドレス
0x2305:機器のアドレス2.3.5。 - 宛先アドレス
0xE251:グループのアドレス2/5/1。 - データ長さ
0x022バイトのデータ。 - データは
0x0600: - DPT 9.0 01(温度)コードは
0x0600→22.5°C(浮動小数点形式) - チェックサム
0x5C計算してください。
例3シーンコントロールマルチバイトデータ
シーンはこちら::中央設備0.0.1トリガーシーン3(グループアドレス)5/0/3)。
メッセージメッセージ:
BC 00 01 E5 03 03 03 00 00 6F- コントロールフィールド
0xBC標準フレームです。 - ソース·アドレス
0x0001センターアドレス:中央アドレス0.0.1。 - 宛先アドレス
0xE503:グループのアドレス5/0/3。 - データ長さ
0x03データの3バイト。 - データは
0x030000:シーン番号3、追加パラメータ。 - チェックサム
0x6F計算してください。
キーポイントKey Point
- アドレスコードアドレス:
- 物理アドレス:
エリア4bit.ライン4bit。デバイス8 bit2バイト(例えば)1.1.10→0x11 0x0A)。 - グループアドレス:
主グループ5bit/中間グループ3 bit/サブグループ8 bit2バイト(例えば)1/2/3→0xE1 0x03高さです。1110グループアドレス)。
- データ符号化:
- スイッチ:1バイト(
0x00=オフ、0x01(オープン)。 - 温度:2バイト浮動小数点(DPT 9.0 01など)。
- 1バイト(1バイト)
0x00=0%,0xFF=100%)。
- チェックサム前のすべてのバイトに対して排他的ORを実行する(例)
BC XOR 11 XOR 0A XOR E1 XOR 03 XOR 01 XOR 01 = 80)。
実用的な提案
- ETS KNX Engineering Tools Softwareを使用してデバイスを設定します。手動でパッケージ化する必要はありません。
- メッセージサンプルは主に基礎となるプロトコルを理解するために使用され、パッケージスクラッチツール(Wireshark + KNXプラグインなど)を使用してデバッグできます。
- 詳細な学習は、KNXの公式ドキュメント“KNX Standard”または書籍“KNX for IoT”を参照してください。
发表回复