# 设备数据采集服务 (Device Collector) 这是一个独立的Spring Boot项目,用于从Modbus设备采集数据并进行处理。 ## 项目结构 ``` device-collector/ ├── pom.xml # Maven配置文件 ├── README.md # 项目说明文档 └── src/ └── main/ ├── java/ │ └── com/xujie/devicecollector/ │ ├── DeviceCollectorApplication.java # 主启动类 │ ├── config/ │ │ └── RedisConfig.java # Redis配置 │ ├── dao/ # 数据访问层 │ │ ├── DeviceInfoDao.java │ │ ├── DeviceGatherDao.java │ │ ├── ProcedureDao.java │ │ └── impl/ │ ├── entity/ # 实体类 │ │ ├── DeviceInfo.java │ │ └── DeviceGather.java │ ├── runner/ # 数据采集运行器 │ │ └── DeviceRunner.java │ ├── service/ # 服务层 │ │ ├── DeviceInfoService.java │ │ ├── DeviceGatherService.java │ │ └── impl/ │ └── util/ # 工具类 │ ├── CollectUtil.java │ └── DateUtils.java └── resources/ └── application.yml # 配置文件 ``` ## 功能说明 ### 核心功能 1. **设备数据采集** (`DeviceRunner`) - 定时从Modbus设备读取线圈状态和寄存器数据 - 处理换卷信号(卷A和卷B) - 处理设备数据(总数、不良数量等) - 通过Redis缓存设备状态 2. **数据处理** - 扫描卷处理:当检测到换卷信号时,调用存储过程处理 - 下机卷处理:当检测到总数归零时,处理小卷分切数据 ### 主要类说明 - **DeviceRunner**: 实现`CommandLineRunner`接口,应用启动时自动执行数据采集任务 - **CollectUtil**: Modbus TCP通信工具类,用于读取线圈和寄存器数据 - **DeviceInfoService**: 设备信息服务,查询设备配置信息 - **DeviceGatherService**: 设备采集服务,处理采集到的数据并调用存储过程 ## 技术栈 - Spring Boot 3.1.5 - Java 21 - Maven - SQL Server (通过Druid连接池) - Redis - Modbus TCP (j2mod库) ## 配置说明 ### 数据库配置 在`application.yml`中配置SQL Server数据库连接: ```yaml spring: datasource: druid: url: jdbc:sqlserver://192.168.1.90:1433;databaseName=ckp-tid username: sa password: XJsoft123 ``` ### Redis配置 ```yaml spring: data: redis: host: 192.168.1.83 port: 6379 password: xujieredis ``` ### 采集间隔配置 在`DeviceRunner`类中,`CHECK_INTERVAL`常量控制采集间隔(默认50毫秒)。 ## 数据库表结构 ### device_info 设备信息表,存储设备配置信息,包括: - IP地址和端口 - 卷A/B的地址和数量 - 信号地址 - 总数地址 - 不良数量地址等 ### device_gather 设备采集数据表,存储采集到的数据: - 卷号信息 - 总数和不良数量 - 采集时间 - 状态信息等 ## 运行方式 ### 1. 使用Maven编译 ```bash cd device-collector mvn clean package ``` ### 2. 运行应用 ```bash java -jar target/device-collector-1.0.0.jar ``` 或者使用Maven直接运行: ```bash mvn spring-boot:run ``` ## 依赖说明 主要依赖包括: - `spring-boot-starter-web`: Web支持 - `spring-boot-starter-jdbc`: JDBC支持 - `spring-boot-starter-data-redis`: Redis支持 - `druid-spring-boot-3-starter`: Druid连接池 - `mssql-jdbc`: SQL Server驱动 - `j2mod`: Modbus TCP通信库 - `fastjson2`: JSON处理 ## 注意事项 1. 确保数据库和Redis服务已启动并可访问 2. 确保Modbus设备网络可达 3. 根据实际环境修改配置文件中的连接信息 4. 确保数据库中存在必要的表结构和存储过程: - `device_info`表 - `device_gather`表 - `sIn1HandleMainRoll`存储过程 - `sIn1CreateRoll`存储过程 ## 日志 应用使用SLF4J进行日志记录,日志级别可在`application.yml`中配置。 ## 许可证 本项目为内部使用项目。