Files
Axi_Omron/docs/正式的工作流程
yunxiao.zhu ce356bffff ✨ feat(*): 重构PCB放行流程并接入双扫码校验
- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验
- 新增文件校验与扫码结果汇总实现,补充对应单测
- 同步更新流程设计文档、配置和系统设置页面文案
2026-05-17 14:08:05 +08:00

150 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OMRON 目检放行软件通信流程(FINS + TCP扫码枪)
## 1. 系统通信结构
```text
PLC <--FINS--> C# 上位机 <--TCP--> 扫码枪1
<--TCP--> 扫码枪2
```
* PLC 与上位机:
* 通信协议:OMRON FINS
* 上位机读取 PLC 点位
* 上位机写入 PLC 点位
* 上位机与扫码枪:
* 通信协议:TCP Socket
* 发送触发命令:`T`
* 接收扫码结果字符串
---
# 2. PLC 通信点位定义
## 2.1 PLC -> 上位机(上位机读取)
| 地址 | 名称 | 类型 | 说明 |
| ----- | ------------- | ---- | --------------- |
| D1001 | PcbArrived | Bool | PCB已到位,请求上位机处理 |
| D1002 | PlcReset | Bool | PLC请求上位机清状态/复位 |
| D1003 | PlcAckRelease | Bool | PLC已接收到放行信号(可选) |
预留:
| 地址范围 | 说明 |
| ------------- | ---------------- |
| D1004 ~ D1010 | PLC -> 上位机扩展信号预留 |
---
## 2.2 上位机 -> PLC(上位机写入)
| 地址 | 名称 | 类型 | 说明 |
| ----- | ------------- | ---- | ------------ |
| D1051 | PcBusy | Bool | 上位机正在处理当前PCB |
| D1052 | ReleasePermit | Bool | 放行脉冲信号 |
---
## 2.3 结果寄存器(上位机写入)
| 地址 | 名称 | 类型 | 说明 |
| ----- | ---------- | --- | -------- |
| D1100 | ResultCode | Int | 本次最终结果代码 |
### ResultCode 定义
| 数值 | 含义 |
| -- | ---- |
| 0 | Idle |
| 1 | 处理中 |
| 10 | 正常放行 |
| 20 | NG放行 |
| 90 | 系统故障 |
---
# 3. TCP 扫码枪通信
## 3.1 扫码枪1
### 发送
```text
T
```
### 接收
```text
二维码/条码字符串
```
---
## 3.2 扫码枪2
### 发送
```text
T
```
### 接收
```text
二维码/条码字符串
```
---
# 4. 工序流程图
```mermaid
flowchart TD
A[PLC写入 D1001=PcbArrived=1]
--> B[C#上位机通过FINS读取到位信号]
B --> C[上位机写入 D1051=PcBusy=1]
B --> D[上位机写入 D1100=1 处理中]
D --> E[TCP发送 T 到扫码枪1]
D --> F[TCP发送 T 到扫码枪2]
E --> G[扫码枪1返回扫码结果]
F --> H[扫码枪2返回扫码结果]
G --> I[上位机汇总扫码结果]
H --> I
I --> J{扫码结果判定}
J -->|成功| K[写入 D1100=10 正常放行]
J -->|失败| L[写入 D1100=20 NG放行]
J -->|异常| M[写入 D1100=90 系统故障]
K --> N[写入 D1052=ReleasePermit=1]
L --> N
N --> O[PLC收到放行信号]
O --> P{是否启用确认信号}
P -->|启用| Q[PLC写入 D1003=PlcAckRelease=1]
P -->|不启用| R[进入复位流程]
Q --> R
R --> S[PLC写入 D1002=PlcReset=1]
S --> T[上位机执行复位]
T --> U[写入 D1051=0]
U --> V[写入 D1052=0]
V --> W[写入 D1100=0 Idle]
```