M-Bus (メータリング)
M-Bus (Meter-Bus) は EN 13757 で標準化されたユーティリティメータリング専用の通信規約です。熱量計 / ガスメータ / 電力量計 / 水道メータが主力市場です。
ゲートウェイの M-Bus ドライバは M-Bus over TCP (M-Bus master ゲートウェイを介して wireless または wired メータから TCP に変換された形態) をサポートします。
登録フォームの入力値
| 入力欄 | 何を入力するか | 例 |
|---|---|---|
| IP アドレス | M-Bus ゲートウェイの IP | 192.168.0.150 |
| ポート | M-Bus TCP ポート | 10001 (Relay / Sentec / ETM 系メーカーの標準) |
| ボーレート (baudrate) | ゲートウェイ ↔ メータ | 2400 (標準) / 9600 |
| 応答タイムアウト (request-timeout) | メータ応答の待機 (ms) | 5000 |
M-Bus の 1 ラインには最大 250 台のメータを接続できます。ゲートウェイは 1 つの「接続」に複数のメータを同時登録できるよう、メータ単位のアドレス (primary または secondary) をタグ側の表記に含めます。
タグの PLC アドレス表記
M-Bus はメータごとに多様な「レコード」(instantaneous value、積算値、単位など) を持ちます。表記は <meter>:<record> の 2 つの部分に分かれます。
メータの選択
| 表記 | 意味 |
|---|---|
addr:5 | Primary address 5 |
select:12345678:KAM:01:04 | Secondary 選択 — <id>:<mfg>:<ver>:<med> |
select:12345678 | Secondary id のみ (mfg/ver/med はワイルドカード FF) |
mfg は 3 桁のメーカーコード (例: KAM = Kamstrup)、ver はファームウェアバージョン、med はメディウム (1=Oil、4=Heat、7=Water など) です。
レコード (data block index)
メータの応答には複数のデータブロック (DIB/VIB) が含まれ、順に 0, 1, 2, ... のインデックスが付きます。ゲートウェイはインデックス + サブフィールド表記で公開します。
| 表記 | 意味 |
|---|---|
1:0 | データブロック 1 の 0 番フィールド (通常は「現在値」) |
1:unit | データブロック 1 の単位 (文字列) |
1:tariff | データブロック 1 の tariff (料金区分) |
1:storage | データブロック 1 の storage number |
全体の表記例: addr:5:1:0 — primary 5 のメータのデータブロック 1 の値。
または: select:12345678:KAM:01:04:3:0 — Kamstrup 熱量計のデータブロック 3 の値。
データ形式のマッチング
| M-Bus の値 | データ形式 | 形式補助 |
|---|---|---|
| 積算値 / 測定値 (実数) | Float | REAL |
| 整数型カウンタ | Integer | DW (32-bit) または (空欄) |
| 単位 / メーカーコード | String | STR[8] |
| Tariff / Storage 番号 | Integer | (空欄) |
M-Bus メータは BCD / 32-bit 整数 / 64-bit 整数 / IEEE 実数など、多様なエンコーディングを混在して使用します。ドライバが DIB / VIB ヘッダにより自動デコードして「物理値」として公開するため、ほとんどの場合は Float : REAL で受け取れば十分です。
よくある問題と解決
| 症状 / メッセージ | 考えられる原因 | 解決 |
|---|---|---|
| 「Address not responding」 | primary が未使用 / 競合 | ゲートウェイ側の「M-Bus scan」で実際に応答する primary を確認 |
| 「Invalid secondary」 | secondary の 4 フィールド (id/mfg/ver/med) のいずれかの誤入力 | メータラベルの 8 桁シリアルと、ラベル記載の mfg 3 文字コードを再確認 |
| 値が大きすぎる / 小さすぎる (1000 倍) | scaling エラー | M-Bus は通常自動 scaling。それでもおかしい場合は 計算式 で補正 |
| 「Timeout」が頻発する | ボーレート不一致 | ゲートウェイ ↔ メータのボーレートを統一 (ほとんどが 2400) |
| データブロック番号が不明確 | メータごとに順序が異なる | ゲートウェイの「M-Bus telegram view」で raw 応答を確認しインデックスをマッピング |
1 ラインにメータが 5〜10 台以内であれば primary が簡単です。100 台以上を運用する場合や primary が動的に変わるシステムであれば secondary (シリアルベース) が安定します。
よく使う例
熱量計 (heat meter) 1 台の標準的な登録:
| タグ名 | アドレス | データ形式 | 形式補助 |
|---|---|---|---|
| 積算熱量 (kWh) | addr:5:1:0 | Float | REAL |
| 積算流量 (m³) | addr:5:2:0 | Float | REAL |
| 瞬時出力 (kW) | addr:5:3:0 | Float | REAL |
| 往き温度 (°C) | addr:5:4:0 | Float | REAL |
| 還り温度 (°C) | addr:5:5:0 | Float | REAL |
| メータ製造番号 | addr:5:0:id | String | STR[8] |
より詳しい例 / 自動化登録
高度な設定 — REST API の M-Bus の例を参照してください。