- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验 - 新增文件校验与扫码结果汇总实现,补充对应单测 - 同步更新流程设计文档、配置和系统设置页面文案
133 lines
4.1 KiB
Markdown
133 lines
4.1 KiB
Markdown
# PCB 目检放行软件最终工作流程图
|
||
|
||
## 1. 通信结构
|
||
|
||
```text
|
||
PLC <--OMRON FINS--> C# 上位机 <--TCP Socket--> 扫码枪1
|
||
<--TCP Socket--> 扫码枪2
|
||
<--SFTP----------> SFTP 服务器
|
||
<--HTTP----------> 安灯系统
|
||
```
|
||
|
||
## 2. 主流程图
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[PLC: D1001 PcbArrived=1] --> B[上位机通过 FINS 读取到位信号]
|
||
B --> C{当前是否空闲且未故障}
|
||
|
||
C -->|否| C1[忽略本次触发并继续监视]
|
||
C -->|是| D[写入 D1051 PcBusy=1]
|
||
D --> E[写入 D1100 ResultCode=1 处理中]
|
||
E --> F[触发扫码枪1: TCP 发送 T]
|
||
E --> G[触发扫码枪2: TCP 发送 T]
|
||
|
||
F --> H[接收扫码枪1结果]
|
||
G --> I[接收扫码枪2结果]
|
||
H --> J[汇总双扫码结果]
|
||
I --> J
|
||
|
||
J --> K{是否至少一路扫码成功}
|
||
K -->|否| L[调用安灯: 两把扫码枪均失败]
|
||
L --> M[记录报警结果]
|
||
M --> N[写入 D1100 ResultCode=20 NG放行]
|
||
|
||
K -->|是| O{两路条码是否都成功且不一致}
|
||
O -->|是| P[优先使用扫码枪1条码并记录不一致日志]
|
||
O -->|否| Q[使用成功条码]
|
||
P --> R[SFTP 查找最终条码对应文件]
|
||
Q --> R
|
||
|
||
R --> S{SFTP 校验结果}
|
||
S -->|文件存在| T[写入 D1100 ResultCode=10 正常放行]
|
||
S -->|文件未找到且未到重试上限| U[等待配置间隔后重试]
|
||
U --> R
|
||
S -->|文件未找到达到上限| V[写入 D1100 ResultCode=20 NG放行]
|
||
S -->|连接/认证/目录异常| W[写入 D1100 ResultCode=90 系统故障]
|
||
|
||
T --> X[写入 D1052 ReleasePermit=1]
|
||
V --> X
|
||
N --> X
|
||
|
||
X --> Y{是否启用 D1003 PlcAckRelease}
|
||
Y -->|启用| Z[等待 PLC 写入 D1003=1]
|
||
Y -->|不启用| AA[按放行脉冲时间保持]
|
||
Z --> AB[等待 PLC 复位]
|
||
AA --> AB
|
||
|
||
AB --> AC[PLC: D1002 PlcReset=1]
|
||
AC --> AD[上位机执行复位]
|
||
AD --> AE[写入 D1051=0]
|
||
AE --> AF[写入 D1052=0]
|
||
AF --> AG[写入 D1100=0 Idle]
|
||
AG --> AH[回到空闲监视]
|
||
|
||
W --> AI[进入故障锁存]
|
||
AI --> AJ[等待人工/PLC复位]
|
||
AJ --> AC
|
||
```
|
||
|
||
## 3. 双扫码判定
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[扫码枪1结果 + 扫码枪2结果] --> B{扫码枪1成功?}
|
||
A --> C{扫码枪2成功?}
|
||
|
||
B -->|是| D{扫码枪2也成功?}
|
||
B -->|否| E{扫码枪2成功?}
|
||
|
||
D -->|否| F[使用扫码枪1条码]
|
||
D -->|是| G{两路条码一致?}
|
||
G -->|是| H[使用共同条码]
|
||
G -->|否| I[使用扫码枪1条码并记录不一致]
|
||
|
||
E -->|是| J[使用扫码枪2条码]
|
||
E -->|否| K[双扫码失败]
|
||
|
||
F --> L[进入 SFTP 校验]
|
||
H --> L
|
||
I --> L
|
||
J --> L
|
||
K --> M[安灯报警 + NG放行]
|
||
```
|
||
|
||
## 4. PLC 点位与结果码
|
||
|
||
### 4.1 PLC -> 上位机
|
||
|
||
| 地址 | 名称 | 含义 |
|
||
| --- | --- | --- |
|
||
| D1001 | PcbArrived | PCB 到位,请求处理 |
|
||
| D1002 | PlcReset | PLC 请求上位机清状态/复位 |
|
||
| D1003 | PlcAckRelease | PLC 已收到放行信号,可选 |
|
||
|
||
### 4.2 上位机 -> PLC
|
||
|
||
| 地址 | 名称 | 含义 |
|
||
| --- | --- | --- |
|
||
| D1051 | PcBusy | 上位机正在处理当前 PCB |
|
||
| D1052 | ReleasePermit | 放行脉冲信号 |
|
||
| D1100 | ResultCode | 本次最终结果代码 |
|
||
|
||
### 4.3 ResultCode
|
||
|
||
| 数值 | 含义 | 是否放行 |
|
||
| --- | --- | --- |
|
||
| 0 | Idle / 无结果 | 否 |
|
||
| 1 | 处理中 | 否 |
|
||
| 10 | 正常放行 | 是 |
|
||
| 20 | NG 放行 | 是 |
|
||
| 90 | 系统故障 | 否 |
|
||
|
||
## 5. 关键规则
|
||
|
||
- `D1001` 只作为新板触发信号;流程执行中重复到位不得重入。
|
||
- 双扫码采用“任一成功即可”。
|
||
- 两把扫码枪都成功但条码不一致时,优先使用扫码枪1条码,并记录扫码枪2条码。
|
||
- SFTP 文件校验位于扫码成功之后、PLC 放行之前。
|
||
- SFTP 文件未找到达到重试上限后,写入 `ResultCode=20` 并放行。
|
||
- SFTP 连接失败、认证失败、根目录不存在等系统异常写入 `ResultCode=90`,不自动放行。
|
||
- 两把扫码枪均失败时调用安灯报警;安灯接口失败不阻断 `ResultCode=20` 的 NG 放行。
|
||
- 放行完成后等待 PLC 复位信号 `D1002`,再清 `D1051`、`D1052`、`D1100`。
|