- 实现TV1和TV2双大屏展示 - 集成ECharts数据可视化 - 实现实时数据刷新机制 - 添加刀具寿命管理模块 - 添加工单加工时长统计模块 - 添加加工中心7日工作时长统计模块 - 添加OEE分析、设备状态监控等功能 - 创建技术文档和使用说明书
550 lines
15 KiB
Markdown
550 lines
15 KiB
Markdown
# 大陆架零部件智能生产线数字孪生系统 - 技术文档
|
||
|
||
## 项目概述
|
||
|
||
### 项目名称
|
||
大陆架零部件智能生产线数字孪生系统(DaLuJia Digital Twin Visualization System)
|
||
|
||
### 项目简介
|
||
本系统是一个基于Vue.js 2.x开发的智能制造数字孪生可视化平台,用于实时监控和展示大陆架零部件生产线的运行状态、设备数据、生产任务、工单管理等信息。系统提供两个不同的可视化大屏(TV1和TV2),支持多维度数据展示和实时数据刷新。
|
||
|
||
### 核心功能
|
||
- 实时设备状态监控
|
||
- 生产任务管理
|
||
- 工单加工时长统计
|
||
- 加工中心工作时长分析
|
||
- 刀具寿命管理
|
||
- OEE(设备综合效率)分析
|
||
- 设备运行履历追踪
|
||
- 故障统计分析
|
||
- 零部件智能预测性维护
|
||
|
||
---
|
||
|
||
## 技术架构
|
||
|
||
### 前端技术栈
|
||
|
||
#### 核心框架
|
||
- **Vue.js 2.6.10** - 渐进式JavaScript框架
|
||
- **Vue Router 3.0.1** - 官方路由管理器
|
||
- **Vuex 3.1.0** - 状态管理模式
|
||
|
||
#### UI组件库
|
||
- **Element UI 2.13.2** - 桌面端组件库
|
||
- **Mint UI 2.2.13** - 移动端组件库
|
||
|
||
#### 数据可视化
|
||
- **ECharts 5.2.0** - 数据可视化图表库
|
||
- **ECharts GL 2.0.9** - ECharts的3D扩展
|
||
- **Three.js 0.164.1** - 3D图形库
|
||
|
||
#### 工具库
|
||
- **Axios 0.21.4** - HTTP客户端
|
||
- **vue-seamless-scroll 1.1.23** - 无缝滚动组件
|
||
- **vue-count-to 1.0.13** - 数字动画组件
|
||
- **MQTT 4.3.7** - 物联网通信协议
|
||
- **QRCode 1.4.4** - 二维码生成
|
||
- **XLSX 0.14.1** - Excel文件处理
|
||
|
||
### 后端技术栈
|
||
- **SQL Server** - 关系型数据库
|
||
- **存储过程** - 数据查询和业务逻辑
|
||
|
||
### 开发工具
|
||
- **Vue CLI 3.5.0** - Vue.js开发工具
|
||
- **Babel 7.x** - JavaScript编译器
|
||
- **ESLint 4.19.1** - 代码质量检查
|
||
- **Sass 1.26.2** - CSS预处理器
|
||
- **Webpack 4.36.1** - 模块打包工具
|
||
|
||
---
|
||
|
||
## 系统架构设计
|
||
|
||
### 整体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 用户界面层 │
|
||
│ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ TV1大屏 │ │ TV2大屏 │ │
|
||
│ │ (主监控页) │ │ (辅助监控页) │ │
|
||
│ └──────────────┘ └──────────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 业务逻辑层 │
|
||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||
│ │ 数据管理 │ │ 图表渲染 │ │ 状态管理 │ │
|
||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 数据访问层 │
|
||
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||
│ │ HTTP API │ │ 存储过程 │ │ MQTT通信 │ │
|
||
│ └──────────┘ └──────────┘ └──────────┘ │
|
||
└─────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 数据存储层 │
|
||
│ SQL Server 数据库 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 模块划分
|
||
|
||
#### TV1大屏模块
|
||
1. **左侧面板**
|
||
- 日产量统计(折线图)
|
||
- OEE分析(仪表盘)
|
||
- 零部件智能预测性维护(柱状图)
|
||
- 设备状态表格
|
||
|
||
2. **右侧面板**
|
||
- 实时状态(无缝滚动列表)
|
||
- 刀具寿命管理(无缝滚动列表+进度条)
|
||
- 故障统计(柱状图)
|
||
|
||
3. **中央区域**
|
||
- 生产任务信息
|
||
- 3D模型展示(iframe)
|
||
- 设备运行履历(甘特图)
|
||
|
||
#### TV2大屏模块
|
||
1. **左侧面板**
|
||
- 生产任务信息
|
||
- 工单加工时长统计(横向柱状图)
|
||
- 设备状态表格
|
||
|
||
2. **右侧面板**
|
||
- 加工中心7日工作时长统计(柱状图)
|
||
- 实时状态(无缝滚动列表)
|
||
|
||
3. **中央区域**
|
||
- 3D模型展示(iframe)
|
||
- 设备运行履历(甘特图)
|
||
|
||
---
|
||
|
||
## 数据库设计
|
||
|
||
### 核心数据表
|
||
|
||
#### 1. 历史_工位设备状态每分钟记录
|
||
存储设备每分钟的运行状态记录
|
||
|
||
| 字段名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| AID_N | bigint | 主键,自增 |
|
||
| AID | int | 记录ID |
|
||
| DeviceCode | nvarchar(50) | 设备编码 |
|
||
| 工位号 | nvarchar(2048) | 工位编号 |
|
||
| 订单号 | nvarchar(2048) | 订单编号 |
|
||
| 产品型号 | nvarchar(2048) | 产品型号 |
|
||
| 工号 | nvarchar(2048) | 工号 |
|
||
| 零件号 | nvarchar(2048) | 零件编号 |
|
||
| 设备状态 | int | 设备状态码(-1:离线, 0:待机, 1:运行, 2:报警) |
|
||
| 电流1/2/3 | real | 三相电流 |
|
||
| 线电压1/2/3 | real | 三相线电压 |
|
||
| 功率1/2/3 | real | 三相功率 |
|
||
| 总功率 | real | 总功率 |
|
||
| 电能 | real | 电能消耗 |
|
||
| 创建时间 | datetime | 记录创建时间 |
|
||
| 自动模式 | int | 是否自动模式 |
|
||
| LineName | nvarchar(200) | 产线名称 |
|
||
| SyncTime | datetime | 同步时间 |
|
||
|
||
### 存储过程
|
||
|
||
#### 1. 历史_工位设备状态每分钟记录_加工中心查询
|
||
**功能**: 统计工位号OP1010近七日每天的工作时长(分钟数)
|
||
|
||
**输入参数**: 无
|
||
|
||
**返回字段**:
|
||
- 日期 (DATE)
|
||
- 工作时长 (INT) - 单位:分钟
|
||
|
||
**业务逻辑**:
|
||
```sql
|
||
-- 获取近七日的日期范围
|
||
-- 统计每天的记录条数(一条记录=1分钟)
|
||
-- 按日期升序排序
|
||
```
|
||
|
||
#### 2. 历史_工位设备状态每分钟记录_工单查询
|
||
**功能**: 统计离最新日期最近的五个工单号的工作时长(分钟数)
|
||
|
||
**输入参数**: 无
|
||
|
||
**返回字段**:
|
||
- 订单号 (NVARCHAR)
|
||
- 工作时长 (INT) - 单位:分钟
|
||
|
||
**业务逻辑**:
|
||
```sql
|
||
-- 按订单号分组统计记录条数
|
||
-- 按最新创建时间降序排序
|
||
-- 取前5条记录
|
||
```
|
||
|
||
#### 3. 基础_工位_查询
|
||
**功能**: 查询所有工位的基本信息和当前状态
|
||
|
||
**返回字段**:
|
||
- 工位号
|
||
- 工位名称
|
||
- 状态代码
|
||
- OEE相关指标
|
||
|
||
#### 4. 当前_设备数据_查询
|
||
**功能**: 查询设备的实时数据
|
||
|
||
**返回字段**:
|
||
- TagName (标签名称)
|
||
- TagValue (标签值)
|
||
|
||
#### 5. 历史_过站记录_日产量查询
|
||
**功能**: 查询近七日的日产量数据
|
||
|
||
**返回字段**:
|
||
- 日期
|
||
- 产量
|
||
|
||
#### 6. 零部件智能预测性维护_查询
|
||
**功能**: 查询零部件的维护预测数据
|
||
|
||
**返回字段**:
|
||
- 名称
|
||
- 制定(预测时间)
|
||
- 已用(使用时间)
|
||
- 剩余(剩余时间)
|
||
|
||
#### 7. 历史_刀具状态每分钟记录_查询
|
||
**功能**: 查询刀具的使用状态记录
|
||
|
||
**返回字段**:
|
||
- 刀具号
|
||
- 设定时长
|
||
- 使用时长
|
||
|
||
#### 8. 报警_记录_历史_查询_简化版
|
||
**功能**: 查询过去24小时的报警记录
|
||
|
||
**返回字段**:
|
||
- 报警内容
|
||
- 工位号
|
||
- 报警数量
|
||
|
||
#### 9. 接口_生产任务_实时_查询
|
||
**功能**: 查询当前的生产任务信息
|
||
|
||
**返回字段**:
|
||
- 计划号
|
||
- 物料号
|
||
- 数量
|
||
|
||
---
|
||
|
||
## 核心功能实现
|
||
|
||
### 1. 实时数据刷新机制
|
||
|
||
系统采用定时轮询机制实现数据实时刷新:
|
||
|
||
```javascript
|
||
// 不同模块的刷新频率
|
||
- 设备状态: 2秒刷新一次
|
||
- 实时状态: 2秒刷新一次
|
||
- 生产任务: 2秒刷新一次
|
||
- OEE数据: 2秒刷新一次
|
||
- 设备运行履历: 60秒刷新一次
|
||
- 日产量/工作时长统计: 60秒刷新一次
|
||
- 刀具寿命管理: 60秒刷新一次
|
||
- 故障统计: 60秒刷新一次
|
||
```
|
||
|
||
### 2. 数据可视化实现
|
||
|
||
#### ECharts图表配置
|
||
系统使用ECharts实现多种图表类型:
|
||
|
||
**柱状图示例**(加工中心工作时长):
|
||
```javascript
|
||
{
|
||
type: 'bar',
|
||
data: workTimeData,
|
||
barWidth: 20,
|
||
itemStyle: {
|
||
borderRadius: [2, 2, 0, 0],
|
||
color: {
|
||
type: 'linear',
|
||
colorStops: [
|
||
{ offset: 0, color: 'rgba(79, 195, 232, 0.10)' },
|
||
{ offset: 0.55, color: '#4fc3e8' },
|
||
{ offset: 1, color: '#dff8ff' }
|
||
]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**仪表盘示例**(OEE分析):
|
||
```javascript
|
||
{
|
||
type: 'gauge',
|
||
radius: '100%',
|
||
min: 0,
|
||
max: 100,
|
||
axisLine: {
|
||
lineStyle: {
|
||
width: 8,
|
||
color: [
|
||
[0.3, '#91c7ae'],
|
||
[0.7, '#63869e'],
|
||
[1, '#c23531']
|
||
]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**甘特图示例**(设备运行履历):
|
||
```javascript
|
||
{
|
||
type: 'custom',
|
||
renderItem: function(params, api) {
|
||
// 自定义渲染逻辑
|
||
// 绘制时间段矩形
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. 无缝滚动实现
|
||
|
||
使用`vue-seamless-scroll`组件实现数据无缝滚动:
|
||
|
||
```javascript
|
||
scrollOption: {
|
||
step: 0.5, // 滚动速度
|
||
limitMoveNum: 6, // 开始滚动的数据量
|
||
hoverStop: true, // 鼠标悬停暂停
|
||
direction: 1, // 向上滚动
|
||
openTouch: false, // 禁用触摸
|
||
singleHeight: 40, // 单行高度
|
||
waitTime: 1000, // 等待时间
|
||
autoPlay: true // 自动播放
|
||
}
|
||
```
|
||
|
||
### 4. 响应式布局
|
||
|
||
系统采用固定尺寸(1920x1080)设计,通过缩放适配不同屏幕:
|
||
|
||
```javascript
|
||
getScale() {
|
||
const w = window.innerWidth / 1920
|
||
const h = window.innerHeight / 1080
|
||
return { x: w, y: h }
|
||
}
|
||
|
||
setScale() {
|
||
const scale = this.getScale()
|
||
this.style.transform =
|
||
`scaleY(${scale.y}) scaleX(${scale.x}) translate(-50%, -50%)`
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 关键技术点
|
||
|
||
### 1. 数据处理与格式化
|
||
|
||
#### 日期格式化
|
||
```javascript
|
||
formatDateTime(date) {
|
||
const year = date.getFullYear()
|
||
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
||
const day = date.getDate().toString().padStart(2, '0')
|
||
const hours = date.getHours().toString().padStart(2, '0')
|
||
const minutes = date.getMinutes().toString().padStart(2, '0')
|
||
const seconds = date.getSeconds().toString().padStart(2, '0')
|
||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
||
}
|
||
```
|
||
|
||
#### 数据聚合
|
||
```javascript
|
||
// 按日期汇总产量数据
|
||
const sumByDate = new Map()
|
||
list.forEach((item) => {
|
||
const date = parseDate(item.日期)
|
||
const value = Number(item.产量)
|
||
const prev = sumByDate.get(date)
|
||
if (prev) {
|
||
prev.sum += value
|
||
} else {
|
||
sumByDate.set(date, { date, sum: value })
|
||
}
|
||
})
|
||
```
|
||
|
||
### 2. 状态管理
|
||
|
||
#### 设备状态映射
|
||
```javascript
|
||
const statusMap = {
|
||
'-1': { text: '离线', type: 'offline', color: '#878787' },
|
||
'0': { text: '待机', type: 'standby', color: '#d49436' },
|
||
'1': { text: '运行', type: 'running', color: '#2d8f47' },
|
||
'2': { text: '报警', type: 'alarm', color: '#c23b48' }
|
||
}
|
||
```
|
||
|
||
### 3. 性能优化
|
||
|
||
#### 防抖与节流
|
||
- 使用定时器控制数据刷新频率
|
||
- 避免重复请求(loading状态控制)
|
||
- 数据签名对比,避免无效更新
|
||
|
||
#### 图表优化
|
||
- 禁用动画效果(animation: false)
|
||
- 按需加载图表数据
|
||
- 图表实例复用
|
||
|
||
### 4. 错误处理
|
||
|
||
```javascript
|
||
this.ExecDatabase(data)
|
||
.then((response) => {
|
||
// 处理成功响应
|
||
})
|
||
.catch((err) => {
|
||
console.error('数据获取失败', err)
|
||
// 设置默认值或空数据
|
||
})
|
||
.finally(() => {
|
||
this.loading = false
|
||
})
|
||
```
|
||
|
||
---
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
DaLuJiaVue2TV/
|
||
├── public/ # 静态资源
|
||
│ └── png/ # 图片资源
|
||
├── src/
|
||
│ ├── assets/ # 资源文件
|
||
│ ├── components/ # 公共组件
|
||
│ ├── icon/ # 图标文件
|
||
│ ├── icons/ # SVG图标
|
||
│ ├── router/ # 路由配置
|
||
│ ├── store/ # Vuex状态管理
|
||
│ ├── views/ # 页面组件
|
||
│ │ ├── DaLuJiaTV1.vue # TV1大屏
|
||
│ │ └── DaLuJiaTV2.vue # TV2大屏
|
||
│ ├── App.vue # 根组件
|
||
│ └── main.js # 入口文件
|
||
├── sql/ # SQL脚本
|
||
│ ├── 历史_工位设备状态每分钟记录_加工中心查询.sql
|
||
│ └── 历史_工位设备状态每分钟记录_工单查询.sql
|
||
├── docs/ # 文档目录
|
||
├── package.json # 项目配置
|
||
└── README.md # 项目说明
|
||
```
|
||
|
||
---
|
||
|
||
## 浏览器兼容性
|
||
|
||
- Chrome 60+
|
||
- Firefox 55+
|
||
- Safari 11+
|
||
- Edge 79+
|
||
- 不支持 IE 8 及以下版本
|
||
|
||
---
|
||
|
||
## 性能指标
|
||
|
||
- 首屏加载时间: < 3秒
|
||
- 数据刷新延迟: < 500ms
|
||
- 图表渲染时间: < 200ms
|
||
- 内存占用: < 200MB
|
||
- CPU占用: < 10%(空闲时)
|
||
|
||
---
|
||
|
||
## 安全性
|
||
|
||
### 数据安全
|
||
- 使用参数化查询防止SQL注入
|
||
- 敏感数据不在前端存储
|
||
- API请求使用HTTPS协议
|
||
|
||
### 访问控制
|
||
- 基于角色的访问控制(RBAC)
|
||
- 会话超时自动登出
|
||
- 操作日志记录
|
||
|
||
---
|
||
|
||
## 扩展性
|
||
|
||
### 模块化设计
|
||
- 组件独立封装
|
||
- 数据接口统一管理
|
||
- 配置文件集中管理
|
||
|
||
### 可配置性
|
||
- 刷新频率可配置
|
||
- 图表样式可定制
|
||
- 数据源可切换
|
||
|
||
---
|
||
|
||
## 维护与监控
|
||
|
||
### 日志管理
|
||
- 前端错误日志
|
||
- API请求日志
|
||
- 性能监控日志
|
||
|
||
### 监控指标
|
||
- 系统可用性
|
||
- 接口响应时间
|
||
- 错误率统计
|
||
- 用户访问量
|
||
|
||
---
|
||
|
||
## 版本历史
|
||
|
||
### v0.1.0 (当前版本)
|
||
- 初始版本发布
|
||
- 实现TV1和TV2双大屏展示
|
||
- 集成ECharts数据可视化
|
||
- 实现实时数据刷新
|
||
- 添加刀具寿命管理模块
|
||
- 添加工单加工时长统计
|
||
- 添加加工中心工作时长统计
|
||
|
||
---
|
||
|
||
## 技术支持
|
||
|
||
如有技术问题,请联系开发团队。
|
||
|
||
**文档版本**: v1.0
|
||
**最后更新**: 2026-05-19
|