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.

159 lines
4.6 KiB

  1. # Modbus TCP 数据采集系统
  2. 基于 Spring Boot 3.x + MyBatis-Plus + JDK 21 的 Modbus TCP 数据采集系统。
  3. ## 技术栈
  4. - **JDK**: 21
  5. - **Spring Boot**: 3.2.0
  6. - **MyBatis-Plus**: 3.5.5
  7. - **数据库**: MySQL 8.0+
  8. - **缓存**: Redis
  9. - **Modbus库**: j2mod 3.2.1
  10. - **连接池**: Druid 1.2.20
  11. ## 功能特性
  12. 1. **设备管理**
  13. - 支持多设备配置
  14. - 设备激活/停用控制
  15. - 设备信息CRUD操作
  16. 2. **数据采集**
  17. - Modbus TCP协议通信
  18. - 线圈(Coils)读取 - 用于信号检测
  19. - 保持寄存器(Holding Registers)读取 - 用于数据采集
  20. - 自动批量读取优化
  21. - 定时采集任务(默认50ms间隔)
  22. 3. **数据存储**
  23. - 采集数据持久化到MySQL
  24. - Redis缓存设备状态
  25. - 支持历史数据查询
  26. 4. **API接口**
  27. - RESTful API设计
  28. - 设备管理接口
  29. - 采集数据查询接口
  30. ## 项目结构
  31. ```
  32. modbus-collector/
  33. ├── src/
  34. │ ├── main/
  35. │ │ ├── java/
  36. │ │ │ └── com/xujie/modbus/
  37. │ │ │ ├── ModbusCollectorApplication.java # 启动类
  38. │ │ │ ├── config/ # 配置类
  39. │ │ │ ├── controller/ # 控制器
  40. │ │ │ ├── entity/ # 实体类
  41. │ │ │ ├── mapper/ # Mapper接口
  42. │ │ │ ├── runner/ # 启动任务
  43. │ │ │ ├── service/ # 服务层
  44. │ │ │ └── util/ # 工具类
  45. │ │ └── resources/
  46. │ │ ├── application.yml # 配置文件
  47. │ │ ├── application-dev.yml # 开发环境配置
  48. │ │ └── db/
  49. │ │ └── schema.sql # 数据库脚本
  50. │ └── test/
  51. ├── pom.xml # Maven配置
  52. └── README.md # 项目说明
  53. ```
  54. ## 快速开始
  55. ### 1. 环境要求
  56. - JDK 21+
  57. - Maven 3.6+
  58. - MySQL 8.0+
  59. - Redis 6.0+
  60. ### 2. 数据库初始化
  61. 执行 `src/main/resources/db/schema.sql` 创建数据库和表结构。
  62. ### 3. 配置文件
  63. 修改 `src/main/resources/application.yml``application-dev.yml` 中的数据库和Redis配置。
  64. ### 4. 运行项目
  65. ```bash
  66. # 使用Maven运行
  67. mvn spring-boot:run
  68. # 或打包后运行
  69. mvn clean package
  70. java -jar target/modbus-collector-1.0.0.jar
  71. ```
  72. ### 5. 访问接口
  73. - API基础路径: `http://localhost:8080/modbus`
  74. - Druid监控: `http://localhost:8080/modbus/druid/index.html` (admin/admin123)
  75. ## API接口说明
  76. ### 设备管理
  77. - `GET /device/list` - 查询所有设备
  78. - `GET /device/active` - 查询激活的设备
  79. - `GET /device/page?current=1&size=10` - 分页查询设备
  80. - `GET /device/{id}` - 根据ID查询设备
  81. - `POST /device` - 新增设备
  82. - `PUT /device` - 更新设备
  83. - `DELETE /device/{id}` - 删除设备
  84. ### 采集数据
  85. - `GET /collect/list?deviceIp=192.168.1.100` - 查询采集数据
  86. - `GET /collect/page?current=1&size=10&deviceIp=192.168.1.100` - 分页查询采集数据
  87. - `GET /collect/{id}` - 根据ID查询采集数据
  88. ## 设备配置说明
  89. `device_info` 表中配置设备信息:
  90. - `ip`: 设备IP地址
  91. - `port`: Modbus端口(默认502)
  92. - `active`: 是否激活(Y/N)
  93. - `roll_signal_address1/2`: 卷A/B分切信号线圈地址
  94. - `roll_address1/2`: 卷A/B寄存器起始地址
  95. - `roll_qty1/2`: 卷A/B寄存器数量
  96. - `total_qty_address`: 总数寄存器地址
  97. - `multiple_rolls_address`: 不良数量寄存器起始地址
  98. - `multiple_rolls_qty`: 不良数量寄存器数量
  99. ## 采集逻辑
  100. 1. **信号采集** (`handleSignal`)
  101. - 读取线圈状态,检测换卷信号
  102. - 当信号为1时,读取寄存器获取新卷号
  103. - 保存换卷信号数据
  104. 2. **数据采集** (`handleData`)
  105. - 读取总数和不良数量寄存器
  106. - 通过总数归零判断小卷分切
  107. - 保存生产数据
  108. ## 注意事项
  109. 1. Modbus地址从0开始,但设备配置中的地址通常从1开始,代码中已做减1处理
  110. 2. 寄存器读取采用分批方式,每批最多100个,提高读取效率
  111. 3. 采集间隔默认50ms,可在配置文件中修改
  112. 4. 确保设备网络连通性和Modbus服务正常
  113. ## 开发说明
  114. - 项目使用MyBatis-Plus,无需编写SQL即可实现基本CRUD
  115. - 使用Lombok简化代码,减少getter/setter
  116. - 使用FastJSON2处理JSON数据
  117. - 日志使用SLF4J + Logback
  118. ## 许可证
  119. MIT License