3 Star 25 Fork 7

CLS / Modbus_RTU_TCP_IP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.41 KB
一键复制 编辑 原始数据 按行查看 历史
CLS 提交于 2022-04-18 08:45 . update README.md.

Modbus RTU或Modbus TCP/IP

采集PLC数据

通过modbus rtu 协议去采集数据

框架类型

报文介绍

一,Modbus RTU报文介绍

发送的报文:01 03 00 00 00 02 C4 0B

1.功能码:01 03
2.起始地址:00 00
3.读取数据的个数:00 02
4.CRC:C4 0B(调试期间可以去第三方下载工具)

返回的数据:01 03 04 00 07 00 07 0a 30

1.功能码:01 03
2.返回的数据个数:04
3.十六进制数据:00 07 00 07
4.CRC:0a 30(通过 TO_CRC 方法去效验)
二,Modbus TCP/IP报文介绍

发送的报文:00 0A 00 00 00 06 01 03 00 00 00 64

1.头字节00 0A 00 00 00 06:头字节共6个字节,前两个字节00 0A是校验(自定义),PC发给触摸屏后,
触摸屏会返回一样的00 0A以保证数据的对应性,比如说PC发给A触摸屏的头字节是00 0A,又发给B触摸屏00 0B,
然后收到数据返回,这时候,我们通过判断接收到的数据的头字节是00 0A还是00 0B就可以知道这数据是哪个触
摸屏返回的,仅此而已。中间的00 00两个字节表示是基于TCP/IP协议的modbus协议,对于我们项目无需修改。
后面的00 06两个字节表示头字节后面还有多少个字节的数据,收发双方要收到该数量的字节才算接收完成,
比如例子是00 06代表后面还有6个字节的数据,既是01 03 00 00 00 64
2.功能码01 03,
  01是触摸屏那边的地址(触摸屏设置),默认01(根据实际设备修改,一般都是01)
  03为功能码,Modbus协议有几种功能码,对于我们项目,用到的是
  功能码01读线圈,PLC的输出点,开关量
  功能码02读离散输入,指的是PLC的输入点,开关量
  功能码03读保持寄存器,该项目用最多,一个寄存器地址一个字节数据
  功能码10(16进制)写多个保持寄存器
3.数据内容
  00 00 00 64主要分为两个部分,前面00 00为读取数据的起始地址,后面00 64为要读取多少个数据。

返回的数据:00 01 00 00 00 04 01 01 01 01

头字节为00 01对应PC端,00 04代表后面有四个字节的数据,前面01 01对应01地址,01功能码的返回,
后面01 01是线圈的状态,01是数据长度,后面01是开关量状态
Java
1
https://gitee.com/first_cls/Modbus_RTU_TCP_IP.git
git@gitee.com:first_cls/Modbus_RTU_TCP_IP.git
first_cls
Modbus_RTU_TCP_IP
Modbus_RTU_TCP_IP
master

搜索帮助