* 新增默认关闭的删除开关,仅在收到 PLC 放行应答后执行 * 本地与 SFTP Provider 校验根目录并支持幂等删除 * 补充工作流、设置页和文件删除相关测试与文档
4.3 KiB
4.3 KiB
PCB 目检放行软件最终工作流程图
1. 通信结构
PLC <--OMRON FINS--> C# 上位机 <--TCP Socket--> 扫码枪1
<--TCP Socket--> 扫码枪2
<--SFTP----------> SFTP 服务器
<--HTTP----------> 安灯系统
2. 主流程图
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. 双扫码判定
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 放行。 FileCheck.DeleteMatchedFileAfterPlcAck=true时,仅在收到 PLC 放行应答后删除本次文件校验精确命中的产品 ID 文件;应答超时、未命中文件或删除失败时不误删其他文件。- 放行完成后等待 PLC 复位信号
D1002,再清D1051、D1052、D1100。