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 地址 |
---|---|
00001 | Q0.0 |
00002 | Q0.1 |
…… | …… |
10001 | I0.0 |
10002 | I0.1 |
…… | …… |
30001 | AIW0 |
30002 | AIW2 |
…… | …… |
40001 | Vx(保持寄存器起始地址)例:VW0 |
40002 | Vx+2 =(保持寄存器起始地址+2)例:VW2 |
…… | …… |
2 Modbus TCP 通讯数据示例
2.1 功能码01 读离散输出线圈
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度 |
---|---|---|---|---|---|---|
00 11 | 00 00 | 00 06 | 01 | 01 | 00 00 | 00 08 |
注释:读取Q0.0地址开始的8个连续输出点(即Q0.0-Q0.7)。
2.2 功能码02 读离散输入线圈
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度 |
---|---|---|---|---|---|---|
00 15 | 00 00 | 00 06 | 01 | 02 | 00 00 | 00 08 |
注释:读取I0.0地址开始的8个连续输出点(即I0.0-I0.7)。
2.3 功能码03 读保持寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度 |
---|---|---|---|---|---|---|
00 66 | 00 00 | 00 06 | 01 | 03 | 00 00 | 00 02 |
注释:读取VW0地址开始的2个连续字空间(即vw0,vw2)。
2.4 功能码04 读输入寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度 |
---|---|---|---|---|---|---|
00 97 | 00 00 | 00 06 | 01 | 04 | 00 00 | 00 02 |
注释:读取AIW0地址开始的2个连续字空间(即AIW0,AIW2)。
2.5 功能码05 写单个离散输出寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据 |
---|---|---|---|---|---|---|
00 C2 | 00 00 | 00 06 | 01 | 05 | 00 00 | FF 00 |
注释:将地址00000的输出离散线圈置一(即让Q0.0置一)。
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据 |
---|---|---|---|---|---|---|
01 0A | 00 00 | 00 06 | 01 | 05 | 00 01 | 00 00 |
注释:将地址00001的输出离散线圈置一(即让Q0.1复位)。
2.6 功能码06 写单个保持寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据 |
---|---|---|---|---|---|---|
01 5e | 00 00 | 00 06 | 01 | 06 | 00 02 | 00 7b |
注释:往地址VW4寄存器中写入数值0x007B(即十进制数123)。
2.7 功能码15 写多个线圈寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度(位) | 字节数 | 数据 |
---|---|---|---|---|---|---|---|---|
01 5e | 00 00 | 00 09 | 01 | 0F | 00 00 | 00 10 | 02 | aa cb |
注释:往地址QB0寄存器中写入数值0xaa,往地址QB1寄存器中写入数值0xcb。
数据长度位不满8的N倍,字节数也算N个。
2.8 功能码16 写多个保持寄存器
事务处理标识 | 协议标识 | 长度 | 单元标识 | 功能码 | 起始地址 | 数据长度(字) | 字节数 | 数据 |
---|---|---|---|---|---|---|---|---|
02 68 | 00 00 | 00 0B | 01 | 10 | 00 00 | 00 02 | 04 | 00 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
依次点击Connection→Connect…→弹出界面
按图指引自行修改,单击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࿱…...
前端将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的本质区别,算子之间(…...
大模型综述论文笔记6-15
这里写自定义目录标题 KeywordsBackgroud for LLMsTechnical Evolution of GPT-series ModelsResearch of OpenAI on LLMs can be roughly divided into the following stagesEarly ExplorationsCapacity LeapCapacity EnhancementThe Milestones of Language Models Resources…...
树的介绍(C语言版)
前言 在数据结构中树是一种很重要的数据结构,很多其他的数据结构和算法都是通过树衍生出来的,比如:堆,AVL树,红黑色等本质上都是一棵树,他们只是树的一种特殊结构,还有其他比如linux系统的文件系…...
Android studio实现圆形进度条
参考博客 效果图 MainActivity import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView;import java.util.Timer; import java.util.TimerTask;public class MainActivity extends App…...
基于Halcon的喷码识别方法
具体步骤如下: 1. 读入一幅图片(彩色或黑白); 2. 将RGB图像转化为灰度图像; 3. 提取图片中的圆点特征(喷码图片中多是圆点特征),在Halcon中dots_image() 函数非常适合喷码检测; 4. 通过设定阈值,增强明显特征部分; 5. 进行一系列形态学操作(如闭运算等),将…...
【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup
靶机介绍 官方下载地址:https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境: 虚拟机网络设置的是NAT模式 靶机:IP地址:192.168.233.131 攻击机:kali linux,IP地…...
idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决
idea使用maven时的java.lang.IllegalArgumentException: Malformed \uxxxx encoding问题解决 欢迎使用Markdown编辑器1、使用maven clean install -X会提示报错日志2、在Poperties.java文件的这一行打上断点3、maven debug进行调试4、运行到断点位置后,查看报错char…...
linux深入理解多进程间通信
1.进程间通信 1.1 进程间通信目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件…...
使用自定义注解+aop实现公共字段的填充
问题描述:对于每个表都有cratetime,updatetime,createby,updateby字段,每次插入数据或者更改数据的时候,都需要对这几个字段进行设置。 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface AutoFill {//数据库…...
Unity 安卓(Android)端AVProVideo插件播放不了视频,屏幕一闪一闪的
编辑器运行没有问题,但是安卓就有问题,在平板上运行就会报错: vulkan graphics API is notsupported 说不支持Vulkan图形API,解决方法:把Vulkan删除掉...
无涯教程-JavaScript - DMIN函数
描述 DMIN函数返回列表或数据库中符合您指定条件的列中的最小数字。 语法 DMIN (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的行是记录,数据的列是字段。列表的第一行包含…...
centos架设wordpress/徐州网络推广服务
A答案如下所示:在Oracle中,DBID和DBNAME是两个极其重要的对象。作为标记信息,DBID和DBNAME包含在参数文件、密码文件、数据文件、日志文件、备份集合、归档日志中。一般情况下,已经创建好的数据库是不需要修改DBID和DBNAME的。因为…...
wordpress 替换google/中国进入一级战备状态了吗
jmeter连接并压测mysql数据库,之前一直想用jmeter一下测试mysql数据库的性能,今天偶然看到一篇博客,于是乎开始自己动手实践。 一、准备工作 1、安装好mysql数据库,可以安装在本地或者远程服务器(本教程为本地mysql&am…...
济南网站建设 选聚搜网络/百度一下 你就知道官网
中国咖啡市场潜力到底有多大?一则数据就可说明!据NCBD数据显示,2021年中国现制咖啡市场规模为924.5亿元,与咖啡相关的企业成立数达到2.6万家,门店数已突破12万家。预计到2025年,中国现制咖啡市场规模将突破…...
软件定制开发服务收费多少/优化大师免费版下载
没有导入MySqldb,这个包在Python2 中可以使用,但是在python3 中没有,python3 中是pymysql 。解决方法1 pip install pymysql 然后在init.py 中添加 import pymysql pymysql.install_as_MySQLdb()解决方法二 直接安装: pip install mysqlc…...
橙子建站给我发了短信/宁波网络推广公司有哪些
python打印所有偶数Given a string, and we have to print the EVEN length words in Python. 给定一个字符串,我们必须在Python中打印偶数个长度的单词。 Example: 例: Input:str: Python is a programming languageOutput: EVEN length words:Python…...
服务商英文/河北seo基础知识
Unity Shader的组织形式 Unity Shader的形态 Unity官方手册上讲Unity Shader有三种不同的编写方案,这三种编写方案分别是surface shaders、vertex and fragment shaders和fixed function shaders。 从前面几篇笔记中可以了解到,可编程图形管线中能够编写…...