Modbus網(wǎng)關(guān)模塊到底是什么?Modbus網(wǎng)關(guān)就是將一種Modbus協(xié)議幀轉(zhuǎn)換為其他物聯(lián)網(wǎng)無(wú)線數(shù)傳協(xié)議幀的網(wǎng)關(guān)設(shè)備。
比如將Modbus RTU的數(shù)據(jù)與Modbus TCP數(shù)據(jù)進(jìn)行相互轉(zhuǎn)換;也可將主機(jī)請(qǐng)求與從機(jī)響應(yīng)進(jìn)行應(yīng)用開發(fā)以提升協(xié)議轉(zhuǎn)換的效率;比如處理多主機(jī)請(qǐng)求的多主機(jī)網(wǎng)關(guān),提升多主機(jī)請(qǐng)求響應(yīng)效率的存儲(chǔ)型網(wǎng)關(guān),代替主機(jī)發(fā)起Modbus請(qǐng)求的主動(dòng)上報(bào)。網(wǎng)關(guān)設(shè)備處于Modbus網(wǎng)關(guān)模式是為了保證Modbus轉(zhuǎn)換效率對(duì)非Modbus數(shù)據(jù)進(jìn)行遺棄,防止對(duì)串口總線產(chǎn)生干擾。
Modbus協(xié)議是一項(xiàng)應(yīng)用層報(bào)文傳輸協(xié)議,包括ASCII、RTU、TCP三種報(bào)文類型,每種類型的數(shù)據(jù)幀結(jié)構(gòu)有所不同。以下是對(duì)這三種數(shù)據(jù)幀的詳細(xì)解析:
Modbus ASCII數(shù)據(jù)幀使用ASCII字符進(jìn)行數(shù)據(jù)傳輸,每個(gè)字節(jié)的數(shù)據(jù)被轉(zhuǎn)換為兩個(gè)ASCII字符。這種數(shù)據(jù)幀結(jié)構(gòu)主要用于串行通信,如通過(guò)RS232或RS485接口進(jìn)行通信。
起始符:通常使用冒號(hào)(:)作為起始符,表示一個(gè)數(shù)據(jù)幀的開始。
設(shè)備地址:表示接收數(shù)據(jù)的從設(shè)備的地址,通常為一個(gè)兩位的十六進(jìn)制數(shù)。
功能碼:表示主站想要對(duì)從站進(jìn)行的操作類型,如讀、寫等。功能碼為一個(gè)字節(jié)的十六進(jìn)制數(shù)。
數(shù)據(jù):根據(jù)功能碼的不同,數(shù)據(jù)部分的內(nèi)容也會(huì)有所不同。例如,如果是讀操作,數(shù)據(jù)部分可能包含起始地址和讀取的數(shù)據(jù)長(zhǎng)度等信息;如果是寫操作,數(shù)據(jù)部分則可能包含起始地址、要寫入的數(shù)據(jù)等信息。
結(jié)束符:通常使用回車(CR)和換行(LF)字符作為結(jié)束符,表示一個(gè)數(shù)據(jù)幀的結(jié)束。
校驗(yàn):雖然ASCII數(shù)據(jù)幀本身沒有明確的校驗(yàn)字段,但可以通過(guò)計(jì)算數(shù)據(jù)幀中所有字符的ASCII碼之和(或其他校驗(yàn)方法)來(lái)進(jìn)行簡(jiǎn)單的錯(cuò)誤檢測(cè)。
Modbus RTU數(shù)據(jù)幀主要用于串行通信,如通過(guò)RS485接口進(jìn)行通信。與ASCII數(shù)據(jù)幀相比,RTU數(shù)據(jù)幀使用了更緊湊的二進(jìn)制格式,并且包含了CRC校驗(yàn)碼來(lái)確保數(shù)據(jù)的完整性。
地址域:即主站要訪問(wèn)的從站地址,其范圍為0~247。
功能碼:與ASCII數(shù)據(jù)幀相同,表示主站想要對(duì)從站進(jìn)行的操作類型。
數(shù)據(jù):根據(jù)功能碼的不同,數(shù)據(jù)部分的內(nèi)容也會(huì)有所不同。
CRC校驗(yàn):為了保證數(shù)據(jù)傳輸?shù)恼_性,Modbus RTU協(xié)議會(huì)在數(shù)據(jù)幀最后面加上兩個(gè)字節(jié)的CRC校驗(yàn)碼。接收方可以通過(guò)計(jì)算接收到的數(shù)據(jù)幀的CRC校驗(yàn)碼并與發(fā)送方的CRC校驗(yàn)碼進(jìn)行比較來(lái)檢測(cè)數(shù)據(jù)是否在傳輸過(guò)程中發(fā)生了錯(cuò)誤。
Modbus TCP數(shù)據(jù)幀是基于以太網(wǎng)TCP/IP協(xié)議的Modbus協(xié)議變種,主要用于網(wǎng)絡(luò)通信。與ASCII和RTU數(shù)據(jù)幀相比,TCP數(shù)據(jù)幀的結(jié)構(gòu)更為復(fù)雜,并且包含了更多的字段。
MBAP報(bào)文頭:MBAP為報(bào)文頭,長(zhǎng)度為7字節(jié),組成如下:
事務(wù)處理標(biāo)識(shí):可以理解為報(bào)文的序列號(hào),一般每次通信之后就要加1以區(qū)別不同的通信數(shù)據(jù)報(bào)文。
Modbus協(xié)議標(biāo)識(shí):用于標(biāo)識(shí)所使用的Modbus協(xié)議版本。
長(zhǎng)度:表示接下來(lái)的數(shù)據(jù)長(zhǎng)度(PDU)的單位為字節(jié)。
單元標(biāo)識(shí)符:用于標(biāo)識(shí)從設(shè)備的地址或單元。
PDU(協(xié)議數(shù)據(jù)單元):由功能碼和數(shù)據(jù)組成。功能碼為1字節(jié),數(shù)據(jù)長(zhǎng)度不定,由具體功能決定。
功能碼:與ASCII和RTU數(shù)據(jù)幀相同,表示主站想要對(duì)從站進(jìn)行的操作類型。
數(shù)據(jù):根據(jù)功能碼的不同,數(shù)據(jù)部分的內(nèi)容也會(huì)有所不同。例如,讀操作可能包含起始地址和讀取的數(shù)據(jù)長(zhǎng)度等信息;寫操作則可能包含起始地址、要寫入的數(shù)據(jù)等信息。
綜上所述,Modbus協(xié)議的三種數(shù)據(jù)幀結(jié)構(gòu)各有特點(diǎn),適用于不同的通信場(chǎng)景和需求。在實(shí)際應(yīng)用中,需要根據(jù)具體的通信環(huán)境和設(shè)備要求來(lái)選擇合適的數(shù)據(jù)幀結(jié)構(gòu)。
三、modbus協(xié)議三種數(shù)據(jù)幀的差異
Modbus協(xié)議定義了一個(gè)與基礎(chǔ)通信層無(wú)關(guān)的簡(jiǎn)單協(xié)議數(shù)據(jù)單元(PDU)由功能碼(1Bit)+數(shù)據(jù)(n Bit)組成;
Modbus RTU數(shù)據(jù)幀:采用16進(jìn)制進(jìn)行編碼,包含地址域(1Bit)+PDU+CRC校驗(yàn)(2Bit);
Modbus TCP數(shù)據(jù)幀:采用16進(jìn)制進(jìn)行編碼,包含事務(wù)處理標(biāo)識(shí)符(2Bit)+協(xié)議標(biāo)識(shí)(00 00:2字節(jié),表示Modbus RTU協(xié)議)+長(zhǎng)度(2Bit)+地址域(1Bit)+PDU;
Modbus ASCII數(shù)據(jù)幀:采用ASCII進(jìn)行編碼,包含起始符(‘:’)+地址碼(2 Bit)+數(shù)據(jù)(0到2*255 Bit)+ LRC校驗(yàn)(2Bit)+換行符(CR,LF)
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多modbus模組以及網(wǎng)關(guān)協(xié)議產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(hào)(微信號(hào):cdebyte)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!
MODBUS相關(guān)閱讀:
1、ModBus協(xié)議入門級(jí)講解,想不懂都難!
2、Modbus協(xié)議調(diào)試軟件工具仿真演示教程
3、物聯(lián)網(wǎng)無(wú)線數(shù)傳通信常見的幾種Modbus網(wǎng)關(guān)
4、EBT3002以太網(wǎng)芯片模塊Modbus網(wǎng)關(guān)功能詳解及配置教程