Modbus通訊協議初學

目錄

  • Modbus通訊協議初學
    • 什么是Modbus?
    • Modbus用來做什么?
    • 4個種類的寄存器
    • 協議速記
    • 功能碼
    • Modbus 報文幀
    • 示例解讀

Modbus通訊協議初學

什么是Modbus?

顧名思義,它是一個bus,即總線協議。比如串口協議、IIC協議、SPI都是通訊協議。你接觸到這種協議,相信你所處的行業是工業方面或者你的產品用于工業。

Modbus用來做什么?

用兩個來概括:通訊。

4個種類的寄存器

線圈狀態(Coil Status) 可讀可寫

離 散 輸入狀 態(Discrete Input Status) 只讀

保 持 寄 存 器(Holding Register) 可讀可寫

輸 入 寄 存 器( Input Register)只讀

在這里插入圖片描述

協議速記

Modbus 是一主多從的協議

在這里插入圖片描述

主控發出的數據里,必定含有如下信息:

① 設備地址:你要訪問從設備 1,還是訪問從設備 2

② 訪問哪類寄存器,是讀還是寫,只訪問 1 個寄存器,還是多個寄存器:這被稱為功能碼

③ 起始寄存器地址、寄存器數量:這在數據里定義

④ 為了保證數據傳輸的可靠,還附帶有 CRC 檢驗碼

以 Modbus RTU 協議為例,主控發出的數據包格式如下:

在這里插入圖片描述

功能碼

在這里插入圖片描述

功能代碼有哪些?常用的功能碼如下:

① 讀線圈狀態(01)

② 讀離散輸入狀態(02)

③ 寫單個線圈(05)、寫多個線圈(15)

④ 讀保持寄存器(03)

⑤ 讀輸入寄存器(04)

⑥ 寫單個保存寄存器(06)、寫多個保存寄存器(16)

Modbus 報文幀

一個報文就是一幀數據,一個數據幀就一個報文: 指的是一串完整的指令數據,本質就是一串數據。

Modbus 報文是指主機發送給從機的一幀數據,其中包含著從機的地址,主機想執行的操作,校驗碼等內容。

Modbus 協議 RTU 報文格式如下所示:

幀結構 = 地址 + 功能嗎 + 數據 + 校驗

地址: 占用一個字節,范圍0-255,其中有效范圍是1-247,其他有特殊用途,比如255是廣播地址(廣播地址就是應答所有地址,正常的需要兩個設備的地址一樣才能進行查詢和回復)。

功能碼:占用一個字節,功能碼的意義就是,知道這個指令是干啥的,比如你可以查詢從機的數據,也可以修改數據,所以不同功能碼對應不同功能。

數據:根據功能碼不同,有不同結構,在后續的實例中有說明。

校驗:為了保證數據不錯誤,增加這個,然后再把前面的數據進行計算看數據是否一致,如果一致,就說明這幀數據是正確的,我再回復;如果不一樣,說明你這個數據在傳輸的時候出了問題,數據不對的,所以就拋棄了。

示例解讀

以(0x01)讀取線圈為例

在這里插入圖片描述

從我上圖的這個例子中,進行如下的解析

主機發送:07 01 00 00 00 08 3D AA
從機回復:07 01 01 20 50 D8解析如下:
07(從設備地址) 01(功能碼) 00 00(起始地址16bit,高位在前,低位在后) 00 08(寄存器數16bit 高位在前,低位在后) 3D AA (CRC校驗) 07(從設備地址) 01(功能碼) 01(數據域字節數) 20(數據 1) 50 D8(校驗) 

參考資料:

https://blog.csdn.net/qq_39400113/article/details/118369506

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11033.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11033.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11033.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何自定義Linux命令

說明:本文介紹如何將自己常用的命令設置為自定義的命令,以下操作在阿里云服務器CentOS上進行。 修改配置文件 修改配置文件前,先敲下面的命令查看當前系統配置的shell版本 echo $SHELL或者 echo $0區別在于,$SHELL查看的是系統…

落雪音樂 超好用的桌面端音樂播放器

之前一直都是充某Q音樂的會員,突然不想氪金了,終于找到一個開源的音樂播放器,在此先給落雪無痕大佬跪了 太愛了 簡直白嫖怪的福音 話不多說,直接上操作:解壓密碼:www.1234f.com下載地址:極速云…

圖片批量管理邁入智能新時代:一鍵輸入關鍵詞,自動生成并保存驚艷圖片,輕松開啟創意之旅!

在數字化時代,圖片已成為我們表達創意、記錄生活、傳遞信息的重要工具。然而,隨著圖片數量的不斷增加,如何高效、便捷地管理這些圖片,卻成為了一個令人頭疼的問題。 第一步,進入首助編輯高手主頁面,在上方…

簡單的Python示例母親節的祝福

在Python中,我們通常不會直接編寫HTML源碼,但我們可以編寫一個Python腳本來生成或發送包含母親節祝福的HTML內容。以下是一個簡單的Python示例,它使用字符串拼接來創建一個簡單的HTML頁面,其中包含母親節的祝福。 # 定義一個包含…

【AMBA Bus ACE 總線 9.1 -- Non-cache Master 寫操作 詳細介紹】

請閱讀【AMBA Bus ACE 總線與Cache 專欄 】 歡迎學習:【嵌入式開發學習必備專欄】 文章目錄 Non-cache MasterACE 和系統級緩存一致性ACE 非緩存主控(Non-cacheable Master)Non-cache Master ARM的ACE(AXI Coherency Extension)是一種用于增強系統級緩存一致性的接口規范…

視頻封面一鍵提取:從指定時長中輕松獲取您想要的幀圖片

在數字媒體時代,視頻已成為人們獲取信息、娛樂和溝通的主要形式之一。而一個好的視頻封面,往往能夠吸引觀眾的眼球,增加視頻的點擊率和觀看量。然而,對于很多視頻創作者和編輯者來說,如何從視頻中快速、準確地提取出合…

Git知識點總結

目錄 1、版本控制 1.1什么是版本控制 1.2常見的版本控制工具 1.3版本控制分類 2、集中版本控制 SVN 3、分布式版本控制 Git 2、Git與SVN的主要區別 3、軟件下載 安裝:無腦下一步即可!安裝完畢就可以使用了! 4、啟動Git 4.1常用的Li…

Shell編程之循環語句之for

一.for循環語句 讀取不同的變量值,用來逐個執行同一組命令 for 變量名 in 取值列表 do命令序列 done 示例: 1.計算從1到100所有整數的和 2.提示用戶輸入一個小于100的整數,并計算從1到該數之間所有整數的和 3.求從1到100所有整數的偶數和…

【牛客】SQL206 獲取每個部門中當前員工薪水最高的相關信息

1、描述 有一個員工表dept_emp簡況如下: 有一個薪水表salaries簡況如下: 獲取每個部門中當前員工薪水最高的相關信息,給出dept_no, emp_no以及其對應的salary,按照部門編號dept_no升序排列,以上例子輸出如下: 2、題目…

SBM模型、超效率SBM模型代碼及案例數據(補充操作視頻)

01、數據簡介 SBM(Slack-Based Measure)模型是一種數據包絡分析(Data Envelopment Analysis, DEA)的方法,用于評估決策單元(Decision Making Units, DMUs)的效率。而超效率SBM模型是對SBM模型的…

輪轉數組 與 消失的數字

輪轉數組 思路一 創建一個新內存空間,將需輪轉的數依次放入,之后在把其它數放入 代碼: void rotate(int* nums, int numsSize, int k) {k k % numsSize;// 確定有效的旋轉次數if(k 0)return;int* newnums (int*)malloc(sizeof(int) * nu…

HarmonyOS應用開發者高級認證 試題+答案

判斷題 云函數打包完成后,需要到AppGallery Connect創建對應函數的觸發器才可以在端側中調用(錯誤) 每一個自定義組件都有自己的生命周期(正確) 基于端云一體化開發,開發者需要精通前端、后端不同的開發語言…

h2 數據庫Statement was canceled or the session timed out 解決辦法

背景 某項目因需要存儲的數據較少,選擇了h2 數據庫。數據庫的某張表的數據需要全部加載到內存中使用。 最近,某個項目使用該應用時需求比較特殊,使得這張表的數據量增加到了一萬條。此時,查詢全量數據的 SQL 發生了異常&#xf…

遞歸求fabonacci數列 pta

斐波那契數列(Fibonacci sequence)是一個經典的數列,它由以下遞歸關系定義: [ F(n) F(n-1) F(n-2) ] 其中,( F(0) 0 ) 和 ( F(1) 1 )。 在編程中,遞歸是一種實現斐波那契數列的直觀方法。以下是使用遞…

git之tag操作

查看本地有哪些 tags # git tag -l v0.0.3 v0.0.5 v0.0.6查看遠程有哪些 tags # git ls-remote --tags From https://github.com/eyjian/gomooon.git 1fe7f5ecf369cba34f4328285ce1ec72d62c091e refs/tags/v0.0.3 9371db55046109d7fc9a9f75625d5ec31c326ad1 re…

[muduo網絡庫]——muduo庫Acceptor類(剖析muduo網絡庫核心部分、設計思想)

接著之前我們剖析的muduo庫三大核心組件Channel類,Poller/EpollPoller類,EventLoop類,我們接下來繼續看muduo庫中的其他類,這一篇,我們先來介紹Acceptor類。 Acceptor類 主要功能 Acceptor類用于創建套接字&#xf…

企業OA辦公系統開發筆記:1、搭建后端環境

文章目錄 企業辦公系統:搭建環境一、項目介紹1、介紹2、技術棧3、項目模塊4、數據庫 二、搭建環境1、搭建后端1.1、搭建父工程clfwzx-oa-parent1.2、搭建工具類父模塊common1.3、搭建工具類common的子模塊1.4、搭建實體類模塊model和項目模塊service-oa 2、配置依賴…

親測!史上最全數據庫基礎?!

為什么要學習數據庫 以前在程序中存儲數據是一個變量,對象;數據都存儲在內存中,程序運行結束后就銷毀。 后來學習IO之后,將數據存儲在文件中,做到持久存儲,但是使用不方便。 學習專業的數據存儲軟件——…

基于POSIX的信號量模擬DAG上的并行計算的同步問題

本代碼主題借鑒nju的jyy老師的代碼 自己增加了隨機生成DAG(有向無環圖)(不保證連通)數據進行測試 運行打印結果即為并行計算DAG的拓撲序 #include <pthread.h> #include <semaphore.h> #include <unistd.h> #include <iostream> #include <vector&g…

2024最新最全【NMAP】零基礎入門到精通

一、Nmap介紹 Nmap(Network Mapper&#xff0c;網絡映射器)是一款開放源代碼的網絡探測和安全審核工具。它被設計用來快速掃描大型網絡&#xff0c;包括主機探測與發現、開放的端口情況、操作系統與應用服務指紋識別、WAF識別及常見安全漏洞。它的圖形化界面是Zenmap&#xff…