372 lines
11 KiB
Markdown
372 lines
11 KiB
Markdown
|
|
# 普罗生物MES报警页面 - LabVIEW对接
|
|||
|
|
|
|||
|
|
> 版本:v1.0.46
|
|||
|
|
> 日期:2025-12-13
|
|||
|
|
> 状态:需求分析
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、需求背景
|
|||
|
|
|
|||
|
|
建设基于参数判断的设备故障分析与预警系统,实现LabVIEW数据采集端与MES系统的对接,完成故障数据的记录、展示和趋势分析功能。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、系统架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|||
|
|
│ LabVIEW │ │ 数据库 │ │ MES │
|
|||
|
|
│ 数据采集端 │ ──▶ │ 故障记录表 │ ──▶ │ 报警页面 │
|
|||
|
|
│ (报警运算) │ │ │ │ (读取展示) │
|
|||
|
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**数据流向:**
|
|||
|
|
1. LabVIEW采集设备传感器数据
|
|||
|
|
2. LabVIEW进行报警运算(三次一致性确认)
|
|||
|
|
3. 超限数据写入数据库故障记录表
|
|||
|
|
4. MES读取数据库并展示
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、数据库设计
|
|||
|
|
|
|||
|
|
### 3.1 故障记录表 (device_fault_record)
|
|||
|
|
|
|||
|
|
| 字段名 | 类型 | 说明 | 示例 | 来源 |
|
|||
|
|
|--------|------|------|------|------|
|
|||
|
|
| id | bigint | 主键ID | 1 | 自增 |
|
|||
|
|
| device_name | varchar(100) | 设备名称 | 发酵罐1号 | LabVIEW |
|
|||
|
|
| sensor_name | varchar(100) | 传感器名/通道 | 温度传感器-CH01 | LabVIEW |
|
|||
|
|
| device_status | tinyint | 设备状态:0-停机,1-待机,2-生产 | 2 | LabVIEW |
|
|||
|
|
| nominal_value | decimal(10,2) | 标称值(标准/理想值) | 25.00 | LabVIEW |
|
|||
|
|
| normal_min | decimal(10,2) | 正常范围下限(下限) | 20.00 | LabVIEW |
|
|||
|
|
| normal_max | decimal(10,2) | 正常范围上限(上限) | 30.00 | LabVIEW |
|
|||
|
|
| lower_lower_limit | decimal(10,2) | 下下限(严重超限下限) | 15.00 | LabVIEW |
|
|||
|
|
| upper_upper_limit | decimal(10,2) | 上上限(严重超限上限) | 35.00 | LabVIEW |
|
|||
|
|
| actual_value | decimal(10,2) | 实测值 | 35.50 | LabVIEW |
|
|||
|
|
| deviation_rate | decimal(10,2) | 偏离度(%),MES计算 | 18.33 | MES计算 |
|
|||
|
|
| fault_level | tinyint | 故障等级:1-轻微,2-一般,3-严重 | 2 | LabVIEW |
|
|||
|
|
| fault_tag | varchar(200) | 故障标注/描述 | 温度超上限 | LabVIEW |
|
|||
|
|
| analysis_type | tinyint | 分析类型:1-瞬态,2-趋势 | 1 | LabVIEW |
|
|||
|
|
| fault_time | datetime | 故障发生时间 | 2025-12-13 10:00:00 | LabVIEW |
|
|||
|
|
| creator | varchar(64) | 创建者(LabVIEW写入时可为系统) | labview | LabVIEW |
|
|||
|
|
| create_time | datetime | 记录创建时间 | 2025-12-13 10:00:05 | LabVIEW |
|
|||
|
|
| updater | varchar(64) | 更新者 | | MES |
|
|||
|
|
| update_time | datetime | 更新时间 | | MES |
|
|||
|
|
| deleted | bit | 是否删除 | 0 | 默认0 |
|
|||
|
|
|
|||
|
|
### 3.2 门限说明
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
门限层级(从内到外):
|
|||
|
|
├── 标称值 (nominal_value):标准/理想值
|
|||
|
|
├── 正常范围:normal_min ~ normal_max(一般报警)
|
|||
|
|
└── 严重范围:lower_lower_limit ~ upper_upper_limit(严重报警)
|
|||
|
|
|
|||
|
|
故障等级判断:
|
|||
|
|
- 实测值在 normal_min ~ normal_max 范围内:正常
|
|||
|
|
- 实测值超出 normal 但在 upper_upper/lower_lower 范围内:一般故障
|
|||
|
|
- 实测值超出 upper_upper_limit 或 lower_lower_limit:严重故障
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.3 偏离度计算公式(MES端计算)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
偏离度(%) = (实测值 - 门限值) / 门限值 × 100
|
|||
|
|
|
|||
|
|
其中门限值:
|
|||
|
|
- 实测值 > 正常上限时,门限值 = 正常上限 (normal_max)
|
|||
|
|
- 实测值 < 正常下限时,门限值 = 正常下限 (normal_min)
|
|||
|
|
- 实测值在正常范围内时,门限值 = 标称值 (nominal_value)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、MES功能设计
|
|||
|
|
|
|||
|
|
### 4.1 故障记录页面(含趋势分析)
|
|||
|
|
|
|||
|
|
**页面路径:** `/mes/device/fault-record`
|
|||
|
|
|
|||
|
|
**页面布局:**
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 查询条件:设备名、传感器名、设备状态、故障等级、时间范围 │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 趋势分析图表区域 │
|
|||
|
|
│ (圆滑折线图,显示实测值走势和门限参考线) │
|
|||
|
|
├─────────────────────────────────────────────────────────┤
|
|||
|
|
│ 故障记录列表区域 │
|
|||
|
|
│ (分页表格,展示故障详情) │
|
|||
|
|
└─────────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**功能点:**
|
|||
|
|
- [x] 列表展示故障记录
|
|||
|
|
- [x] 支持分页查询
|
|||
|
|
- [x] 支持条件筛选:设备名、传感器名、设备状态、故障等级、时间范围
|
|||
|
|
- [x] 支持导出Excel
|
|||
|
|
- [x] 趋势分析图表(圆滑折线图)
|
|||
|
|
|
|||
|
|
**列表字段:**
|
|||
|
|
| 序号 | 字段 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 1 | 设备名称 | device_name |
|
|||
|
|
| 2 | 传感器/通道 | sensor_name |
|
|||
|
|
| 3 | 设备状态 | 停机/待机/生产 |
|
|||
|
|
| 4 | 标称值 | nominal_value |
|
|||
|
|
| 5 | 正常范围 | normal_min ~ normal_max |
|
|||
|
|
| 6 | 严重范围 | lower_lower_limit ~ upper_upper_limit |
|
|||
|
|
| 7 | 实测值 | actual_value |
|
|||
|
|
| 8 | 偏离度 | deviation_rate%(MES计算) |
|
|||
|
|
| 9 | 故障等级 | 轻微/一般/严重(带颜色标识) |
|
|||
|
|
| 10 | 故障标注 | fault_tag |
|
|||
|
|
| 11 | 故障时间 | fault_time |
|
|||
|
|
|
|||
|
|
### 4.2 趋势分析图表(集成在故障记录页面)
|
|||
|
|
|
|||
|
|
**图表类型:** 圆滑折线图(smooth line chart)
|
|||
|
|
|
|||
|
|
**功能点:**
|
|||
|
|
- [x] 设备下拉选择
|
|||
|
|
- [x] 传感器/通道下拉选择(联动设备)
|
|||
|
|
- [x] 时间范围选择(按天)
|
|||
|
|
- [x] 圆滑折线图展示趋势
|
|||
|
|
- [x] 显示门限参考线
|
|||
|
|
|
|||
|
|
**图表设计:**
|
|||
|
|
```
|
|||
|
|
Y轴:实测值
|
|||
|
|
X轴:时间(按天聚合)
|
|||
|
|
曲线:圆滑折线(smooth: true)
|
|||
|
|
参考线:
|
|||
|
|
- 上上限(红色虚线)
|
|||
|
|
- 上限(橙色虚线)
|
|||
|
|
- 标称值(绿色实线)
|
|||
|
|
- 下限(橙色虚线)
|
|||
|
|
- 下下限(红色虚线)
|
|||
|
|
数据点:每日平均值/最大值/最小值
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.3 故障预测(二期)
|
|||
|
|
|
|||
|
|
基于趋势数据的二次分析:
|
|||
|
|
- 线性回归预测
|
|||
|
|
- 异常趋势识别
|
|||
|
|
- 预警通知
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、接口设计
|
|||
|
|
|
|||
|
|
### 5.1 LabVIEW写入接口(数据库直连)
|
|||
|
|
|
|||
|
|
LabVIEW直接写入数据库表 `device_fault_record`,需提供:
|
|||
|
|
- 数据库连接信息
|
|||
|
|
- 表结构DDL脚本
|
|||
|
|
|
|||
|
|
### 5.2 MES读取接口
|
|||
|
|
|
|||
|
|
#### 5.2.1 故障记录分页查询
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /admin-api/mes/device-fault-record/page
|
|||
|
|
|
|||
|
|
请求参数:
|
|||
|
|
- deviceName: 设备名称(模糊查询)
|
|||
|
|
- sensorName: 传感器名(模糊查询)
|
|||
|
|
- deviceStatus: 设备状态
|
|||
|
|
- faultLevel: 故障等级
|
|||
|
|
- faultTimeStart: 故障时间开始
|
|||
|
|
- faultTimeEnd: 故障时间结束
|
|||
|
|
- pageNo: 页码
|
|||
|
|
- pageSize: 每页条数
|
|||
|
|
|
|||
|
|
响应:
|
|||
|
|
{
|
|||
|
|
"code": 0,
|
|||
|
|
"data": {
|
|||
|
|
"list": [...],
|
|||
|
|
"total": 100
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.2 设备列表(下拉用)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /admin-api/mes/device-fault-record/device-list
|
|||
|
|
|
|||
|
|
响应:
|
|||
|
|
{
|
|||
|
|
"code": 0,
|
|||
|
|
"data": ["发酵罐1号", "发酵罐2号", ...]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.3 传感器列表(下拉用,按设备筛选)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /admin-api/mes/device-fault-record/sensor-list
|
|||
|
|
|
|||
|
|
请求参数:
|
|||
|
|
- deviceName: 设备名称
|
|||
|
|
|
|||
|
|
响应:
|
|||
|
|
{
|
|||
|
|
"code": 0,
|
|||
|
|
"data": ["温度传感器-CH01", "压力传感器-CH02", ...]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.2.4 趋势数据查询
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /admin-api/mes/device-fault-record/trend
|
|||
|
|
|
|||
|
|
请求参数:
|
|||
|
|
- deviceName: 设备名称(必填)
|
|||
|
|
- sensorName: 传感器名(必填)
|
|||
|
|
- startDate: 开始日期(yyyy-MM-dd)
|
|||
|
|
- endDate: 结束日期(yyyy-MM-dd)
|
|||
|
|
|
|||
|
|
响应:
|
|||
|
|
{
|
|||
|
|
"code": 0,
|
|||
|
|
"data": {
|
|||
|
|
"normalMin": 20.00,
|
|||
|
|
"normalMax": 30.00,
|
|||
|
|
"trendList": [
|
|||
|
|
{
|
|||
|
|
"date": "2025-12-01",
|
|||
|
|
"avgValue": 25.5,
|
|||
|
|
"maxValue": 28.0,
|
|||
|
|
"minValue": 23.0,
|
|||
|
|
"faultCount": 2
|
|||
|
|
},
|
|||
|
|
...
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、LabVIEW端说明
|
|||
|
|
|
|||
|
|
### 6.1 报警运算逻辑
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
三次一致性确认机制:
|
|||
|
|
├── 采集周期:10秒/次
|
|||
|
|
├── 使用全局变量 + 移位寄存器
|
|||
|
|
├── 连续3次超限才触发报警
|
|||
|
|
└── 目的:抗干扰,避免误报
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 标准范围配置
|
|||
|
|
|
|||
|
|
- 存储位置:`.xls` 文件
|
|||
|
|
- 便于现场升级和修订
|
|||
|
|
- 包含字段:设备名、传感器名、正常下限、正常上限、故障等级规则
|
|||
|
|
|
|||
|
|
### 6.3 数据写入规范
|
|||
|
|
|
|||
|
|
LabVIEW写入数据库时需填写以下字段:
|
|||
|
|
- device_name(必填)
|
|||
|
|
- sensor_name(必填)
|
|||
|
|
- device_status(必填)
|
|||
|
|
- normal_min(必填)
|
|||
|
|
- normal_max(必填)
|
|||
|
|
- actual_value(必填)
|
|||
|
|
- deviation_rate(必填,需计算)
|
|||
|
|
- fault_level(必填)
|
|||
|
|
- fault_tag(选填)
|
|||
|
|
- analysis_type(必填,默认1-瞬态)
|
|||
|
|
- fault_time(必填)
|
|||
|
|
- creator(固定为 'labview')
|
|||
|
|
- create_time(当前时间)
|
|||
|
|
- deleted(固定为 0)
|
|||
|
|
- tenant_id(固定为 1)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 七、开发任务清单
|
|||
|
|
|
|||
|
|
### 7.1 后端开发
|
|||
|
|
|
|||
|
|
| 序号 | 任务 | 优先级 | 状态 |
|
|||
|
|
|------|------|--------|------|
|
|||
|
|
| 1 | 创建数据库表 device_fault_record | P0 | 待开发 |
|
|||
|
|
| 2 | 创建实体类 DeviceFaultRecordDO | P0 | 待开发 |
|
|||
|
|
| 3 | 创建 Mapper 接口 | P0 | 待开发 |
|
|||
|
|
| 4 | 创建 Service 层 | P0 | 待开发 |
|
|||
|
|
| 5 | 创建 Controller 接口 | P0 | 待开发 |
|
|||
|
|
| 6 | 趋势数据聚合查询 | P1 | 待开发 |
|
|||
|
|
|
|||
|
|
### 7.2 前端开发
|
|||
|
|
|
|||
|
|
| 序号 | 任务 | 优先级 | 状态 |
|
|||
|
|
|------|------|--------|------|
|
|||
|
|
| 1 | 故障记录列表页面 | P0 | 待开发 |
|
|||
|
|
| 2 | 查询表单组件 | P0 | 待开发 |
|
|||
|
|
| 3 | 趋势分析图表 | P1 | 待开发 |
|
|||
|
|
| 4 | 导出功能 | P2 | 待开发 |
|
|||
|
|
|
|||
|
|
### 7.3 对接工作
|
|||
|
|
|
|||
|
|
| 序号 | 任务 | 负责方 | 状态 |
|
|||
|
|
|------|------|--------|------|
|
|||
|
|
| 1 | 提供数据库连接信息 | MES | 待提供 |
|
|||
|
|
| 2 | 提供DDL脚本 | MES | 待提供 |
|
|||
|
|
| 3 | LabVIEW数据写入测试 | LabVIEW | 待测试 |
|
|||
|
|
| 4 | 联调验证 | 双方 | 待联调 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 八、后续规划(YIOT升级FIIH)
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
当前方案:YIOT数据采集 → LabVIEW处理 → 数据库 → MES
|
|||
|
|
升级方案:FIIH(内置门限) → UMS软件处理 → 数据库 → MES
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
升级后优势:
|
|||
|
|
- 门限参数内置于采集设备
|
|||
|
|
- 减少中间处理环节
|
|||
|
|
- 普罗生物定制UMS软件直接处理
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 九、附录
|
|||
|
|
|
|||
|
|
### 9.1 设备状态枚举
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
public enum DeviceStatusEnum {
|
|||
|
|
SHUTDOWN(0, "停机"),
|
|||
|
|
STANDBY(1, "待机"),
|
|||
|
|
PRODUCTION(2, "生产");
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9.2 故障等级枚举
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
public enum FaultLevelEnum {
|
|||
|
|
MINOR(1, "轻微"),
|
|||
|
|
NORMAL(2, "一般"),
|
|||
|
|
SEVERE(3, "严重");
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9.3 分析类型枚举
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
public enum AnalysisTypeEnum {
|
|||
|
|
TRANSIENT(1, "瞬态"),
|
|||
|
|
TREND(2, "趋势");
|
|||
|
|
}
|
|||
|
|
```
|