天天看點

MODBUS 通訊協定初探

MODBUS是工業用的比較廣泛的一種通訊協定。主要有MODBUS RTU、MODBUS ASCALL和MODBUS TCP/IP三種。現談談對MODBUS RTU初步的了解。

所謂的MODBUS通訊協定即主機和從機之間一種約定了的通訊的封包的格式。比如我們之間約定"12345"代表"上山打獵",那麼我發出"12345"的訊息後,你就知道要去"上山打獵"。隻不過沒有所述那麼簡單罷了。

MODBUS RTU 的主從機之間一般采用RS485或者RS232進行連接配接通訊。隻能有一個主機,而剩下的都是從機,而每一個從機都有一個專屬的位址,這一點倒是和IIC類似。

舉例:現有一個基于MODBUS RTU協定的主從機。從機位址0x01(8位,最多可有255個從機)、如果要讀取從機包含寄存器位址0x0101(16位,高位在前、低位在後)在内的3個寄存器内的資料,要如何操作?(假設每個寄存器有資料0x0203、0x0405、0x0607)

如下:

主機發送:

01    03     01    01    00    01    CRCL   CRCH

從機位址 功能碼  起始寄存器 低位  寄存器數量 低位  CRC校驗低位 高位

          位址高位       高位

從機回應:

01    03     06    02    03   04    05    06   07

從機位址 功能碼  傳回位元組數 第一個資料高低位 第二個資料高低位  第三個資料高低位

CRCL    CRCH

CRC校驗低位 高位

從機在接收到主機的資料後,會将主機發送的資料(除CRC部分)進行CRC校驗,然後和主機的CRC部分對比判斷是否一緻,防止誤碼。主機接收之後同樣如此。

至于其他的功能碼的使用方法和CRC校驗的方式網上可以搜到

繼續閱讀