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