熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 深入了解Modbus TCP協議

深入了解Modbus TCP協議

時間:2020-08-03 14:46:19來源:

導語:?Modbus總線有三種協議:ModbusRTU協議、ModbusASCII協議和ModbusTCP協議,Modbus總線活躍在工業通信領域。ModbusRTU和ModbusASCII擅長串行通信,比如基于RS485或者RS232的通信,而ModbusTCP則擅長基于以太網的通信。由于底層所使用的結構不同,Modbus的應用數據單元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌暉儀表下面來詳細介紹。

Modbus總線有三種協議:ModbusRTU協議、ModbusASCII協議和ModbusTCP協議,Modbus總線活躍在工業通信領域。ModbusRTU和ModbusASCII擅長串行通信,比如基于RS485或者RS232的通信,而ModbusTCP則擅長基于以太網的通信。由于底層所使用的結構不同,Modbus的應用數據單元(ApplicationDataUnit,ADU)有所不同。你可能并去清楚什么是ADU,昌暉儀表下面來詳細介紹。

為了進行通信,Modbus規定了一種很簡單的數據結構,被稱為“協議數據單元”(ProtocolDataUnit,PDU)。協議數據單元由功能碼+數據構成,如下面這張圖:

協議數據單元.png

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

協議數據單元有三種類型:請求型協議數據單元(RequestPDU)、應答型協議數據單元(ResponsePDU)、及異常應答型協議數據單元(ExcepTIonResponsePDU),更多關于協議數據單元的內容,大家可以去Modbus官網下載通信規范好好閱讀。

協議數據單元是Modbus的通用數據結構,它與底層物理結構無關,ModbusRTU、ModbusASCII和ModbusTCP都使用相同的協議數據單元。但是,Modbus在通信的時候,總要依賴物理網絡。因此要把協議數據單元映射到物理網絡上,這就形成了應用數據單元(ApplicaTIonDataUnit,ADU)。由于底層網絡的不同,ModbusTCP跟ModbusRTU和ModbusASCII的應用數據單元是不同的,ModbusRTU和ModbusASCII的ADU結構如下圖所示:

PDU.png

而ModbusTCP的ADU結構如下:

Modbus TCP的ADU.png

可以看到,ModbusTCP的應用數據單元是在協議數據單元的基礎上,添加了一個叫做“MBAP頭(MBAPHeader)”的結構。MBAP是英文“ModBusAPlicaTIon”的縮寫,即“應用數據單元”的意思。

MBAP頭結構由7個字節構成,如下表所示:

MBAP頭結構.png

其中:

◆傳輸標識符:用于標識應用數據單元,即請求和應答之間的配對;客戶端對該部分進行初始化,服務器端將其拷貝到自己的ADU中;

◆協議標識符:系統間的協議標識,0=Modbus;

◆長度:接下來要發送的數據長度,即:單元標識符+PDU的總長度,以字節為單位;

◆單元標識符:用于系統間的站尋址,比如在以太網+串行鏈路的網絡中,遠程站的地址;

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

說道這里,大家可能會有一個疑惑。因為Modbus在網絡通信中,通常需要寫明IP地址和端口號,為什么ModbusTCP的ADU中沒有相關的內容呢?

哈哈,其實這是因為ModbusTCP是一個應用層的協議,而你說的IP地址和端口號屬于傳輸層/網絡層的協議。還沒明白,好吧,看看這張圖:

Modbus TCP.png

你看,在邏輯上ModbusTCP是在TCP層上的。在發送數據的時候,ModbusTCP的應用數據單元首先向下傳送給傳輸層,加上TCP協議的報文;再傳送給網絡層,加上IP協議的報文;再向下傳送給數據鏈路層及物理層;接收的過程正好相反,從物理層一層一層的去掉相應層的報文,最終到達應用層。所以在使用ModbusTCP進行數據傳輸的時候,是要配合TCP/IP協議來使用的。通常如果你使用電腦編程,就要用到SOCKET技術;如果是使用plc編程,通常廠家已經把底層通信封裝成庫指令了,你只要直接調用就好了。比如西門子S7-200SMART/1200/1500等PLC都有現成的Modbus-TCP指令庫。偷偷告訴你一聲,昌暉儀表后續會寫基于PLC和基于PC的Modbus-TCP通信的文章。

還有一點要特別說明一下,ModbusTCP使用的端口號是502,一定要給ModbusTCP預留好,不能被別人占用哦。


標簽:

點贊

分享到:

上一篇:''云''+''邊'' 工業機器人遠...

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

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 武强县| 武山县| 东阿县| 巨鹿县| 水城县| 屯昌县| 台江县| 淳安县| 阳东县| 仪征市| 凤阳县| 上杭县| 辽中县| 班玛县| 湛江市| 延边| 大冶市| 江华| 裕民县| 蚌埠市| 黄石市| 东宁县| 建瓯市| 长泰县| 晋城| 确山县| 宜兴市| 长葛市| 满城县| 舞阳县| 连山| 永嘉县| 合江县| 乌海市| 田东县| 松桃| 股票| 朔州市| 贺兰县| 隆子县| 潼关县|