modbus-tcp協議講解

来源:https://www.cnblogs.com/lifexy/archive/2019/08/06/11311112.html
-Advertisement-
Play Games

MODBUS功能碼簡介 代碼 中文名稱 位操作/字操作 操作數量 01h 讀線圈狀態 位操作 單個或多個 02h 讀離散輸入狀態(只能讀到0或1) 位操作 單個或多個 03h 讀保持寄存器(保持寄存器可以通過06h功能寫入) 字操作 單個或多個 04h 讀輸入寄存器(輸入寄存器只能讀取,不能通過06 ...


MODBUS功能碼簡介 

代碼

中文名稱

位操作/字操作

操作數量

01h

讀線圈狀態

位操作

單個或多個

02h

讀離散輸入狀態(只能讀到0或1)

位操作

單個或多個

03h

讀保持寄存器(保持寄存器可以通過06h功能寫入)

字操作

單個或多個

04h

讀輸入寄存器(輸入寄存器只能讀取,不能通過06h功能寫入)

字操作

單個或多個

05h

寫單個線圈(線圈表示用來控制輸出IO控制)

位操作

單個

06h

寫單個保持寄存器

字操作

單個

0Fh

寫多個線圈

位操作

多個

10h

寫多個保持寄存器

字操作

多個

 

Modbus TCP介紹

示例-通過03功能碼讀寄存器(從寄存器00開始,讀取兩個值,讀到01寄存器結束)

客戶端發送 01 02 00 00 00 06 01 03 00 00 00 02

01 02 00 00 00 06 (固定報文頭)

  • 01 02:   客戶端發出的檢驗信息, server端會將這兩個位元組內容複製到回應的報文第一二位.一般我們會將第一二位進行不停遞加,然後根據伺服器返回的相應內容, 來驗證伺服器回應信息的時效性
  • 00 00:   表示tcp/ip 的協議的modbus的協議
  • 00 06:   表示客戶端發送的後面帶了多少位元組.

01 03 00 00 00 02(用戶數據)

  • 01:   表示設備地址
  • 03:  表示讀保持寄存器功能碼
  • 00 00:  表示客戶端讀取的寄存器起始地址
  • 00 02:  表示讀取的寄存器值個數(由於為02,所以會讀出寄存器00h和01h的值)

返回值如下圖所示:

 

伺服器返回值  01 02 00 00 00 07 01 03 04 04 7B 00 FF

  • 01 02:  伺服器回應的檢驗信息
  • 00 00: 表示tcp/ip 的協議的modbus的協議
  • 00 07: 表示伺服器發送的後面帶了多少位元組.
  • 01:  表示設備地址
  • 03:  表示功能碼
  • 04:  表示後面發送的寄存器00的位元組長度
  • 04 7B:  表示寄存器00的值
  • 00 FF:  表示寄存器01的值

 

示例-06功能碼寫單個寄存器(向寄存器03地址里寫值)

客戶端發送 01 02 00 00 00 06 01 06 00 03 00 FF

01 02 00 00 00 06 (固定報文頭)

  • 01 02:  客戶端發出的檢驗信息
  • 00 00:  表示tcp/ip 的協議的modbus的協議
  • 00 06:  表示客戶端發送的後面帶了多少位元組.

01 06 00 03 00 FF (用戶數據)

  • 01:   表示設備地址
  • 06:   表示寫單個保持寄存器功能碼
  • 00 FF:  表示寫入寄存器03h的值為0xFF

返回值如下圖所示:

 

伺服器返回  01 02 00 00 00 06 01 06 00 03 00 FF

後面的06 00 03 00 FF:表示客戶端使用06功能碼成功向寄存器03h分別寫入了0xFF值

 

示例-10功能碼寫多個寄存器(向寄存器03~06地址里寫不同值)

客戶端發送 01 02 00 00 00 10 01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06

01 02 00 00 00 10 (固定報文頭)

  • 01 02:  客戶端發出的檢驗信息
  • 00 00:  表示tcp/ip 的協議的modbus的協議
  • 00 10:  表示客戶端發送的後面帶了多少位元組.

01 10 00 03 00 04 08 FF FF 00 0A 00 0F 00 06 (用戶數據)

  • 01:  表示設備地址
  • 10:  表示寫多個保持寄存器功能碼
  • 00 03:  表示客戶端寫入的寄存器起始地址
  • 00 04:  表示寫入的寄存器值個數(由於為04,所以會寫入寄存器03h~06h的值)
  • 08:   表示後面寫入的位元組個數
  • FF FF:  表示寫入寄存器03h的值
  • 00 0A:  表示寫入寄存器04h的值
  • 00 0F:  表示寫入寄存器05h的值
  • 00 06:  表示寫入寄存器06h的值

返回值如下圖所示:

 

伺服器返回 01 02 00 00 00 06 01 10 00 03 00 04

後面的10 00 03 00 04:表示客戶端使用10功能碼成功向寄存器03h~06h分別寫入了值

 

部分參考內容:https://blog.csdn.net/mikasoi/article/details/81782159


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近項目有用到騰訊雲的身份識別介面,話不多說,直接上代碼: 開始的時候,使用了HTTP的POST這種請求方式進行調用,但後面發現這種請求方式有Bug,一旦用戶上傳的圖片尺寸太大(跟圖片大小沒關係,主要是尺寸),請求騰訊的API就會返回下麵這個錯誤(PS:因為我這邊使用的是OCR身份證識別API,如果 ...
  • 經過WTM團隊和LayUI團隊多次深入協商,雙方於2019年7月29日在北京中國國際展覽中心正式達成戰略合作意向, 雙方簽署了戰略合作框架協議,LayUI團隊承諾使用WTM框架的任何項目都可以免費使用其收費版的後臺模板,WTM團隊則從受捐助款項里拿出固定比例作為回饋。 簽署儀式在歡快祥和的氣氛中圓滿 ...
  • 由於C#是,Net框架的一部分,且用於編寫.Net應用程式,所以我們需先瞭解下C#與.Net框架之間的關係。 .Net框架(.Net Framework) .Net框架是一個創新的平臺,能幫你編寫出下麵類型的應用程式: Windows應用程式 Web應用程式 Web服務 .Net框架應用程式是多平臺 ...
  • 1. .Net Core的序列化方式 1.1 json.Net 常用的工具包,如Newtonsoft.Json, 它是基於json格式的序列化和反序列化的組件 json.net 有以下優點: 侵入性:可以不添加attribute,就能進行序列化操作 靈活性:可以靈活性配置,比如允許被序列化的成員自定 ...
  • 此方法針對的是在沒有顯示器(這裡說的顯示器為可以接受HDMI信號的顯示器,故不包括一般的筆記本顯示器)情況下如何設置樹莓派和網路連接 ...
  • 炎炎夏日中想和小伙伴們開黑的同學可以進來看一下了,本教程教你搭建基於兩個平臺的Minecraft伺服器,這裡我以Minecraft 1.11.2版本為例給大家講解搭建流程。其中有Forge版本可以加入mods。 一、Windows下的Minecraft純凈(無Forge)伺服器搭建 1.獲取伺服器文 ...
  • Linux標準的讀音:哩吶科斯 Linux是一種類UNIX的系統,具有以下特點: 1、免費開源 2、模塊化程度高 3、廣泛的硬體支持 4、安全穩定 5、多用戶,多任務(所以常應用於系統運維,以及合作開發) 6、良好的可移植性 man文件 man 命令 查看某個命令的用法 空格鍵:翻頁 q:退出,結束 ...
  • 最近因為公司的伺服器需要做基線和漏洞掃描,基線方面問題不大,按照報告上的加固建議,選一些權重高的問題處理一下就好了。但是漏洞掃描就比較坑了,掃出來了十幾個高危和一百六十多個中危漏洞,不過還好漏洞基本上都出在openSSH和mysql上,升級一下這兩個的版本就好了。因為是雲主機openSSH不敢亂動, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...