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.

147 lines
5.1 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机床数据采集分析系统 - 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遵循组件化开发规范
- 所有配置页面化,无需改代码即可调整
- 日志清晰,便于排查