前言
接樓宇自動化的案子,最先遇到的不是技術問題,是考古問題:這棟樓的空調是十年前裝的,電錶是三年前換的,電梯和發電機各有自己的控制器,每一批都由不同的廠商、在不同的年份、用不同的通訊協定接進來。
然後有人問:「那要不要全部換成同一種?」
答案幾乎都是不要。換掉能用的設備去遷就系統,成本遠高於讓系統去讀懂它們。BACnet 的空調和 Modbus 的電錶共存是常態,不是例外。
這篇講三種協定的實際差別,以及混在一起時真正會出事的地方。
一、三種協定,一句話的差別
| 設計給誰用 | 關鍵差異 | |
|---|---|---|
| BACnet | 樓宇自動化 | 有語意模型 —— 設備自己說得出「我是一個溫度輸入,單位是攝氏」 |
| Modbus | 工業設備 | 只有暫存器編號 —— 位址 40001 是什麼意思,協定本身不知道 |
| S7 | 西門子 PLC | 廠商專有,讀的是 PLC 內部的資料區塊 |
這張表裡最重要的是中間那一列,下一節整節都在講它。
二、Modbus 最大的風險不是技術,是那份點表
BACnet 的設備可以被「探索」:你接上去,它會報出自己有哪些物件、每個物件是什麼型別、單位是什麼。系統照著建畫面就好。
Modbus 沒有這一層。Modbus 傳回來的就是一串數字,位址 40001 的值是 235。這個 235 是攝氏 23.5 度、是 235 kW、還是一組狀態位元,協定本身完全不知道 —— 意義全部寫在廠商給的點表(point list)上。
所以現場真正會出事的情境是這個:
- 設備還在正常運轉,但當年那份點表找不到了
- 原廠換過韌體,點表版本對不上,讀出來的數字看起來合理但其實是別的量測值
- 點表有,但只有 PDF 掃描檔,欄位是人工看著打進系統的
第二種最危險,因為它不會報錯。溫度讀成 23.5 度,畫面上一切正常,只是那其實是另一支感測器的值。
所以接 Modbus 設備的第一個動作永遠是要點表,而且要問清楚是哪一版韌體對應的。沒有點表的 Modbus 設備,從系統的角度等於讀不到 —— 不是讀不出數字,是讀出來的數字不能信。
三、BACnet 的兩種實體層,別搞混
BACnet 常見有兩種跑法,名字很像但佈線完全不同:
- BACnet/IP —— 走乙太網路,跟一般網路設備同一套佈線與網段規劃
- BACnet MS/TP —— 走 RS-485 串列匯流排,要考慮鏈路長度、終端電阻、站號不能重複
MS/TP 那條在既有大樓非常常見,因為它是當年拉線最便宜的做法。它的實務限制跟 Modbus RTU 是同一類:整條匯流排共用頻寬,掛的設備越多輪詢一圈越慢。如果有人要求「每秒更新」,先算一下那條線上掛了幾台。
四、S7:西門子自己的世界
西門子 PLC 用的是自家協定,讀的是 PLC 裡的資料區塊。它的特性是:效能好、資料結構清楚,但你得先拿到程式裡的位址配置。
這跟 Modbus 的點表問題是同一類,只是換了個名字:沒有當初寫 PLC 程式那份文件,你能連上去,但不知道哪一個位址代表什麼。差別在於 PLC 通常還有原廠或原施工廠商可以問,而十年前的 Modbus 電錶往往連廠商都收掉了。
五、混在一起真正的難題:不是協定,是斷線
把三種協定讀進來,技術上是解過的問題。真正會在半夜叫你起床的是另外兩件事。
通訊中斷之後要自己回來
現場的網路會斷。交換器重開、RS-485 線被施工碰掉、PLC 斷電重啟 —— 這些都不是異常,是日常。系統要能在連線恢復之後自己接回去,而不是等人去按重新整理。
我們在示範案場的實機上就是刻意跑這一段(這套系統的完整介紹在 SynBA 樓宇自動化):控制寫入、通訊中斷重連、PLC 心跳保護的失聯與復原,八個子系統各自建畫面(實景照片、樓層平面圖、系統圖三種底圖)之後,逐一在真設備上驗過。因為這種行為沒辦法用模擬器驗 —— 模擬器不會用真實設備的方式壞掉。
心跳保護:系統掛了,設備該怎麼辦
這是最容易被跳過、但後果最嚴重的一件事。假設監控主機當機了,現場的 PLC 該維持現狀、還是回到安全狀態?
這個問題必須在寫第一行控制邏輯之前回答,而且答案要做在 PLC 裡,不是做在監控主機裡。主機都掛了,做在主機裡的保護邏輯自然也一起掛了。常見做法是主機定期送心跳給 PLC,PLC 在一段時間沒收到心跳時自行切換到預設的安全狀態。
六、評估的時候該問什麼
如果你正在評估樓宇自動化系統,這幾個問題比「支援幾種協定」有用:
- 三種協定能不能跑在同一台主機上?不行的話,你會為了幾台奇怪的設備多買一整套系統
- Modbus 設備的點表怎麼匯入?手打幾百個位址跟匯入一份檔案,是兩種工期
- 斷線重連驗過沒有?問「在真設備上測過嗎」,不要問「支援嗎」
- 心跳保護做在哪一層?答案是「主機」的話,請對方再想一次
- 第二個案場的導入成本是多少?如果跟第一個一樣,代表這套系統沒有複用機制
最後一點是分辨「產品」和「專案」的方法。靠設備模板加案場設定來複用的系統,第二個案場會明顯便宜;每次都重寫一遍的,不會。SynBA 就是照這個原則做的。
我們會先問你三個問題
- 這棟樓現在有哪些子系統,各是誰裝的?這決定了考古的工作量
- Modbus 設備的點表還找得到嗎?找不到的話,先把這件事排進時程,它比寫程式久
- 你要的是看,還是要控?只看狀態跟能下控制命令,安全要求是兩個量級

