当前位置: 首页 > 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的本质区别,算子之间(…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...