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.
|
|
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
功能特性
-
设备管理
- 支持多设备配置
- 设备激活/停用控制
- 设备信息CRUD操作
-
数据采集
- Modbus TCP协议通信
- 线圈(Coils)读取 - 用于信号检测
- 保持寄存器(Holding Registers)读取 - 用于数据采集
- 自动批量读取优化
- 定时采集任务(默认50ms间隔)
-
数据存储
- 采集数据持久化到MySQL
- Redis缓存设备状态
- 支持历史数据查询
-
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.yml 和 application-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: 不良数量寄存器数量
采集逻辑
-
信号采集 (
handleSignal)- 读取线圈状态,检测换卷信号
- 当信号为1时,读取寄存器获取新卷号
- 保存换卷信号数据
-
数据采集 (
handleData)- 读取总数和不良数量寄存器
- 通过总数归零判断小卷分切
- 保存生产数据
注意事项
- Modbus地址从0开始,但设备配置中的地址通常从1开始,代码中已做减1处理
- 寄存器读取采用分批方式,每批最多100个,提高读取效率
- 采集间隔默认50ms,可在配置文件中修改
- 确保设备网络连通性和Modbus服务正常
开发说明
- 项目使用MyBatis-Plus,无需编写SQL即可实现基本CRUD
- 使用Lombok简化代码,减少getter/setter
- 使用FastJSON2处理JSON数据
- 日志使用SLF4J + Logback
许可证
MIT License