概要
BACnet はビル管理システム(BAS)の標準オープンプロトコル。BACnet MS/TP(Master-Slave/Token-Passing)は、BACnet を RS-485 の差動2線の上で走らせるためのデータリンク層である。
オフィスビルの天井裏にある FCU(ファンコイルユニット)1台ごとに専用コントローラが付いており、その多くが MS/TP を喋る。つまり「既設の空調設備から値を読みたい」という IoT 案件は、かなりの確率で RS-485 と BACnet のオブジェクトモデルを相手にすることになる。
3層構成で捉える
FCU コントローラ単体を見ても IoT からどう触るかは見えてこない。効くのは次の3層の関係である。
| 層 | 中身 | プロトコル |
|---|---|---|
| 現場側 | FCU 本体、温度センサ、居住者が触る設定器、汎用 DI/DO | センサ線・専用シリアル(BACnet ではない) |
| RS-485 幹線 | FCU / VAV コントローラがマルチドロップ接続 | BACnet MS/TP |
| BACnet/IP 側 | 上位コントローラが MS/TP と IP を橋渡し。中央監視・IoT GW が乗る | BACnet/IP |
MS/TP の仕組みと設計パラメータ
トークンパッシング
イーサネットのような衝突検出ではなく、トークンを回して送信権を渡す。トークンを持つデバイスだけが送信し、済んだら次の MAC アドレスへ渡す。半二重2線で複数機器がぶつからずに喋るための素直な解決策だが、代償として帯域のかなりの部分がプロトコルのオーバーヘッドに消える。
76.8 kbps という数字から「1秒に何点読めるか」を単純計算しても当たらない。 実効スループットはトークンの周回時間に支配され、それは台数と各機器の応答時間で決まる。
Max_Master
MS/TP の設計で最も効くパラメータ。「ピアを探すときにどの MAC アドレスまで探しにいくか」の上限で、マスタの MAC は 0〜127、既定値は 127 が多い。
各マスタは次のマスタまでの空きアドレスに Poll For Master(PFM)フレームを投げ、応答がなければタイムアウトを待つ。この PFM サイクルはトークンが50回渡るごとに開始される。MAC 1〜10 の10台しかない幹線で Max_Master を127のままにすると、11〜127 の117個ぶんの空振りとタイムアウトを定期的に払い続ける。
ただし逆方向の副作用がある。
- 下げすぎるとそれより大きい MAC の機器を発見できなくなる — 増設の余地を残した値にする
- 全機器で同じ値に揃える必要がある。1台だけ127のまま残るとその機器が上位アドレスを探し続けて効果が消える
- ボーレートも同様に、幹線上の全機器が同一速度でなければ通信が成立しない
物理配線
- RS-485 は差動2線のマルチドロップ。スター配線・分岐はできない。デイジーチェーンで数珠つなぎにする
- 幹線の両端に 120 Ω の終端抵抗を入れる
- 分岐が必要なら専用の T 分岐ユニットを使う。任意の場所で線を割いてよいわけではない
- コネクタは RJ-45 モジュラで LAN ケーブルで配線できる。見た目はイーサネットだが中身は RS-485 なので、スイッチングハブに挿す事故が現場で実際に起きる
台数設計
「1本に何台つなげるか」は電気的上限・帯域・機器ごとのオブジェクト数の3つで決まる。アズビルの上位コントローラ側の条件では、自社デバイスのみで 50台/CH、他社デバイスのみ(76.8 kbps・30点/デバイス)で 31台/CH。
この差は台数上限が電気的制約ではなく帯域で決まることを示す。「オブジェクト数30点/1デバイスの場合」という条件が付いているのがその証拠で、1台あたりの点数が増えれば収容台数は減る。マルチベンダー幹線は、カタログの最大台数ではなく総オブジェクト数で見積もる。
IoT の接続点は BACnet/IP 側に置く
RS-485 幹線に直接ぶら下がるか、上位の BACnet/IP に乗るかの2択だが、実務ではほぼ後者になる。
- 実装コスト — Python の定番ライブラリ BAC0(基盤は BACpypes)は BACnet/IP を前提にしており、MS/TP を直接喋れない。MS/TP を扱うならシリアルスタックを自前で用意するか、MS/TP ⇔ BACnet/IP ルータを噛ませる
- 運用リスク — 稼働中の MS/TP 幹線への機器追加は、MAC 重複・Max_Master 不整合・終端抵抗の位置・トークン周回時間の悪化のどれもが空調を止めうる。すでに BAS が動いている幹線に IoT を割り込ませるのは原則避ける
読み出しはポーリングか COV(Change of Value)購読を選ぶ。繋がらないときの切り分けには mstpcap + Wireshark を使う。
形番が仕様を決める
ビル設備機器では形番の各桁が機能を表す。アズビル形WJ-1202 の場合、バルブ ON/OFF タイプは外部接点なしのみ、還水温度入力コネクタがあるのは特定形番のみ、DI/DO 端子台があるのは特定形番のみ、といった条件が並ぶ。
つまり「この現場の FCU コントローラから DI の状態も取れるか」は製品名ではなく銘板の形番を読まないと分からない。既設設備の調査では、盤を開けて形番を全部控えるのが最初の作業になる。
なお温度入力は 4〜20 mA でも I2C でもなく 測温抵抗体 Pt100 / Pt1000。ビル設備の伝統的な流儀であり、形番ごとに入力の種類が固定されている。
関連ページ
ソース記事
- FCU コントローラは BACnet MS/TP で喋る — ビル空調の末端を IoT から読むための配線とプロトコル — 2026-08-31
- 日本のビルオートメーション(BAS)はなぜアズビルとジョンソンコントロールズの寡占なのか — 2026-08-31