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