作為工控人,Modbus通訊協(xié)議想必都不陌生,Modbus通訊協(xié)議專業(yè)說是工業(yè)自動(dòng)化領(lǐng)域應(yīng)用最為廣泛得通訊協(xié)議,因?yàn)樗瞄_放性、可擴(kuò)充性和標(biāo)準(zhǔn)化,使它成為通用工業(yè)標(biāo)準(zhǔn)。
Modbus協(xié)議得優(yōu)點(diǎn)我覺的不用多說,這篇文章,主要是想跟大家聊聊Modbus協(xié)議得缺點(diǎn)。
1、讀取數(shù)據(jù)量得限制凡事都有雙面性,任何協(xié)議都有自身得不足之處,Modbus有缺點(diǎn),并不意味它就是一個(gè)不好得協(xié)議,希望大家理性看待。
下面這張圖表示得是ModbusRTU協(xié)議03功能碼得數(shù)據(jù)格式:
從圖中我們專業(yè)看到從站返回?cái)?shù)據(jù)得數(shù)據(jù)個(gè)數(shù)(字節(jié)計(jì)數(shù))只占了一個(gè)字節(jié)。
由于字節(jié)計(jì)數(shù)只占用1個(gè)字節(jié),導(dǎo)致讀取輸入/保持寄存器時(shí),一次性最多只能讀取127個(gè)寄存器,這個(gè)對(duì)于某些數(shù)據(jù)量非常大得場合,就需要讀取多次,才能讀取到所有得數(shù)據(jù),這樣通信效率必然會(huì)降低。
2、不圖片寄存器位得寫入Modbus常用得8個(gè)功能碼當(dāng)中,是沒有針對(duì)寄存器得位寫入得。所以當(dāng)我們需要給某個(gè)寄存器得某個(gè)位置位或者復(fù)位時(shí),就會(huì)變的非常麻煩。
我們一般得處理方式有兩種:
第壹種方式:我們需要先讀取這個(gè)寄存器得值,然后再將這個(gè)值得某個(gè)位處理之后,將處理后得值進(jìn)行寫入,相當(dāng)于需要交互兩次才專業(yè)實(shí)現(xiàn),并且這種方式從某種角度上來說是不安全得。
第二種方式:我們專業(yè)用一個(gè)寄存器代替一個(gè)位,寫入1表示為True,寫入0表示為False,這種方式專業(yè)單次交互實(shí)現(xiàn),但是會(huì)浪費(fèi)很多內(nèi)存空間。
Modbus協(xié)議是1979年誕生,現(xiàn)在已經(jīng)應(yīng)用在成千上萬個(gè)設(shè)備當(dāng)中了,我相信發(fā)明者肯定也知道這樣得問題,但是無法統(tǒng)一去更改。
也許某一天Modbus協(xié)議專業(yè)解決這兩個(gè)問題......
也許有得人會(huì)說Modbus協(xié)議存在安全漏洞,我覺的Modbus協(xié)議作為工業(yè)現(xiàn)場應(yīng)用,它得目得是實(shí)現(xiàn)數(shù)據(jù)交互,在不聯(lián)網(wǎng)得環(huán)境下,沒有攻擊就沒有傷害。
免責(zé)聲明:本文轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原感謝作者分享所有,如涉及作品版權(quán)問題,請(qǐng)及時(shí)與我們聯(lián)系刪除,謝謝!