1429 lines
70 KiB
Markdown
1429 lines
70 KiB
Markdown
# LabVIEW数据上传接口规范文档
|
||
|
||
## 1. 概述
|
||
|
||
本文档规定了LabVIEW系统向MES车间设备状态记录表直接写入数据的格式规范和技术要求。LabVIEW系统将通过数据库直连的方式,将采集到的设备数据实时写入MES数据库中,无需通过HTTP
|
||
API接口。本文档详细说明了数据库表结构、数据格式、状态判断逻辑以及完整的开发指南。
|
||
|
||
### 1.1 系统架构
|
||
|
||
```
|
||
LabVIEW数据采集系统 ──直接数据库连接──→ MES数据库 ──实时读取──→ MES前端系统
|
||
↑
|
||
状态记录表 + 智能状态判断逻辑
|
||
↓
|
||
车间设备管理 → 点位管理 → 状态记录监控
|
||
```
|
||
|
||
**关键特点**:
|
||
|
||
- 🔗 **直连模式**:LabVIEW直接向数据库写入数据,无需API调用
|
||
- 🧠 **智能状态**:MES系统自动判断设备连接状态(无连接检测)
|
||
- 📊 **动态解析**:前端自动解析JSON数据生成动态表格列,智能识别中文字段名
|
||
- ⚡ **实时显示**:数据写入后立即在MES前端显示
|
||
- 🏭 **工人友好**:界面全中文显示,适合工厂现场使用
|
||
|
||
### 1.2 MES车间设备功能全流程
|
||
|
||
#### 1.2.1 功能模块概览
|
||
|
||
| 功能模块 | 页面路径 | 主要功能 | 权限要求 |
|
||
|------------|------------------------------------|------------------|-------------------------------|
|
||
| **车间设备管理** | `/equipment/workshop/index` | 设备CRUD、状态监控、自动刷新 | `equipment:workshop:*` |
|
||
| **点位管理** | `/equipment/workshop/point/index` | 点位配置、数据项管理 | `equipment:workshop:point:*` |
|
||
| **状态记录** | `/equipment/workshop/record/index` | 历史数据查看、动态列显示 | `equipment:workshop:record:*` |
|
||
|
||
#### 1.2.2 完整使用流程
|
||
|
||
```
|
||
第一步:设备注册
|
||
┌─────────────────────────────────────────────┐
|
||
│ MES管理员在设备管理页面添加新设备 │
|
||
│ • 填写设备编号、名称、类型、工位 │
|
||
│ • 选择设备角色(采集/控制) │
|
||
│ • 设置状态为"启用" │
|
||
│ • 系统自动生成设备ID │
|
||
└─────────────────────────────────────────────┘
|
||
↓
|
||
第二步:点位配置(可选)
|
||
┌─────────────────────────────────────────────┐
|
||
│ 如需按具体测量点管理数据: │
|
||
│ • 进入点位管理页面 │
|
||
│ • 配置点位名称、类型、单位 │
|
||
│ • 设置采集间隔和上传策略 │
|
||
└─────────────────────────────────────────────┘
|
||
↓
|
||
第三步:LabVIEW配置
|
||
┌─────────────────────────────────────────────┐
|
||
│ LabVIEW开发人员配置数据上传: │
|
||
│ • 获取设备ID并配置数据库连接 │
|
||
│ • 按照键值对规范命名数据字段 │
|
||
│ • 实现定期数据上传 │
|
||
└─────────────────────────────────────────────┘
|
||
↓
|
||
第四步:数据监控
|
||
┌─────────────────────────────────────────────┐
|
||
│ 现场工人在状态记录页面查看: │
|
||
│ • 实时设备状态(运行/停机/故障/无连接) │
|
||
│ • 历史数据趋势和统计 │
|
||
│ • 动态生成的中文数据列 │
|
||
└─────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 1.2 📋 快速导航
|
||
|
||
| 您需要了解的内容 | 跳转到章节 |
|
||
|-----------------------|-------------------------------------|
|
||
| 🔍 **键值对Key如何显示**(重要) | [第8章 键值对Key映射规则](#8-键值对key映射规则详细说明) |
|
||
| 🗃️ 数据库表结构和字段说明 | [第2章 数据库表结构](#2-数据库表结构) |
|
||
| 📝 数据格式(JSON/键值对/嵌套) | [第3章 数据格式规范](#3-数据格式规范) |
|
||
| 💻 LabVIEW程序架构和SQL模板 | [第4章 LabVIEW端开发指南](#4-labview端开发指南) |
|
||
| ⚙️ MES系统配置步骤 | [第5章 MES系统端配置指南](#5-mes系统端配置指南) |
|
||
| 🧪 测试用例和验收标准 | [第9章 联调测试和验收计划](#9-联调测试和验收计划) |
|
||
|
||
## 2. 数据库表结构
|
||
|
||
### 2.1 目标表:`dm_equipment_status_record_workshop`(车间设备状态记录表)
|
||
|
||
这是存储所有设备运行数据的核心表,每条记录代表一次设备数据采集。
|
||
|
||
| 字段名 | 数据类型 | 说明 | 是否必填 | 示例值 | 备注 |
|
||
|--------------------|--------------|------------------|----------|-------------------------|----------------------|
|
||
| `equipment_id` | bigint | 设备ID(关联设备主表) | **必填** | `5` | 需要提前在MES系统中注册设备 |
|
||
| `point_id` | bigint | 点位ID(具体测量点) | 可选 | `12` 或 `NULL` | 如果是设备整体数据可为空 |
|
||
| `equipment_number` | varchar(64) | 设备编号(设备唯一标识) | **强烈推荐** | `"EQ001"` | 便于运维人员识别设备 |
|
||
| `equipment_name` | varchar(128) | 设备名称(设备中文名称) | **强烈推荐** | `"配料机1005"` | 便于现场操作人员识别 |
|
||
| `station_name` | varchar(128) | 工位名称(设备所在位置) | **强烈推荐** | `"配料工位1"` | 帮助定位设备物理位置 |
|
||
| `equipment_status` | int | 设备运行状态代码 | **必填** | `0` / `1` / `2` | 表示设备当前运行状态,与设备基本状态分离 |
|
||
| `value` | varchar(512) | 采集数据(JSON或键值对格式) | **必填** | 见下方详细说明 | 存储实际的传感器数据 |
|
||
| `record_time` | datetime | 数据记录时间 | **必填** | `"2025-01-15 14:30:25"` | 数据采集的准确时间戳 |
|
||
| `note` | text | 备注信息 | 可选 | `"正常采集"` | 可记录异常情况或特殊说明 |
|
||
|
||
### 2.2 设备状态代码详细说明
|
||
|
||
**重要提醒**:该状态代码是专门用于状态记录表的运行状态,与设备管理中的基本状态(启用0/停用1/故障2)是分离的概念。
|
||
|
||
#### 2.2.1 状态记录表专用代码
|
||
|
||
| 状态代码 | 中文含义 | 前端显示颜色 | 使用场景 | 何时使用 |
|
||
|------|------|--------|------------|--------------------------|
|
||
| `0` | 运行中 | 🟢 绿色 | 设备正常运行状态 | 设备正在生产、所有系统正常工作 |
|
||
| `1` | 停机 | 🔘 灰色 | 设备停止运行但无故障 | 计划停机、换班停机、等待原料等 |
|
||
| `2` | 故障 | 🔴 浅红色 | 设备发生故障需要维修 | 设备报警、传感器异常、机械故障等 |
|
||
| `3` | 无连接 | 🟡 浅黄色 | 设备失去通信连接 | **系统自动判断**,LabVIEW无需手动设置 |
|
||
|
||
#### 2.2.2 无连接状态自动判断逻辑
|
||
|
||
**关键说明**:`3-无连接`状态由MES系统自动判断,LabVIEW **不需要** 主动设置此状态。
|
||
|
||
**自动判断规则**:
|
||
|
||
- 如果最后一条记录的`equipment_status = 0`(运行中),且距离当前时间超过**30分钟**,系统自动判断为`3-无连接`
|
||
- 如果最后一条记录的`equipment_status = 1`(停机),且距离当前时间超过**3小时**,系统自动判断为`3-无连接`
|
||
|
||
**实现逻辑**(MES系统内部):
|
||
|
||
```java
|
||
// 获取设备最新状态记录
|
||
Date currentTime = new Date();
|
||
long timeDiffMinutes = (currentTime.getTime() - recordTime.getTime()) / (1000 * 60);
|
||
|
||
Integer finalStatus = originalStatus;
|
||
if (originalStatus == 0 && timeDiffMinutes >= 30) {
|
||
finalStatus = 3; // 运行中超过30分钟 → 无连接
|
||
} else if (originalStatus == 1 && timeDiffMinutes >= 180) {
|
||
finalStatus = 3; // 停机超过3小时 → 无连接
|
||
}
|
||
```
|
||
|
||
#### 2.2.3 与设备基本状态的区别
|
||
|
||
- **设备基本状态**(设备管理页面):启用(0)/停用(1)/故障(2) - 控制设备是否可用
|
||
- **运行状态代码**(状态记录表):运行中(0)/停机(1)/故障(2)/无连接(3) - 记录设备实时运行状况
|
||
|
||
#### 2.2.4 状态切换逻辑
|
||
|
||
```
|
||
正常运行流程:
|
||
0(运行中) ──计划停机──→ 1(停机) ──重新启动──→ 0(运行中)
|
||
|
||
故障处理流程:
|
||
0(运行中) ──发生故障──→ 2(故障) ──维修完成──→ 0(运行中)
|
||
|
||
无连接检测(自动):
|
||
0(运行中) ──30分钟无数据──→ 3(无连接)
|
||
1(停机) ──3小时无数据───→ 3(无连接)
|
||
```
|
||
|
||
## 3. 数据格式规范
|
||
|
||
### 3.1 支持的数据格式(3种方式任选其一)
|
||
|
||
MES系统的前端解析器非常智能,可以自动识别并解析以下3种数据格式:
|
||
|
||
#### 格式1:标准JSON格式(**强烈推荐**)
|
||
|
||
这是最灵活、最易读的格式,适合复杂的设备数据。
|
||
|
||
```json
|
||
{
|
||
"temperature1": 25.5,
|
||
"temperature2": 28.3,
|
||
"pressure": 2.35,
|
||
"current": 15.2,
|
||
"voltage": 220.5,
|
||
"speed": 1450,
|
||
"weight": 1250.8,
|
||
"alarm_status": 0,
|
||
"flow_rate": 12.5
|
||
}
|
||
```
|
||
|
||
**优点**:
|
||
|
||
- 字段名直观,便于理解
|
||
- 支持不同数据类型(数字、字符串、布尔值)
|
||
- 前端会自动识别常用字段并生成中文列名
|
||
- 扩展性强,容易添加新字段
|
||
|
||
#### 格式2:简化键值对格式
|
||
|
||
适合简单的数值型数据,节省存储空间。
|
||
|
||
```
|
||
"1:200,3:300,2:400,4:5"
|
||
```
|
||
|
||
**说明**:
|
||
|
||
- 格式:`key:value`,用逗号分隔多个数据点
|
||
- 系统会自动将数字key转换为`数据点X`的格式显示
|
||
|
||
**前端显示效果**:
|
||
| 输入格式 | key值 | 前端显示列名 | 显示值 | 说明 |
|
||
|----------|-------|-------------|---------|------|
|
||
| `"1:200"` | `1` | `数据点1` | `200.00` | 数字key自动转换 |
|
||
| `"3:25.5"` | `3` | `数据点3` | `25.50` | 支持小数 |
|
||
| `"temp:45.2"` | `temp` | `温度` | `45.20°C` | 智能识别温度关键词 |
|
||
| `"press:2.5"` | `press` | `压力` | `2.50bar` | 智能识别压力关键词 |
|
||
| `"motor_speed:1450"` | `motor_speed` | `转速` | `1450rpm` | 智能识别转速关键词 |
|
||
|
||
**关键词智能识别规则**:
|
||
|
||
- 包含`temperature`或`temp` → 显示为"温度",单位°C
|
||
- 包含`pressure`或`press` → 显示为"压力",单位bar
|
||
- 包含`current` → 显示为"电流",单位A
|
||
- 包含`voltage` → 显示为"电压",单位V
|
||
- 包含`weight` → 显示为"重量",单位kg
|
||
- 包含`speed` → 显示为"转速",单位rpm
|
||
- 包含`level` → 显示为"液位",单位%
|
||
- 包含`flow` → 显示为"流量"
|
||
- 包含`status` → 显示为"状态"
|
||
- 包含`alarm` → 显示为"报警"
|
||
- 其他情况 → 直接显示key值
|
||
|
||
**适用场景**:传统PLC或简单传感器数据
|
||
|
||
> 💡 **详细的Key映射规则请参考:[第8章 键值对Key映射规则详细说明](#8-键值对key映射规则详细说明)**
|
||
|
||
#### 格式3:嵌套JSON格式
|
||
|
||
适合复杂设备,可以按功能模块分组数据。
|
||
|
||
```json
|
||
{
|
||
"sensors": {
|
||
"temp1": 25.5,
|
||
"temp2": 28.3,
|
||
"pressure1": 2.35
|
||
},
|
||
"motors": {
|
||
"motor1_speed": 1450,
|
||
"motor1_current": 15.2,
|
||
"motor2_speed": 1200,
|
||
"motor2_current": 12.8
|
||
},
|
||
"alarms": {
|
||
"high_temp": false,
|
||
"low_pressure": false,
|
||
"overload": true
|
||
}
|
||
}
|
||
```
|
||
|
||
**优点**:
|
||
|
||
- 数据结构清晰,按功能分组
|
||
- 前端会自动扁平化处理,生成列名如:"传感器_温度1"、"电机_转速1"等
|
||
- 适合大型复杂设备
|
||
|
||
### 3.2 智能字段识别和中文显示
|
||
|
||
MES系统前端具有强大的智能识别功能,会自动将英文字段名转换为中文显示,并智能推测单位。
|
||
|
||
#### 支持的智能识别字段
|
||
|
||
| 英文关键词 | 自动识别为中文 | 推荐命名示例 | 系统自动推测单位 | 说明 |
|
||
|---------------|---------|----------------------------------------------------|-------------|----------|
|
||
| `temperature` | 温度 | `temperature1`, `temp_inlet`, `temp_outlet` | °C | 温度相关传感器 |
|
||
| `pressure` | 压力 | `pressure1`, `press_main`, `hydraulic_pressure` | bar, MPa | 压力传感器数据 |
|
||
| `current` | 电流 | `current1`, `motor_current`, `pump_current` | A | 电流检测 |
|
||
| `voltage` | 电压 | `voltage1`, `main_voltage`, `control_voltage` | V | 电压监测 |
|
||
| `weight` | 重量 | `weight1`, `total_weight`, `batch_weight` | kg, t | 称重系统 |
|
||
| `speed` | 转速 | `speed1`, `motor_speed`, `fan_speed` | rpm | 转速监测 |
|
||
| `flow` | 流量 | `flow1`, `water_flow`, `material_flow` | L/min, m³/h | 流量计数据 |
|
||
| `level` | 液位 | `level1`, `tank_level`, `hopper_level` | m, mm, % | 液位/料位传感器 |
|
||
| `force` | 力 | `force1`, `clamp_force`, `press_force` | N, kN | 力传感器 |
|
||
| `position` | 位置 | `position1`, `valve_position`, `cylinder_position` | mm, ° | 位置传感器 |
|
||
| `frequency` | 频率 | `frequency1`, `motor_freq`, `vibration_freq` | Hz | 频率检测 |
|
||
| `power` | 功率 | `power1`, `motor_power`, `heating_power` | kW, W | 功率监测 |
|
||
| `energy` | 能耗 | `energy1`, `total_energy`, `daily_energy` | kWh | 能耗统计 |
|
||
| `count` | 计数 | `count1`, `product_count`, `cycle_count` | 个, 次 | 计数器 |
|
||
| `time` | 时间 | `time1`, `cycle_time`, `process_time` | s, min | 时间测量 |
|
||
| `status` | 状态 | `pump_status`, `valve_status`, `motor_status` | - | 设备状态 |
|
||
| `alarm` | 报警 | `alarm1`, `high_temp_alarm`, `pressure_alarm` | - | 报警信息 |
|
||
|
||
#### 智能单位检测规则
|
||
|
||
系统会根据数值大小自动推测合适的单位:
|
||
|
||
```javascript
|
||
// 温度类数据
|
||
temperature: 25.5 → 自动显示为 "25.50°C"
|
||
temp_inlet: 85.2 → 自动显示为 "85.20°C"
|
||
|
||
// 压力类数据
|
||
pressure: 2.35 → 自动显示为 "2.35bar"
|
||
pressure: 0.25 → 自动显示为 "0.25MPa"
|
||
|
||
// 电流类数据
|
||
current: 15.2 → 自动显示为 "15.20A"
|
||
motor_current: 8.5 → 自动显示为 "8.50A"
|
||
|
||
// 重量类数据
|
||
weight: 1250.8 → 自动显示为 "1250.80kg"
|
||
weight: 15.2 → 自动显示为 "15.20kg"
|
||
|
||
// 转速类数据
|
||
speed: 1450 → 自动显示为 "1450rpm"
|
||
motor_speed: 2800 → 自动显示为 "2800rpm"
|
||
```
|
||
|
||
#### 自定义字段命名建议
|
||
|
||
如果您的设备有特殊的测量点,建议按以下方式命名:
|
||
|
||
```json
|
||
{
|
||
"设备功能_测量类型_编号": 数值,
|
||
"mixer_temperature_1": 45.2, // 混合器温度1
|
||
"conveyor_speed_main": 1200, // 主输送带转速
|
||
"tank_level_water": 85.5, // 水箱液位
|
||
"pump_pressure_inlet": 2.8, // 泵入口压力
|
||
"motor_current_drive": 12.3 // 驱动电机电流
|
||
}
|
||
```
|
||
|
||
## 4. LabVIEW端开发指南
|
||
|
||
### 4.1 前期准备工作
|
||
|
||
#### 4.1.1 设备信息注册
|
||
|
||
在开始LabVIEW开发之前,必须在MES系统中注册设备信息:
|
||
|
||
1. **登录MES系统管理后台**
|
||
- 访问车间设备管理页面
|
||
- 点击"新增设备"按钮
|
||
|
||
2. **填写设备基本信息**
|
||
```
|
||
设备编号:EQ001(必须唯一,建议使用规范编号)
|
||
设备名称:配料机1005(便于现场识别)
|
||
设备类型:选择"采集终端"或"控制设备"
|
||
工位选择:选择设备所在的具体工位
|
||
状态:选择"启用"
|
||
```
|
||
|
||
3. **获取设备ID**
|
||
- 保存后系统会自动分配设备ID(如:5)
|
||
- 记录此ID,LabVIEW程序中需要使用
|
||
|
||
#### 4.1.2 LabVIEW配置文件设置
|
||
|
||
在LabVIEW项目中创建配置文件(建议使用INI格式):
|
||
|
||
```ini
|
||
[数据库连接配置]
|
||
ServerIP=192.168.1.100
|
||
ServerPort=3306
|
||
DatabaseName=mes_database
|
||
Username=labview_user
|
||
Password=your_password
|
||
|
||
[设备映射配置]
|
||
; 格式:设备编号=设备ID
|
||
EQ001=5
|
||
EQ002=6
|
||
EQ003=7
|
||
|
||
[设备详细信息]
|
||
; EQ001的详细信息
|
||
EQ001_Name=配料机1005
|
||
EQ001_Station=配料工位1
|
||
EQ001_Type=mixer
|
||
|
||
; EQ002的详细信息
|
||
EQ002_Name=破碎机2001
|
||
EQ002_Station=破碎工位1
|
||
EQ002_Type=crusher
|
||
|
||
[采集参数配置]
|
||
; 数据采集间隔(秒)
|
||
SampleInterval=5
|
||
; 上传批次大小
|
||
BatchSize=10
|
||
; 连接超时时间(秒)
|
||
ConnectionTimeout=30
|
||
```
|
||
|
||
### 4.2 LabVIEW程序架构建议
|
||
|
||
#### 4.2.1 推荐的程序结构
|
||
|
||
```
|
||
LabVIEW项目结构:
|
||
├── Main.vi // 主程序
|
||
├── Config/
|
||
│ ├── LoadConfig.vi // 读取配置文件
|
||
│ └── equipment.ini // 设备配置文件
|
||
├── DataAcquisition/
|
||
│ ├── SensorRead.vi // 传感器数据读取
|
||
│ ├── DataFormat.vi // 数据格式化
|
||
│ └── StatusMonitor.vi // 状态监控
|
||
├── Database/
|
||
│ ├── DBConnection.vi // 数据库连接
|
||
│ ├── DataUpload.vi // 数据上传
|
||
│ └── ErrorHandler.vi // 错误处理
|
||
└── Utils/
|
||
├── TimeStamp.vi // 时间戳生成
|
||
├── JSONFormat.vi // JSON格式化
|
||
└── StatusMap.vi // 状态映射
|
||
```
|
||
|
||
#### 4.2.2 核心VI功能说明
|
||
|
||
**1. Main.vi(主程序)**
|
||
|
||
- 初始化系统配置
|
||
- 启动数据采集循环
|
||
- 错误处理和日志记录
|
||
- 程序状态监控
|
||
|
||
**2. SensorRead.vi(传感器读取)**
|
||
|
||
- 读取各种传感器数据
|
||
- 数据有效性验证
|
||
- 单位转换处理
|
||
|
||
**3. DataFormat.vi(数据格式化)**
|
||
|
||
- 将原始数据转换为JSON格式
|
||
- 字段命名标准化
|
||
- 数据类型转换
|
||
|
||
**4. DataUpload.vi(数据上传)**
|
||
|
||
- 连接MES数据库
|
||
- 执行SQL插入操作
|
||
- 上传结果确认
|
||
|
||
### 4.3 数据上传SQL模板
|
||
|
||
以下是标准的SQL插入语句模板,可以在LabVIEW中使用:
|
||
|
||
#### 4.3.1 完整字段插入模板
|
||
|
||
```sql
|
||
-- 标准模板(推荐)
|
||
INSERT INTO dm_equipment_status_record_workshop (
|
||
equipment_id,
|
||
point_id,
|
||
equipment_number,
|
||
equipment_name,
|
||
station_name,
|
||
equipment_status,
|
||
value,
|
||
record_time,
|
||
note,
|
||
create_by,
|
||
create_time
|
||
) VALUES (
|
||
?, -- 设备ID(从配置文件读取)
|
||
NULL, -- 点位ID(设备整体数据为NULL)
|
||
?, -- 设备编号
|
||
?, -- 设备名称
|
||
?, -- 工位名称
|
||
?, -- 设备状态(0/1/2,不要设置3)
|
||
?, -- JSON数据
|
||
NOW(), -- 记录时间(使用当前时间)
|
||
'自动采集', -- 备注
|
||
'labview_system', -- 创建者
|
||
NOW() -- 创建时间
|
||
);
|
||
```
|
||
|
||
#### 4.3.2 简化插入模板(必填字段)
|
||
|
||
```sql
|
||
-- 简化模板(仅必填字段)
|
||
INSERT INTO dm_equipment_status_record_workshop (
|
||
equipment_id,
|
||
equipment_status,
|
||
value,
|
||
record_time
|
||
) VALUES (?, ?, ?, NOW());
|
||
```
|
||
|
||
#### 4.3.3 实际数据示例
|
||
|
||
```sql
|
||
-- 配料机正常运行数据
|
||
INSERT INTO dm_equipment_status_record_workshop (
|
||
equipment_id,
|
||
point_id,
|
||
equipment_number,
|
||
equipment_name,
|
||
station_name,
|
||
equipment_status,
|
||
value,
|
||
record_time,
|
||
note,
|
||
create_by,
|
||
create_time
|
||
) VALUES (
|
||
5, -- equipment_id
|
||
NULL, -- point_id(设备整体数据)
|
||
'EQ001', -- equipment_number
|
||
'配料机1005', -- equipment_name
|
||
'配料工位1', -- station_name
|
||
0, -- equipment_status(运行中)
|
||
'{"temperature1":25.5,"pressure":2.35,"current":15.2,"weight":1250.8,"speed":1450}',
|
||
NOW(), -- record_time
|
||
'正常运行', -- note
|
||
'labview_system', -- create_by
|
||
NOW() -- create_time
|
||
);
|
||
|
||
-- 设备故障数据
|
||
INSERT INTO dm_equipment_status_record_workshop (
|
||
equipment_id,
|
||
equipment_number,
|
||
equipment_name,
|
||
station_name,
|
||
equipment_status,
|
||
value,
|
||
record_time,
|
||
note,
|
||
create_by,
|
||
create_time
|
||
) VALUES (
|
||
5, -- equipment_id
|
||
'EQ001', -- equipment_number
|
||
'配料机1005', -- equipment_name
|
||
'配料工位1', -- station_name
|
||
2, -- equipment_status(故障)
|
||
'{"temperature1":85.2,"alarm_status":1,"fault_code":"OVERHEAT"}',
|
||
NOW(), -- record_time
|
||
'高温故障', -- note
|
||
'labview_system', -- create_by
|
||
NOW() -- create_time
|
||
);
|
||
```
|
||
|
||
#### 4.3.4 LabVIEW中的参数化查询
|
||
|
||
```
|
||
LabVIEW Database Connectivity Toolkit 使用示例:
|
||
|
||
1. 连接字符串:
|
||
"Driver={MySQL ODBC 8.0 Driver};Server=192.168.1.100;Database=mes_database;Uid=labview_user;Pwd=your_password;"
|
||
|
||
2. SQL语句:
|
||
"INSERT INTO dm_equipment_status_record_workshop (equipment_id, equipment_status, value, record_time) VALUES (?, ?, ?, NOW())"
|
||
|
||
3. 参数数组:
|
||
- 参数1:5 (Integer)
|
||
- 参数2:0 (Integer)
|
||
- 参数3:JSON字符串 (String)
|
||
```
|
||
|
||
### 4.4 数据采集和上传策略
|
||
|
||
#### 4.4.1 采集频率建议
|
||
|
||
根据不同类型的数据特点,建议采用不同的采集频率:
|
||
|
||
| 数据类型 | 建议采集频率 | 上传策略 | 说明 |
|
||
|------------|---------|------|------------|
|
||
| **关键安全参数** | 1-2秒 | 实时上传 | 温度、压力等关键参数 |
|
||
| **设备运行参数** | 5-10秒 | 批量上传 | 电流、转速、功率等 |
|
||
| **生产统计数据** | 30秒-1分钟 | 定期上传 | 产量、能耗等统计数据 |
|
||
| **状态变更** | 状态变化时 | 立即上传 | 设备启停、故障报警 |
|
||
| **维护信息** | 1次/小时 | 定期上传 | 设备健康度、运行时长 |
|
||
|
||
#### 4.4.2 批量上传机制
|
||
|
||
为了提高效率,建议使用批量上传:
|
||
|
||
```sql
|
||
-- 批量插入模板(一次插入多条记录)
|
||
INSERT INTO dm_equipment_status_record_workshop
|
||
(equipment_id, equipment_number, equipment_name, station_name, equipment_status, value, record_time, note, create_by, create_time) VALUES
|
||
(5, 'EQ001', '配料机1005', '配料工位1', 0, '{"temperature1":25.5,"pressure":2.35}', NOW(), '正常', 'labview_system', NOW()),
|
||
(5, 'EQ001', '配料机1005', '配料工位1', 0, '{"temperature1":25.8,"pressure":2.32}', NOW(), '正常', 'labview_system', NOW()),
|
||
(5, 'EQ001', '配料机1005', '配料工位1', 0, '{"temperature1":26.1,"pressure":2.38}', NOW(), '正常', 'labview_system', NOW());
|
||
```
|
||
|
||
#### 4.4.3 键值对格式的实际应用示例
|
||
|
||
**示例1:传统PLC数据点**
|
||
|
||
```sql
|
||
INSERT INTO dm_equipment_status_record_workshop
|
||
(equipment_id, equipment_status, value, record_time) VALUES
|
||
(5, 0, '1:200,2:300,3:25.5,4:1450', NOW());
|
||
```
|
||
|
||
**前端显示效果**:
|
||
|
||
- 列名:`数据点1`, `数据点2`, `数据点3`, `数据点4`
|
||
- 值:`200.00`, `300.00`, `25.50`, `1450.00`
|
||
|
||
**示例2:带语义的键值对**
|
||
|
||
```sql
|
||
INSERT INTO dm_equipment_status_record_workshop
|
||
(equipment_id, equipment_status, value, record_time) VALUES
|
||
(5, 0, 'temp:45.2,press:2.8,motor_speed:1450,tank_level:85', NOW());
|
||
```
|
||
|
||
**前端显示效果**:
|
||
|
||
- 列名:`温度`, `压力`, `转速`, `液位`
|
||
- 值:`45.20°C`, `2.80bar`, `1450rpm`, `85.00%`
|
||
|
||
#### 4.4.4 键值对Key映射速查表
|
||
|
||
##### 基础物理参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|----------|--------------------------------------------|--------|---------|----------------------------------|
|
||
| **温度相关** | `temp`, `temperature1`, `temp_inlet` | 温度 | °C | `temp:25.5` → 温度: 25.50°C |
|
||
| **压力相关** | `press`, `pressure1`, `hydraulic_pressure` | 压力 | bar/MPa | `press:2.35` → 压力: 2.35bar |
|
||
| **电流相关** | `current`, `motor_current`, `amp` | 电流 | A | `current:15.2` → 电流: 15.20A |
|
||
| **电压相关** | `voltage`, `main_voltage`, `volt` | 电压 | V | `voltage:220` → 电压: 220.00V |
|
||
| **重量相关** | `weight`, `total_weight`, `load` | 重量 | kg | `weight:1250` → 重量: 1250.00kg |
|
||
| **转速相关** | `speed`, `motor_speed`, `rpm` | 转速 | rpm | `motor_speed:1450` → 转速: 1450rpm |
|
||
| **液位相关** | `level`, `tank_level`, `material_level` | 液位 | % | `tank_level:85` → 液位: 85.00% |
|
||
| **流量相关** | `flow`, `water_flow`, `flow_rate` | 流量 | L/min | `flow:12.5` → 流量: 12.50 |
|
||
|
||
##### 机械设备参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|-----------|------------------------------------|--------|------|------------------------------------|
|
||
| **振动相关** | `vibration`, `vib`, `oscillation` | 振动 | mm/s | `vibration:2.5` → 振动: 2.50mm/s |
|
||
| **位置相关** | `position`, `pos`, `displacement` | 位置 | mm | `position:125.5` → 位置: 125.50mm |
|
||
| **角度相关** | `angle`, `rotation`, `degree` | 角度 | ° | `angle:45.2` → 角度: 45.20° |
|
||
| **扭矩相关** | `torque`, `moment`, `twist` | 扭矩 | N·m | `torque:350.8` → 扭矩: 350.80N·m |
|
||
| **力相关** | `force`, `thrust`, `push_force` | 力 | N | `force:1250` → 力: 1250.00N |
|
||
| **加速度相关** | `acceleration`, `accel`, `g_force` | 加速度 | m/s² | `acceleration:9.8` → 加速度: 9.80m/s² |
|
||
|
||
##### 工艺过程参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|-----------|-----------------------------------------|--------|-------|-----------------------------------------|
|
||
| **浓度相关** | `concentration`, `conc`, `strength` | 浓度 | % | `concentration:15.5` → 浓度: 15.50% |
|
||
| **pH值相关** | `ph`, `ph_value`, `acidity` | pH值 | pH | `ph:7.2` → pH值: 7.20pH |
|
||
| **粘度相关** | `viscosity`, `visc`, `thickness` | 粘度 | cP | `viscosity:250.5` → 粘度: 250.50cP |
|
||
| **密度相关** | `density`, `specific_gravity`, `sg` | 密度 | kg/m³ | `density:1250.8` → 密度: 1250.80kg/m³ |
|
||
| **湿度相关** | `humidity`, `moisture`, `rh` | 湿度 | %RH | `humidity:65.2` → 湿度: 65.20%RH |
|
||
| **电导率相关** | `conductivity`, `conduct`, `resistance` | 电导率 | µS/cm | `conductivity:1250` → 电导率: 1250.00µS/cm |
|
||
|
||
##### 环境监测参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|----------|-------------------------------|--------|-------|------------------------------|
|
||
| **噪音相关** | `noise`, `sound`, `decibel` | 噪音 | dB | `noise:65.5` → 噪音: 65.50dB |
|
||
| **光照相关** | `light`, `illuminance`, `lux` | 光照 | lux | `light:500` → 光照: 500.00lux |
|
||
| **粉尘相关** | `dust`, `particle`, `pm25` | 粉尘 | µg/m³ | `dust:35.2` → 粉尘: 35.20µg/m³ |
|
||
| **气体相关** | `gas`, `co2`, `oxygen` | 气体 | ppm | `gas:400` → 气体: 400.00ppm |
|
||
|
||
##### 能耗与效率参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|----------|------------------------------------|--------|------|--------------------------------|
|
||
| **功率相关** | `power`, `watt`, `kw` | 功率 | kW | `power:15.5` → 功率: 15.50kW |
|
||
| **能耗相关** | `energy`, `kwh`, `electricity` | 能耗 | kWh | `energy:125.8` → 能耗: 125.80kWh |
|
||
| **效率相关** | `efficiency`, `eff`, `performance` | 效率 | % | `efficiency:85.2` → 效率: 85.20% |
|
||
| **频率相关** | `frequency`, `freq`, `hz` | 频率 | Hz | `frequency:50.0` → 频率: 50.00Hz |
|
||
| **产能相关** | `capacity`, `output`, `throughput` | 产能 | 件/h | `capacity:120` → 产能: 120.00件/h |
|
||
|
||
##### 生产统计参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|------------|-----------------------------------------|--------|-------|----------------------------------|
|
||
| **计数相关** | `count`, `quantity`, `pieces` | 计数 | 个 | `count:1250` → 计数: 1250个 |
|
||
| **速率相关** | `rate`, `speed_production`, `velocity` | 速率 | 件/min | `rate:25.5` → 速率: 25.50件/min |
|
||
| **周期时间相关** | `cycle_time`, `duration`, `period` | 周期时间 | s | `cycle_time:45.2` → 周期时间: 45.20s |
|
||
| **批次相关** | `batch`, `lot`, `group` | 批次 | 批 | `batch:12` → 批次: 12批 |
|
||
| **废料相关** | `waste`, `scrap`, `defect` | 废料 | kg | `waste:2.5` → 废料: 2.50kg |
|
||
| **良品率相关** | `yield`, `output_ratio`, `success_rate` | 良品率 | % | `yield:98.5` → 良品率: 98.50% |
|
||
|
||
##### 设备健康与维护参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|------------|------------------------------------------|--------|------|--------------------------------|
|
||
| **磨损相关** | `wear`, `abrasion`, `erosion` | 磨损 | % | `wear:15.2` → 磨损: 15.20% |
|
||
| **寿命相关** | `lifetime`, `lifespan`, `remaining_life` | 寿命 | h | `lifetime:8500` → 寿命: 8500.00h |
|
||
| **可靠性相关** | `mttf`, `mtbf`, `reliability` | 可靠性 | h | `mttf:2500` → 可靠性: 2500.00h |
|
||
| **故障代码相关** | `fault_code`, `error_code`, `diagnostic` | 故障代码 | - | `fault_code:E001` → 故障代码: E001 |
|
||
| **维护相关** | `maintenance`, `service`, `repair` | 维护 | - | `maintenance:1` → 维护: 1 |
|
||
|
||
##### 状态与报警参数
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|----------|--------------------------------|--------|------|-----------------------|
|
||
| **状态相关** | `status`, `state`, `condition` | 状态 | - | `status:1` → 状态: 1 |
|
||
| **报警相关** | `alarm`, `alert`, `warning` | 报警 | - | `alarm:0` → 报警: 0 |
|
||
| **启用相关** | `enable`, `disable`, `on_off` | 启用 | - | `enable:1` → 启用: 1 |
|
||
| **就绪相关** | `ready`, `busy`, `idle` | 就绪 | - | `ready:1` → 就绪: 1 |
|
||
| **急停相关** | `emergency`, `estop`, `safety` | 急停 | - | `emergency:0` → 急停: 0 |
|
||
|
||
##### 数字编号Key
|
||
|
||
| 您想监控的参数 | 建议使用的Key | 系统显示名称 | 推荐单位 | 示例 |
|
||
|-------------|-----------------------|--------|------|------------------------|
|
||
| **传统PLC点位** | `1`, `2`, `3`, `4`... | 数据点X | 自动推测 | `1:200` → 数据点1: 200.00 |
|
||
|
||
#### 4.4.3 错误处理和重试机制
|
||
|
||
```
|
||
错误处理流程:
|
||
1. 数据采集失败 → 记录错误日志 → 重试3次 → 跳过本次采集
|
||
2. 数据库连接失败 → 缓存数据到本地 → 定期重试连接
|
||
3. 上传失败 → 记录失败数据 → 重新上传(最多重试5次)
|
||
4. 网络中断 → 启用本地缓存模式 → 网络恢复后批量同步
|
||
```
|
||
|
||
## 5. MES系统端配置指南
|
||
|
||
### 5.1 设备基础信息配置
|
||
|
||
#### 5.1.1 设备信息录入流程
|
||
|
||
在MES系统中需要按以下步骤配置设备信息:
|
||
|
||
**第一步:添加设备**
|
||
|
||
1. 登录MES系统管理后台
|
||
2. 导航至:`设备管理` → `车间设备` → `新增`
|
||
3. 填写以下必要信息:
|
||
|
||
| 字段名称 | 填写内容 | 说明 | 示例 |
|
||
|----------|-------|------------------------------|-------------|
|
||
| **设备编号** | 唯一标识符 | 与LabVIEW配置一致 | `EQ001` |
|
||
| **设备名称** | 中文名称 | 便于现场识别 | `配料机1005` |
|
||
| **设备类型** | 选择类型 | 根据实际功能选择 | `采集终端` |
|
||
| **工位** | 下拉选择 | 设备实际位置 | `配料工位1` |
|
||
| **设备角色** | 选择角色 | collector(采集)/controller(控制) | `collector` |
|
||
| **状态** | 启用状态 | 必须选择"启用" | `启用` |
|
||
|
||
**第二步:配置点位信息(可选)**
|
||
如果需要按具体测量点分别管理数据:
|
||
|
||
1. 进入:`设备管理` → `点位管理` → `新增`
|
||
2. 关联刚创建的设备
|
||
3. 配置点位详细信息:
|
||
|
||
| 点位字段 | 说明 | 示例 |
|
||
|----------|----------|-----------------|
|
||
| **点位名称** | 测量点中文名称 | `温度传感器1` |
|
||
| **点位编码** | 英文标识(可选) | `temp_sensor_1` |
|
||
| **数值类型** | 选择数据类型 | `模拟量` |
|
||
| **单位** | 测量单位 | `°C` |
|
||
| **采集间隔** | 采集频率(秒) | `5` |
|
||
|
||
#### 5.1.2 权限配置
|
||
|
||
确保相关用户具有查看权限:
|
||
|
||
1. 进入:`系统管理` → `用户管理` → `角色管理`
|
||
2. 为相关角色分配以下权限:
|
||
- `equipment:workshop:list`(设备列表查看)
|
||
- `equipment:workshop:query`(设备信息查询)
|
||
- `equipment:workshop:record`(状态记录查看)
|
||
|
||
### 5.2 前端显示效果预览
|
||
|
||
#### 5.2.1 设备列表页面显示
|
||
|
||
配置完成后,车间设备主页将显示设备卡片:
|
||
|
||
```
|
||
┌─────────────────────────────────┐
|
||
│ 配料机1005 (EQ001) │
|
||
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
||
│ 工位: 配料工位1 │
|
||
│ 类型: 采集终端 │
|
||
│ 状态: [启用] 🟢 │
|
||
│ 模拟量: 5个 数字量: 3个 │
|
||
│ ─────────────────────────────── │
|
||
│ [点位管理] [状态记录] │
|
||
└─────────────────────────────────┘
|
||
```
|
||
|
||
#### 5.2.2 状态记录页面动态列显示
|
||
|
||
系统会根据上传的JSON数据自动生成动态列:
|
||
|
||
| 设备信息 | 点位信息 | 设备状态 | 温度1 | 温度2 | 压力 | 电流 | 重量 | 转速 | 记录时间 |
|
||
|-------------------------------------|------|--------|---------|---------|---------|--------|-----------|---------|---------------------|
|
||
| **配料机1005**<br/>EQ001<br/>工位: 配料工位1 | 设备整体 | 🟢 运行中 | 25.50°C | 28.30°C | 2.35bar | 15.20A | 1250.80kg | 1450rpm | 2025-01-15 14:30:25 |
|
||
| **配料机1005**<br/>EQ001<br/>工位: 配料工位1 | 设备整体 | 🟢 运行中 | 26.20°C | 29.10°C | 2.41bar | 15.80A | 1248.30kg | 1455rpm | 2025-01-15 14:30:35 |
|
||
|
||
**显示特点**:
|
||
|
||
- ✅ **设备信息**:自动显示设备名称、编号、工位
|
||
- ✅ **状态显示**:A=🟢运行中,B=🟠停机,C=🔴故障,D=🔵维修
|
||
- ✅ **动态列**:根据JSON字段自动生成列
|
||
- ✅ **智能单位**:自动识别并显示合适的单位
|
||
- ✅ **缺失数据**:某个设备没有的字段显示"-"
|
||
|
||
#### 5.2.3 数据详情弹窗
|
||
|
||
点击任意记录可查看详细信息:
|
||
|
||
```
|
||
┌─────────── 设备状态详情 ───────────┐
|
||
│ 设备: 配料机1005 (EQ001) │
|
||
│ 状态: 🟢 运行中 │
|
||
│ 时间: 2025-01-15 14:30:25 │
|
||
│ ─────────────────────────────── │
|
||
│ 📊 采集数据: │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ { │ │
|
||
│ │ "temperature1": 25.5, │ │
|
||
│ │ "temperature2": 28.3, │ │
|
||
│ │ "pressure": 2.35, │ │
|
||
│ │ "current": 15.2, │ │
|
||
│ │ "weight": 1250.8, │ │
|
||
│ │ "speed": 1450 │ │
|
||
│ │ } │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ │
|
||
│ [显示原始数据] [关闭] │
|
||
└─────────────────────────────────┘
|
||
```
|
||
|
||
## 6. 数据验证和错误处理指南
|
||
|
||
### 6.1 必须遵守的数据验证规则
|
||
|
||
#### 6.1.1 必填字段验证
|
||
|
||
上传数据前,请确保以下字段符合要求:
|
||
|
||
| 字段名 | 验证规则 | 错误后果 | 解决方法 |
|
||
|--------------------|-------------------|---------|---------------------------|
|
||
| `equipment_id` | 必须是有效的数字,且在设备表中存在 | 数据插入失败 | 检查设备是否已在MES中注册 |
|
||
| `equipment_status` | 只能是 A、B、C、D 之一 | 状态显示异常 | 使用标准状态代码 |
|
||
| `value` | 不能为空字符串或NULL | 无法生成动态列 | 至少传输一个有效数据 |
|
||
| `record_time` | 必须是有效的日期时间格式 | 时间显示错误 | 使用 YYYY-MM-DD HH:mm:ss 格式 |
|
||
|
||
#### 6.1.2 数据格式验证
|
||
|
||
**JSON格式检查**:
|
||
|
||
```python
|
||
# 示例验证代码(Python伪代码)
|
||
import json
|
||
|
||
def validate_json_data(value_string):
|
||
try:
|
||
# 尝试解析JSON
|
||
data = json.loads(value_string)
|
||
|
||
# 检查数据类型
|
||
if not isinstance(data, dict):
|
||
return False, "JSON必须是对象格式"
|
||
|
||
# 检查字段值
|
||
for key, val in data.items():
|
||
if not isinstance(val, (int, float, str, bool)):
|
||
return False, f"字段{key}的值类型不支持"
|
||
|
||
return True, "验证通过"
|
||
|
||
except json.JSONDecodeError as e:
|
||
return False, f"JSON格式错误: {e}"
|
||
```
|
||
|
||
**键值对格式检查**:
|
||
|
||
```python
|
||
def validate_keyvalue_data(value_string):
|
||
try:
|
||
# 检查格式:数字:数字,数字:数字
|
||
pairs = value_string.split(',')
|
||
for pair in pairs:
|
||
if ':' not in pair:
|
||
return False, "缺少冒号分隔符"
|
||
key, value = pair.split(':')
|
||
if not key.strip().isdigit():
|
||
return False, "键必须是数字"
|
||
float(value.strip()) # 检查值是否为数字
|
||
return True, "验证通过"
|
||
except ValueError as e:
|
||
return False, f"数值格式错误: {e}"
|
||
```
|
||
|
||
### 6.2 完整的错误处理体系
|
||
|
||
#### 6.2.1 创建错误记录表
|
||
|
||
为了更好地监控和调试,建议创建专门的错误记录表:
|
||
|
||
```sql
|
||
-- 创建错误记录表
|
||
CREATE TABLE labview_upload_errors (
|
||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||
equipment_number VARCHAR(64) COMMENT '设备编号',
|
||
equipment_name VARCHAR(128) COMMENT '设备名称',
|
||
error_type VARCHAR(32) COMMENT '错误类型:VALIDATION/CONNECTION/FORMAT/OTHER',
|
||
error_message TEXT COMMENT '详细错误信息',
|
||
original_data TEXT COMMENT '原始数据(用于问题排查)',
|
||
error_time DATETIME DEFAULT NOW() COMMENT '发生时间',
|
||
retry_count INT DEFAULT 0 COMMENT '重试次数',
|
||
is_resolved TINYINT(1) DEFAULT 0 COMMENT '是否已解决',
|
||
resolved_time DATETIME COMMENT '解决时间',
|
||
INDEX idx_equipment_error_time (equipment_number, error_time),
|
||
INDEX idx_error_type (error_type)
|
||
) COMMENT='LabVIEW上传错误记录表';
|
||
```
|
||
|
||
#### 6.2.2 常见错误类型和解决方案
|
||
|
||
| 错误类型 | 错误信息示例 | 可能原因 | 解决方案 |
|
||
|--------------|----------------------------|--------------|------------------|
|
||
| **数据库连接** | `Connection refused` | 网络问题、服务器停机 | 检查网络连接,确认数据库服务状态 |
|
||
| **权限错误** | `Access denied for user` | 数据库用户权限不足 | 联系管理员分配正确的数据库权限 |
|
||
| **字段不存在** | `Unknown column 'xxx'` | 数据库表结构与程序不匹配 | 更新数据库表结构或修改程序 |
|
||
| **数据过长** | `Data too long for column` | 字符串超过字段长度限制 | 截断数据或扩大字段长度 |
|
||
| **JSON格式错误** | `Invalid JSON format` | JSON语法错误 | 检查JSON格式,确保语法正确 |
|
||
| **设备不存在** | `Equipment ID not found` | 设备未在MES中注册 | 先在MES中添加设备信息 |
|
||
| **状态码无效** | `Invalid status code` | 使用了非标准状态码 | 仅使用A、B、C、D状态码 |
|
||
|
||
#### 6.2.3 LabVIEW端错误处理代码示例
|
||
|
||
```
|
||
LabVIEW错误处理流程:
|
||
┌─────────────────┐
|
||
│ 数据采集 │
|
||
└─────┬───────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 数据验证 │ ── 验证失败 ──→ ┌─────────────────┐
|
||
└─────┬───────────┘ │ 记录错误日志 │
|
||
│ └─────────────────┘
|
||
▼ 验证通过
|
||
┌─────────────────┐
|
||
│ 数据库连接 │ ── 连接失败 ──→ ┌─────────────────┐
|
||
└─────┬───────────┘ │ 启用缓存模式 │
|
||
│ └─────────────────┘
|
||
▼ 连接成功
|
||
┌─────────────────┐
|
||
│ 执行INSERT │ ── 执行失败 ──→ ┌─────────────────┐
|
||
└─────┬───────────┘ │ 重试机制 │
|
||
│ └─────────────────┘
|
||
▼ 成功
|
||
┌─────────────────┐
|
||
│ 确认上传 │
|
||
└─────────────────┘
|
||
```
|
||
|
||
## 7. 完整测试用例和示例数据
|
||
|
||
### 7.1 标准测试用例
|
||
|
||
#### 7.1.1 配料机完整测试数据
|
||
|
||
```sql
|
||
-- 测试用例1:标准JSON格式数据
|
||
INSERT INTO dm_equipment_status_record_workshop VALUES
|
||
(NULL, 5, NULL, 'EQ001', '配料机1005', '配料工位1', 'A',
|
||
'{"temperature1":25.5,"temperature2":28.3,"pressure":2.35,"current":15.2,"weight":1250.8,"speed":1450,"flow_rate":12.5,"alarm_status":0}',
|
||
'2025-01-15 14:30:25', '正常运行', 'labview_system', NOW(), NULL, NULL),
|
||
|
||
-- 测试用例2:设备状态变化数据
|
||
(NULL, 5, NULL, 'EQ001', '配料机1005', '配料工位1', 'C',
|
||
'{"temperature1":85.2,"temperature2":87.3,"pressure":0.15,"current":0,"weight":1248.3,"speed":0,"alarm_status":1,"fault_code":"OVERHEAT"}',
|
||
'2025-01-15 14:32:15', '高温故障', 'labview_system', NOW(), NULL, NULL),
|
||
|
||
-- 测试用例3:维修状态数据
|
||
(NULL, 5, NULL, 'EQ001', '配料机1005', '配料工位1', 'D',
|
||
'{"maintenance_type":"preventive","technician":"张工","start_time":"2025-01-15 15:00:00","estimated_duration":120}',
|
||
'2025-01-15 15:00:00', '计划维护', 'maintenance_system', NOW(), NULL, NULL);
|
||
```
|
||
|
||
#### 7.1.2 简化格式测试数据
|
||
|
||
```sql
|
||
-- 测试用例4:简化键值对格式
|
||
INSERT INTO dm_equipment_status_record_workshop VALUES
|
||
(NULL, 6, NULL, 'EQ002', '破碎机2001', '破碎工位1', 'A',
|
||
'1:200,2:300,3:400,4:5,5:1450,6:15.2',
|
||
'2025-01-15 14:31:00', '数据点采集', 'labview_system', NOW(), NULL, NULL),
|
||
|
||
-- 测试用例5:嵌套JSON格式
|
||
(NULL, 7, NULL, 'EQ003', '包装机3001', '包装工位1', 'A',
|
||
'{"sensors":{"temp1":45.2,"temp2":47.8,"humidity":65},"motors":{"motor1_speed":1200,"motor1_current":8.5},"counters":{"total_packages":1250,"current_batch":125}}',
|
||
'2025-01-15 14:32:00', '正常生产', 'labview_system', NOW(), NULL, NULL);
|
||
```
|
||
|
||
### 7.2 边界和异常测试用例
|
||
|
||
```sql
|
||
-- 测试用例6:空数据处理
|
||
INSERT INTO dm_equipment_status_record_workshop VALUES
|
||
(NULL, 5, NULL, 'EQ001', '配料机1005', '配料工位1', 'B',
|
||
'{"status":"idle","message":"waiting_for_material"}',
|
||
'2025-01-15 14:35:00', '等待原料', 'labview_system', NOW(), NULL, NULL),
|
||
|
||
-- 测试用例7:大数值测试
|
||
INSERT INTO dm_equipment_status_record_workshop VALUES
|
||
(NULL, 5, NULL, 'EQ001', '配料机1005', '配料工位1', 'A',
|
||
'{"total_production":999999.99,"energy_consumption":123456.78,"operating_hours":87654.32}',
|
||
'2025-01-15 14:36:00', '累计数据', 'labview_system', NOW(), NULL, NULL);
|
||
```
|
||
|
||
## 8. LabVIEW键值对改写完整指导
|
||
|
||
### 8.1 🔄 键值对改写原则
|
||
|
||
LabVIEW开发人员应该根据以下原则来命名数据字段,确保前端能正确识别并显示为合适的中文名称:
|
||
|
||
#### 8.1.1 命名原则优先级
|
||
|
||
1. **工厂工人友好性**:优先考虑现场工人能否理解
|
||
2. **系统智能识别**:使用系统预定义的关键词
|
||
3. **描述性清晰**:字段名要能明确表达测量内容
|
||
4. **一致性标准**:同类设备使用相同的命名规范
|
||
|
||
#### 8.1.2 推荐的命名格式
|
||
|
||
```
|
||
格式:[设备部件]_[测量类型]_[编号/位置]
|
||
|
||
优秀示例:
|
||
- motor_temp_bearing1 → 电机轴承1温度
|
||
- pump_pressure_outlet → 泵出口压力
|
||
- tank_level_water → 水罐液位
|
||
- conveyor_speed_main → 主输送带转速
|
||
- mixer_current_drive → 混合器驱动电流
|
||
```
|
||
|
||
### 8.2 🔧 LabVIEW实际改写案例
|
||
|
||
#### 8.2.1 改写前后对比
|
||
|
||
| 改写前(不好的命名) | 改写后(推荐命名) | 前端显示效果 | 说明 |
|
||
|--------------------|-----------------------------|--------------------|------------|
|
||
| `AI_001` | `motor_temp` | **电机温度** | 使用语义化命名 |
|
||
| `DO_002` | `pump_status` | **泵状态** | 明确设备和参数类型 |
|
||
| `temp1`, `temp2` | `inlet_temp`, `outlet_temp` | **进口温度**, **出口温度** | 区分不同位置的温度 |
|
||
| `pressure` | `hydraulic_pressure` | **液压压力** | 明确压力类型 |
|
||
| `speed` | `motor_speed`, `fan_speed` | **电机转速**, **风扇转速** | 区分不同设备的转速 |
|
||
| `value1`, `value2` | `flow_rate`, `tank_level` | **流量**, **罐液位** | 使用具体的测量参数名 |
|
||
|
||
#### 8.2.2 完整的设备改写示例
|
||
|
||
**配料机设备改写示例:**
|
||
|
||
```json
|
||
// 改写前:传统PLC风格命名
|
||
{
|
||
"AI001": 45.2,
|
||
"AI002": 48.5,
|
||
"AI003": 2.35,
|
||
"AI004": 15.2,
|
||
"DI001": 1,
|
||
"DI002": 0
|
||
}
|
||
|
||
// 改写后:智能识别命名
|
||
{
|
||
"motor_temp": 45.2,
|
||
"bearing_temp": 48.5,
|
||
"hydraulic_pressure": 2.35,
|
||
"motor_current": 15.2,
|
||
"pump_status": 1,
|
||
"emergency_stop": 0
|
||
}
|
||
```
|
||
|
||
**前端显示效果对比:**
|
||
|
||
| 改写前显示 | 改写后显示 |
|
||
|--------------|-------------------|
|
||
| AI001: 45.20 | **电机温度**: 45.20°C |
|
||
| AI002: 48.50 | **轴承温度**: 48.50°C |
|
||
| AI003: 2.35 | **液压压力**: 2.35bar |
|
||
| AI004: 15.20 | **电机电流**: 15.20A |
|
||
| DI001: 1 | **泵状态**: 1 |
|
||
| DI002: 0 | **急停**: 0 |
|
||
|
||
### 8.3 🏭 按设备类型的改写指导
|
||
|
||
#### 8.3.1 配料机设备
|
||
|
||
```json
|
||
{
|
||
"motor_temp": 65.5, // 电机温度
|
||
"bearing1_temp": 55.2, // 轴承1温度
|
||
"bearing2_temp": 58.3, // 轴承2温度
|
||
"gearbox_temp": 48.5, // 减速器温度
|
||
"hydraulic_pressure": 2.35, // 液压压力
|
||
"motor_current": 15.2, // 电机电流
|
||
"motor_voltage": 220, // 电机电压
|
||
"mixer_speed": 1450, // 搅拌转速
|
||
"material_weight": 1250.8, // 物料重量
|
||
"tank_level": 85.2, // 料罐液位
|
||
"conveyor_speed": 120, // 输送带转速
|
||
"vibration_alarm": 0, // 振动报警
|
||
"emergency_stop": 0 // 急停状态
|
||
}
|
||
```
|
||
|
||
#### 8.3.2 泵类设备
|
||
|
||
```json
|
||
{
|
||
"pump_pressure_inlet": 1.8, // 泵进口压力
|
||
"pump_pressure_outlet": 4.2, // 泵出口压力
|
||
"motor_temp": 62.3, // 电机温度
|
||
"pump_temp": 45.8, // 泵体温度
|
||
"motor_current": 18.5, // 电机电流
|
||
"pump_speed": 2850, // 泵转速
|
||
"flow_rate": 25.6, // 流量
|
||
"vibration": 2.1, // 振动值
|
||
"seal_pressure": 0.5, // 密封压力
|
||
"cooling_temp": 35.2, // 冷却水温度
|
||
"run_status": 1, // 运行状态
|
||
"fault_alarm": 0 // 故障报警
|
||
}
|
||
```
|
||
|
||
#### 8.3.3 风机设备
|
||
|
||
```json
|
||
{
|
||
"motor_temp": 58.7, // 电机温度
|
||
"bearing_temp_front": 52.3, // 前轴承温度
|
||
"bearing_temp_rear": 54.1, // 后轴承温度
|
||
"motor_current": 22.8, // 电机电流
|
||
"fan_speed": 1425, // 风机转速
|
||
"air_pressure": 1.2, // 风压
|
||
"air_flow": 850, // 风量
|
||
"vibration_x": 1.8, // X轴振动
|
||
"vibration_y": 2.1, // Y轴振动
|
||
"noise_level": 68.5, // 噪音水平
|
||
"filter_pressure": 0.05, // 过滤器压差
|
||
"damper_position": 75 // 风门开度
|
||
}
|
||
```
|
||
|
||
### 8.4 📝 LabVIEW代码实现指导
|
||
|
||
#### 8.4.1 JSON字符串构建
|
||
|
||
```labview
|
||
// LabVIEW中构建JSON字符串的推荐方式
|
||
String concatenation method:
|
||
|
||
motor_temp_str = Format Into String("%.2f", motor_temp_value)
|
||
bearing_temp_str = Format Into String("%.2f", bearing_temp_value)
|
||
pressure_str = Format Into String("%.2f", pressure_value)
|
||
|
||
json_string = "{" +
|
||
"\"motor_temp\":" + motor_temp_str + "," +
|
||
"\"bearing_temp\":" + bearing_temp_str + "," +
|
||
"\"hydraulic_pressure\":" + pressure_str + "," +
|
||
"\"motor_current\":" + current_str + "," +
|
||
"\"pump_status\":" + status_str +
|
||
"}"
|
||
```
|
||
|
||
#### 8.4.2 数据库插入代码模板
|
||
|
||
```sql
|
||
-- LabVIEW数据库插入的标准SQL模板
|
||
INSERT INTO dm_equipment_status_record_workshop (
|
||
equipment_id,
|
||
equipment_number,
|
||
equipment_name,
|
||
station_name,
|
||
equipment_status,
|
||
value,
|
||
record_time,
|
||
note,
|
||
create_by,
|
||
create_time
|
||
) VALUES (
|
||
5, -- 设备ID(从MES系统获取)
|
||
'EQ001', -- 设备编号
|
||
'配料机1005', -- 设备名称
|
||
'配料工位1', -- 工位名称
|
||
0, -- 设备状态(0-运行中)
|
||
?, -- JSON数据(参数化查询)
|
||
NOW(), -- 记录时间
|
||
'自动采集', -- 备注
|
||
'labview_system', -- 创建者
|
||
NOW() -- 创建时间
|
||
);
|
||
```
|
||
|
||
#### 8.4.3 键值对格式实现
|
||
|
||
```labview
|
||
// 如果使用简单的键值对格式
|
||
key_value_string = "motor_temp:" + motor_temp_str + "," +
|
||
"bearing_temp:" + bearing_temp_str + "," +
|
||
"hydraulic_pressure:" + pressure_str + "," +
|
||
"motor_current:" + current_str + "," +
|
||
"pump_status:" + status_str
|
||
|
||
// 前端显示效果:
|
||
// 电机温度: 65.50°C
|
||
// 轴承温度: 55.20°C
|
||
// 液压压力: 2.35bar
|
||
// 电机电流: 15.20A
|
||
// 泵状态: 1
|
||
```
|
||
|
||
## 9. 键值对Key映射规则详细说明
|
||
|
||
### 9.1 🔧 智能识别关键词
|
||
|
||
当key中包含以下关键词时,系统会自动识别并显示对应的中文名称:
|
||
|
||
#### 9.1.1 基础物理参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|---------------------------------------------------------|-------|--------|-------|--------------------------------------|
|
||
| `temp`, `temperature`, `temperature1` | 温度 | **温度** | °C | `temp:25.5` → **温度: 25.50°C** |
|
||
| `press`, `pressure`, `pressure1`, `hydraulic_pressure` | 压力 | **压力** | bar | `press:2.35` → **压力: 2.35bar** |
|
||
| `current`, `motor_current`, `amp`, `amperage` | 电流 | **电流** | A | `current:15.2` → **电流: 15.20A** |
|
||
| `voltage`, `main_voltage`, `volt`, `v_supply` | 电压 | **电压** | V | `voltage:220` → **电压: 220.00V** |
|
||
| `weight`, `total_weight`, `mass`, `load` | 重量 | **重量** | kg | `weight:1250` → **重量: 1250.00kg** |
|
||
| `speed`, `motor_speed`, `rpm`, `revolution` | 转速 | **转速** | rpm | `motor_speed:1450` → **转速: 1450rpm** |
|
||
| `level`, `tank_level`, `liquid_level`, `material_level` | 液位 | **液位** | % | `tank_level:85` → **液位: 85.00%** |
|
||
| `flow`, `water_flow`, `flow_rate`, `flowmeter` | 流量 | **流量** | L/min | `flow:12.5` → **流量: 12.50** |
|
||
|
||
#### 9.1.2 机械设备参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|-----------------------------------------------|-------|---------|------|----------------------------------------|
|
||
| `vibration`, `vib`, `oscillation`, `shake` | 振动 | **振动** | mm/s | `vibration:2.5` → **振动: 2.50mm/s** |
|
||
| `position`, `pos`, `displacement`, `distance` | 位置 | **位置** | mm | `position:125.5` → **位置: 125.50mm** |
|
||
| `angle`, `rotation`, `degree`, `angular` | 角度 | **角度** | ° | `angle:45.2` → **角度: 45.20°** |
|
||
| `torque`, `moment`, `twist`, `rotation_force` | 扭矩 | **扭矩** | N·m | `torque:350.8` → **扭矩: 350.80N·m** |
|
||
| `force`, `thrust`, `push_force`, `pull_force` | 力 | **力** | N | `force:1250` → **力: 1250.00N** |
|
||
| `acceleration`, `accel`, `g_force`, `shock` | 加速度 | **加速度** | m/s² | `acceleration:9.8` → **加速度: 9.80m/s²** |
|
||
|
||
#### 9.1.3 工艺过程参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|------------------------------------------------------|-------|---------|-------|---------------------------------------------|
|
||
| `concentration`, `conc`, `density_ratio`, `strength` | 浓度 | **浓度** | % | `concentration:15.5` → **浓度: 15.50%** |
|
||
| `ph`, `ph_value`, `acidity`, `alkalinity` | pH值 | **pH值** | pH | `ph:7.2` → **pH值: 7.20pH** |
|
||
| `viscosity`, `visc`, `thickness`, `consistency` | 粘度 | **粘度** | cP | `viscosity:250.5` → **粘度: 250.50cP** |
|
||
| `density`, `specific_gravity`, `sg`, `bulk_density` | 密度 | **密度** | kg/m³ | `density:1250.8` → **密度: 1250.80kg/m³** |
|
||
| `humidity`, `moisture`, `water_content`, `rh` | 湿度 | **湿度** | %RH | `humidity:65.2` → **湿度: 65.20%RH** |
|
||
| `conductivity`, `conduct`, `resistance`, `impedance` | 电导率 | **电导率** | µS/cm | `conductivity:1250` → **电导率: 1250.00µS/cm** |
|
||
|
||
#### 9.1.4 环境监测参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|--------------------------------------------------|-------|--------|-------|------------------------------------|
|
||
| `noise`, `sound`, `decibel`, `acoustic` | 噪音 | **噪音** | dB | `noise:65.5` → **噪音: 65.50dB** |
|
||
| `light`, `illuminance`, `brightness`, `lux` | 光照 | **光照** | lux | `light:500` → **光照: 500.00lux** |
|
||
| `dust`, `particle`, `pm25`, `pollution` | 粉尘 | **粉尘** | µg/m³ | `dust:35.2` → **粉尘: 35.20µg/m³** |
|
||
| `gas`, `co2`, `oxygen`, `o2`, `emission` | 气体 | **气体** | ppm | `gas:400` → **气体: 400.00ppm** |
|
||
| `radiation`, `radioactivity`, `dose`, `exposure` | 辐射 | **辐射** | mSv | `radiation:0.05` → **辐射: 0.05mSv** |
|
||
|
||
#### 9.1.5 能耗与效率参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|-------------------------------------------------------|-------|--------|------|------------------------------------|
|
||
| `power`, `watt`, `consumption`, `kw` | 功率 | **功率** | kW | `power:15.5` → **功率: 15.50kW** |
|
||
| `energy`, `kwh`, `electricity`, `consumption_total` | 能耗 | **能耗** | kWh | `energy:125.8` → **能耗: 125.80kWh** |
|
||
| `efficiency`, `eff`, `performance`, `utilization` | 效率 | **效率** | % | `efficiency:85.2` → **效率: 85.20%** |
|
||
| `frequency`, `freq`, `hz`, `cycles` | 频率 | **频率** | Hz | `frequency:50.0` → **频率: 50.00Hz** |
|
||
| `capacity`, `output`, `throughput`, `production_rate` | 产能 | **产能** | 件/h | `capacity:120` → **产能: 120.00件/h** |
|
||
|
||
#### 9.1.6 生产统计参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|------------------------------------------------------|-------|----------|-------|--------------------------------------|
|
||
| `count`, `quantity`, `pieces`, `total_count` | 计数 | **计数** | 个 | `count:1250` → **计数: 1250个** |
|
||
| `rate`, `speed_production`, `velocity`, `pace` | 速率 | **速率** | 件/min | `rate:25.5` → **速率: 25.50件/min** |
|
||
| `cycle_time`, `duration`, `period`, `interval` | 周期时间 | **周期时间** | s | `cycle_time:45.2` → **周期时间: 45.20s** |
|
||
| `batch`, `lot`, `group`, `batch_size` | 批次 | **批次** | 批 | `batch:12` → **批次: 12批** |
|
||
| `waste`, `scrap`, `defect`, `reject` | 废料 | **废料** | kg | `waste:2.5` → **废料: 2.50kg** |
|
||
| `yield`, `output_ratio`, `success_rate`, `pass_rate` | 良品率 | **良品率** | % | `yield:98.5` → **良品率: 98.50%** |
|
||
|
||
#### 9.1.7 设备健康与维护参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|-----------------------------------------------------|-------|----------|------|------------------------------------|
|
||
| `wear`, `abrasion`, `erosion`, `degradation` | 磨损 | **磨损** | % | `wear:15.2` → **磨损: 15.20%** |
|
||
| `lifetime`, `lifespan`, `remaining_life`, `hours` | 寿命 | **寿命** | h | `lifetime:8500` → **寿命: 8500.00h** |
|
||
| `mttf`, `mtbf`, `reliability`, `uptime` | 可靠性 | **可靠性** | h | `mttf:2500` → **可靠性: 2500.00h** |
|
||
| `fault_code`, `error_code`, `diagnostic`, `trouble` | 故障代码 | **故障代码** | - | `fault_code:E001` → **故障代码: E001** |
|
||
| `maintenance`, `service`, `repair`, `check` | 维护 | **维护** | - | `maintenance:1` → **维护: 1** |
|
||
|
||
#### 9.1.8 状态与报警参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|---------------------------------------------|-------|--------|------|---------------------------|
|
||
| `status`, `state`, `condition`, `mode` | 状态 | **状态** | - | `status:1` → **状态: 1** |
|
||
| `alarm`, `alert`, `warning`, `fault` | 报警 | **报警** | - | `alarm:0` → **报警: 0** |
|
||
| `enable`, `disable`, `on_off`, `switch` | 启用 | **启用** | - | `enable:1` → **启用: 1** |
|
||
| `ready`, `busy`, `idle`, `working` | 就绪 | **就绪** | - | `ready:1` → **就绪: 1** |
|
||
| `emergency`, `estop`, `safety`, `interlock` | 急停 | **急停** | - | `emergency:0` → **急停: 0** |
|
||
|
||
### 9.2 🔢 数字Key处理
|
||
|
||
| 输入Key | 前端显示列名 | 示例 |
|
||
|-------|------------|--------------------------------|
|
||
| `1` | **数据点1** | `1:200` → **数据点1: 200.00** |
|
||
| `2` | **数据点2** | `2:300` → **数据点2: 300.00** |
|
||
| `100` | **数据点100** | `100:45.5` → **数据点100: 45.50** |
|
||
|
||
### 9.3 📝 其他Key处理
|
||
|
||
如果key不包含任何识别关键词,系统会直接显示key值作为列名:
|
||
|
||
| 输入Key | 前端显示列名 | 示例 |
|
||
|---------------|-----------------|---------------------------------------------|
|
||
| `xyz` | **xyz** | `xyz:123` → **xyz: 123.00** |
|
||
| `custom_data` | **custom_data** | `custom_data:456` → **custom_data: 456.00** |
|
||
|
||
### 9.4 💡 最佳实践建议
|
||
|
||
**推荐命名格式**:`设备功能_测量类型_编号`
|
||
|
||
```
|
||
优秀示例:
|
||
- mixer_temperature_1 → 温度: XX.XX°C
|
||
- pump_pressure_inlet → 压力: XX.XXbar
|
||
- motor_current_drive → 电流: XX.XXA
|
||
- tank_level_water → 液位: XX.XX%
|
||
- conveyor_speed_main → 转速: XX.XXrpm
|
||
```
|
||
|
||
**避免的命名方式**:
|
||
|
||
- 纯数字(除非是传统PLC点位):`123:value`
|
||
- 无意义缩写:`abc:value`,`xyz:value`
|
||
- 中文key:系统支持但不推荐
|
||
|
||
### 9.5 🏭 行业专用关键词扩展
|
||
|
||
#### 9.5.1 化工行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|----------------------------------------------------|-------|----------|------|------------------------------------------|
|
||
| `catalyst`, `cat_activity`, `catalyst_temp` | 催化剂 | **催化剂** | % | `catalyst:95.2` → **催化剂: 95.20%** |
|
||
| `reaction_temp`, `reactor_temp`, `furnace_temp` | 反应温度 | **反应温度** | °C | `reaction_temp:450` → **反应温度: 450.00°C** |
|
||
| `distillation`, `column_temp`, `reflux_ratio` | 蒸馏 | **蒸馏** | - | `reflux_ratio:3.5` → **蒸馏: 3.50** |
|
||
| `crystallization`, `crystal_size`, `purity` | 结晶 | **结晶** | % | `purity:99.8` → **结晶: 99.80%** |
|
||
| `polymerization`, `molecular_weight`, `conversion` | 聚合 | **聚合** | % | `conversion:85.5` → **聚合: 85.50%** |
|
||
|
||
#### 9.5.2 食品行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|-------------------------------------------------|-------|----------|------|----------------------------------------|
|
||
| `baking_temp`, `oven_temp`, `cooking_temp` | 烘烤温度 | **烘烤温度** | °C | `baking_temp:180` → **烘烤温度: 180.00°C** |
|
||
| `fermentation`, `yeast_activity`, `ph_ferment` | 发酵 | **发酵** | pH | `ph_ferment:4.2` → **发酵: 4.20pH** |
|
||
| `sterilization`, `pasteur_temp`, `sterile_time` | 杀菌 | **杀菌** | °C | `pasteur_temp:72` → **杀菌: 72.00°C** |
|
||
| `packaging`, `seal_pressure`, `vacuum_level` | 包装 | **包装** | kPa | `vacuum_level:85` → **包装: 85.00kPa** |
|
||
| `shelf_life`, `expiry`, `freshness` | 保质期 | **保质期** | 天 | `shelf_life:30` → **保质期: 30.00天** |
|
||
|
||
#### 9.5.3 纺织行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|----------------------------------------------|-------|----------|-------|-----------------------------------------|
|
||
| `tension`, `yarn_tension`, `fabric_tension` | 张力 | **张力** | N | `yarn_tension:15.5` → **张力: 15.50N** |
|
||
| `weaving`, `warp_speed`, `weft_speed` | 织造 | **织造** | m/min | `warp_speed:120` → **织造: 120.00m/min** |
|
||
| `dyeing`, `dye_concentration`, `color_depth` | 染色 | **染色** | % | `dye_concentration:2.5` → **染色: 2.50%** |
|
||
| `finishing`, `resin_content`, `shrinkage` | 整理 | **整理** | % | `shrinkage:3.2` → **整理: 3.20%** |
|
||
| `quality_grade`, `fabric_defect`, `gsm` | 质量等级 | **质量等级** | g/m² | `gsm:180` → **质量等级: 180.00g/m²** |
|
||
|
||
#### 9.5.4 制药行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|--------------------------------------------------|-------|----------|--------|----------------------------------------|
|
||
| `api_content`, `active_ingredient`, `assay` | 活性成分 | **活性成分** | % | `api_content:98.5` → **活性成分: 98.50%** |
|
||
| `tablet_weight`, `capsule_weight`, `uniformity` | 片重 | **片重** | mg | `tablet_weight:250` → **片重: 250.00mg** |
|
||
| `dissolution`, `release_rate`, `bioavailability` | 溶出度 | **溶出度** | % | `dissolution:95.2` → **溶出度: 95.20%** |
|
||
| `sterility`, `bioburden`, `endotoxin` | 无菌 | **无菌** | CFU/ml | `bioburden:10` → **无菌: 10.00CFU/ml** |
|
||
| `stability`, `degradation`, `shelf_study` | 稳定性 | **稳定性** | % | `degradation:0.5` → **稳定性: 0.50%** |
|
||
|
||
#### 9.5.5 金属加工行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|---------------------------------------------------|-------|----------|-------|---------------------------------------------|
|
||
| `cutting_speed`, `spindle_speed`, `feed_rate` | 切削速度 | **切削速度** | m/min | `cutting_speed:150` → **切削速度: 150.00m/min** |
|
||
| `tool_wear`, `cutting_force`, `surface_finish` | 刀具磨损 | **刀具磨损** | µm | `tool_wear:50.5` → **刀具磨损: 50.50µm** |
|
||
| `hardness`, `tensile_strength`, `yield_strength` | 硬度 | **硬度** | HRC | `hardness:45` → **硬度: 45.00HRC** |
|
||
| `heat_treatment`, `quench_temp`, `tempering_temp` | 热处理 | **热处理** | °C | `quench_temp:850` → **热处理: 850.00°C** |
|
||
| `coating`, `plating_thickness`, `corrosion_rate` | 涂层 | **涂层** | µm | `plating_thickness:25` → **涂层: 25.00µm** |
|
||
|
||
#### 9.5.6 塑料行业专用参数
|
||
|
||
| 输入Key | 系统识别为 | 前端显示列名 | 自动单位 | 示例 |
|
||
|--------------------------------------------------------|-------|----------|---------|----------------------------------------------|
|
||
| `melt_temp`, `barrel_temp`, `nozzle_temp` | 熔融温度 | **熔融温度** | °C | `melt_temp:230` → **熔融温度: 230.00°C** |
|
||
| `injection_pressure`, `hold_pressure`, `back_pressure` | 注射压力 | **注射压力** | MPa | `injection_pressure:80` → **注射压力: 80.00MPa** |
|
||
| `mold_temp`, `cooling_time`, `cycle_time_injection` | 模具温度 | **模具温度** | °C | `mold_temp:60` → **模具温度: 60.00°C** |
|
||
| `shrinkage_rate`, `warpage`, `flash` | 收缩率 | **收缩率** | % | `shrinkage_rate:1.2` → **收缩率: 1.20%** |
|
||
| `mfi`, `melt_flow_index`, `viscosity_melt` | 熔融指数 | **熔融指数** | g/10min | `mfi:25` → **熔融指数: 25.00g/10min** |
|
||
|
||
### 9.6 🔧 复合关键词智能识别
|
||
|
||
系统支持复合关键词识别,可以同时匹配多个含义:
|
||
|
||
| 输入Key | 识别关键词 | 前端显示列名 | 自动单位 | 示例 |
|
||
|------------------------|--------------------------|-------------|-------|---------------------------------------------------|
|
||
| `motor_temp_bearing` | motor + temp + bearing | **电机轴承温度** | °C | `motor_temp_bearing:65.5` → **电机轴承温度: 65.50°C** |
|
||
| `pump_pressure_outlet` | pump + pressure + outlet | **泵出口压力** | bar | `pump_pressure_outlet:2.8` → **泵出口压力: 2.80bar** |
|
||
| `tank_level_chemical` | tank + level + chemical | **化工罐液位** | % | `tank_level_chemical:75` → **化工罐液位: 75.00%** |
|
||
| `conveyor_speed_main` | conveyor + speed + main | **主输送带转速** | m/min | `conveyor_speed_main:45` → **主输送带转速: 45.00m/min** |
|
||
| `reactor_temp_jacket` | reactor + temp + jacket | **反应器夹套温度** | °C | `reactor_temp_jacket:120` → **反应器夹套温度: 120.00°C** |
|
||
|
||
### 9.7 🌐 多语言Key支持
|
||
|
||
系统同时支持英文和中文拼音关键词:
|
||
|
||
| 英文Key | 中文拼音Key | 前端显示列名 | 示例 |
|
||
|---------------|-----------------|--------|----------------------------------|
|
||
| `temperature` | `wendu`, `wd` | **温度** | `wendu:25.5` → **温度: 25.50°C** |
|
||
| `pressure` | `yali`, `yl` | **压力** | `yali:2.35` → **压力: 2.35bar** |
|
||
| `current` | `dianliu`, `dl` | **电流** | `dianliu:15.2` → **电流: 15.20A** |
|
||
| `voltage` | `dianya`, `dy` | **电压** | `dianya:220` → **电压: 220.00V** |
|
||
| `speed` | `zhuansu`, `zs` | **转速** | `zhuansu:1450` → **转速: 1450rpm** |
|
||
|
||
--- |