You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

468 lines
9.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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:0023: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 员工与设备分配
- 员工信息管理
- 员工与机床绑定默认23台/人,可调整)
- 绑定记录可追溯、可修改
- 按员工查看负责设备与产量
#### 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采集服务