网络协议——Modbus-TCP

目录

1、简介

2、Modbus-TCP与Modbus-RTU的区别

3、消息格式

4、功能码01H

5、功能码02H

6、功能码03H

7、功能码04H

8、功能码05H

9、功能码06H

10、功能码0FH

11、功能码10H


1、简介

  • Modbus-TCP(Modbus Transmission Control Protocol)是一种工业控制系统中常用的通信协议,它基于TCP/IP协议栈,用于在网络中传输数据和命令,实现设备之间的通信和控制。
  • 基于TCP/IP协议栈:Modbus-TCP使用TCP作为传输层协议,通过以太网或者其他支持TCP/IP的网络实现设备之间的通信。
  • 面向连接:与Modbus-RTU不同,Modbus-TCP是面向连接的协议,通信的两端(客户端和服务器)在通信前需要建立连接,通信结束后再断开连接。
  • 与传统的Modbus相同,Modbus-TCP也采用主从模式。主设备(通常是一个计算机或控制器)发起请求,从设备(如传感器、执行器)响应请求。

2、Modbus-TCP与Modbus-RTU的区别

  • 从机地址不再重要
    • Modbus-TCP可以通过IP地址区别从机。
  • 取消了CRC校验
    • TCP/IP数据包中已经存在校验,所以不再需要CRC校验。
  • 多了MBAP报文头

3、消息格式

  • Modbus-TCP消息格式包含TCP头部和Modbus应用数据单元(ADU)。
    • TCP头部:包含源端口号、目标端口号、序列号等TCP协议相关信息。
    • Modbus ADU:包含Modbus功能码、数据字段、校验和等信息。
    • 事务处理标识:可以理解为报文序列号,每次通讯后+1,以区别不同的通信。
    • 协议标识:0000H表示Modbus-TCP协议。
    • 长度:表示数据长度, 单位为字节。
    • 单元标识:设备的从站地址。
  • 功能码

4、功能码01H

  • 01H:读线圈状态。读取一组线圈的状态,返回一个字节数组,其中每个位表示一个线圈的状态。
  • 发送报文(PDU报文)
    • 含义:寄存器起始地址为0000H,线圈寄存器数量为0008H。
  • 响应报文
    • 返回一个字节数据为0FH。
    • 按位操作,需要将返回的数据转换位二进制。
    • 从右到左,表示第一通道到第八通道的输入状态。

5、功能码02H

  • 02H:读离散输入状态。读取一组离散输入的状态,返回一个字节数组,其中每个位表示一个输入的状态。
  • 发送报文
    • 含义:0000H开始,读取8个寄存器。
  • 响应报文
    •  
    • 含义:返回1个字节,为0FH。
    • 按位操作,需要将返回的数据转换位二进制。

6、功能码03H

  • 03H:读保持寄存器。读取一组保持寄存器的值,每个寄存器返回16位(2字节)数据。
  • 发送报文
    • 含义:寄存器起始地址为0000H,读取1个保持寄存器。
  • 响应报文
    • 含义:返回2个字节,数据为0001H。

7、功能码04H

  • 04H:读输入寄存器。读取一组输入寄存器的值,每个寄存器返回16位(2字节)数据。
  • 发送报文
    • 含义:寄存器起始地址为0000H,读取1个寄存器。
  • 响应报文
    • 含义:返回2个字节,数据为0001H。

8、功能码05H

  • 05H:写单个线圈。设置一个线圈的状态,写入一个位(0或1)。
  • 发送报文和响应报文一致。
    • 含义:控制第二通道(0001H)线圈闭合(FF00H)。(断开为0000H)

9、功能码06H

  • 06H:写单个保持寄存器。设置一个保持寄存器的值,写入16位(2字节)数据。
  • 发送报文和响应报文一致。
    • 含义:控制第一通道(0000H)写入保持寄存器值0001H。

10、功能码0FH

  • 0FH:写多个线圈。设置多个线圈的状态,写入一个字节数组,其中每个位表示一个线圈的状态。
  • 发送报文
    • 含义:从第一通道(0000H)开始,写4个线圈寄存器,1个字节,数据为0FH。
    •   按位操作,需要将返回的数据转换位二进制。
  • 响应报文
    • 含义:寄存器起始地址和写的寄存器数量。

11、功能码10H

  • 10H:写多个保持寄存器。设置多个保持寄存器的值,写入多个16位(2字节)数据。
  • 发送报文
    •  
    • 含义:从第一通道(0000H)开始,写2个保持寄存器,共4个字节,数据1为0001H,数据2为0001H。
  • 响应报文
    • 含义:寄存器起始地址和写的寄存器数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635257.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据

背景 随着电子商务和健康产业的迅速发展,药品行业数据的分析和可视化变得愈发重要。基于Django的美团药品数据分析与可视化系统的研究背景凸显了对药品数据的深入挖掘和分析的需求。该系统不仅具备多用户功能,允许不同角色的用户进行数据管理和分析&…

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

简介: 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 下载地址 https://www.kuaiyuanya.com/product/article/index/id/33.html 图片:

【无重复字符的最长子串】python,滑动窗口+哈希表

滑动窗口哈希表 哈希表 seen 统计: 指针 j遍历字符 s,哈希表统计字符 s[j]最后一次出现的索引 。 更新左指针 i : 根据上轮左指针 i 和 seen[s[j]],每轮更新左边界 i ,保证区间 [i1,j] 内无重复字符且最大。 更新结…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界,感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟,让你仿佛置身于真实展厅之中,尽情探索汽车的每一处细节。 一、定制化展示,随心所欲 VR汽车虚拟展厅打破空间束缚,让汽车制造商能够…

区块链开发:区块链软件开发包装相关解析

区块链开发是指设计、构建和维护基于区块链技术的应用程序或系统的过程。区块链是一种分布式账本技术,它通过去中心化的方式记录和验证数据,确保数据的透明性、不可篡改性和安全性。区块链开发者使用各种编程语言和框架来创建这些应用程序。 在加密货币领…

C++ sort排序的总和应用题

第1题 sort排序1 时限&#xff1a;1s 空间&#xff1a;256m 输入n个数&#xff0c;将这n个数从小到大排序&#xff0c;输出。 输入格式 第1行&#xff0c;一个正整数n&#xff08;n<100&#xff09; 第2行&#xff0c;n个正整数&#xff0c;小于100 输出格式 n个整…

Windows安装mingw32/w64

1.下载 MinGW-w64 WinLibs - GCCMinGW-w64 compiler for Windows Releases niXman/mingw-builds-binaries (github.com) MinGW-w64、UCRT 和 MSVCRT 是 Windows 平台上常用的 C/C 运行库&#xff0c;它们有以下不同点&#xff1a; MinGW-w64&#xff1a;是一个基于 GCC 的…

【Hive SQL 每日一题】分析电商平台的用户行为和订单数据

需求描述 假设你是一位数据分析师&#xff0c;负责分析某电商平台的用户行为和订单数据&#xff0c;平台上有多个用户&#xff0c;用户可以在不同的日期下单&#xff0c;每个订单包含多个商品。请你完成相关业务分析&#xff0c;帮助平台优化运营策略和用户体验。 数据准备 …

NDIS小端口驱动(五)

在需要的时候&#xff0c;我们也许需要NDIS微型端口程序信息&#xff0c;下面会从多个方面来讨论如何查询NDIS微型端口驱动。 查询无连接微型端口驱动程序 若要查询无连接微型端口驱动程序维护的 OID&#xff0c;绑定协议调用 NdisOidRequest 并传递 一个NDIS_OID_REQUEST 结…

【SQL每日一练】查询“OCCUPATIONS”中的“Occupation”列并按Doctor、Professor、Singer、Actor列输出

文章目录 题目一、分析二、题解1.SqlServer2.MySQL3.Oracle 总结 题目 查询“OCCUPATIONS”中的“Occupation”列&#xff0c;使每个姓名按字母顺序排序&#xff0c;并显示在其相应的“职业》下方。输出列标题应分别为Doctor、Professor、Singer和Actor。 注意&#xff1a;当不…

【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT

【ChatGPT】添加 Microsoft Edge 浏览器插件免费使用 GPT 文章目录 准备工作添加扩展注意事项 使用 ChatGPT 可以更高效的搜索到想要的内容&#xff0c;有效节约在搜索引擎中排查正确信息的时间。 准备工作 准备一台可上网的电脑电脑上安装有 Windows 自带的 Microsoft Edge …

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

本文使用的开发板为 stm32f103C8T6&#xff0c;使用的驱动库为stm32标准库。 目录 一、软件下载 1、stm32 标准库 2、arm-none-eabi 工具链 3、烧录器 二、Keil 工程改造 1、Keil 工程 2、基本 Makefile 工程 3、添加启动文件 4、添加链接脚本 5、去掉 core_cm3.c 三…

App Inventor 2 如何接入ChatGPT:国内访问OpenAI的最佳方式

如何接入OpenAI 由于国内无法访问OpenAI&#xff0c;KX上网可选大陆及香港&#xff08;被屏蔽&#xff09;以外才行。因此对于大多数人来说&#xff0c;想体验或使用ChatGPT就不太便利&#xff0c;不过App Inventor 2 为我们提供了相对便利的一种方式&#xff0c;即“试验性质…

基于STM32F407的项目迁移到STM32F427

提示&#xff1a;此文档迁移教程使用的是IAR&#xff0c;有关代码的修改使用的是Vscode,基于STM32F407的项目迁移到STM32F427 基于STM32F407的项目迁移到STM32F427 前言一、硬件区别1.1.区别&#xff1a;1.2.需要注意以下硬件区别&#xff1a; 二、引脚配置三、STM32F4273.1.晶…

安卓高级控件(下拉框、列表类视图、翻页类视图、碎片Fragment)

下拉框 此小节介绍下拉框的用法以及适配器的基本概念&#xff0c;结合对下拉框Spinner的使用说明分别阐述数组适配器ArrayAdapter、简单适配器SimpleAdapter的具体用法与展示效果。 下拉框控件Spinner Spinner是下拉框控件&#xff0c;它用于从一串列表中选择某项&#xff0…

41-4 DDOS攻击防护实战

一、UDP FLOOD攻击 # hping3 -q -n -a <攻击IP> -S -s <源端口> --keep -p <目的端口> --flood <被攻击IP> hping3 --udp -s 6666 -p 53 -a 192.168.1.6 --flood 192.168.1.13 这个命令是使用hping3工具进行UDP Flood攻击的命令。下面是各个选项的作…

Linux--进程概念

目录 基本概念 描述进程-PCB task_struct-PCB的一种 task_struct内容分类 查看进程 通过系统目录查看 通过ps命令查看 通过系统调用获取进程的PID和PPID 通过系统调用创建进程- fork初始 Linux进程状态 运行状态&#xff08;Running&#xff09;- R 浅度睡眠状态…

工业级3D开发引擎HOOPS:创新与效率的融合!

在当今这个技术日新月异的时代&#xff0c;3D技术已成为推动各行各业发展的重要力量。从工程设计到游戏开发&#xff0c;从虚拟现实到增强现实&#xff0c;3D技术的应用无处不在&#xff0c;它极大地丰富了我们的生活和工作。而在这样的背景下&#xff0c;HOOPS作为一个强大的3…

java学习和项目总结

java&#xff1a; JDK/JRE/JVM三者的关系 JVM&#xff1a;JVM是java进行编译的虚拟机&#xff0c;是Java 能够跨平台运行的核心 。 所有的java程序会首先被编译为.class的类文件&#xff0c;这种类文件可以在虚拟机上执行。也就是说class文件并不直接与机器的操作系统交互&a…

认识NXP新型微处理器:MCX工业和物联网微控制器

目录 概述 1 MCX工业和物联网微控制器介绍 2 MCX 系列微控制器类型 2.1 MCX N系列微控制器 2.1.1 主要特征 2.1.2 MCX N系列产品 2.1.3 MCX N9xx和N5xx MCU选型表 2.2 MCX A系列微控制器 2.2.1 主要特征 2.2.2 MCX A系列产品 2.2.3 MCX A MCU的架构 2.3 MCX W系…