modbus采集,停机采集和三合一采集服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
shenzhouyu a918e5eb79 停机采集第一次提交 3 days ago
..
src/main 停机采集第一次提交 3 days ago
.gitignore 停机采集第一次提交 3 days ago
README.md 停机采集第一次提交 3 days ago
pom.xml 停机采集第一次提交 3 days ago

README.md

Modbus TCP 数据采集系统

基于 Spring Boot 3.x + MyBatis-Plus + JDK 21 的 Modbus TCP 数据采集系统。

技术栈

  • JDK: 21
  • Spring Boot: 3.2.0
  • MyBatis-Plus: 3.5.5
  • 数据库: MySQL 8.0+
  • 缓存: Redis
  • Modbus库: j2mod 3.2.1
  • 连接池: Druid 1.2.20

功能特性

  1. 设备管理

    • 支持多设备配置
    • 设备激活/停用控制
    • 设备信息CRUD操作
  2. 数据采集

    • Modbus TCP协议通信
    • 线圈(Coils)读取 - 用于信号检测
    • 保持寄存器(Holding Registers)读取 - 用于数据采集
    • 自动批量读取优化
    • 定时采集任务(默认50ms间隔)
  3. 数据存储

    • 采集数据持久化到MySQL
    • Redis缓存设备状态
    • 支持历史数据查询
  4. API接口

    • RESTful API设计
    • 设备管理接口
    • 采集数据查询接口

项目结构

modbus-collector/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/xujie/modbus/
│   │   │       ├── ModbusCollectorApplication.java    # 启动类
│   │   │       ├── config/                           # 配置类
│   │   │       ├── controller/                       # 控制器
│   │   │       ├── entity/                           # 实体类
│   │   │       ├── mapper/                           # Mapper接口
│   │   │       ├── runner/                           # 启动任务
│   │   │       ├── service/                          # 服务层
│   │   │       └── util/                             # 工具类
│   │   └── resources/
│   │       ├── application.yml                       # 配置文件
│   │       ├── application-dev.yml                   # 开发环境配置
│   │       └── db/
│   │           └── schema.sql                        # 数据库脚本
│   └── test/
├── pom.xml                                           # Maven配置
└── README.md                                         # 项目说明

快速开始

1. 环境要求

  • JDK 21+
  • Maven 3.6+
  • MySQL 8.0+
  • Redis 6.0+

2. 数据库初始化

执行 src/main/resources/db/schema.sql 创建数据库和表结构。

3. 配置文件

修改 src/main/resources/application.ymlapplication-dev.yml 中的数据库和Redis配置。

4. 运行项目

# 使用Maven运行
mvn spring-boot:run

# 或打包后运行
mvn clean package
java -jar target/modbus-collector-1.0.0.jar

5. 访问接口

  • API基础路径: http://localhost:8080/modbus
  • Druid监控: http://localhost:8080/modbus/druid/index.html (admin/admin123)

API接口说明

设备管理

  • GET /device/list - 查询所有设备
  • GET /device/active - 查询激活的设备
  • GET /device/page?current=1&size=10 - 分页查询设备
  • GET /device/{id} - 根据ID查询设备
  • POST /device - 新增设备
  • PUT /device - 更新设备
  • DELETE /device/{id} - 删除设备

采集数据

  • GET /collect/list?deviceIp=192.168.1.100 - 查询采集数据
  • GET /collect/page?current=1&size=10&deviceIp=192.168.1.100 - 分页查询采集数据
  • GET /collect/{id} - 根据ID查询采集数据

设备配置说明

device_info 表中配置设备信息:

  • ip: 设备IP地址
  • port: Modbus端口(默认502)
  • active: 是否激活(Y/N)
  • roll_signal_address1/2: 卷A/B分切信号线圈地址
  • roll_address1/2: 卷A/B寄存器起始地址
  • roll_qty1/2: 卷A/B寄存器数量
  • total_qty_address: 总数寄存器地址
  • multiple_rolls_address: 不良数量寄存器起始地址
  • multiple_rolls_qty: 不良数量寄存器数量

采集逻辑

  1. 信号采集 (handleSignal)

    • 读取线圈状态,检测换卷信号
    • 当信号为1时,读取寄存器获取新卷号
    • 保存换卷信号数据
  2. 数据采集 (handleData)

    • 读取总数和不良数量寄存器
    • 通过总数归零判断小卷分切
    • 保存生产数据

注意事项

  1. Modbus地址从0开始,但设备配置中的地址通常从1开始,代码中已做减1处理
  2. 寄存器读取采用分批方式,每批最多100个,提高读取效率
  3. 采集间隔默认50ms,可在配置文件中修改
  4. 确保设备网络连通性和Modbus服务正常

开发说明

  • 项目使用MyBatis-Plus,无需编写SQL即可实现基本CRUD
  • 使用Lombok简化代码,减少getter/setter
  • 使用FastJSON2处理JSON数据
  • 日志使用SLF4J + Logback

许可证

MIT License