九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
你好,我是Modbus TCP協(xié)議

大家好,我是Modbus-TCP協(xié)議。前面的文章,我大哥(Modbus-RTU協(xié)議)曾做過自我介紹(原文網(wǎng)址:https://www.founderchip.com/?id=65),今天這篇文章,我也想和大家認識下。

封面圖片來自https://pixabay.com并做了適當修改,原圖片由mohamed Hassan在Pixabay上發(fā)布,感謝作者。

我來自Modbus大家庭,我們家有三個兄弟:大哥(Modbus-RTU協(xié)議)、二哥(Modbus-ASCII協(xié)議)和我,我們都活躍在工業(yè)通信領域。我大哥和二哥擅長串行通信,比如基于RS485或者RS232的通信,而我則擅長基于以太網(wǎng)的通信。由于底層所使用的結構不同,我們的應用數(shù)據(jù)單元(Application Data Unit,ADU)有所不同。你可能并去清楚什么是ADU,我來詳細介紹下吧。

為了進行通信,我們家規(guī)定了一種很簡單的數(shù)據(jù)結構,被稱為'協(xié)議數(shù)據(jù)單元'(Protocol Data Unit,PDU)。

協(xié)議數(shù)據(jù)單元由功能碼+數(shù)據(jù)構成,如下面這張圖:

功能碼的長度為1個字節(jié),它表示要執(zhí)行的功能。比如常見的:01讀取線圈;02讀取離散量輸入值;03讀取保持寄存器值;05寫單個線圈等;

數(shù)據(jù)部分的長度為0~252個字節(jié),它表示要讀的地址或者要寫入的值,不同的功能碼對應的數(shù)據(jù)有所不同。比如01功能碼,其數(shù)據(jù)為4個字節(jié),其中前兩個字節(jié)表示要讀取的線圈的地址,后兩個字節(jié)表示要讀取線圈的數(shù)量;而對于05功能碼,其數(shù)據(jù)也是4個字節(jié),前兩個字節(jié)表示要寫入線圈的地址,后面兩字節(jié)表示要寫入的值。

協(xié)議數(shù)據(jù)單元有三種類型:請求型協(xié)議數(shù)據(jù)單元(Request PDU)、應答型協(xié)議數(shù)據(jù)單元(Response PDU)、及異常應答型協(xié)議數(shù)據(jù)單元(Exception Response PDU),更多關于協(xié)議數(shù)據(jù)單元的內容,你可以去我家官網(wǎng)(http://modbus.org)下載通信規(guī)范好好閱讀下,或者去北島李工的網(wǎng)站(https://www.founderchip.com)下載。

協(xié)議數(shù)據(jù)單元是我們家族的通用數(shù)據(jù)結構,它與底層物理結構無關,我們三兄弟都使用相同的協(xié)議數(shù)據(jù)單元。但是,我們在通信的時候,總要依賴物理網(wǎng)絡。因此要把協(xié)議數(shù)據(jù)單元映射到物理網(wǎng)絡上,這就形成了應用數(shù)據(jù)單元(Application Data Unit,ADU)。由于底層網(wǎng)絡的不同,我跟兩個哥哥的應用數(shù)據(jù)單元是不同的,他們的ADU結構如下圖所示:

而我的ADU結構如下:

可以看到,我的應用數(shù)據(jù)單元是在協(xié)議數(shù)據(jù)單元的基礎上,添加了一個叫做'MBAP頭(MBAP Header)'的結構。MBAP是英文'ModBus APlication'的縮寫,即'應用數(shù)據(jù)單元'的意思。

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

其中:

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

  • 協(xié)議標識符:系統(tǒng)間的協(xié)議標識,0=Modbus;

  • 長度:接下來要發(fā)送的數(shù)據(jù)長度,即:單元標識符+PDU的總長度,以字節(jié)為單位;

  • 單元標識符:用于系統(tǒng)間的站尋址,比如在以太網(wǎng)+串行鏈路的網(wǎng)絡中,遠程站的地址;

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

說道這里,你可能會有一個疑惑。因為我們在網(wǎng)絡通信中,通常需要寫明IP地址和端口號,為什么我的ADU中沒有相關的內容呢?

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

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

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

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
問題詳情
MODBUS TCP協(xié)議內容
Modbus協(xié)議深入講解
基于linux 的多功能網(wǎng)關的設計
工控總線之modbus講解
(轉)Modbus RTU通信協(xié)議詳解以及與Modbus TCP通信協(xié)議之間的區(qū)別和聯(lián)系
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服