メインコンテンツまでスキップ

M-Bus (メータリング)

M-Bus (Meter-Bus) は EN 13757 で標準化されたユーティリティメータリング専用の通信規約です。熱量計 / ガスメータ / 電力量計 / 水道メータが主力市場です。

ゲートウェイの M-Bus ドライバは M-Bus over TCP (M-Bus master ゲートウェイを介して wireless または wired メータから TCP に変換された形態) をサポートします。


登録フォームの入力値

入力欄何を入力するか
IP アドレスM-Bus ゲートウェイの IP192.168.0.150
ポートM-Bus TCP ポート10001 (Relay / Sentec / ETM 系メーカーの標準)
ボーレート (baudrate)ゲートウェイ ↔ メータ2400 (標準) / 9600
応答タイムアウト (request-timeout)メータ応答の待機 (ms)5000
メータ 1 台 vs 複数台

M-Bus の 1 ラインには最大 250 台のメータを接続できます。ゲートウェイは 1 つの「接続」に複数のメータを同時登録できるよう、メータ単位のアドレス (primary または secondary) をタグ側の表記に含めます。


タグの PLC アドレス表記

M-Bus はメータごとに多様な「レコード」(instantaneous value、積算値、単位など) を持ちます。表記は <meter>:<record> の 2 つの部分に分かれます。

メータの選択

表記意味
addr:5Primary address 5
select:12345678:KAM:01:04Secondary 選択 — <id>:<mfg>:<ver>:<med>
select:12345678Secondary 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 の値データ形式形式補助
積算値 / 測定値 (実数)FloatREAL
整数型カウンタIntegerDW (32-bit) または (空欄)
単位 / メーカーコードStringSTR[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 応答を確認しインデックスをマッピング
Primary と Secondary のどちらを使うか

1 ラインにメータが 5〜10 台以内であれば primary が簡単です。100 台以上を運用する場合や primary が動的に変わるシステムであれば secondary (シリアルベース) が安定します。


よく使う例

熱量計 (heat meter) 1 台の標準的な登録:

タグ名アドレスデータ形式形式補助
積算熱量 (kWh)addr:5:1:0FloatREAL
積算流量 (m³)addr:5:2:0FloatREAL
瞬時出力 (kW)addr:5:3:0FloatREAL
往き温度 (°C)addr:5:4:0FloatREAL
還り温度 (°C)addr:5:5:0FloatREAL
メータ製造番号addr:5:0:idStringSTR[8]

より詳しい例 / 自動化登録

高度な設定 — REST API の M-Bus の例を参照してください。