以組態(tài)王為例,組態(tài)王軟件是工業(yè)自動化行業(yè)應(yīng)用的界面軟件,主要面向現(xiàn)場應(yīng)用適合現(xiàn)場工程人員、FAE等編程,內(nèi)置常用的通訊模塊、常用的界面組件等。通過RS232接口、RS485接口和以太網(wǎng)口可以和其他設(shè)備完成數(shù)據(jù)通信。
Modbus協(xié)議主要有兩個版本RTU和TCP/IP,RTU可以通過RS485接口實現(xiàn),TCP/IP可以通過以太網(wǎng)口實現(xiàn),這兩種協(xié)議都是工控行業(yè)、自動化行業(yè)常用的。下面以RS485接口、Modbu-RTU來介紹數(shù)據(jù)通信的過程。
Modub-RTU協(xié)議的具體內(nèi)容
該協(xié)議是主從方式的通訊方式,有一個主機(jī)可以掛接多個從機(jī),每個從機(jī)具有唯一的地址用來辨識身份,并通過不通的功能碼來實現(xiàn)所要讀取/寫入的內(nèi)容。作為簡單的應(yīng)用,主要涉及到0x03讀保持寄存器功能碼、0x06預(yù)置單個寄存器功能碼、0x10預(yù)置多個寄存器功能碼等。
讀保持寄存器功能碼0x03
當(dāng)主機(jī)發(fā)送03功能碼時,表明主要想要獲取從機(jī)某個寄存器里的內(nèi)容,一條完成的命令包括主機(jī)發(fā)送的數(shù)據(jù)和從機(jī)回復(fù)的數(shù)據(jù),分別舉例如下:
主機(jī)發(fā)送:01 03 00 32 00 02 xx xx
主機(jī)回復(fù):01 03 04 a5 d4 1812 xx xx
數(shù)據(jù)和字節(jié)含義如下圖所示。
主機(jī)所發(fā)送的命令表示,想要讀取1號從機(jī)從0x32開始的2個寄存器的內(nèi)容,而從機(jī)回復(fù)0x32和0x33寄存器內(nèi)的數(shù)據(jù),總共4個字節(jié)。最后兩個字節(jié)是校驗碼。
預(yù)置單個寄存器功能碼0x06
06功能碼是主機(jī)用來向從機(jī)的某個寄存器寫數(shù)據(jù)的,一次智能操作一個寄存器。主機(jī)所發(fā)送的數(shù)據(jù)舉例如下:
主機(jī)發(fā)送:01 06 00 32 12 32 xx xx
主機(jī)發(fā)送的數(shù)據(jù)和字節(jié)含義如下圖所示。
該功能碼,從機(jī)所回復(fù)的數(shù)據(jù)和主機(jī)下發(fā)的數(shù)據(jù)是一致的。該條指令的含義為:主機(jī)想給1號從機(jī)的0x32寄存器中寫入0x1232數(shù)據(jù),最后所跟的是校驗碼。
預(yù)置多個寄存器功能碼0x10
16功能碼也是寫寄存器但是與06所不同的是,該功能碼可以連續(xù)寫多個寄存器,主機(jī)下發(fā)的數(shù)據(jù)結(jié)構(gòu)為:地址、功能碼、寄存器起始地址、寄存器個數(shù)、要寫入數(shù)據(jù)的字節(jié)數(shù)、數(shù)據(jù)、校驗碼等。從機(jī)回復(fù)的數(shù)據(jù)格式為:地址、功能碼、寄存器起始地址、寄存器個數(shù)、校驗碼等。
數(shù)據(jù)格式舉例和字節(jié)含義如下圖所示。
所表示的含義是,從0x0034開始連續(xù)寫入四個字節(jié)的數(shù)據(jù)到2個寄存器中,最后兩個字節(jié)是校驗碼。
以上三個功能碼都是非常常用的,除此之外,還有很多個功能碼,每個功能碼都代表不通的含義,以上數(shù)據(jù)都是需要編程來實現(xiàn)的。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!