|
|
# CNC机床数据采集分析系统 - 完整需求规格说明书
|
|
|
|
|
|
---
|
|
|
|
|
|
## 一、项目概述
|
|
|
|
|
|
本系统用于对多台不同品牌CNC机床进行统一化、分布式、自动化数据采集,实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理,并通过BI大屏实时展示生产数据。
|
|
|
|
|
|
系统基于 **.NET Framework 4.0 WebForm** 开发,本地IIS部署,MariaDB数据库,单角色权限管理。
|
|
|
|
|
|
## 二、总体约束
|
|
|
|
|
|
1. **开发框架**
|
|
|
|
|
|
- 前端:Vue.js
|
|
|
|
|
|
- 后端:.NET Framework 4.0 WebForm
|
|
|
|
|
|
- 数据库:MariaDB(本地部署,双库分离)
|
|
|
|
|
|
- 部署: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采集服务
|