# CNC机床数据采集分析系统 - 完整需求规格说明书 --- ## 一、项目概述 本系统用于对多台不同品牌CNC机床进行统一化、分布式、自动化数据采集,实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理,并通过BI大屏实时展示生产数据。 系统基于 **.NET 8.0 Web API** 开发,本地IIS部署,MariaDB数据库,单角色权限管理。 ## 二、总体约束 1. **开发框架** - 前端:Vue.js - 后端:.NET 8.0 Web API - 数据库:MariaDB 10.6+(本地部署,双库分离) - 部署:Windows Server + IIS 2. **权限模式** - 单角色管理模式,无需多角色、分级权限控制 3. **数据特性** - CNC接口仅返回实时数据,无历史数据 - 采集间隔远小于程序切换间隔,确保程序切换可被捕获 - 产量统计依赖前后两次采集数据差分计算 4. **真实数据格式约束(发那科标准)** - 采集返回为JSON数组,包含多台设备数据 - 每台设备结构:`device`、`desc`、`tags`数组 - 数据项包含:`id`、`desc`、`quality`、`value`、`time` - 关键字段通过`id`匹配(如Tag5、Tag8、_io_status) - 每次采集`time`时间戳自动更新 - 产量、程序名、状态均在`tags`数组内,无顶层字段 ## 三、核心功能模块 ### 1. CNC品牌模板配置系统 1. 支持多品牌CNC(发那科、三菱、西门子、新代、广数等)统一接入 2. 适配发那科JSON结构: - 设备列表为JSON数组 - 数据存储在`tags`数组中 - 通过`id`定位关键字段 3. 提供JSON字段映射模板,将不同品牌原始字段映射为系统标准字段 4. 后台可可视化配置: - NC程序名:匹配`tags.id=Tag5`的`value` - 加工累计数量:匹配`tags.id=Tag8`的`value` - 设备状态:匹配`tags.id=_io_status`的`value` - 运行状态:匹配`tags.id=Tag9`的`value` - 主轴/进给/负载/时间等扩展字段自动解析 5. 模板支持新增、编辑、删除、启用/禁用 6. 模板修改后无需重新编译发布,实时生效 7. 支持字段类型转换、数值清洗、去尾缀处理 ### 2. 分布式设备数据采集架构 1. 每台CNC独立配置: - IP地址(用于Ping检测) - HTTP采集接口地址 - 采集间隔(秒) - 绑定品牌模板 - 设备可用/不可用状态 2. 采集触发规则: - 设备必须Ping通 - 设备状态必须为可用 - 两者同时满足才执行采集 3. 不采集场景: - Ping失败 - 设备标记为不可用 - 采集任务暂停/手动关闭 4. 采集机制: - 定时轮询采集 - 采集失败自动重试3次,每次间隔30秒 - 连续5次采集失败记录异常日志,不改变设备在线状态 - 网络恢复后自动恢复采集 5. 数据解析规则(发那科专用): - 从`tags`数组遍历,按`id`匹配关键字段 - 自动提取`device`设备编号、`desc`设备描述 - 自动提取采集时间`time`作为时间戳 - 自动去除`.00000`尾缀,转换为数值/字符串 ### 3. 零件产量自动统计(核心) #### 3.1 基础规则 - 以NC程序名(Tag5.value)作为零件唯一识别依据 - 按自然日00:00–23:59统计产量 - 支持跨天加班时段归属配置 #### 3.2 关键字段来源(发那科JSON) - NC程序名:`tags.id=Tag5 → value` - 当前加工累计数:`tags.id=Tag8 → value` - 设备标识:`device`字段 - 采集时间:各tag自带`time`字段 #### 3.3 关键约束 - CNC接口只能获取当前累计值,无历史数据 - 采集间隔 < 程序切换间隔,确保程序变更必被捕获 - 仅程序切换会重置计数起点,设备重启不重置 - 每次切换程序(包括切回旧程序)均视为新加工开始 #### 3.4 差分统计逻辑 1. **同一程序连续加工** 本次产量 = MAX(0, 当前累计数 − 上次累计数) 1. **程序切换(A → B)** 程序A当日产量锁定不再变化;程序B以当前累计数为新起点 1. **切回历史程序(B → A)** 视为程序A重新开始,增量累加到当日总产量 1. **跨天处理** 0点自动重置;新日期以首次采集累计值为起点 1. **异常值保护** 累计数跳变、负数、突变过大时自动忽略并告警 ### 4. 统计规则动态配置 1. 后台可配置统计指标、计算公式、分组维度 2. 支持自定义统计字段: - 产量(Tag8) - 运行时间(Tag23) - 切削时间(Tag24) - 循环时间(Tag25) - 主轴负载、倍率、速度等 3. 支持自定义表达式/简单公式计算 4. 支持分组维度:设备、员工、日期、NC程序 5. 配置实时生效,无需修改代码 ### 5. 设备状态监控体系 1. **在线/离线状态** - 仅由Ping结果判断 - 与HTTP采集成功与否无关 2. **可用性状态** - 可用/不可用(人工设置) - 不可用设备不参与采集 3. **运行状态来源(发那科)** - 设备状态:`_io_status.value` - 运行状态:`Tag9.value` - 操作模式:`Tag11.value` - 加工状态:`Tag26.value` 4. **展示项** - 在线/离线、可用/不可用 - 当前NC程序 - 当日产量 - 最后采集时间、距离上次采集时长 ### 6. 数据存储与清理策略 1. **双数据库架构(同一MariaDB实例)** - 业务库:设备、员工、模板、产量、配置 - 日志库:原始采集JSON、系统日志、异常日志 2. 每次采集: - 原始JSON完整存入日志库 - 解析后结构化数据存入业务库 3. 自动清理机制: - 后台配置日志保留天数 - 每日自动清理过期日志 - 业务统计数据永久保留 4. 数据安全: - 采集记录可追溯审计 - 支持原始数据回放校验 ### 7. 后台管理系统功能 #### 7.1 设备管理 - 设备增删改查、批量导入/导出 - 按状态筛选(在线/离线/可用/不可用) - 绑定品牌模板、配置采集间隔/Ping间隔 - 查看采集历史与异常记录 #### 7.2 CNC品牌模板管理 - 模板增删改查 - JSON路径可视化配置(支持tags数组、id匹配) - 关键字段指定(NC程序名、计数、状态等) - 模板复制、数值清洗规则配置 #### 7.3 员工与设备分配 - 员工信息管理 - 员工与机床绑定(默认2–3台/人,可调整) - 绑定记录可追溯、可修改 - 按员工查看负责设备与产量 #### 7.4 统计规则配置 - 自定义统计指标 - 计算公式配置 - 分组条件配置 - 统计周期配置 #### 7.5 系统全局配置 - Ping检测间隔 - 采集重试次数与间隔 - 日志保留天数 - BI大屏刷新频率 - 系统默认参数 #### 7.6 数据查询与导出 - 多维度产量查询(设备/员工/日期/程序) - 原始采集JSON查看 - 系统日志、异常日志查询 - 数据导出Excel #### 7.7 告警管理 - 采集失败告警 - 设备长时间离线告警 - 产量异常跳变告警 - 告警列表与标记已处理 ### 8. BI数据大屏 1. 实时可视化展示 2. 支持后台自定义展示指标 3. 支持图表:折线图、柱状图、饼图、设备状态卡片 4. 刷新频率后台可配置 5. 支持全屏展示 6. 支持按车间/班组筛选视图 ### 9. 容错与稳定性机制 - HTTP采集失败重试3次,间隔30秒 - 连续5次采集失败仅记录日志 - 网络中断恢复后自动接续采集 - 设备重启不影响产量统计连续性 - 数据库异常自动重试 - 采集服务异常自动记录 ## 四、非功能需求 1. **性能** - 单服务器支持 ≥ 100台CNC同时采集 - 采集响应延迟 < 3秒 - 大屏刷新无卡顿 2. **可靠性** - 7×24小时稳定运行 - 日志不丢失 - 产量统计100%可追溯 3. **可维护性** - 所有配置页面化,无需改代码 - 日志清晰,便于排查 - 代码规范、注释完整 4. **兼容性** - 兼容主流品牌CNC HTTP/JSON接口 - 支持IE11 / Edge / Chrome ## 五、数据库设计要点 ### 业务库cnc_business - 品牌模板表(JSON路径、tags匹配规则) - 设备信息表 - 员工信息表 - 员工-设备绑定表 - 产量日统计表 - 采集快照表(差分计算用) - 系统配置表 - 告警记录表 ### 日志库cnc_log - 原始采集JSON表(完整tags结构) - 系统操作日志表 - 采集异常日志表 - 自动清理事件任务 ### 索引优化 - 设备ID + 时间 联合索引 - 日期 + 设备 + 程序 联合索引 - 日志表按时间分区 ## 六、接口与采集规范(发那科标准) 1. 接口返回格式:JSON数组 2. 设备结构:`device`、`desc`、`tags` 3. 数据项:`id`、`desc`、`quality`、`value`、`time` 4. 关键字段匹配:按id精确匹配 5. 数值处理:自动去除`.00000`尾缀 6. 采集失败返回空值,不抛异常 7. 所有采集行为必须记录日志 ## 七、交付物 1. 需求规格说明书(本文档) 2. 数据库设计文档 3. 后台管理系统 4. BI数据大屏 5. Windows采集服务