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.1 KiB

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

# 构建后端项目
cd src/backend && msbuild /p:Configuration=Release

# 运行后端 (IIS部署无dotnet run)

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

# 运行所有测试
./test.sh

Critical Constraints

Database Architecture

  • 业务库 (cnc_business): 设备、员工、模板、产量、配置、告警
  • 日志库 (cnc_log): 原始采集JSON、系统日志、异常日志
  • 两个数据库在同一MariaDB实例严格分离

CNC Data Format (发那科标准)

  • 接口返回JSON数组每台设备包含 devicedesctags 数组
  • 每个tag: iddescqualityvaluetime
  • 关键字段通过 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遵循组件化开发规范
  • 所有配置页面化,无需改代码即可调整
  • 日志清晰,便于排查