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