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.

167 lines
4.4 KiB

2 weeks ago
  1. # 设备数据采集服务 (Device Collector)
  2. 这是一个独立的Spring Boot项目,用于从Modbus设备采集数据并进行处理。
  3. ## 项目结构
  4. ```
  5. device-collector/
  6. ├── pom.xml # Maven配置文件
  7. ├── README.md # 项目说明文档
  8. └── src/
  9. └── main/
  10. ├── java/
  11. │ └── com/xujie/devicecollector/
  12. │ ├── DeviceCollectorApplication.java # 主启动类
  13. │ ├── config/
  14. │ │ └── RedisConfig.java # Redis配置
  15. │ ├── dao/ # 数据访问层
  16. │ │ ├── DeviceInfoDao.java
  17. │ │ ├── DeviceGatherDao.java
  18. │ │ ├── ProcedureDao.java
  19. │ │ └── impl/
  20. │ ├── entity/ # 实体类
  21. │ │ ├── DeviceInfo.java
  22. │ │ └── DeviceGather.java
  23. │ ├── runner/ # 数据采集运行器
  24. │ │ └── DeviceRunner.java
  25. │ ├── service/ # 服务层
  26. │ │ ├── DeviceInfoService.java
  27. │ │ ├── DeviceGatherService.java
  28. │ │ └── impl/
  29. │ └── util/ # 工具类
  30. │ ├── CollectUtil.java
  31. │ └── DateUtils.java
  32. └── resources/
  33. └── application.yml # 配置文件
  34. ```
  35. ## 功能说明
  36. ### 核心功能
  37. 1. **设备数据采集** (`DeviceRunner`)
  38. - 定时从Modbus设备读取线圈状态和寄存器数据
  39. - 处理换卷信号(卷A和卷B)
  40. - 处理设备数据(总数、不良数量等)
  41. - 通过Redis缓存设备状态
  42. 2. **数据处理**
  43. - 扫描卷处理:当检测到换卷信号时,调用存储过程处理
  44. - 下机卷处理:当检测到总数归零时,处理小卷分切数据
  45. ### 主要类说明
  46. - **DeviceRunner**: 实现`CommandLineRunner`接口,应用启动时自动执行数据采集任务
  47. - **CollectUtil**: Modbus TCP通信工具类,用于读取线圈和寄存器数据
  48. - **DeviceInfoService**: 设备信息服务,查询设备配置信息
  49. - **DeviceGatherService**: 设备采集服务,处理采集到的数据并调用存储过程
  50. ## 技术栈
  51. - Spring Boot 3.1.5
  52. - Java 21
  53. - Maven
  54. - SQL Server (通过Druid连接池)
  55. - Redis
  56. - Modbus TCP (j2mod库)
  57. ## 配置说明
  58. ### 数据库配置
  59. 在`application.yml`中配置SQL Server数据库连接:
  60. ```yaml
  61. spring:
  62. datasource:
  63. druid:
  64. url: jdbc:sqlserver://192.168.1.90:1433;databaseName=ckp-tid
  65. username: sa
  66. password: XJsoft123
  67. ```
  68. ### Redis配置
  69. ```yaml
  70. spring:
  71. data:
  72. redis:
  73. host: 192.168.1.83
  74. port: 6379
  75. password: xujieredis
  76. ```
  77. ### 采集间隔配置
  78. 在`DeviceRunner`类中,`CHECK_INTERVAL`常量控制采集间隔(默认50毫秒)。
  79. ## 数据库表结构
  80. ### device_info
  81. 设备信息表,存储设备配置信息,包括:
  82. - IP地址和端口
  83. - 卷A/B的地址和数量
  84. - 信号地址
  85. - 总数地址
  86. - 不良数量地址等
  87. ### device_gather
  88. 设备采集数据表,存储采集到的数据:
  89. - 卷号信息
  90. - 总数和不良数量
  91. - 采集时间
  92. - 状态信息等
  93. ## 运行方式
  94. ### 1. 使用Maven编译
  95. ```bash
  96. cd device-collector
  97. mvn clean package
  98. ```
  99. ### 2. 运行应用
  100. ```bash
  101. java -jar target/device-collector-1.0.0.jar
  102. ```
  103. 或者使用Maven直接运行:
  104. ```bash
  105. mvn spring-boot:run
  106. ```
  107. ## 依赖说明
  108. 主要依赖包括:
  109. - `spring-boot-starter-web`: Web支持
  110. - `spring-boot-starter-jdbc`: JDBC支持
  111. - `spring-boot-starter-data-redis`: Redis支持
  112. - `druid-spring-boot-3-starter`: Druid连接池
  113. - `mssql-jdbc`: SQL Server驱动
  114. - `j2mod`: Modbus TCP通信库
  115. - `fastjson2`: JSON处理
  116. ## 注意事项
  117. 1. 确保数据库和Redis服务已启动并可访问
  118. 2. 确保Modbus设备网络可达
  119. 3. 根据实际环境修改配置文件中的连接信息
  120. 4. 确保数据库中存在必要的表结构和存储过程:
  121. - `device_info`
  122. - `device_gather`
  123. - `sIn1HandleMainRoll`存储过程
  124. - `sIn1CreateRoll`存储过程
  125. ## 日志
  126. 应用使用SLF4J进行日志记录,日志级别可在`application.yml`中配置。
  127. ## 许可证
  128. 本项目为内部使用项目。