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