技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 深入了解Modbus TCP協(xié)議

深入了解Modbus TCP協(xié)議

時(shí)間:2020-08-03 14:46:19來(lái)源:

導(dǎo)語(yǔ):?Modbus總線有三種協(xié)議:ModbusRTU協(xié)議、ModbusASCII協(xié)議和ModbusTCP協(xié)議,Modbus總線活躍在工業(yè)通信領(lǐng)域。ModbusRTU和ModbusASCII擅長(zhǎng)串行通信,比如基于RS485或者RS232的通信,而ModbusTCP則擅長(zhǎng)基于以太網(wǎng)的通信。由于底層所使用的結(jié)構(gòu)不同,Modbus的應(yīng)用數(shù)據(jù)單元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌暉儀表下面來(lái)詳細(xì)介紹。

Modbus總線有三種協(xié)議:ModbusRTU協(xié)議、ModbusASCII協(xié)議和ModbusTCP協(xié)議,Modbus總線活躍在工業(yè)通信領(lǐng)域。ModbusRTU和ModbusASCII擅長(zhǎng)串行通信,比如基于RS485或者RS232的通信,而ModbusTCP則擅長(zhǎng)基于以太網(wǎng)的通信。由于底層所使用的結(jié)構(gòu)不同,Modbus的應(yīng)用數(shù)據(jù)單元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌暉儀表下面來(lái)詳細(xì)介紹。

為了進(jìn)行通信,Modbus規(guī)定了一種很簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),被稱為“協(xié)議數(shù)據(jù)單元”(ProtocolDataUnit,PDU)。協(xié)議數(shù)據(jù)單元由功能碼+數(shù)據(jù)構(gòu)成,如下面這張圖:

協(xié)議數(shù)據(jù)單元.png

功能碼的長(zhǎng)度為1個(gè)字節(jié),它表示要執(zhí)行的功能。比如常見的:01讀取線圈;02讀取離散量輸入值;03讀取保持寄存器值;05寫單個(gè)線圈等;數(shù)據(jù)部分的長(zhǎng)度為0-252個(gè)字節(jié),它表示要讀的地址或者要寫入的值,不同的功能碼對(duì)應(yīng)的數(shù)據(jù)有所不同。比如01功能碼,其數(shù)據(jù)為4個(gè)字節(jié),其中前兩個(gè)字節(jié)表示要讀取的線圈的地址,后兩個(gè)字節(jié)表示要讀取線圈的數(shù)量;而對(duì)于05功能碼,其數(shù)據(jù)也是4個(gè)字節(jié),前兩個(gè)字節(jié)表示要寫入線圈的地址,后面兩字節(jié)表示要寫入的值。

協(xié)議數(shù)據(jù)單元有三種類型:請(qǐng)求型協(xié)議數(shù)據(jù)單元(RequestPDU)、應(yīng)答型協(xié)議數(shù)據(jù)單元(ResponsePDU)、及異常應(yīng)答型協(xié)議數(shù)據(jù)單元(ExcepTIonResponsePDU),更多關(guān)于協(xié)議數(shù)據(jù)單元的內(nèi)容,大家可以去Modbus官網(wǎng)下載通信規(guī)范好好閱讀。

協(xié)議數(shù)據(jù)單元是Modbus的通用數(shù)據(jù)結(jié)構(gòu),它與底層物理結(jié)構(gòu)無(wú)關(guān),ModbusRTU、ModbusASCII和ModbusTCP都使用相同的協(xié)議數(shù)據(jù)單元。但是,Modbus在通信的時(shí)候,總要依賴物理網(wǎng)絡(luò)。因此要把協(xié)議數(shù)據(jù)單元映射到物理網(wǎng)絡(luò)上,這就形成了應(yīng)用數(shù)據(jù)單元(ApplicaTIonDataUnit,ADU)。由于底層網(wǎng)絡(luò)的不同,ModbusTCP跟ModbusRTU和ModbusASCII的應(yīng)用數(shù)據(jù)單元是不同的,ModbusRTU和ModbusASCII的ADU結(jié)構(gòu)如下圖所示:

PDU.png

而ModbusTCP的ADU結(jié)構(gòu)如下:

Modbus TCP的ADU.png

可以看到,ModbusTCP的應(yīng)用數(shù)據(jù)單元是在協(xié)議數(shù)據(jù)單元的基礎(chǔ)上,添加了一個(gè)叫做“MBAP頭(MBAPHeader)”的結(jié)構(gòu)。MBAP是英文“ModBusAPlicaTIon”的縮寫,即“應(yīng)用數(shù)據(jù)單元”的意思。

MBAP頭結(jié)構(gòu)由7個(gè)字節(jié)構(gòu)成,如下表所示:

MBAP頭結(jié)構(gòu).png

其中:

◆傳輸標(biāo)識(shí)符:用于標(biāo)識(shí)應(yīng)用數(shù)據(jù)單元,即請(qǐng)求和應(yīng)答之間的配對(duì);客戶端對(duì)該部分進(jìn)行初始化,服務(wù)器端將其拷貝到自己的ADU中;

◆協(xié)議標(biāo)識(shí)符:系統(tǒng)間的協(xié)議標(biāo)識(shí),0=Modbus;

◆長(zhǎng)度:接下來(lái)要發(fā)送的數(shù)據(jù)長(zhǎng)度,即:?jiǎn)卧獦?biāo)識(shí)符+PDU的總長(zhǎng)度,以字節(jié)為單位;

◆單元標(biāo)識(shí)符:用于系統(tǒng)間的站尋址,比如在以太網(wǎng)+串行鏈路的網(wǎng)絡(luò)中,遠(yuǎn)程站的地址;

這就是ModbusTCP的ADU結(jié)構(gòu),即:MBAP頭+PDU,是不是很簡(jiǎn)單呢?ModbusTCP的數(shù)據(jù)傳輸采用的是一種被稱為“客戶端/服務(wù)器”的模式,這也是上面的表格中會(huì)出現(xiàn)客戶端/服務(wù)器功能描述的原因。其實(shí),很多網(wǎng)絡(luò)通信都采用的這種方式,比如大名鼎鼎的西門子的S7通信協(xié)議。在串行鏈路中,這種方式也稱為主-從通信。

說(shuō)道這里,大家可能會(huì)有一個(gè)疑惑。因?yàn)镸odbus在網(wǎng)絡(luò)通信中,通常需要寫明IP地址和端口號(hào),為什么ModbusTCP的ADU中沒有相關(guān)的內(nèi)容呢?

哈哈,其實(shí)這是因?yàn)镸odbusTCP是一個(gè)應(yīng)用層的協(xié)議,而你說(shuō)的IP地址和端口號(hào)屬于傳輸層/網(wǎng)絡(luò)層的協(xié)議。還沒明白,好吧,看看這張圖:

Modbus TCP.png

你看,在邏輯上ModbusTCP是在TCP層上的。在發(fā)送數(shù)據(jù)的時(shí)候,ModbusTCP的應(yīng)用數(shù)據(jù)單元首先向下傳送給傳輸層,加上TCP協(xié)議的報(bào)文;再傳送給網(wǎng)絡(luò)層,加上IP協(xié)議的報(bào)文;再向下傳送給數(shù)據(jù)鏈路層及物理層;接收的過(guò)程正好相反,從物理層一層一層的去掉相應(yīng)層的報(bào)文,最終到達(dá)應(yīng)用層。所以在使用ModbusTCP進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,是要配合TCP/IP協(xié)議來(lái)使用的。通常如果你使用電腦編程,就要用到SOCKET技術(shù);如果是使用plc編程,通常廠家已經(jīng)把底層通信封裝成庫(kù)指令了,你只要直接調(diào)用就好了。比如西門子S7-200SMART/1200/1500等PLC都有現(xiàn)成的Modbus-TCP指令庫(kù)。偷偷告訴你一聲,昌暉儀表后續(xù)會(huì)寫基于PLC和基于PC的Modbus-TCP通信的文章。

還有一點(diǎn)要特別說(shuō)明一下,ModbusTCP使用的端口號(hào)是502,一定要給ModbusTCP預(yù)留好,不能被別人占用哦。


標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:''云''+''邊'' 工業(yè)機(jī)器人遠(yuǎn)...

下一篇:電線電纜常見的故障有哪些

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)