Modbus協(xié)議,作為工業(yè)物聯(lián)網(wǎng)領(lǐng)域中的重要協(xié)議之一,以其顯著的特點(diǎn)贏得了廣泛的認(rèn)可與應(yīng)用。
然而,正如任何技術(shù)都有其局限性和改進(jìn)空間一樣,今天我們將打破常規(guī),采取一種‘倒反天罡’的視角,不再專注其優(yōu)點(diǎn),而是 深入剖析并探討Modbus協(xié)議在實(shí)際應(yīng)用中可能遇到的一些不足之處 ,以期能更系統(tǒng)地理解這一協(xié)議,并為未來的技術(shù)選型與優(yōu)化提供參考依據(jù)。
1.數(shù)據(jù)讀取限制
讀個(gè)數(shù)據(jù)還得分批來?你需要有點(diǎn)兒耐心。
下面這張圖是ModbusRTU協(xié)議03功能碼讀取保持型寄存器的報(bào)文格式:
從這張圖上,我們可以看到從站返回?cái)?shù)據(jù)中有一個(gè)選項(xiàng)叫做數(shù)據(jù)個(gè)數(shù),這個(gè)數(shù)據(jù)個(gè)數(shù)就是我們之前說的字節(jié)計(jì)數(shù),它所占用的字節(jié)數(shù)是1。 那么意味著字節(jié)計(jì)數(shù)的最大值是255,返回報(bào)文中的字節(jié)計(jì)數(shù)是讀取寄存器數(shù)量的2倍,因此讀取寄存器的數(shù)量最大值是255/2=127。如果超過127個(gè),就得通過分組的方式來多次讀取。這個(gè)就會(huì)導(dǎo)致在一些數(shù)據(jù)量較大的場(chǎng)合,需要多次報(bào)文交互,才能完成所有的數(shù)據(jù)讀取,從而導(dǎo)致通信效率的降低。
如果當(dāng)初設(shè)計(jì)時(shí),字節(jié)計(jì)數(shù)為2個(gè)字節(jié),是不是意味著一次性可以讀取更多的數(shù)據(jù)?
2.不支持寄存器位級(jí)寫入
這個(gè)問題也是很多人比較頭疼的。
Modbus協(xié)議常用的8個(gè)功能碼中,并沒有直接支持寄存器的位寫入。當(dāng)需要對(duì)某個(gè)寄存器的特定位進(jìn)行置位或復(fù)位時(shí),操作會(huì)變得非常繁瑣。一種方法是先讀取整個(gè)寄存器的值,對(duì)需要修改的位進(jìn)行位操作后,再寫回寄存器。這種方法需要兩次通信,不僅增加了通信量,還可能引發(fā)數(shù)據(jù)一致性和安全性問題。另一種方法是用一個(gè)寄存器代替一個(gè)位,寫入1表示True,寫入0表示False。雖然這種方法可以在一次寫操作中完成,但會(huì)浪費(fèi)大量的寄存器空間,降低了資源利用率。
不僅是Modbus,其他很多協(xié)議也有同樣的問題。
但是西門子S7協(xié)議是支持單個(gè)位寫入的,對(duì)于那些需要頻繁操作單個(gè)IO點(diǎn)或內(nèi)部狀態(tài)位的場(chǎng)景,西門子S7協(xié)議可能是一個(gè)更加合適的選擇,它能夠大幅提升系統(tǒng)的整體性能和響應(yīng)速度。下面以S7協(xié)議無線以太網(wǎng)通信方案為例,介紹觸摸屏與兩臺(tái) PLC的無線S7協(xié)議通信實(shí)現(xiàn)過程。
當(dāng)然,每種協(xié)議都有其適用的場(chǎng)景和優(yōu)勢(shì),綜合考量通信效率、設(shè)備兼容性、開發(fā)成本等因素,選擇適合項(xiàng)目需求的協(xié)議才是關(guān)鍵。
4.不支持隨機(jī)讀寫
下面這張圖是三菱MC協(xié)議中的一段報(bào)文幀。
這段報(bào)文的含義是一次性讀取出D0、T0、M100-M115、X20-X2F、D1500-D1501、 Y160-Y17F、M1111-M1142。
Modbus協(xié)議不支持這樣的讀取操作,如果地址比較零散,就需要分很多批,這樣必然會(huì)導(dǎo)致通信效率的降低。
4.安全性堪憂
安全性?不存在的!
Modbus的安全措施幾乎為零,對(duì)黑客幾乎不設(shè)防,沒有加密、沒有認(rèn)證,簡直是網(wǎng)絡(luò)安全的“反面教材”。
這個(gè)其實(shí)和Modbus協(xié)議的使用場(chǎng)景有關(guān)。Modbus協(xié)議主要應(yīng)用在設(shè)備層的一些儀表及控制層的一些PLC控制器中,所以大部分情況下都是局域網(wǎng)的應(yīng)用,因此基本上不會(huì)出現(xiàn)黑客攻擊或者數(shù)據(jù)篡改之類的問題。
Modbus協(xié)議作為工業(yè)現(xiàn)場(chǎng)應(yīng)用,它的目的是實(shí)現(xiàn)數(shù)據(jù)交互,在不聯(lián)網(wǎng)的環(huán)境下,沒有攻擊就沒有傷害。所以你得自己想辦法采取額外的安全措施來保障數(shù)據(jù)的安全性,如使用VPN、防火墻等網(wǎng)絡(luò)安全設(shè)備,或者采用加密通信協(xié)議來替代Modbus協(xié)議。
總結(jié)
為了適應(yīng)現(xiàn)代工業(yè)自動(dòng)化的需求,許多新的通信協(xié)議和技術(shù)正在被開發(fā)和采用,以彌補(bǔ)Modbus的局限性。
總之,盡管存在這些不足,Modbus協(xié)議因其簡單、易于實(shí)現(xiàn)和廣泛的支持,仍然在許多工業(yè)場(chǎng)合中發(fā)揮著重要作用,作為“工業(yè)老兵”Modbus協(xié)議依然很能打!
審核編輯 黃宇
-
ModBus協(xié)議
+關(guān)注
關(guān)注
3文章
184瀏覽量
34420
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論