目前不少的儀表使用Modbus RTU進行數據傳輸,為了大家全面了解Modbus協議,昌暉儀表聊聊Modbus RTU協議存在的讀取數據量的限制和不支持寄存器位的寫入的兩個不足,昌暉儀表聊Modbus RTU協議的缺點,并非否認Modbus RTU協議是好協議的事實,凡事均有兩面性,僅此而已。
1、讀取數據量的限制
下面這張圖表示的是Modbus RTU協議03功能碼的數據格式:
從上圖中可以看到從站返回數據的數據個數(字節計數)只占了1個字節。由于字節計數只占用1個字節,導致讀取輸入/保持寄存器時,一次性最多只能讀取127個寄存器(用代碼去讀),這個對于某些數據量非常大的場合,就需要讀取多次,才能讀取到所有的數據,這樣通信效率必然會降低。
2、不支持寄存器位的寫入
Modbus常用的8個功能碼當中,是沒有針對寄存器的位寫入的。所以當我們需要給某個寄存器的某個位置位或者復位時,就會變得非常麻煩。
我們一般的處理方式有兩種:
第一種方式:先讀取這個寄存器的值,然后再將這個值的某個位處理之后,將處理后的值進行寫入,相當于需要交互兩次才可以實現,并且這種方式從某種角度上來說是不安全的。
第二種方式:用一個寄存器代替一個位,寫入1表示為True,寫入0表示為False,這種方式可以單次交互實現,但是會浪費很多內存空間。
Modbus RTU協議是1979年誕生,現在已經應用在成千上萬個設備當中,相信發明者肯定也知道這樣的問題,但是無法統一去更改。也有人說Modbus RTU協議的缺點不叫問題,認為Modbus RTU協議注定是不會改了,原因是用它的環境不會在乎這些缺點,在乎這些缺點場合不會用這個協議。
大家怎么看,歡迎在評論區發表留言。