当前位置: 首页 > news >正文

Modbus TCP通信笔记

目录

  • 1 Modbus TCP 数据协议
    • 1.1 数据格式
    • 1.2 报文头(MBAP头)
    • 1.3 功能码
    • 1.4 Modbus 地址映射到 CPU 地址
  • 2 Modbus TCP 通讯数据示例
    • 2.1 功能码01 读离散输出线圈
    • 2.2 功能码02 读离散输入线圈
    • 2.3 功能码03 读保持寄存器
    • 2.4 功能码04 读输入寄存器
    • 2.5 功能码05 写单个离散输出寄存器
    • 2.6 功能码06 写单个保持寄存器
    • 2.7 功能码15 写多个线圈寄存器
    • 2.8 功能码16 写多个保持寄存器
  • 3 西门子200Samrt 做服务器端编程示例
    • 3.1 调用库指令
    • 3.2 编程
  • 4 Modbus TCP通讯调试软件测试
    • 4.1 软件介绍
    • 4.2 软件使用说明
      • 4.2.1 连接PLC
      • 4.2.2 访问PLC
      • 4.2.3 其它说明

1 Modbus TCP 数据协议

1.1 数据格式

事务处理标识协议标识长度单元标识功能码起始地址数据
2字节2字节2字节1字节1字节2字节N字节

1.2 报文头(MBAP头)

其中,事务处理标识、协议标识符、长度和单元标识符统称为报文头(MBAP头)。

内容解释
事务处理标识可以理解为报文序列号,一般每次通信后就要加1,以区分不同的通信数据报文。
协议标识符00 00 表示Modbus TCP 协议
长度接下来数据长度,单位字节
单元标识符设备地址,一般为01

1.3 功能码

功能码描述说明MOUBUS地址
01读离散输出寄存器位操作00001 ~ 09999
02读离散输入寄存器位操作10001 ~ 19999
03读保持寄存器字操作40001 ~ 49999
04读输入寄存器字操作30001 ~ 39999
05写离散输出寄存器位操作00001 ~ 09999
06写保持寄存器字操作40001 ~ 49999
15写多线圈寄存器位操作00001 ~ 09999
16写多个保持寄存器字操作40001 ~ 49999

1.4 Modbus 地址映射到 CPU 地址

Modbus 地址CPU 地址
00001Q0.0
00002Q0.1
…………
10001I0.0
10002I0.1
…………
30001AIW0
30002AIW2
…………
40001Vx(保持寄存器起始地址)例:VW0
40002Vx+2 =(保持寄存器起始地址+2)例:VW2
…………

2 Modbus TCP 通讯数据示例

2.1 功能码01 读离散输出线圈

事务处理标识协议标识长度单元标识功能码起始地址数据长度
00 1100 0000 06010100 0000 08

注释:读取Q0.0地址开始的8个连续输出(即Q0.0-Q0.7)。

2.2 功能码02 读离散输入线圈

事务处理标识协议标识长度单元标识功能码起始地址数据长度
00 1500 0000 06010200 0000 08

注释:读取I0.0地址开始的8个连续输出(即I0.0-I0.7)。

2.3 功能码03 读保持寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据长度
00 6600 0000 06010300 0000 02

注释:读取VW0地址开始的2个连续字空间(即vw0,vw2)。

2.4 功能码04 读输入寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据长度
00 9700 0000 06010400 0000 02

注释:读取AIW0地址开始的2个连续字空间(即AIW0,AIW2)。

2.5 功能码05 写单个离散输出寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据
00 C200 0000 06010500 00FF 00

注释:将地址00000的输出离散线圈置一(即让Q0.0置一)。

事务处理标识协议标识长度单元标识功能码起始地址数据
01 0A00 0000 06010500 0100 00

注释:将地址00001的输出离散线圈置一(即让Q0.1复位)。

2.6 功能码06 写单个保持寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据
01 5e00 0000 06010600 0200 7b

注释:往地址VW4寄存器中写入数值0x007B(即十进制数123)。

2.7 功能码15 写多个线圈寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据长度(位)字节数数据
01 5e00 0000 09010F00 0000 1002aa cb

注释:往地址QB0寄存器中写入数值0xaa,往地址QB1寄存器中写入数值0xcb。

数据长度位不满8的N倍,字节数也算N个。

2.8 功能码16 写多个保持寄存器

事务处理标识协议标识长度单元标识功能码起始地址数据长度(字)字节数数据
02 6800 0000 0B011000 0000 020400 7B 00 EA

注释:往地址VW0寄存器中写入数值0x007B,往地址VW2寄存器中写入数值0x00EA。

3 西门子200Samrt 做服务器端编程示例

3.1 调用库指令

在这里插入图片描述

3.2 编程

具体操作数值详见F1帮助文档。
在这里插入图片描述

4 Modbus TCP通讯调试软件测试

4.1 软件介绍

软件名称为:Modbus Poll
网络搜索自行下载,破解。
在这里插入图片描述
在这里插入图片描述

4.2 软件使用说明

4.2.1 连接PLC

依次点击ConnectionConnect…→弹出界面
按图指引自行修改,单击OK按钮。
在这里插入图片描述

4.2.2 访问PLC

单击图示指引图标
在这里插入图片描述
弹出界面,按需修改(图示以写单个保持寄存器为例),单击OK按钮。
在这里插入图片描述

双击数值处表格,在弹出的对话框中修改数值即可。
在这里插入图片描述

4.2.3 其它说明

软件在使用功能码05时,无法通过双击表格修改数据,只能设置为功能码01,然后通过双击表格修改数据。

相关文章:

Modbus TCP通信笔记

目录 1 Modbus TCP 数据协议1.1 数据格式1.2 报文头(MBAP头)1.3 功能码1.4 Modbus 地址映射到 CPU 地址 2 Modbus TCP 通讯数据示例2.1 功能码01 读离散输出线圈2.2 功能码02 读离散输入线圈2.3 功能码03 读保持寄存器2.4 功能码04 读输入寄存器2.5 功能码05 写单个离散输出寄存…...

CIM和websockt-实现实时消息通信:双人聊天和消息列表展示

欢迎大佬的来访,给大佬奉茶 一、文章背景 有一个业务需求是:实现一个聊天室,我和对方可以聊天;以及有一个消息列表展示我和对方(多个人)的聊天信息和及时接收到对方发来的消息并展示在列表上。 项目框架概…...

useLayoutEffect和useEffect有什么作用?

useEffect 和 useLayoutEffect 都是 React 中的钩子函数,用于在组件渲染过程中执行副作用操作。它们的主要区别在于执行时机。 useEffect: useEffect 是异步执行的,它在浏览器渲染完成之后才执行。这意味着它不会阻塞浏览器的渲染过程,因此适合用于处理副作用,如数据获取、…...

django中配置使用websocket终极解决方案

django ASGI/Channels 启动和 ASGI/daphne的区别 Django ASGI/Channels 是 Django 框架的一个扩展,它提供了异步服务器网关接口(ASGI)协议的支持,以便处理实时应用程序的并发连接。ASGI 是一个用于构建异步 Web 服务器和应用程序…...

敦煌网、Jumia等跨境电商平台怎么测评(补单)留评?

评论的重要性是众所周知的,对于想要做卖家运营的人来说,它直接影响着产品的销量和排名 那么如何通过自养号测评来提升销量和排名呢? 我相信大家对这个问题已经有了一定的了解,拥有大量自养号可以通过这些号来通过关键词搜索、浏…...

uni-app之android离线打包

一 AndroidStudio创建项目 1.1,上一节演示了uni-app云打包,下面演示怎样androidStudio离线打包。在AndroidStudio里面新建空项目 1.2,下载uni-app离线SDK,离线SDK主要用于App本地离线打包及扩展原生能力,SDK下载链接h…...

【传输层】TCP -- 三次握手四次挥手 | 可靠性与提高性能策略

超时重传机制连接管理机制三次握手四次挥手滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP应用层协议理解 listen 的第二个参数 超时重传机制 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B&#xff1…...

前端将UTC时间格式转化为本地时间格式~~uniapp写法

UTC时间格式是什么 首先我们先简单的了解一下:UTC时间(协调世界时,Coordinated Universal Time)使用24小时制,以小时、分钟、秒和毫秒来表示时间 HH:mm:ss.SSSHH 表示小时,取值范围为00到23。mm 表示分钟…...

说说Kappa架构

分析&回答 对于实时数仓而言,Lmabda架构有很明显的不足,首先同时维护两套系统,资源占用率高,其次这两套系统的数据处理逻辑相同,代码重复开发。 能否有一种架构,只需要维护一套系统,就可以…...

项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

在当今数字化社会,即时通讯已成为人们生活中不可或缺的一部分。为了满足这一需求,我开发了一个名为"WeTalk"的聊天室项目,该项目基于Spring Boot、MyBatis、MySQL和WebSocket技术,为用户提供了一个实时交流的平台。在本…...

Vue3 学习 组合式API setup语法糖 响应式 指令 DIFF(一)

文章目录 前言一、Composition Api二、setup语法糖三、响应式refreactive 四、其他一些关键点v-prev-oncev-memov-cloak 五、虚拟Dom五、diff算法 前言 本文用于记录学习Vue3的过程 一、Composition Api 我觉得首先VUE3最大的改变就是对于代码书写的改变,从原来选择…...

一文轻松入门DeepSort

1.背景 Deepsort是目标检测任务的后续任务,得益于Yolo系列的大放异彩,DeepSort目标追踪任务的精度也不断提高,同时,DeepSort属于目标追踪任务中的多目标追踪,即MOT(Multiple Object Tracking,M…...

关于linux openssl的自签证书认证与nginx配置

自签文档链接 重点注意这块,不能写一样的,要是一样的话登录界面锁会报不安全 域名这块跟最后发布的一致 nginx配置的话 server {listen 443 ssl; //ssl 说明为https 默认端口为443server_name www.skyys.com; //跟openssl设置的域名保持一致s…...

Mybatis--关联关系映射

目录: 1.什么是关联关系映射: 一对一和多对多的区别 2.mybaits中的一对一&一对多关联关系配置 配置generatoeConfig文件 插件自动生成 ​编辑 写sql语句 创建 Ordermapper类 编写接口类 ​编辑 编写接口实现类 编写测试类 测试结果 一对…...

Golang基本的网络编程

Go语言基本的Web服务器实现 Go 语言中的 http 包提供了创建 http 服务或者访问 http 服务所需要的能力,不需要额外的依赖。 Go语言在Web服务器中主要使用到了 “net/http” 库函数,通过分析请求的URL来实现参数的接收。 下面介绍了http 中Web应用的基本…...

Postgresql的一个bug_涉及归档和pg_wal

故障描述: 服务器ocmpgdbprod1,是流复制主节点,它的从节点是ocmpgdbprod2,两个节点的Postgresql数据库版本都是PostgreSQL 11.6,主节点ocmpgdbprod1配置了pg_wal归档,从节点ocmpgdbprod2没有配置pg_wal归档…...

轻量、便捷、高效—经纬恒润AETP助力车载以太网测试

随着自动驾驶技术和智能座舱的不断发展,高宽带、高速率的数据通信对主干网提出了稳定、高效的传输要求,CAN(FD)、LIN已无法充分满足汽车的通信需求。车载以太网作为一种快速且扩展性好的网络技术,已经逐步成为了汽车主干网的首选。 此外&…...

【跟小嘉学 Rust 编程】二十四、内联汇编(inline assembly)

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

综合实训-------成绩管理系统 V1.1

综合实训-------成绩管理系统 V1.1 1、一维数组数据double 2、我们用元素的位置来当学号。 1、录入数据 【5个数据】或【通过文件的方式取数据】 2、显示数据 3、添加一条记录 4、修改一条记录 5、删除一条记录 6、查找一条记录。【输入学号,显示成绩】 7、统计。【…...

13.108.Spark 优化、Spark优化与hive的区别、SparkSQL启动参数调优、四川任务优化实践:执行效率提升50%以上

13.108.Spark 优化 1.1.25.Spark优化与hive的区别 1.1.26.SparkSQL启动参数调优 1.1.27.四川任务优化实践:执行效率提升50%以上 13.108.Spark 优化: 1.1.25.Spark优化与hive的区别 先理解spark与mapreduce的本质区别,算子之间(…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...