|
1、Modbus簡介 Modbus通信協議由Modicon公司(現已經為施耐德公司并購,成為其旗下的子品牌)于1979年發明的,是全球最早用于工業現場的總線規約。由于其免費公開發行,該協議免費使用,Modbus通信協議采用的是主從通信模式(Master/Slave)。在控制方面應用廣泛,促進Modbus協議在全球得到了很好的發展。 Modbus通信協議具有多個變種,具有支持串口(主要是RS-485總線),以太網多個版本,其中最著名的是Modbus TCP , Modbus ASCII和Modbus RTU三種。其中Modbus RTU與Modbus ASCII均為支持RS-485總線的通信協議。 2、Modbus RTU Modbus RTU由于其采用二進制表現形式以及緊湊數據結構,通信效率較高,應用比較廣泛。而ModbusASCII由于采用ASCII碼傳輸,并且利用特殊字符作為其字節的開始與結束標識,其傳輸效率低于Modbus RTU協議,一般只有在通信數據量較小的情況下才考慮使用Modbus ASCII通信協議。在工業現場一般都是采用Modbus RTU協議,通俗來說,基于串口通信的Modbus通信協議都是指Modbus RTU通信協議。 RTU協議中的指令由功能碼(一個字節),起始地址(兩個字節),地址碼(一個字節),數據(N個字節),校驗碼(兩個字節)五個部分組成,其中數據又由數據長度(兩個字節,表示的是寄存器個數,假定內容為M)和數據正文(M乘以2個字節)組成。 而RTU協議是采用3.5個字節的空閑時間作為指令的起始和結束,一般而言,只有當從機返回數據或者主機寫操作的時候,才會有數據正文,而其他時候比如主機讀操作指令的時候,沒有數據正文,只需要數據長度即可。 3、Modbus TCP Modbus TCP協議則是在Modbus RTU協議上加一個MBAP報文頭,由于TCP是基于可靠連接的服務,RTU協議中的CRC校驗碼就不再需要,所以在Modbus TCP協議中是沒有CRC校驗碼,這個MBAP報文頭共七個字節長度,除了第五、六個字節外,其余的基本上都是不變。 表中指令說明:從地址碼為01(TCP協議單元標志為00)的模塊0x18E(01 8E)寄存器地址開始寫(10)一個(00 01)寄存器,具體數據長度為2個字節(02),數據正文內容為00 00(00 00)。 4、結語通過上述的關于Modbus RTU協議和Modbus TCP協議的說明,很直觀的了解到兩者的差異,有無校驗、報文頭差異、以及地址碼差異等。簡單就了解了相關特點。 |