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.
haoliang-net/docs/00-需求与设计文档.md

134 lines
5.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机床数据采集系统 - 需求与设计文档
> 最后更新2026-04-23
> 状态设计中数据库设计已确认API/前端/采集服务待设计)
---
## 一、项目概述
本系统用于对多台不同品牌CNC机床进行统一化、分布式、自动化数据采集实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理并通过BI大屏实时展示生产数据。
系统本地IIS部署MariaDB数据库业务库+日志库双库分离),单角色管理模式。
---
## 二、技术栈
| 层 | 技术 | 说明 |
|----|------|------|
| 前端 | Vue3 | 管理后台 + 大屏看板 |
| 后端 | ASP.NET Web API 2 (.NET Framework 4.5+) | REST API |
| 采集服务 | Windows Service (.NET Framework 4.5+) | 定时采集+数据处理 |
| 数据库 | MariaDB 10.6+ | 业务库 + 日志库 |
| 部署 | Windows Server + IIS | 局域网,同站点 |
---
## 三、系统架构
[见附图:架构图]
核心组件:
- Windows Service (CncCollector)定时拉取HTTP数据字段映射解析零件数增量计算日终汇总心跳上报
- MariaDB业务库(cnc_business) + 日志库(cnc_log)
- IIS Web API 2/api/admin/** Token认证/api/screen/** 免认证
- Vue3前端管理后台(/) + 大屏(/screen)
---
## 四、已确认的核心需求与决策
### 4.1 采集架构
| 决策 | 结论 |
|------|------|
| 采集模式 | 系统定时从一个HTTP地址拉取JSON数据非直连机床 |
| 采集地址 | 多个采集地址,每个地址关联品牌+选择要采的机床列表URL和间隔配在地址级 |
| 采集间隔 | 配置在采集地址级别,同地址统一间隔 |
| 采集并发 | 地址间并行,地址内串行 |
| Ping前置 | Ping通才采集Ping结果=在线状态 |
| 采集失败 | 自动重试3次间隔30秒连续5次失败记告警 |
| 采集认证 | HTTP采集地址无需认证 |
| 新设备发现 | 采集到未知device时记录告警不自动创建 |
### 4.2 数据格式
| 决策 | 结论 |
|------|------|
| 顶层结构 | 所有品牌统一JSON数组每台设备含device、desc、tags |
| 字段定位 | 通过tags数组中id匹配定位关键字段 |
| 字段映射 | 管理后台可视化配置品牌字段映射,实时生效不改代码 |
| device映射 | 机床表配置device_code采集时用device值匹配 |
| 原始数据 | 存原始JSON到日志库解析后结构化数据存业务库 |
| 时间标准 | 以服务器时间为准,机床时间仅存为参考字段 |
| 数值处理 | 自动去除.00000尾缀,转换为数值/字符串 |
### 4.3 零件产量统计
| 决策 | 结论 |
|------|------|
| 零件识别 | NC程序名Tag5作为零件唯一识别 |
| 计数方式 | CNC切换加工零件时NC程序名变更+零件数清零 |
| 产量计算 | 程序切换时结账上一段零件数新程序从0开始 |
| A-B-C-A-B | 同程序名多次出现,产量分段记录,日汇总时合并 |
| 手动清零 | 同程序下part_count下降视为手动清零结账前值后从0重计 |
| 设备重启 | 确认不清零零件数 |
| 跨天处理 | 零点后数据归属第二天,有问题后台手工调 |
| 日终汇总 | 按自然天汇总过0点后自动汇总前一天汇总时间后台可配 |
| 未开机机床 | 日汇总插0产量记录 |
| 采集失败机床 | Ping通但采集失败标记数据缺失前端显示-而非0 |
### 4.4 班次与工人
| 决策 | 结论 |
|------|------|
| 班次 | v1不支持班次按自然天+固定绑定汇总 |
| 工人-机床 | 固定绑定,一台机床只绑一个工人 |
| 工人归属 | 工人不归属车间 |
### 4.5 管理与监控
| 决策 | 结论 |
|------|------|
| 采集服务通信 | 心跳写DB + 轻量HTTP管理API启停控制 |
| 配置热更新 | 轮询DB每30秒+ 管理操作后API通知双保险 |
| 采集服务自恢复 | 每个采集地址任务独立线程,崩了不影响其他,自动重启间隔递增 |
| DB断连处理 | 本地文件缓存+自动补写 |
| 采集服务API认证 | 加服务间API Key配置文件中写死 |
| 手工调整产量 | 管理后台修正功能+审计日志 |
| 模板修改 | 不回溯历史数据,修改时弹提醒 |
### 4.6 前端与认证
| 决策 | 结论 |
|------|------|
| API认证 | /api/admin/** Token认证/api/screen/** 免认证 |
| 管理后台 | PC端Vue3 |
| 大屏 | Chrome无人值守提供全屏按钮免认证 |
| 大屏可配置 | 固定布局+卡片指标可配+筛选可配+图表类型可选 |
| Vue3部署 | 同IIS站点无跨域问题 |
| Excel导出 | EPPlus |
### 4.7 系统运维
| 决策 | 结论 |
|------|------|
| 日志轮转 | 按日期切割,保留天数在管理后台配置 |
| DB备份 | 每日自动全量+binlog增量保留30天需检查binlog是否开启 |
| 分区维护 | 按月创建新分区+删除过期分区 |
| 品牌预置 | 预置FANUC品牌模板其他手动添加 |
| 告警通知 | v1只做管理后台内告警列表+标记已处理,不做推送 |
| 机床停用 | 软删除(is_enabled),保留历史数据 |
---
## 五、待设计模块
> 以下模块尚未展开设计,待后续讨论确认:
- 5.1 API接口设计
- 5.2 采集服务核心逻辑设计
- 5.3 前端管理后台设计
- 5.4 大屏看板设计