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.
5.4 KiB
5.4 KiB
CNC机床数据采集分析系统 - OpenCode Agent Instructions
Project Overview
CNC机床多品牌统一化分布式数据采集分析系统,实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理,及BI大屏实时展示。
Tech Stack
- Backend: .NET 8.0 WebApi (IIS部署)
- Frontend Admin: Vue.js 管理后台
- Frontend Dashboard: Vue.js BI大屏
- Database: MariaDB 10.6+ (本地部署,双库分离)
- Real-Time: SignalR WebSocket
- Caching: Memory Cache + Redis
- Deployment: Windows Server + IIS
Project Structure
src/
├── Haoliang.Api/ # .NET 8.0 API接口层
│ ├── Controllers/ # API控制器
│ ├── Hubs/ # SignalR Hub
│ ├── Middleware/ # 中间件
│ └── Filters/ # 过滤器
├── Haoliang.Core/ # .NET 8.0 核心业务逻辑
│ └── Services/ # 业务服务
├── Haoliang.Data/ # .NET 8.0 数据访问层
│ └── Repositories/ # 数据仓储
├── Haoliang.Models/ # .NET 8.0 数据模型层
├── frontend/
│ ├── admin/ # Vue.js 管理后台
│ └── dashboard/ # Vue.js BI大屏
├── database/
│ ├── cnc_business.sql # 业务库建表脚本
│ └── cnc_log.sql # 日志库建表脚本
└── docs/ # 文档
Key Commands
Backend Development
# 构建后端项目
dotnet build Haoliang.sln
# 运行后端
dotnet run --project Haoliang.Api
Frontend Development
# 管理后台 (默认端口8080,代理到后端)
cd src/frontend/admin && npm install && npm run serve
# BI大屏 (默认端口8081,代理到后端)
cd src/frontend/dashboard && npm install && npm run serve
# 前端构建
npm run build
Testing
# 运行所有测试 (Haoliang.Tests项目已删除)
./test.sh
Critical Constraints
Database Architecture
- 业务库 (cnc_business): 设备、员工、模板、产量、配置、告警
- 日志库 (cnc_log): 原始采集JSON、系统日志、异常日志
- 两个数据库在同一MariaDB实例,严格分离
CNC Data Format (发那科标准)
- 接口返回JSON数组,每台设备包含
device、desc、tags数组 - 每个tag:
id、desc、quality、value、time - 关键字段通过
id匹配:_io_status→ 设备状态Tag5→ NC程序名Tag8→ 当前加工累计数量Tag9→ 运行状态Tag11→ 操作模式Tag14→ 主轴倍率Tag17-Tag21→ 速度/负载Tag22-Tag25→ 时间统计Tag26→ 加工状态
- 数值自动去除
.00000尾缀,转换为数值/字符串 - 示例数据见
发那科系统采集示例.txt
产量统计核心逻辑 (差分计算)
- CNC接口仅返回实时累计值,无历史数据
- 同一程序连续加工:产量 = MAX(0, 当前累计数 - 上次累计数)
- 程序切换(A→B):A产量锁定,B以当前累计数为新起点
- 切回历史程序(B→A):视为A重新开始,增量累加到当日产量
- 跨天处理:0点自动重置,新日期以首次采集累计值为起点
- 异常值保护:跳变、负数、突变过大时忽略并告警
采集机制
- 设备必须Ping通 + 状态可用 才执行采集
- 采集失败重试3次,间隔30秒
- 连续5次失败记录异常日志,不改变在线状态
- 网络恢复后自动恢复采集
- 在线/离线仅由Ping判断,与HTTP采集成功与否无关
API Design
- 统一响应格式:
{ success, data, message, timestamp } - API版本化前缀:
/api/v1/ - 模板和统计数据使用内存缓存,写操作需清除缓存
Module References
1. CNC品牌模板配置
- 多品牌统一接入(发那科、三菱、西门子、新代、广数等)
- JSON字段映射模板,将原始字段映射为系统标准字段
- 可视化配置tags数组路径、id匹配规则
- 模板增删改查、启用/禁用,修改实时生效无需重编译
2. 分布式设备采集
- 每台CNC独立配置:IP、HTTP采集地址、采集间隔、绑定模板、可用状态
- 定时轮询采集,原始JSON存日志库,解析后存业务库
3. 零件产量统计
- 以NC程序名(Tag5.value)作为零件唯一识别
- 按自然日00:00-23:59统计,支持跨天加班归属配置
- 差分统计逻辑(见上方核心逻辑)
4. 统计规则动态配置
- 自定义统计指标、计算公式、分组维度(设备/员工/日期/NC程序)
- 配置实时生效
5. 设备状态监控
- 在线/离线(Ping)、可用/不可用(人工)、运行状态(_io_status/Tag9/Tag11/Tag26)
6. 后台管理系统
- 设备管理、模板管理、员工与设备分配、统计规则配置、系统全局配置、数据查询导出、告警管理
7. BI数据大屏
- 实时可视化,支持折线图/柱状图/饼图/设备状态卡片
- 刷新频率可配置,支持全屏和按车间/班组筛选
Performance Requirements
- 单服务器支持 ≥ 100台CNC同时采集
- 采集响应延迟 < 3秒
- API响应 < 500ms
- 7×24小时稳定运行
Code Style
- 遵循各子项目现有代码规范
- 后端C#遵循.NET 8.0规范
- 前端Vue.js遵循组件化开发规范
- 所有配置页面化,无需改代码即可调整
- 日志清晰,便于排查