# PLC数据与看板内容匹配分析

分析对象：

- 客户PLC点位文档：`07-功能确认.md`
- 当前看板页面：`src/views/DaLuJiaTV1.vue`
- 当前看板模块：线体任务联动状态、加工设备状态、辅助设备状态、物料库位矩阵、报警与异常事件、设备运行履历、顶部视角按钮

## 1. 总体结论

客户目前提供的PLC点位，能够支撑看板中大部分“实时状态类”内容，包括线体是否在线、是否允许接任务、自动模式、急停、机器人任务号、起止位置、配方号、托盘类型、零件类型、机器人握手反馈、库位有无料、设备忙碌/报警/上下料就绪等。

但当前看板中有几类内容不能直接由现有PLC点位一次性满足，需要数据库、采集服务或客户补充字段：

1. **产量**：现有点位没有直接的设备产量计数器。加工设备状态里的“产量”需要通过任务完成、下料完成、COMPLETE上升沿等事件计算并落库。
2. **报警事件文本**：现有点位只有 `ALARM`、`ERROR`、`EMG` 等布尔信号，没有报警代码、报警文本、报警发生时间。报警与异常事件模块需要采集服务根据点位变化生成事件。
3. **24小时设备运行履历**：PLC能提供当前状态，但24小时履历必须由采集服务按分钟或按状态变化记录到数据库，再由页面读取。
4. **关机状态**：目前多数加工设备只有 `BUSY`、`ALARM`、上下料信号，没有明确的“开机/在线/心跳”信号。若要区分“关机”和“待机”，需要客户补充设备在线/开机/心跳点位，或由通讯中断推断。
5. **程序一致性**：PLC提供实际程序号 `A_PROG_NO`，但页面若要判断“目标程序与实际程序不一致”，还需要目标程序号或配方号到程序号的映射关系。

## 2. 模块匹配矩阵

| 看板模块 | 当前显示内容 | 07文档可用数据 | 满足度 | 说明 |
| --- | --- | --- | --- | --- |
| 线体任务联动状态 | 长地轨、短地轨、关节机器人状态；当前任务；起止工位；接任务条件；当前阶段 | `PCS_RUN`、`ALLOW_TASK`、`AUTO_ACTIVE`、`EMG`、`TASK_NO`、`START_POS`、`END_POS`、`RECIPE_CODE`、`PALLET_TYPE`、`PART_KIND`、`FLAG`、`READY`、`BUSY`、`ERROR`、`COMPLETE` | 高 | 能支撑当前模块。需要补充工位编号字典、托盘类型字典、零件类型字典。长地轨任务中未看到 `PART_KIND`，若需要显示长轴/短轴，需要确认来源。 |
| 加工设备状态 | 设备名称、产量、运行条件、状态 | F500、L2000LSY、L2100SY、新日、MAZAK、YKD5132H 的 `A_PROG_NO`、上下料完成/就绪、`BUSY`、`ALARM` | 中 | 状态和运行条件可支撑；产量没有直接点位，需要计算；程序一致性需要目标程序来源。 |
| 辅助设备状态 | 长地轨打标机、短地轨打标机、关节打标机、清洗机、测量仪状态 | 打标机 `NORMAL`、`START`、`BUSY`、`IDLE`；清洗机 `BUSY`、`ERROR`、上下料就绪；测量仪 `BUSY`、`ERROR`、上下料就绪 | 中高 | 可支撑状态显示。长地轨打标机文档中 `NORMAL`、`BUSY` 地址为空，需要客户确认。 |
| 物料库位矩阵 | 长地轨库区9个库位、短地轨库区9个库位、关节库区6个库位有料/无料 | `S1_YES` 至 `S9_YES`，关节 `S1_YES` 至 `S6_YES` | 高 | 可直接支撑。需要确认长地轨和短地轨是否真的共用 `DB50.DBX101.0` 至 `DB50.DBX109.0`，还是不同PLC/不同上下文。还需要库位编号到现场位置的映射。 |
| 报警与异常事件 | 时间、设备、级别、事件内容 | 设备 `ALARM`，辅助设备 `ERROR`，机器人 `ERROR`，线体 `EMG` | 中低 | 可判断是否报警，但缺报警代码、报警文本、报警等级、开始/结束时间。建议采集服务在信号上升沿生成报警事件。 |
| 设备运行履历 | 24小时设备状态甘特图：关机、运行、待机、报警 | `BUSY`、`ALARM`、`ERROR`、`NORMAL`、`IDLE`、`PCS_RUN` 等当前状态信号 | 中 | 当前状态可判断；24小时履历必须落库。关机状态需要明确开机/在线/心跳点位，否则只能按通讯状态或 `NORMAL=0` 推断。 |
| 顶部视角按钮 | 长地轨视角、短地轨视角、关节视角 | 无PLC点位要求 | 不依赖PLC | 属于前端/DMT相机视角控制，不需要PLC数据。 |

## 3. 当前看板字段逐项判断

### 3.1 线体任务联动状态

可满足：

- PCS在线：`PCS_RUN`
- 自动模式：`AUTO_ACTIVE`
- 允许接任务：`ALLOW_TASK`
- 急停/安全异常：`EMG`
- 当前任务编号：`TASK_NO`
- 任务流向：`START_POS`、`END_POS`
- 配方号：`RECIPE_CODE`
- 托盘类型：`PALLET_TYPE`
- 零件类型：`PART_KIND`，短地轨和关节已有，长地轨需要确认
- 当前阶段：可由 `FLAG`、`READY`、`BUSY`、`ERROR`、`COMPLETE` 推导

建议规则：

- `ERROR=1` 或 `EMG=1`：异常中断
- `BUSY=1`：执行中
- `READY=1` 且 `BUSY=0`：准备就绪
- `ALLOW_TASK=1` 且 `AUTO_ACTIVE=1` 且 `PCS_RUN=1` 且 `EMG=0`：可接任务
- `COMPLETE=1`：任务完成，可显示完成保持或等待下一任务

需要补充确认：

- `START_POS`、`END_POS` 对应的工位名称字典
- `PALLET_TYPE` 对应的托盘名称字典
- `PART_KIND` 的字典是否全线统一
- 长地轨是否需要 `PART_KIND`，如果需要，从哪里取

### 3.2 加工设备状态

可满足：

- F500：实际程序号、上料完成、下料完成、运行中、报警
- L2000LSY：实际程序号、上料完成、下料完成、运行中、报警
- L2100SY：实际程序号、上料完成、下料完成、运行中、报警
- 新日：实际程序号、上料就绪、下料就绪、运行中、报警
- MAZAK：上料就绪、下料就绪、运行中、报警；实际程序号标注为不需要
- YKD5132H：实际程序号、上料就绪、下料就绪、运行中、报警

不能直接满足：

- 产量：未看到直接产量计数器
- 目标程序号：未看到目标程序号点位
- 程序一致性：只有实际程序号，不足以独立判断

建议处理：

- 页面保留“产量”可以，但数据来源应由采集服务计算：
  - 方案A：设备 `UNLOAD_COMPLETE` 或 `UNLOAD_READY` 上升沿计数
  - 方案B：机器人任务 `COMPLETE` 上升沿按目标设备归属计数
  - 方案C：客户补充每台设备的产量计数器，页面直接读取
- 程序一致性建议由 `RECIPE_CODE` 或生产任务中的目标程序号，与设备 `A_PROG_NO` 比对。
- 若客户暂时不能提供产量，建议把“产量”暂时改为“程序号”，或在接口层返回计算产量。

### 3.3 辅助设备状态

可满足：

- 短地轨打标机：`NORMAL`、`START`、`BUSY`、`IDLE`
- 关节打标机：`NORMAL`、`START`、`BUSY`、`IDLE`
- 清洗机：`BUSY`、`ERROR`、`UPLOAD_READY`、`UNLOAD_READY`
- 测量仪：`BUSY`、`ERROR`、`UPLOAD_READY`、`UNLOAD_READY`

部分缺口：

- 长地轨打标机 `NORMAL`、`BUSY` 地址为空，需要客户补齐或确认是否不采集。
- 打标机 `START` 可能是短脉冲，不能直接作为状态长期显示，需要采集服务捕获边沿或只用于事件记录。

建议状态规则：

- 打标机：`BUSY=1` 显示运行中；`IDLE=1` 显示待机；`NORMAL=0` 显示关机或离线；如后续有错误点位，优先显示报警。
- 清洗机/测量仪：`ERROR=1` 显示报警；`BUSY=1` 显示运行中；`UPLOAD_READY` 或 `UNLOAD_READY` 显示等待上下料；否则显示待机。

### 3.4 物料库位矩阵

可满足：

- 长地轨库区：9个库位 `S1_YES` 至 `S9_YES`
- 短地轨库区：9个库位 `S1_YES` 至 `S9_YES`
- 关节库区：6个库位 `S1_YES` 至 `S6_YES`

需要确认：

- 长地轨和短地轨库区在文档中使用相同地址 `DB50.DBX101.0` 至 `DB50.DBX109.0`。需要确认是否为同一个PLC地址空间下的重复，还是Excel转换时上下文丢失。
- 每个 `S1` 至 `S9` 对应现场哪个实际库位、工位、料框位置。

建议：

- 页面可以继续显示库位矩阵。
- 可以增加库位统计：占用数、空位数、占用率。
- 若客户能提供物料类型或托盘号，可进一步显示“有料但类型未知/长轴/短轴”等状态。

### 3.5 报警与异常事件

现有点位可作为报警源：

- 线体：`EMG`
- 机器人：`ERROR`
- 加工设备：`ALARM`
- 清洗机/测量仪：`ERROR`
- 打标机：目前未看到明确错误点位

当前缺口：

- 没有报警代码
- 没有报警文本
- 没有报警等级
- 没有报警开始时间、恢复时间

建议实现：

- 采集服务保存报警事件表，而不是页面直接读当前布尔值。
- 每个报警布尔点从 `0 -> 1` 时生成一条事件，记录：时间、设备、点位、事件名称、等级、是否恢复。
- 从 `1 -> 0` 时记录恢复时间。

建议报警等级：

- 严重：急停 `EMG`、机器人 `ERROR`、设备 `ALARM`、清洗机/测量仪 `ERROR`
- 警告：程序不一致、上下料等待超时、允许接任务条件不满足
- 提示：任务完成、等待上游/下游放行

### 3.6 设备运行履历

可用当前PLC信号生成实时状态：

- 报警：`ALARM=1` 或 `ERROR=1`
- 运行：`BUSY=1`
- 待机：`IDLE=1`、`READY=1`、或无报警且无运行
- 关机：需要 `NORMAL=0`、`PCS_RUN=0`、通讯断开、或客户补充开机/在线信号

当前缺口：

- 现有PLC只提供当前状态，不提供历史。
- 页面要显示24小时履历，必须由后端或采集服务按分钟存储状态。

建议数据库表：

| 字段 | 说明 |
| --- | --- |
| device_code | 设备编码 |
| device_name | 设备名称 |
| state | off/run/standby/alarm |
| start_time | 状态开始时间 |
| end_time | 状态结束时间 |
| source_tags | 参与判断的PLC点位 |

建议状态优先级：

`报警 > 运行 > 待机 > 关机/离线`

## 4. 建议新增或优化的看板内容

基于客户目前PLC点位，建议优先考虑以下内容：

1. **线体接任务条件指示**
   - 展示 `PCS_RUN`、`ALLOW_TASK`、`AUTO_ACTIVE`、`EMG` 四个条件。
   - 适合放在线体任务联动状态中，能快速判断为什么不能发任务。

2. **机器人握手信号诊断**
   - 展示 `FLAG`、`READY`、`BUSY`、`ERROR`、`COMPLETE`。
   - 当前页面已经精简过，如果现场调试需要，可以做成点击详情或悬浮面板，不一定常驻主屏。

3. **程序号核对**
   - 设备侧 `A_PROG_NO` 已有。
   - 如果能拿到目标程序号，可新增“程序一致/不一致”提示。
   - 如果拿不到目标程序号，页面不建议直接写“程序不一致”，避免误导。

4. **库位占用统计**
   - 当前库位矩阵已具备点位基础。
   - 可增加每个库区的占用数、空位数、占用率。

5. **报警事件列表**
   - 当前布尔点足够做基础报警事件。
   - 需要采集服务生成事件文本，例如：“MAZAK 报警信号触发”“关节机器人 ERROR=1”“长地轨急停激活”。

6. **设备运行履历**
   - 当前页面已有模块。
   - 必须配套状态落库，否则只能显示当前状态，不能显示24小时历史。

7. **生产/产量统计**
   - 现有PLC文档不直接提供产量。
   - 建议客户补充产量计数器，或确认用哪个完成信号作为计数依据。
   - 没有确认前，看板上“产量”应标注为接口计算值，而不是PLC直采值。

## 5. 需要客户补充确认的问题清单

1. 是否有每台加工设备的**产量计数器**？如果没有，是否允许用 `UNLOAD_COMPLETE`、`UNLOAD_READY` 或机器人 `COMPLETE` 上升沿计算产量？
2. 是否有每台设备的**开机/在线/心跳**信号？用于区分“关机”和“待机”。
3. 是否有**报警代码、报警文本、报警等级**？如果没有，是否接受由点位名称生成简化报警事件？
4. 是否有**目标程序号**或 `RECIPE_CODE -> A_PROG_NO` 的映射表？用于判断程序一致性。
5. 长地轨打标机的 `NORMAL`、`BUSY` 地址为空，是否需要补充？
6. 长地轨任务是否有 `PART_KIND`？如果没有，长轴/短轴从哪里判断？
7. 长地轨和短地轨物料库位是否共用 `DB50.DBX101.0` 至 `DB50.DBX109.0`？如果不是，需要提供真实地址。
8. `START_POS`、`END_POS` 的工位编号字典是什么？
9. `PALLET_TYPE` 的托盘类型字典是什么？
10. PLC点位虽然标注 `RW`，看板是否只读？建议看板侧默认只读，不向PLC写入。
11. 数据采集周期要求是多少？状态看板建议1秒级刷新，运行履历可按状态变化或1分钟粒度落库。

## 6. 对当前看板的落地建议

### 建议保留

- 线体任务联动状态
- 加工设备状态
- 辅助设备状态
- 物料库位矩阵
- 报警与异常事件
- 设备运行履历
- 顶部视角按钮

### 建议调整数据口径

- 加工设备状态中的“产量”应明确为“接口计算产量”，当前PLC文档不能直接支撑。
- 报警与异常事件应由采集服务生成事件，不应只读当前报警位。
- 设备运行履历应由数据库提供24小时历史，不应只依赖页面前端模拟。

### 建议新增后端/数据库能力

1. PLC当前快照表：保存每个点位当前值。
2. 状态变化事件表：保存报警、任务阶段、设备运行状态变化。
3. 设备分钟状态表或状态区间表：支撑24小时运行履历。
4. 产量统计表：按设备、班次、日期统计产量。
5. 字典表：工位、托盘类型、零件类型、设备编码、点位含义、报警等级。

## 7. 数据满足度结论

当前PLC点位对看板的支撑度可以概括为：

- **实时状态显示：基本满足**
- **任务联动显示：基本满足**
- **库位矩阵显示：满足**
- **设备运行/报警当前状态：基本满足**
- **产量显示：不直接满足，需要计算或补点**
- **报警事件列表：部分满足，需要事件化**
- **24小时运行履历：部分满足，需要历史落库**
- **程序一致性：部分满足，需要目标程序或映射表**

因此，当前数据可以支撑看板进入联调，但在正式交付前，需要重点确认“产量、报警事件、运行履历、关机状态、程序一致性”这五类数据口径。
