|
|
# CNC机床数据采集分析系统 - OpenCode Agent Instructions
|
|
|
|
|
|
## Project Overview
|
|
|
|
|
|
CNC机床多品牌统一化分布式数据采集分析系统,实现设备状态监控、零件产量自动统计、加工过程分析、人员与设备绑定管理,及BI大屏实时展示。
|
|
|
|
|
|
## Tech Stack
|
|
|
|
|
|
- **Backend**: .NET Framework 4.0 WebForm (IIS部署)
|
|
|
- **Frontend Admin**: Vue.js 管理后台
|
|
|
- **Frontend Dashboard**: Vue.js BI大屏
|
|
|
- **Database**: MariaDB 10.6+ (本地部署,双库分离)
|
|
|
- **Deployment**: Windows Server + IIS
|
|
|
|
|
|
## Project Structure (Planned)
|
|
|
|
|
|
```
|
|
|
src/
|
|
|
├── backend/ # .NET Framework 4.0 WebForm 后端
|
|
|
│ ├── Api/ # API接口层
|
|
|
│ ├── Core/ # 核心业务逻辑
|
|
|
│ ├── Data/ # 数据访问层
|
|
|
│ └── Models/ # 数据模型
|
|
|
├── frontend/
|
|
|
│ ├── admin/ # Vue.js 管理后台
|
|
|
│ └── dashboard/ # Vue.js BI大屏
|
|
|
├── database/
|
|
|
│ ├── cnc_business.sql # 业务库建表脚本
|
|
|
│ └── cnc_log.sql # 日志库建表脚本
|
|
|
└── docs/ # 文档
|
|
|
```
|
|
|
|
|
|
## Key Commands
|
|
|
|
|
|
### Backend Development
|
|
|
```bash
|
|
|
# 构建后端项目
|
|
|
cd src/backend && msbuild /p:Configuration=Release
|
|
|
|
|
|
# 运行后端 (IIS部署,无dotnet run)
|
|
|
```
|
|
|
|
|
|
### Frontend Development
|
|
|
```bash
|
|
|
# 管理后台 (默认端口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
|
|
|
```bash
|
|
|
# 运行所有测试
|
|
|
./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 Framework 4.0 WebForm模式
|
|
|
- 前端Vue.js遵循组件化开发规范
|
|
|
- 所有配置页面化,无需改代码即可调整
|
|
|
- 日志清晰,便于排查
|