Modbus-RTU協議解析
Modbus-RTU協議是主從(cong) 交互式協議,即主機輪詢、從(cong) 機應答。在工控自動化、樓宇自動化行業(ye) 中應用廣泛。該協議的報文結構主要由地址、功能碼、寄存器、數據、校驗碼等構成。下麵和大家分享一下Modbus-RTU的基本知識。
▲1 MODBUS-RTU的通訊格式
RS485接口在工業(ye) 自動化中應用非常廣泛,該接口為(wei) 雙總線通信方式,隻有RSA和RSB兩(liang) 根線,可以走MODBUS TCP/IP協議,也可以走MODBUS-RTU協議,通訊距離可達數公裏,是一種標準的通訊接口,而MODBUS-RTU是工業(ye) 現場一種標準的通信協議,大多數的PLC和組態屏都支持該通訊協議。
其數據格式是由如下幾部分構成的:1)從(cong) 機地址;2)功能碼;3)數據;4)校驗碼。采用一問一答式通訊方式,主機定時查詢從(cong) 機狀態,從(cong) 機收到主機的輪詢命令後回複相應的數據。常用的功能碼有01讀線圈狀態、03讀保持寄存器、06預置單個(ge) 寄存器、16預置多個(ge) 寄存器等。
▲203功能碼舉(ju) 例解析
以03功能碼為(wei) 例,介紹一條具體(ti) 的數據格式,主機的命令格式為(wei) :
01 03 00 04 00 02 85 CA,從(cong) 機回複的數據格式為(wei) :
01 03 04 00 00 00 00 FA 33。如下圖所示。
該條命令的含義(yi) 為(wei) :
主機要讀取01號地址的從(cong) 設備的寄存器內(nei) 容,讀取從(cong) 00 04寄存器開始往後2個(ge) 寄存器的內(nei) 容,即00 04和00 05寄存器中的內(nei) 容。從(cong) 機收到命令後,將這兩(liang) 個(ge) 寄存器中的數據發送給主機,每個(ge) 寄存器存放兩(liang) 個(ge) 字節的數據,兩(liang) 個(ge) 寄存器共存放4個(ge) 字節的數據,所以返回數據字節的個(ge) 數為(wei) 4個(ge) 。
▲ 3 06功能碼舉(ju) 例解析
06功能碼是用來寫(xie) 從(cong) 機寄存器的內(nei) 容的,比如主機向改寫(xie) 從(cong) 機其中一個(ge) 寄存器的數據,就可以通過06功能碼來實現。主機發送的數據如下:
01 06 00 00 00 0A 09 CD,從(cong) 機返回的數據如下:
01 06 00 00 00 0A 09 CD。如下圖所示。
該數據所代表的含義(yi) 為(wei) :主機要將01號從(cong) 機的00 00寄存器寫(xie) 入兩(liang) 個(ge) 字節的數據,數據為(wei) 00 0A。寫(xie) 入成功後,從(cong) 機返回該寄存器的狀態。
06功能碼隻要改寫(xie) 一個(ge) 寄存器的內(nei) 容,如果要改寫(xie) 多個(ge) 寄存器的內(nei) 容需要用到16預置多個(ge) 寄存器功能碼。
▲4 常用的通信參數
Modbus在通訊之前,先要確認通信參數,這些通信參數包括:1)波特率;2)數據位數;3)停止位4)校驗方式等。
波特率是指每秒所傳(chuan) 送的數據的位數,數值越大通信速度越快,常用的波特率有4800、9600、19200、115200等,兩(liang) 台設備在通訊時,通訊波特率必須一致,否則通訊無法建立。
數據位數,一般為(wei) 8位。停止位有1位,2位等,校驗方式有奇校驗、偶校驗和無校驗等。
Modbus-RTU是工控行業(ye) 應用廣泛的通訊協議,主流PLC都支持該協議,在編程時,不需要實現所有的功能碼,隻需要實現常用的幾個(ge) 功能碼就可以,如上述所描述的03,06,16等