Modbus網(wǎng)關許多技術方面都超出了我們的想象。但在現(xiàn)場使用 Modbus 時,不需要了解更精細的技術細節(jié),只需要知道Modbus是什么并合理使用它的價值。
集成網(wǎng)絡在樓宇管理系統(tǒng)中都變得越來越重要,因此,BMS 工程師都要求至少對協(xié)議有一個基本的了解。幸運的是,網(wǎng)上有詳細資料介紹您可能需要了解的有關Modbus 的所有信息;不幸的是,很多信息相互矛盾,而且通常并不是“所有”信息,有時會讓您束手無策。
這篇文章Modbus中的信息,以便您了解足夠多的信息,并希望應用您的項目中。
● 串行網(wǎng)絡 - RS485
● TCP/IP 網(wǎng)絡
最終結果是相同的,而且 Modbus 點寄存器通常是相同的,但兩種安裝之間存在差異,如果不僅僅是物理安裝的話。
串行 RS485 Modbus
要建立 RS485 Modbus 網(wǎng)絡,需要將雙絞線電纜從網(wǎng)絡主設備安裝到從設備。
通常,帶有屏幕的單雙絞線電纜就可以完成這項工作,但如今越來越多的制造商推薦使用雙絞線電纜。
推薦兩對電纜線的原因是使一對可用于發(fā)送/接收線,而另一對可用作屏蔽線或排擾線。這樣就可以覆蓋所有的基地。
通過 RS485 網(wǎng)絡連接 Modbus 設備時,它們應以菊花鏈形式連接在一起,不支持任何其他布線拓撲。
整個網(wǎng)絡中的連接應該保持不變:正對正,負對負。這些有時可能被標記為 A 和 B。如果這些被交叉,這可能會導致整個網(wǎng)絡癱瘓并在主控制器內(nèi)產(chǎn)生通信警報。
還值得一提的是,屏蔽電纜在整個網(wǎng)絡中應保持完好無損,并且僅在控制器端接地。
TCP/IP 網(wǎng)絡連接
根據(jù) cat5/6 的限制,每個網(wǎng)段的最大長度為 100m,Wi-Fi 可能會根據(jù)安裝的類型和質(zhì)量達到更長的距離。
當通過其他網(wǎng)絡進行通信時,需要在防火墻上打開一個通信端口,默認端口是:502,但如果需要,可以更改此端口。
在配置 TCP / IP Modbus 網(wǎng)絡時,每個設備都需要使用網(wǎng)絡上可用的唯一 IP 地址進行編程。
上表是一個有用的參考點,因為制造商的文獻通常不會說明該點是什么類型的寄存器。根據(jù)您使用的系統(tǒng),您可能無法在您包含的模擬可寫對象上搜索輸入寄存器;這是因為輸入寄存器是只讀的。
將線圈點視為可寫的數(shù)字點,例如數(shù)字輸出。
讀取線圈點時,您將看到真或假反饋值。它可以是兩種狀態(tài)之一,僅此而已。這同樣適用于當你寫到這一點時,你可以把它設為真或假。線圈點通常是設備內(nèi)用于觸發(fā)某些功能的數(shù)字點。
● Modbus 功能代碼 1 = 讀取線圈
● Modbus 功能代碼 5 = 寫入單個線圈
● Modbus 功能代碼 15 = 寫入多個線圈
連接 Modbus 串行設備時,每個網(wǎng)絡限制為 32 個;由于主設備占用了網(wǎng)絡上的地址,因此上述示例將分類為 4。如有必要,可以通過在網(wǎng)絡上使用中繼器和助推器來解決此限制。
不論增強器和中繼器,串行網(wǎng)絡的最大長度不能超過1200m。
在某些情況下,可能需要在通信對上安裝終端電阻。通常,一個 120 歐姆的電阻可以正常工作,但如果需要,可以更準確地計算出來。越來越多的設備帶有內(nèi)置的端接跳線,可用于在需要時省去電阻的麻煩。
配置 RS485 串行 Modbus 網(wǎng)絡時,您需要在每個設備中設置以下內(nèi)容:
● 波特率
● 平價
● 停止位
● 數(shù)據(jù)位
這些通??梢酝ㄟ^板載跳線或軟件進行配置。在開始此類項目時,需要進行板載跳線需要設置,直接開箱即可完成,而不是安裝在天花板或現(xiàn)場任何地方要容易得多.
要建立 TCP/IP Modbus 網(wǎng)絡,所有設備必須在本地或通過網(wǎng)關連接連接到同一網(wǎng)絡。通常,這些將是使用以太網(wǎng)電纜和 RJ45 端的有線連接,盡管現(xiàn)在更多的設備通過 Wi-Fi 連接,但兩種解決方案都可以完成這項工作。
TCP / IP Modbus 并不像串行連接那樣每個網(wǎng)絡限制為 32 個設備,但是,每個主(客戶端)設備都有其自身的限制,在開始設計系統(tǒng)之前應進行檢查。
與 RS485 Modbus 網(wǎng)絡的另一個區(qū)別是使用的術語,當談到串行連接時,我們說“主從”,當談到 TCP / IP Modbus 時,我們說“客戶端和服務器”。
這些點類似于線圈點,除了它們是只讀的,就像數(shù)字輸入一樣。
讀取離散輸入時,它將反饋兩個值之一,它是真或假,僅此而已。根據(jù)設備的不同,它可能被標記為 1 或 0、開或關等。這些類型的點通常用于顯示控制器上數(shù)字輸入的狀態(tài)。
Modbus 功能代碼 2 – 讀取輸入狀態(tài)
輸入寄存器是由 16 位信息組成的只讀點。模擬輸入值將被歸類為輸入寄存器。
輸入寄存器可以進一步分類為有符號或無符號,由于 16 位限制,無論哪種方式,都存在可以顯示的最大信息量。
簽名寄存器可以從 -32,768 到 32,767。這對溫度傳感器很有用。
無符號寄存器可以從 0 到 65,536。這對于消耗量表很有用,因為不需要負值。
Modbus 功能代碼 4 – 讀取輸入寄存器
保持寄存器是由 16 位信息組成的可寫點。模擬輸出值將被歸類為保持寄存器。
就像輸入寄存器一樣,保持寄存器也可以有符號或無符號。16 位保持寄存器與上面詳述的輸入寄存器具有相同的范圍限制
Modbus 功能代碼 3 = 讀取保持寄存器
Modbus 功能代碼 6 = 寫入保持寄存器
Modbus 功能代碼 16 = 寫入多個保持寄存器
這是配置 Modbus 網(wǎng)絡的鮮為人知的部分之一。以我的經(jīng)驗,這樣做的原因是因為字節(jié)順序通??偸?MSB > LSB,這是大多數(shù)控制器默認設置的。
● MSB = 最高有效位
● LSB = 最低有效位
這與控制器讀取組成寄存器的各個位的順序有關。正如我們前面所討論的,標準輸入或保持寄存器由 16 位組成,通常從位 0 到位 15 開始。
雖然這個設置經(jīng)常被遺忘,但重要的是您要意識到它,因為它會在讀取寄存器值時產(chǎn)生問題。
所有 16 位寄存器值都是使用二進制代碼讀取的,這就是存在最大值 65,535 的原因,即二進制的 16 個。
現(xiàn)在讓我們假設我們正在嘗試使用 Modbus 讀取寄存器值。我們已經(jīng)準備好網(wǎng)絡設置,所有設備都在線并且工作(嗯,接收值),但我們還沒有意識到這個設備首先使用 LSB 而不是 MSB。
默認情況下,我們將使用 MSB 順序(從左到右)讀取50,401的值
當設置為 LSB 時,我們讀取的值為34,595(從右到左)。
如果您沒有意識到這一點,您很容易浪費時間在數(shù)據(jù)表中尋找其他可能的寄存器來查找,當您一直都可以做到這一點時,只是字節(jié)順序阻止了您獲得正確閱讀。
僅供參考,我只是在上面的示例中使用了一組隨機的 1 和 0。要將這些轉(zhuǎn)換為讀數(shù),您可以使用計算器上的“程序員”設置。
如果某些設備使用 MSB 而其他設備使用 LSB,則在同一網(wǎng)絡上混合使用設備可能會給您帶來問題。一些控制器甚至允許您更改每個設備或點的字節(jié)順序設置,其他控制器只允許每個網(wǎng)絡。
容易吧?
根據(jù)經(jīng)驗,設置任何集成網(wǎng)絡最困難的部分是從您嘗試與之通信的設備中獲取正確的信息。制造商的文獻常常令人困惑并且缺乏關鍵信息。例如,為什么電表沒有 Modbus 標準?他們都提供相同的信息,但他們都給它貼上了不同的標簽?通常正是這種事情阻止了兩個設備之間的成功集成。
希望本文為您提供了對該主題的一些基本了解,并使您將來能夠成功集成多個設備。