Modbus通信協議基礎知識總結

1. 數據類型與存儲區分類

Modbus協議將數據分為四類存儲區,通過存儲區代號區分:

  • 輸出線圈(0x):可讀寫,對應二進制開關量(如繼電器狀態),地址范圍000001-065536(絕對地址)。

  • 輸入線圈(1x):只讀,用于讀取外部設備狀態(如傳感器開關),地址范圍100001-165536

  • 輸入寄存器(3x):只讀,存儲16位數據(如溫度值),地址范圍300001-365536

  • 輸出寄存器(4x):可讀寫,用于控制設備參數(如設定頻率),地址范圍400001-465536

每個存儲區最多支持65536個元素(線圈或寄存器),通過偏移量定位具體地址。

2. 地址模型

Modbus有兩種地址表示方式:

  • PLC地址模型:直接使用存儲區代號+偏移量,如D100表示D區第100個字,M10表示M區第10個位。

  • Modbus地址模型:采用六位絕對地址,由存儲區代號+(偏移量+1)組成。

  • 例如:

    • 4區第1個寄存器 →?400001(絕對地址),對應偏移量0。

    • 4區第100個寄存器 →?400100(絕對地址),對應偏移量99。

為何協議報文中使用相對地址?
協議報文中僅包含偏移量(從0開始),結合功能碼即可確定存儲區。若用絕對地址(如400001),可能因功能碼沖突導致歧義。

3. 長地址 vs 短地址模型

  • 長地址模型:六位數地址,覆蓋全范圍(如400001-465536),適用于PLC等復雜系統。

  • 短地址模型:五位數地址,范圍縮小(如輸出線圈00001-09999),常見于儀表、變頻器等簡單設備,便于配置。

示例轉換
PLC的D100對應Modbus長地址400100(4區偏移量99),而短地址可能直接表示為40099

4. 協議分類

Modbus協議根據傳輸方式和介質分為多種類型:

  • 串口通信(RS232/485/422):

    • Modbus RTU:二進制編碼,高效,使用CRC校驗。

    • Modbus ASCII:文本編碼,可讀性強,效率較低,使用LRC校驗。

  • 以太網通信

    • Modbus TCP:基于TCP/IP,無校驗,適用于工業以太網。

    • Modbus RTU/ASCII Over TCP/UDP:將串口協議封裝在TCP/UDP包中,兼容舊設備。

5. 功能碼說明

功能碼是操作指令的代號,定義了對存儲區的讀寫行為:

  • 讀取操作

    • 01:讀取輸出線圈(如繼電器狀態)。

    • 02:讀取輸入線圈(如傳感器開關)。

    • 03:讀取輸出寄存器(如讀取PLC參數)。

    • 04:讀取輸入寄存器(如采集溫度值)。

  • 寫入操作

    • 05:寫入單個線圈(如控制繼電器通斷)。

    • 0F:寫入多個線圈。

    • 06:寫入單個寄存器(如修改頻率設定)。

    • 10:寫入多個寄存器

6. 關鍵總結

  • 存儲區與地址:通過功能碼+偏移量定位數據,長地址兼容全范圍,短地址簡化配置。

  • 協議選擇:RTU適合高效串口通信,TCP用于以太網,ASCII便于調試。

  • 功能碼核心作用:明確操作類型(讀/寫)和目標存儲區,是協議交互的核心指令。

示例應用
若要讀取變頻器的運行頻率(存儲在輸出寄存器4x,地址400010),使用功能碼03,發送偏移量9(因絕對地址400010對應偏移量9)。設備返回該寄存器的16位數據值。

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

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

相關文章

docker環境下安裝flink

前言 flink在實時計算領域中有著舉足輕重的地位。這篇文章來介紹一下,在linux的docker環境下,怎么快速安裝一個單機版本的flink。 操作流程 環境準備 檢查docker環境是不是正常,如果在拉取鏡像的時候比較慢,建議使用鏡像加速&…

LeetCode 2614.對角線上的質數:遍歷(質數判斷)

【LetMeFly】2614.對角線上的質數:遍歷(質數判斷) 力扣題目鏈接:https://leetcode.cn/problems/prime-in-diagonal/ 給你一個下標從 0 開始的二維整數數組 nums 。 返回位于 nums 至少一條 對角線 上的最大 質數 。如果任一對角線上均不存在質數&…

MongoDB 只能存儲能夠序列化的數據(比如字符串、數字等),而 Python 的 UUID 對象并不是直接可以存入數據庫的格式。

1. UUID 對象是什么? UUID 是 “Universally Unique Identifier”(通用唯一識別碼)的縮寫,是一種 128 位的數字,用于在全局范圍內生成一個唯一的標識符。它常用于數據庫中的記錄標識、分布式系統中的對象標識等場景。…

linux 安全 xshell 使用

目錄和文件 ls -l 查看目錄和文件的權限的設置情況 加固方法 對于重要目錄,建議執行如下類似操作 Chmod -R 750 /etc/rc.d/init.d/* 這樣只有root可以讀寫和執行這個目錄下的腳本 新建了一個用戶Q 寫入了一些信息 發現在root用戶下可以進行文件打開 接下來用普通用…

自動駕駛背后的數學:特征提取中的線性變換與非線性激活

在上一篇博客「自動駕駛背后的數學:從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數中,我們初步探討了自動駕駛技術中從傳感器數據到控制指令的函數嵌套流程,其中提到了特征提取模塊對傳感器數據進行線性…

楊校老師課堂之編程入門與軟件安裝【圖文筆記】

親愛的同學們,熱烈歡迎踏入青少年編程的奇妙世界! 我是你們的授課老師楊校 ,期待與大家一同開啟編程之旅。 1. 輕松叩開編程之門 1.1 程序的定義及生活中的應用 程序是人與計算機溝通的工具。在日常生活中,像手機里的各類 APP、電…

DeepSeek 3FS 與 JuiceFS:架構與特性比較

近期,DeepSeek 開源了其文件系統 Fire-Flyer File System (3FS),使得文件系統這一有著 70 多年歷時的“古老”的技術,又獲得了各方的關注。在 AI 業務中,企業需要處理大量的文本、圖像、視頻等非結構化數據,還需要應對…

Coco AI 智能檢索 Hugo Blog 集成指南

在此前的文章中,我們介紹了如何使用 Coco Server 連接 Notion,實現智能內容檢索。本次,我們將進一步探索如何在 Coco Server 最新版本 中集成 Hugo Site,以便對 Hugo 站點 進行高效檢索。 Coco Server 部署方式 要在本地或服務器…

Mobile-Agent-V:通過視頻引導的多智體協作學習移動設備操作

25年2月來自北京交大和阿里巴巴公司的論文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移動設備使用量的快速增長,迫切需要改進自動化以實現無縫任務管理。然而,因缺乏操作知識&#xff0…

電魚智能EFISH-RK3576-SBC工控板已適配Android 14系統

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系統,為了滿足更多客戶的需求,電魚智能近日又為其成功適配了Android 14系統——硬件性能卓越的核心板與Android 14的深度組合,將為用戶帶來更加流暢、開放、智能的使用體驗。 一、高性能處理器…

正點原子[第三期]Arm(iMX6U)Linux移植學習筆記-5.1 uboot頂層Makefile分析-VSCode工程創建

前言: 本文是根據嗶哩嗶哩網站上“Arm(iMX6U)Linux系統移植和根文件系統構鍵篇”視頻的學習筆記,在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了正點原子教學視頻和鏈接中的內容。 引用: …

java 使用命令創建jar的常用參數整理

在Java中,創建JAR文件的命令是jar。以下是常用參數的表格展示: 參數信息含義使用場景使用示例c創建新的JAR文件用于創建一個新的JAR文件當需要打包類文件和資源文件時jar cf myapp.jar MyClass.classt列出JAR文件內容顯示JAR文件中的內容列表查看JAR文件…

無線頭戴式攝像頭系統:無需標記點攝像頭智能捕捉人臉表情

AH-T無線頭戴式攝像頭系統是一款可以精準捕捉人臉面部細微表情的設備,基于單目無標記點攝像頭智能識別算法,無需在臉上粘貼標記點即可實現真人細微臉部表情的精準捕捉,采用頭盔,面捕攝像頭一體式人性化設計,可以讓使用…

Cursor IDE 入門指南

什么是 Cursor? Cursor 是一款集成了 AI 功能的現代代碼編輯器,基于 VSCode 開發,專為提高開發效率而設計。它內置強大的 AI 助手功能,能夠理解代碼、生成代碼、解決問題,幫助開發者更快、更智能地完成編程任務。 基礎功能 1.…

Tailwind CSS 中的 spacing 詳解

🔍 Tailwind CSS 中的 spacing 詳解 spacing(間距)是 Tailwind CSS 里的一個核心概念,它主要用于控制 padding(內邊距)、margin(外邊距)、width(寬度)、heig…

go語言學習教程推薦,零基礎到做項目

一、基礎入門階段 官方教程(免費) ? A Tour of Go:交互式入門教程,邊學邊練 ? Go by Example:通過300代碼片段學習語法 入門書籍 ? 📘《Go語言圣經》中文版(免費在線閱讀)&#…

STM32---FreeRTOS內存管理實驗

一、簡介 1、FreeRTOS內存管理簡介 2、FreeRTOS提供的內存管理算法 1、heap_1內存管理算法 2、heap_2內存管理算法 4、heap_4內存管理算法 5、heap_5內存管理算法 二、FreeRTOS內存管理相關API函數介紹 三、 FreeRTOS內存管理實驗 1、代碼 main.c #include "st…

常見的前端安全問題

前端安全是 Web 開發中至關重要的一環,以下是常見的前端安全問題及對應的防御措施: 1. XSS(跨站腳本攻擊) 攻擊原理 攻擊者向頁面注入惡意腳本(如 JavaScript),在用戶瀏覽器中執行,…

【VUE】ant design vue實現表格table上下拖拽排序

適合版本&#xff1a;ant design vue 1.7.8 實現效果&#xff1a; 代碼&#xff1a; <template><div class"table-container"><a-table:columns"columns":dataSource"tableData":rowKey"record > record.id":row…

深入解析ES6+新語法:復雜的迭代器與生成器

一、迭代器&#xff08;Iterator&#xff09;&#xff1a;數據遍歷的統一協議 1. 迭代器協議的本質 **迭代器協議&#xff08;Iterator Protocol&#xff09;** 是一種標準化的數據訪問接口&#xff0c;它要求對象實現一個 next() 方法&#xff0c;每次調用返回包含 { valu…