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校驗的方式網上可以搜到