<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> PLC基礎入門教程 >> 正文

      ModbusTCP協議報文解析

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/4/4

      ModbusTCP協議報文解析

       

      報文格式

      交互(通信)標識:2個字節 為此次通信事務處理標識符,一般每次通信之后將被要求加1以區別不同的通信數據報文。
      協議標識:2個字節 表示該條指令遵循ModbusTCP協議,一般都為00 00
      報文長度:2個字節 表示后面數據的長度,有幾個字節,高字節在前
      (前六位Modbus/TCP協議不同功能碼通用)

      設備標識 :1個字節 設備地址,這個可以用于局域網里面的具體的地址,如果目標機器有固定ip,這個就不起作用,直接上寫成 00
      功能碼:1個字節 功能碼在modbus協議用于表示信息幀的功能
      數據:N個字節 后面數據根據不同功能碼不同。

      ModbusTCP協議報文

       

       

      modbus 常用功能代碼
      十進制 功能 數據類型
      01 讀取 多個線圈
      02 讀取 多個離散量輸入量
      03 讀取 多個保持寄存器 16進制整型
      04 讀取 多個輸入寄存器 16進制整型
      05 寫入 單個線圈
      06 寫入 單個寄存器 16進制整型
      15 寫入 多個線圈
      16 寫入 多個寄存器 16進制整型

      功能碼詳解

      01 讀取多個線圈

      示例報文:

      請求00 01 00 00 00 06 FF 01 00 01 00 10

      第1,2位 00 01 交互標識
      第3,4位 00 00 協議標識
      第5,6位 00 06 后面報文長度 有6位
      第7位 FF 設備地址,發送什么,響應什么
      第8位 01 功能碼

      第9,10位00 01 起始地址

      第11,12位 00 10查詢線圈長度,查詢16位線圈

      響應00 01 00 00 00 05 FF 01 02 0A 02

      前四位和7,8位同請求發送的報文

      第5,6位是后面報文長度

      第9位是后面數據位的長度,

      第10位開始是數據位。

      01查詢線圈,每一個16進制數據表示8位線圈

      第10位0A --> 0000 1010 第二位是1,第四位是1

      02 讀取多個離散量輸入

      同01

      03 讀取 多個保持寄存器

      寄存器讀取與線圈的區別,響應數據,寄存器數據每兩個字節表示1位,一次請求不能超過127個地址
      示例報文:

      請求00 01 00 00 00 06 01 03 00 05 00 02
      第1,2位 00 01 交互標識
      第3,4位 00 00 協議標識
      第5,6位 00 06 后面報文長度 有6位
      第7位 01 設備地址,發送什么,響應什么
      第8位 03 功能碼

      第9,10位00 05起始地址
      第11,12位 00 02查詢寄存器長度,查詢2個寄存器

      響應00 01 00 00 00 07 01 03 04 00 22 00 00
      前四位(00 01 00 00)和7,8位(01 03)同請求發送的報文
      第5,6位 00 07 是后面報文長度
      第9位 04 是后面數據位的長度
      第10-13位 數據位(00 22 00 00

      04 讀取 多個輸入寄存器

      同03

      05 (05H)寫入 單個線圈

      請求:00 01 00 00 00 06 FF 05 00 01 FF 00

      第9,10位 00 01 寫入線圈的地址

      第11,12位 寫入的數據值 FF 00 表示置ON/1狀態 00 00 表示置OFF/0狀態

      響應:00 01 00 00 00 06 FF 05 00 01 FF 00

      15(0FH)寫入 多個線圈

      請求:00 01 00 00 00 06 FF 0F 00 05 00 0A 02 CD 01

      第9,10位 00 05寫入的起始地址

      第11,12位 00 0A寫入線圈數量

      第13位 02數據字節數量

      第14位之后是數據 低字節在前

      CD 01 —> 1100 1101 0000 0001

      0C 0B 0A 09 08 07 06 05
      1 1 0 0 1 1 0 1
      14 13 12 11 10 0F 0E 0D
      0 0 0 0 0 0 0 1
      06(06H) 寫入 單個寄存器

      請求:00 05 00 00 00 06 FF 06 00 05 00 23

      向地址為5的寄存器寫入35。
      第9,10位 00 05寫入的起始地址
      第11,12位 00 0A寫入寄存器的值

      響應:00 05 00 00 00 06 FF 06 00 05 00 23

      16(10H)寫入多個寄存器

      請求:00 06 00 00 00 0B FF 10 00 02 00 02 04 00 21 00 2A

      從地址2開始寫入兩個寄存器,2寄存器寫入33,3寄存器寫入42
      第9,10位 00 02寫入的起始地址
      第11,12位 00 02寫入寄存器的數量
      第13位 04 后面數據的字節
      第14-17位 數據

      響應:00 06 00 00 00 06 FF 10 00 02 00 02

      從地址2開始寫入兩個寄存器,2寄存器寫入33,3寄存器寫入42

      第9,10位 00 02寫入的起始地址

      第11,12位 00 02寫入寄存器的數量

      第13位 04 后面數據的字節

      第14-17位 數據

      響應:00 06 00 00 0 0 06 FF 10 00 02 00 02

      錯誤響應

      當發生通訊異常時,響應前7位仍然為modbus正常協議格式,第八位響應功能碼(請求功能碼+0x80),第九位異常碼。

      異常數據即包含異常碼的數據:
      目前使用的異常碼是:01,02,03和04。

      • 響應功能碼 = 請求功能碼 + 0x80
      • 響應報文提供異常碼顯示出錯原因。

      常見異常碼含義:

      異常碼 名稱 含義
      01 非法功能 對于服務器(或從站)來說,詢問中接收到的功能碼是不可允許的操作,可能是因為功能碼僅適用于新設備而被選單元中不可實現同時,還指出服務器(或從站)在錯誤狀態中處理這種請求,例如:它是未配置的,且要求返回寄存器值。
      02 地址非法 對于服務器(或從站)來說,詢問中接收的數據地址是不可允許的地址,特別是參考號和傳輸長度的組合是無效的。對于帶有100個寄存器的控制器來說,偏移量96和長度4的請求會成功,而偏移量96和長度5的請求將產生異常碼02。
      03 數據非法 對于服務器(或從站)來說,詢問中包括的值是不可允許的值。該值指示了組合請求剩余結構中的故障。例如:隱含長度是不正確的。modbus協議不知道任何特殊寄存器的任何特殊值的重要意義,寄存器中被提交存儲的數據項有一個應用程序期望之外的值。
      04 從站設備故障 當服務器(或從站)正在設法執行請求的操作時,產生不可重新獲得的差錯。
      特殊數據處理

      float 按IEEE-754標準協議存儲

      C#中浮點數的二進制格式遵循IEEE754標準

      IEEE-754格式標準:一個浮點數有2部分組成:底數m和指數e
      IEEE-754

      寄存器地址

      Modbus協議定義的寄存器地址是5位十進制地址,即:
      線圈(DO)地址:00001~09999
      觸點(DI)地址:10001~19999
      輸入寄存器(AI)地址:30001~39999
      輸出寄存器(AO)地址:40001~49999

      0x代表線圈(DO)類地址,1x代表觸點(DI)類地址、 3x代表輸入寄存器(AI)類地址、4x代表輸出寄存器(AO)類地址。
      在實際編程中,前綴的區分作用(有功能碼進行區分),所以只需說明后4位數,而且需轉換為4位十六進制地址。
      Modbus 數據地址格式是從0開始,寄存器地址對應報文中地址關系,x0001對應00 00,示例40003對應 00 02地址

      以上根據開發時查的資料和網上資料整理一些的有用信息,方便開發查詢

      Tags:電冰箱,冰箱,工作原理  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      推薦文章
      最新推薦
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 久久桃花综合桃花七七网| 亚洲色欲啪啪久久WWW综合网| 亚洲另类激情综合偷自拍图| 丁香五月亚洲综合深深爱| 狠狠狠色丁香婷婷综合久久五月 | 亚洲丁香婷婷综合久久| 婷婷综合激情五月中文字幕| 久久久久亚洲AV综合波多野结衣| 亚洲综合国产精品| 色99久久久久高潮综合影院| 国产成人精品综合久久久久 | 思思91精品国产综合在线| 中文字幕国产综合| 色综合小说久久综合图片| 久久无码无码久久综合综合| 国产综合激情在线亚洲第一页| 人人狠狠综合久久88成人 | 一本久道综合在线无码人妻| 久久91精品综合国产首页| 亚洲人成综合网站7777香蕉| 久久综合香蕉久久久久久久| 久久综合狠狠综合久久97色| 一本色道久久综合网| 色老头综合免费视频| 色婷婷久久综合中文久久一本| 亚洲精品国产第一综合99久久| 天天影视色香欲综合免费| 久久综合丝袜日本网| 亚洲AV综合色区无码另类小说| 国产综合内射日韩久| 激情五月婷婷综合网站| 亚洲av伊人久久综合密臀性色| 久久99精品综合国产首页| 国产精品无码久久综合| 天天爽天天狠久久久综合麻豆| 浪潮AV色综合久久天堂| 色综合久久综精品| 国产精品亚洲综合一区在线观看 | 丁香婷婷激情综合俺也去| 综合久久久久久久综合网| 一本一道色欲综合网中文字幕|