# SPC采集模型

## 1. 功能概述

SPC采集模型属于 MES 系统的基础模块，用于配置工序单元的结果参数采集点位，实现对生产过程数据的实时采集与监控。SPC（Statistical Process Control）为统计过程控制，用于监控生产过程的稳定性。

**核心功能：**

- SCADA点位绑定：配置工序单元与采集点位的关联关系
- 采集参数管理：管理采集点位的数据采集参数


**功能对应截图** ：
![图片：SPC采集模型功能截图](/public/image/process_model/图片：工艺模型功能截图.png)


## 2. 术语说明

| 术语 | 定义 | 说明 |
|------|------|------|
| SPC | 统计过程控制 | 用于监控生产过程的稳定性 |
| SCADA | 数据采集与监控系统 | 用于实时数据采集和监控 |
| 数据类型 | 采集数据的类型 | 包括首巡检数据、结果数据 |
| 结果参数 | 工序单元的结果参数 | 定义工序执行后的产出数据 |
| 首巡检数据 | 首件检验数据 | 生产首件产品的检验数据 |


## 3. 数据模型关系说明

### 3.1 SPC采集配置组成

一个完整的SPC采集配置由以下四要素组成：

```mermaid
flowchart LR
    subgraph SPC采集配置要素
        direction TB
        A[工序单元] --> B[SPC采集配置]
        C[数据类型] --> B
        D[SCADA点位] --> B
    end

    B --> E[保存到对应数据表]
```

| 要素 | 说明 | 示例 |
|------|------|------|
| 工序单元 | 配置针对哪个工序 | 电芯装配工序 |
| 数据类型 | 数据的业务类型 | 首巡检数据 / 结果数据 |
| SCADA点位 | 数据的来源点位 | TEMP_001 |

### 3.2 数据类型与数据表对应关系

数据类型决定了数据保存到哪张表：

```mermaid
flowchart TB
    subgraph 数据类型
        DT1["首巡检数据<br/>（First Inspection）"]
        DT2["结果数据<br/>（Result Data）"]
    end

    subgraph 对应数据表
        T1["首巡检数据表<br/>保存首件检验的数据"]
        T2["结果参数表<br/>保存工序结果的数据"]
    end

    DT1 -->|"数据类型=首巡检"| T1
    DT2 -->|"数据类型=结果"| T2
```

### 3.3 采集入口说明

SCADA数据采集只有一个入口接口 `set_node_data`，有4个调用方：

```mermaid
flowchart TB
    subgraph SCADA采集入口
        A[set_node_data 接口]
    end

    subgraph 调用方
        B[EdgeMange]
        C[EPS]
        D[MES内部调用]
        E[设备调用]
    end

    B --> A
    C --> A
    D --> A
    E --> A

    style D fill:#90EE90
```

| 调用方 | 说明 | 与SPC配置关系 |
|-------|------|--------------|
| EdgeMange | 边缘管理器推送 | 不使用SPC配置 |
| EPS | EPS系统推送 | 不使用SPC配置 |
| MES内部调用 | MES内部业务调用 | **使用SPC配置** |
| 设备调用 | 设备直接调用 | 不使用SPC配置 |

**本功能配置的即为"MES内部调用"的采集规则。**

### 3.4 MES内部调用采集流程

当MES内部业务调用 `set_node_data` 接口时，SPC采集配置决定数据保存位置：

```mermaid
sequenceDiagram
    participant MES业务 as MES内部业务
    participant SCADA as set_node_data 接口
    participant SPC配置 as SPC采集配置
    participant DB as 数据库

    MES业务->>SCADA: 调用set_node_data<br/>参数：点位编码、采集值
    SCADA->>SPC配置: 根据点位编码查询配置
    SPC配置-->>SCADA: 返回：工序单元、数据类型、SCADA点位
    SCADA->>DB: 根据数据类型保存到对应数据表
    DB-->>SCADA: 保存成功
    SCADA-->>MES业务: 返回结果
```

### 3.5 配置示例

| 配置编号 | 工序单元 | 数据类型 | 数据表 | SCADA点位 |
|---------|---------|---------|-------|----------|
| 配置1 | 电芯装配工序 | 首巡检数据 | 首巡检数据表 | TEMP_001 |
| 配置2 | 电芯装配工序 | 结果数据 | 结果参数表 | PRESS_001 |
| 配置3 | 化成工序 | 结果数据 | 结果参数表 | VOLT_001 |


## 4. SPC采集模型交互流程

### 4.1 SCADA点位绑定

#### 4.1.1 点位绑定说明

点位绑定是建立工序单元与SCADA采集点位之间的关联关系，实现生产数据的自动采集。

**功能对应截图** ：
![图片：SCADA点位绑定列表截图](/public/image/process_model/图片：工序单元列表截图.png)

#### 4.1.2 新增点位绑定

**操作步骤：**

1. 进入【生产配置】→【SPC采集模型】→【SCADA点位绑定】
2. 点击【新增】按钮
3. 选择需要绑定的工序单元
4. 选择或配置SCADA采集点位
5. 设置采集参数
6. 点击【保存】完成点位绑定

**字段说明：**

| 字段 | 说明 | 必填 |
|------|------|------|
| 工序单元 | 需要绑定点位的工序单元 | 是 |
| 点位编码 | SCADA系统的点位编码 | 是 |
| 点位名称 | 点位的描述名称 | 是 |
| 数据类型 | 点位的数据类型，如"数值"、"开关" | 是 |
| 采集频率 | 数据采集的频率，单位为秒 | 是 |
| 状态 | 启用/禁用 | 否 |
| 备注 | 其他补充说明信息 | 否 |

**【重要】** 点位编码必须与SCADA系统中配置一致，否则无法正常采集数据。
**【重要】** 同一工序单元不能重复绑定相同的点位编码。

**功能对应截图** ：
![图片：新增点位绑定截图](/public/image/process_model/图片：新增工序单元截图.png)

#### 4.1.3 编辑点位绑定

**操作步骤：**

1. 进入【生产配置】→【SPC采集模型】→【SCADA点位绑定】
2. 在列表中找到需要编辑的绑定记录
3. 点击【编辑】按钮
4. 修改需要更新的信息
5. 点击【保存】完成修改

**【注意】** 已采集的历史数据不受影响。

#### 4.1.4 删除点位绑定

**操作步骤：**

1. 进入【生产配置】→【SPC采集模型】→【SCADA点位绑定】
2. 在列表中找到需要删除的绑定记录
3. 点击【删除】按钮
4. 确认删除操作

**【注意】** 删除点位绑定后，该点位的后续数据将停止采集，已采集数据保留。

#### 4.1.5 点位绑定查询

**查询条件：**

| 查询条件 | 说明 |
|---------|------|
| 工序单元 | 按工序单元筛选 |
| 点位编码 | 按点位编码精确查询 |
| 点位名称 | 按点位名称模糊查询 |
| 状态 | 按启用/禁用状态筛选 |
| 创建时间 | 按创建时间范围筛选 |

