作為工控人,Modbus通訊協(xié)議想必都不陌生,Modbus通訊協(xié)議可以說是工業(yè)自動化領(lǐng)域應(yīng)用最為廣泛的通訊協(xié)議,因為它的開放性、可擴(kuò)充性和標(biāo)準(zhǔn)化,使它成為通用工業(yè)標(biāo)準(zhǔn)。
Modbus協(xié)議的優(yōu)點我覺得不用多說,這篇文章,主要是想跟大家聊聊Modbus協(xié)議的缺點。
凡事都有雙面性,任何協(xié)議都有自身的不足之處,Modbus有缺點,并不意味它就是一個不好的協(xié)議,希望大家理性看待。
1、讀取數(shù)據(jù)量的限制
下面這張圖表示的是ModbusRTU協(xié)議03功能碼的數(shù)據(jù)格式:

從圖中我們可以看到從站返回數(shù)據(jù)的數(shù)據(jù)個數(shù)(字節(jié)計數(shù))只占了一個字節(jié)。
由于字節(jié)計數(shù)只占用1個字節(jié),導(dǎo)致讀取輸入/保持寄存器時,一次性最多只能讀取127個寄存器,這個對于某些數(shù)據(jù)量非常大的場合,就需要讀取多次,才能讀取到所有的數(shù)據(jù),這樣通信效率必然會降低。
2、不支持寄存器位的寫入
Modbus常用的8個功能碼當(dāng)中,是沒有針對寄存器的位寫入的。所以當(dāng)我們需要給某個寄存器的某個位置位或者復(fù)位時,就會變得非常麻煩。
我們一般的處理方式有兩種:
第一種方式:我們需要先讀取這個寄存器的值,然后再將這個值的某個位處理之后,將處理后的值進(jìn)行寫入,相當(dāng)于需要交互兩次才可以實現(xiàn),并且這種方式從某種角度上來說是不安全的。
第二種方式:我們可以用一個寄存器代替一個位,寫入1表示為True,寫入0表示為False,這種方式可以單次交互實現(xiàn),但是會浪費很多內(nèi)存空間。
Modbus協(xié)議是1979年誕生,現(xiàn)在已經(jīng)應(yīng)用在成千上萬個設(shè)備當(dāng)中了,我相信發(fā)明者肯定也知道這樣的問題,但是無法統(tǒng)一去更改。
也許某一天Modbus協(xié)議可以解決這兩個問題......
也許有的人會說Modbus協(xié)議存在安全漏洞,我覺得Modbus協(xié)議作為工業(yè)現(xiàn)場應(yīng)用,它的目的是實現(xiàn)數(shù)據(jù)交互,在不聯(lián)網(wǎng)的環(huán)境下,沒有攻擊就沒有傷害。
-
寄存器
+關(guān)注
關(guān)注
31文章
5621瀏覽量
130459 -
RTU
+關(guān)注
關(guān)注
0文章
453瀏覽量
30697 -
工業(yè)自動化
+關(guān)注
關(guān)注
17文章
3242瀏覽量
70109 -
ModBus通信
+關(guān)注
關(guān)注
0文章
34瀏覽量
3031
發(fā)布評論請先 登錄
什么是Modbus協(xié)議?如何寫穩(wěn)定的Modbus代碼?
modbus協(xié)議筆記
Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?
Modbus是什么?Modbus協(xié)議有哪些優(yōu)點
Modbus協(xié)議的理解
Modbus協(xié)議簡介及其特點
Modbus協(xié)議網(wǎng)關(guān)是什么?Modbus協(xié)議網(wǎng)關(guān)的功能
Modbus協(xié)議的工作原理、優(yōu)缺點及應(yīng)用
聊聊Modbus協(xié)議的缺點
評論