初始代码

This commit is contained in:
hhh
2026-04-02 10:38:23 +08:00
parent d8b4140f50
commit aed67ce1fd
1937 changed files with 447678 additions and 1 deletions

View File

@@ -0,0 +1,372 @@
# 普罗生物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, "趋势");
}
```