性吧杏吧,手机色情直播破解版,杏杏吧在线

通過(guò)一段報(bào)文來(lái)解讀工業(yè)以太網(wǎng)Modbus TCP/IP協(xié)議

2022/9/26 2:05:52 人評(píng)論 次瀏覽 分類(lèi):技術(shù)方案  文章地址:http://prosperiteweb.com/tech/4476.html

文章通過(guò)對(duì)一段報(bào)文逐段逐句的解讀,讓大家了解工業(yè)以太網(wǎng)Modbus TCP/IP協(xié)議

Modbus TCP/IP直觀上看它還是Modbus協(xié)議,這個(gè)沒(méi)錯(cuò),Modbus TCP/IP是Modbus協(xié)議的變體,將Modbus協(xié)議運(yùn)行在了TCP/IP網(wǎng)絡(luò)上,連接端口是502,不需要校驗(yàn)和計(jì)算,因?yàn)閿?shù)據(jù)校驗(yàn)在低層進(jìn)行了;
還有幾種協(xié)議Modbus over TCP,Modbus over TCP/IP還有Modbus RTU/IP,這三種也是Modbus的變體,但是和Modbus TCP/IP協(xié)議最大的區(qū)別就是帶有了Modbus RTU的檢驗(yàn)和。

目前也有很多人在研究Modbus UDP/IP,這和Modbus TCP/IP最大的區(qū)別在于可以提高實(shí)時(shí)性和通信效率。因?yàn)閁DP是無(wú)連接協(xié)議,比TCP節(jié)約了大量網(wǎng)絡(luò)時(shí)間,但是可靠性和安全性不能保證。

Modbus

下面昌暉儀表通過(guò)一段報(bào)文來(lái)解讀Modbus TCP/IP,從OSI七層模型物理層到應(yīng)用層。


Modbus TCP/IP協(xié)議報(bào)文

上圖我們可以清晰看到Modbus TCP/IP使用了OSI的物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層以及應(yīng)用層。


1、物理層

Frame物理層的數(shù)據(jù)幀概況,線路307個(gè)字節(jié),實(shí)際捕獲307個(gè)字節(jié)

Frame物理層的數(shù)據(jù)幀

◆物理介質(zhì):以太網(wǎng)卡

◆傳輸介質(zhì):雙絞線,同軸電纜,光纖
◆封裝類(lèi)型:Ethernet(1)
◆物理接口:RJ45
◆幀編號(hào):1176
◆幀長(zhǎng)度:307字節(jié)

2、數(shù)據(jù)鏈路層

Ethernet II協(xié)議,以太網(wǎng)幀頭信息(14個(gè)字節(jié))

Ethernet II協(xié)議,以太網(wǎng)幀頭信息

網(wǎng)卡MAC地址:

◆目的MAC:00:15:5d:07:b4:0a
◆源MAC:a8:74:1d:c7:16:5d
◆類(lèi)型:IPv4

3、網(wǎng)絡(luò)層

IP協(xié)議IP包頭信息(20個(gè)字節(jié))

IP協(xié)議IP包頭信息

◆版本:IPv4

◆協(xié)議類(lèi)型:TCP
◆源IP地址:172.18.32.32
◆目的IP地址:172.18.31.72

4、傳輸層:

TCP協(xié)議數(shù)據(jù)段的頭信息(20個(gè)字節(jié))

TCP協(xié)議數(shù)據(jù)段的頭信息

◆源端口:502

◆目的端口:57298
◆序列號(hào):4197
◆確認(rèn)號(hào):241
◆PDU長(zhǎng)度:253

5、應(yīng)用層

MBAP,Modbus應(yīng)用層的信息(253個(gè)字節(jié))

MBAP,Modbus應(yīng)用層的信息

◆MBAP:(7個(gè)字節(jié))

◆MABP 由四部分構(gòu)成:
◆事務(wù)識(shí)別號(hào):9522
◆協(xié)議識(shí)別號(hào):0
◆長(zhǎng)度:247
◆設(shè)備識(shí)別號(hào):255

詳細(xì)說(shuō)明如下:

MBAP,Modbus應(yīng)用層說(shuō)明

關(guān)于設(shè)備識(shí)別號(hào),對(duì)于Modbus TCP/IP協(xié)議該項(xiàng)默認(rèn)255,但是如果該協(xié)議為Modbus Plus或者M(jìn)odbus RTU等串口協(xié)議,通過(guò)串口服務(wù)器等轉(zhuǎn)換設(shè)備轉(zhuǎn)換后變?yōu)榱薓odbus RTU over TCP,則該項(xiàng)為Modbus串口從站的設(shè)備地址。


Modbus:(246個(gè)字節(jié))


在應(yīng)用層Modbus的響應(yīng)報(bào)文:

◆第一個(gè)字節(jié):功能碼
◆第二個(gè)字節(jié):后面的長(zhǎng)度
◆第三個(gè)字節(jié):請(qǐng)求數(shù)據(jù)的第一個(gè)寄存器的值。上圖即顯示的40001-40024的值;由上圖也能看出40003的當(dāng)前值為38.86

綜上內(nèi)容一條完整modbus TCP/IP報(bào)文的構(gòu)成如下:



①以太網(wǎng)頭(14字節(jié))

◆目的MAC地址(6字節(jié))
◆源MAC地址(6字節(jié))
類(lèi)型(2字節(jié))0x0800為IPv4

②IP包頭(20字節(jié))



③數(shù)據(jù)段(20字節(jié))


后面即為Modbus TCP/IP部分信息;


④Modbus TCP/IP數(shù)據(jù)結(jié)構(gòu)

Modbus TCP/IP為CS架構(gòu),Client不斷的像Server發(fā)出請(qǐng)求,Server端被動(dòng)響應(yīng)提供數(shù)據(jù)或者被寫(xiě)入。讀寫(xiě)的數(shù)據(jù)結(jié)構(gòu)和Modbus RTU是一樣的,常見(jiàn)的如下四種:

Modbus TCP/IP數(shù)據(jù)結(jié)構(gòu)

根據(jù)以上四種數(shù)據(jù)類(lèi)型,可以引申出常見(jiàn)的8個(gè)功能碼:

FC1:讀取線圈的狀態(tài)
FC5:?jiǎn)蝹€(gè)寫(xiě)入線圈
FC2:讀取開(kāi)關(guān)量輸入的狀態(tài)
FC15:連續(xù)寫(xiě)入一組線圈
FC3:讀取保持寄存器的值
FC6:?jiǎn)蝹€(gè)寫(xiě)保持寄存器
FC4:讀取模擬量輸入寄存器的值
FC16:連續(xù)寫(xiě)保持寄存器

但是實(shí)際上Modbus協(xié)議的功能碼遠(yuǎn)不止如下8個(gè);比如FC20和FC21就是對(duì)文件記錄的操作,其中FC20是讀取文件記錄,F(xiàn)C21是對(duì)文件進(jìn)行寫(xiě)操作。


6、Modbus TCP/IP Client/Server模型



Modbus TCP/IP工作過(guò)程

①客戶端在網(wǎng)絡(luò)上發(fā)出消息請(qǐng)求,將任務(wù)進(jìn)行初始化
②請(qǐng)求信息被服務(wù)端接收到
③服務(wù)端發(fā)送一個(gè)響應(yīng)消息
④客戶端確認(rèn)收到服務(wù)端的響應(yīng)信息

7、Modbus TCP/IP和Modbus RTU ADU的區(qū)別

Modbus RTU ADU:


Modbus TCP/IP ADU:



其中兩點(diǎn)區(qū)別:

①M(fèi)odbus TCP/IP ADU沒(méi)有了CRC校驗(yàn)
②Modbus TCP/IP ADU從站地址(1個(gè)字節(jié))變?yōu)榱薓BAP Header(七個(gè)字節(jié))

最后給大家附上Modbus錯(cuò)誤代碼

錯(cuò)誤代碼【01】

說(shuō)明:非法功能。對(duì)于服務(wù)器(或從站)來(lái)說(shuō),詢問(wèn)中接收到的功能碼是不可允許的操作,可能是因?yàn)楣δ艽a僅適用于新設(shè)備而被選單元中不可實(shí)現(xiàn)同時(shí),還指出服務(wù)器(或從站)在錯(cuò)誤狀態(tài)中處理這種請(qǐng)求,例如:它是未配置的,且要求返回寄存器值。

錯(cuò)誤代碼【02】

說(shuō)明:非法數(shù)據(jù)地址。對(duì)于服務(wù)器(或從站)來(lái)說(shuō),詢問(wèn)中接收的數(shù)據(jù)地址是不可允許的地址,特別是參考號(hào)和傳輸長(zhǎng)度的組合是無(wú)效的。對(duì)于帶有100個(gè)寄存器的控制器來(lái)說(shuō),偏移量96和長(zhǎng)度4的請(qǐng)求會(huì)成功,而偏移量96和長(zhǎng)度5的請(qǐng)求將產(chǎn)生異常碼02。

錯(cuò)誤代碼【03】

說(shuō)明:非法數(shù)據(jù)值。對(duì)于服務(wù)器(或從站)來(lái)說(shuō),詢問(wèn)中包括的值是不可允許的值。該值指示了組合請(qǐng)求剩余結(jié)構(gòu)中的故障。例如:隱含長(zhǎng)度是不正確的。modbus協(xié)議不知道任何特殊寄存器的任何特殊值的重要意義,寄存器中被提交存儲(chǔ)的數(shù)據(jù)項(xiàng)有一個(gè)應(yīng)用程序期望之外的值。

錯(cuò)誤代碼【04】

說(shuō)明:從站設(shè)備故障。當(dāng)服務(wù)器(或從站)正在設(shè)法執(zhí)行請(qǐng)求的操作時(shí),產(chǎn)生不可重新獲得的差錯(cuò)。

錯(cuò)誤代碼【05】

說(shuō)明:確認(rèn)。與編程命令一起使用,服務(wù)器(或從站)已經(jīng)接受請(qǐng)求,并且正在處理這個(gè)請(qǐng)求,但是需要長(zhǎng)持續(xù)時(shí)間進(jìn)行這些操作,返回這個(gè)響應(yīng)防止在客戶機(jī)(或主站)中發(fā)生超時(shí)錯(cuò)誤,客戶機(jī)(或主機(jī))可以繼續(xù)發(fā)送輪詢程序完成報(bào)文來(lái)確認(rèn)是否完成處理。

錯(cuò)誤代碼【06】

說(shuō)明:從屬設(shè)備忙。與編程命令一起使用。服務(wù)器(或從站)正在處理長(zhǎng)持續(xù)時(shí)間的程序命令。張服務(wù)器(或從站)空閑時(shí),用戶(或主站)應(yīng)該稍后重新傳輸報(bào)文。

錯(cuò)誤代碼【08】

說(shuō)明:存儲(chǔ)奇偶差錯(cuò)。與功能碼20和21以及參考類(lèi)型6一起使用,指示擴(kuò)展文件區(qū)不能通過(guò)一致性校驗(yàn)。服務(wù)器(或從站)設(shè)法讀取記錄文件,但是在存儲(chǔ)器中發(fā)現(xiàn)一個(gè)奇偶校驗(yàn)錯(cuò)誤??蛻魴C(jī)(或主方)可以重新發(fā)送請(qǐng)求,但可以在服務(wù)器(或從站)設(shè)備上要求服務(wù)。

錯(cuò)誤代碼【10】

說(shuō)明:不可用網(wǎng)關(guān)路徑。與網(wǎng)關(guān)一起使用,指示網(wǎng)關(guān)不能為處理請(qǐng)求分配輸入端口至輸出端口的內(nèi)部通信路徑。通常意味著網(wǎng)關(guān)是錯(cuò)誤配置的或過(guò)載的。

錯(cuò)誤代碼【11】

說(shuō)明:網(wǎng)關(guān)目標(biāo)設(shè)備響應(yīng)失敗。與網(wǎng)關(guān)一起使用,指示沒(méi)有從目標(biāo)設(shè)備中獲得響應(yīng)。通常意味著設(shè)備未在網(wǎng)絡(luò)中。
作者:曹俊義

相關(guān)閱讀

深入了解Modbus TCP協(xié)議
走進(jìn)工業(yè)以太網(wǎng)協(xié)議Modbus TCP

共有訪客發(fā)表了評(píng)論 網(wǎng)友評(píng)論

  客戶姓名:
郵箱或QQ:
驗(yàn)證碼: 看不清楚?