看完這篇,就知道學習MODBUS TCP

MODBUS TCP /IP協議

【網絡架構】

看完這篇,就知道學習MODBUS TCP /IP協議很簡單

以太網幀格式

  歷史上以太網幀格式有五種:

  1.Ethernet V1:這是最原始的一種格式,是由Xerox PARC提出的3Mbps CSMA/CD以太網標準的封裝格式,後來在1980年由DEC,Intel和Xerox標準化形成Ethernet V1標準.

  2.Ethernet V2(ARPA):由DEC,Intel和Xerox在1982年公佈其標準,主要更改了Ethernet V1的電氣特性和物理接口,在幀格式上並無變化;Ethernet V2出現後迅速取代Ethernet V1成為以太網事實標準;Ethernet V2幀頭結構為6bytes的源地址+6bytes的目標地址+2Bytes的協議類型字段+數據。

  3.RAW 802.3:這是1983年Novell發佈其劃時代的Netware/86網絡套件時採用的私有以太網幀格式,該格式以當時尚未正式發佈的802.3標準為基礎;但是當兩年以後IEEE正式發佈802.3標準時情況發生了變化—IEEE在802.3幀頭中又加入了802.2 LLC(Logical Link Control)頭,這使得Novell的RAW 802.3格式跟正式的IEEE 802.3標準互不兼容。

  4.802.3/802.2 LLC:這是IEEE 正式的802.3標準,它由Ethernet V2發展而來。它將Ethernet V2幀頭的協議類型字段替換為幀長度字段(取值為0000-05dc;十進制的1500);並加入802.2 LLC頭用以標誌上層協議,LLC頭中包含DSAP,SSAP以及Crontrol字段.

  5.802.3/802.2 SNAP:這是IEEE為保證在802.2 LLC上支持更多的上層協議同時更好的支持IP協議而發佈的標準,與802.3/802.2 LLC一樣802.3/802.2 SNAP也帶有LLC頭,但是擴展了LLC屬性,新添加了一個2Bytes的協議類型域(同時將SAP的值置為AA),從而使其可以標識更多的上層協議類型;另外添加了一個3Bytes的OUI字段用於代表不同的組織,RFC 1042定義了IP報文在802.2網絡中的封裝方法和ARP協議在802.2 SANP中的實現.

  802.3以太網幀格式備註:

  前導碼(7字節)、幀起始定界符(1字節)、目的MAC地址(6字節)、源MAC地址(6字節)、類型/長度(2字節)、數據(46~1500字節)、幀校驗序列(4字節)[MAC地址可以用2-6字節來表示,原則上是這樣,實際都是6字節]

以太網幀格式總結

MAC地址廠商的查詢的網址:全部廠商列表:

網頁查詢地址: 在Search the public OUI listing . . .輸入網卡MAC地址前三位即可,如00-0D-65

==>Start:目前,有四種不同格式的以太網幀在使用,它們分別是: ●Ethernet II即DIX 2.0:Xerox與DEC、Intel在1982年制定的以太網標準幀格式。Cisco名稱為:ARPA。 ●Ethernet 802.3 raw:Novell在1983年公佈的專用以太網標準幀格式。Cisco名稱為:Novell-Ether。 ●Ethernet 802.3 SAP:IEEE在1985年公佈的Ethernet 802.3的SAP版本以太網幀格式。Cisco名稱為:SAP。 ●Ethernet 802.3 SNAP:IEEE在1985年公佈的Ethernet 802.3的SNAP版本以太網幀格式。Cisco名稱為:SNAP。 在每種格式的以太網幀的開始處都有64比特(8字節)的前導字符,如圖3所示。其中,前7個字節稱為前同步碼(Preamble),內容是16進制數0xAA,最後1字節為幀起始標誌符0xAB,它標識著以太網幀的開始。前導字符的作用是使接收節點進行同步並做好接收數據幀的準備。圖一:

說明:所有範例中Send & Receive的數據都是通過ModbusTCP.exe軟件發送與接收。

功能碼 01

功能碼01用於讀取線圈的狀態。

例:Modbus TCP通訊模式下,讀取站號為2的從站Y0~Y5的狀態。


Master→Slave的數據『0000 0000 0006 02 01 0500 0006』

Slave→Master的數據『0000 0000 0004 06 01 01 35』

功能碼 02

功能碼02用於讀取輸入裝置的狀態。

例:Modbus TCP通訊模式下,讀取站號為2的從站X2~X34的狀態。


Master→Slave的數據『0000 0000 0006 02 02 0400 001B』

Slave→Master的數據『0000 0000 0007 02 02 04 CD65 7D04』

功能碼 03

功能碼03用於讀取保持寄存器(字裝置)內容。

PLC D0的MODBUS位址 H1000

例:Modbus TCP通訊模式下,讀取站號為2的從站地址H'0000~H'0005的內容。


Master→Slave的數據『0000 0000 0006 02 03 0000 0006』

Slave→Master的數據『0000 00 00 000F 02 03 0C 0031 0006 0808 0002 0300 0000』

功能碼 05

功能碼05用於對位裝置進行寫單筆操作。

例1:Modbus TCP通訊模式下,設置站號為2的從站Y2=ON。

Master→Slave的數據『0000 0000 0006 02 05 0502 FF00』

Slave→Master的數據『0000 0000 0006 02 05 0502 FF00』

例2:Modbus TCP通訊模式下,設置站號為2的從站Y2=OFF。

Master→Slave的數據『0000 0000 0006 02 05 0502 0000』

Slave→Master的數據『0000 0000 0006 02 05 0502 0000』

功能碼 06

功能碼06用於對寄存器(字裝置)進行寫單筆操作。

例1:Modbus TCP通訊模式下,設置站號為2的從站地址H'1601的內容為K4。

Master→Slave的數據『0000 0000 0006 02 06 1601 0004』

Slave→Master的數據『0000 0000 0006 02 06 1601 0004』

功能碼 15

功能碼15用於對位裝置進行寫多筆操作。

例1:Modbus TCP通訊模式下,設置站號為2的從站Y0~Y17的狀態如下表所示。


Master→Slave的數據『0000 0000 0009 02 0F 000A 02 CD01』

Slave→Master的數據『0000 0000 0006 02 0F 0500 000A』

功能碼 16

功能碼16用於對字裝置進行寫多筆操作。

例1:Modbus TCP通訊模式下,設置站號為2的從站地址H'1618=K500(01F4H);H'1619=K1000(03E8H);H'161A=K2000(07D0H)。


Master→Slave的數據『0000 0000 000B 02 10 1618 0003 06 01F4 03E8 07D0』

Slave→Master的數據『0000 0000 0006 02 0F 0500 000A』


分享到:


相關文章: