# 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 大屏看板设计