Loading

过站防呆系统产品设计文档

过站防呆系统产品设计文档

1. 产品概述

1.1 产品定位

分布式产线数据采集与过站防呆系统,支持多线并行产线的灵活编排与实时防错控制。

1.2 核心能力

  • 产线编排:可视化配置产线结构、工序关系、并行/汇合逻辑
  • 过站防呆:扫码/设备触发时实时校验产品流向正确性
  • 数据采集:串口/网口多协议设备数据解析与上报
  • 分布式部署:服务端统一管控,工控机边缘执行

2. 系统架构

2.1 部署架构

┌─────────────────────────────────────────────────────────────┐
│                         服务端                                │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   产线编排    │  │   过站防呆    │  │   数据汇总    │      │
│  │   工序管理    │  │   流向校验    │  │   报表分析    │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘
                              │
           ┌──────────────────┼──────────────────┐
           │                  │                  │
     ┌─────▼─────┐      ┌─────▼─────┐      ┌─────▼─────┐
     │  工控机-1  │      │  工控机-2  │      │  工控机-N  │
     │ 扫码枪×2  │      │ 拧紧机    │      │ 检漏机    │
     │ 网口/TCP  │      │ 串口×2   │      │ 串口     │
     └───────────┘      └───────────┘      └───────────┘

2.2 职责划分

层级 核心职责 数据存储
服务端 产线/工序编排、防错规则、全局状态、数据分析 完整数据库
工控机 设备对接、本地缓存、断网续传、执行上报 本工序数据+离线队列

3. 核心功能模块

3.1 产线编排模块(服务端)

3.1.1 产线结构定义

  • 工序节点:唯一标识、名称、类型(扫码/设备/合并)
  • 流向关系:前序/后继工序,支持多对多
  • 并行分组:定义哪些工序属于同一线路分支

3.1.2 示例产线配置

产线A:
  分支1: OP01-1 → OP02-1 → OP03-1 ─┐
                                   ├→ OP04 → OP05
  分支2: OP01-2 → OP02-2 → OP03-2 ─┘
                                   
  分支1: OP06-1 ─┐
                ├→ OP07 → OP09 → OP10
  分支2: OP06-2 ─┘

3.1.3 工控机绑定配置

工控机ID 绑定工序 接入方式 端口配置
IPC-001 OP01-1, OP01-2 网口/TCP 9001→OP01-1, 9002→OP01-2
IPC-002 OP06-1 串口 COM1→拧紧机A, COM2→拧紧机B

3.2 过站防呆模块

3.2.1 防错规则

  1. 是否该来:产品当前状态是否允许进入此工序
  2. 从哪来:是否从正确的上道工序流转而来
  3. 设备合格:设备检测数据是否满足通过标准

3.2.2 校验流程

扫码/设备触发
     │
     ▼
┌─────────────┐
│ 读取产品SN   │
└─────────────┘
     │
     ▼
┌─────────────┐     否    ┌─────────┐
│ 查询产品状态  │────────→│ 拒绝过站 │
│ 校验工序合法性 │          │ 报警提示 │
└─────────────┘          └─────────┘
     │是
     ▼
┌─────────────┐     否    ┌─────────┐
│ 校验上道工序  │────────→│ 拒绝过站 │
│ 是否已完成   │          │ 提示错站 │
└─────────────┘          └─────────┘
     │是
     ▼
┌─────────────┐     否    ┌─────────┐
│ 校验设备数据  │────────→│ 拒绝过站 │
│ 是否合格    │          │ 提示NG  │
└─────────────┘          └─────────┘
     │是
     ▼
┌─────────────┐
│ 更新产品状态  │
│ 记录过站日志  │
│ 放行/控制信号 │
└─────────────┘

3.3 数据采集模块(工控机端)

3.3.1 接入方式支持

接入方式 适用场景 配置维度
网口/TCP 多工序扫码枪 端口→工序一对一绑定
串口 单机设备(拧紧机/检漏机/压装机) 串口→设备一对一绑定

3.3.2 串口协议解析配置

配置结构(每串口独立)

serial_config:
  port: "COM1"
  baud_rate: 9600
  data_bits: 8
  stop_bits: 1
  parity: "N"
  
  # 帧结构
  frame:
    type: "fixed_length"  # fixed_length / delimiter
    length: 20            # 固定长度字节数
    # delimiter: "\r\n"   # 分隔符方式
  
  # 字段定义(位域解析)
  fields:
    - name: "screw_id"
      start_bit: 0
      length: 4
      type: "int"
      desc: "螺丝编号"
    
    - name: "result"
      start_bit: 4
      length: 1
      type: "bool"
      desc: "OK/NG"
    
    - name: "torque"
      start_bit: 5
      length: 8
      type: "float"
      scale: 0.01
      desc: "扭矩值"

3.3.3 多记录处理

  • 单串口连续发送多记录(如多螺丝拧紧结果)
  • 按固定记录长度切分流式数据
  • 通过字段值(如螺丝编号)区分不同点位

3.4 数据同步模块

3.4.1 同步策略

网络状态 处理方式
在线 实时上报,服务端即时校验
离线 本地队列缓存,恢复后批量续传

3.4.2 断网续传机制

  • 本地SQLite存储待同步记录
  • 定时检测网络恢复
  • 按时间顺序批量上报
  • 服务端幂等处理,避免重复

4. 数据模型

4.1 核心实体

产品 (Product)

字段 类型 说明
sn string 产品序列号(唯一)
model string 产品型号
status enum 待生产/生产中/已完成/异常
current_op string 当前所在工序
create_time datetime 创建时间
complete_time datetime 完成时间

工序 (Operation)

字段 类型 说明
id string 工序唯一标识
name string 工序名称
type enum 扫码/设备/合并
prev_ops []string 前序工序ID列表
next_ops []string 后继工序ID列表
line_group string 所属产线分组

过站记录 (TraceRecord)

字段 类型 说明
id string 记录ID
product_sn string 产品SN
operation_id string 工序ID
station_id string 工位/工控机ID
result enum 通过/拒绝
reject_reason string 拒绝原因
device_data json 设备采集数据
timestamp datetime 过站时间

5. 技术方案

5.1 技术栈

层级 技术选型
服务端 Kratos v2.9.2 + Go 1.22 + gRPC
工控机 Go + 串口库(go.bug.st/serial)
数据库 PostgreSQL / MySQL
缓存 Redis(可选)
消息队列 内置队列 / NATS(可选)

5.2 项目结构

Poka-Yoke/
├── api/                    # API定义(Protobuf)
│   ├── server/v1/         # 服务端API
│   └── agent/v1/          # 工控机API
├── cmd/
│   ├── server/            # 服务端入口
│   └── agent/             # 工控机入口
├── internal/
│   ├── server/            # 服务端实现
│   │   ├── biz/          # 业务逻辑(编排/防呆)
│   │   ├── data/         # 数据访问
│   │   └── service/      # 服务接口
│   └── agent/             # 工控机实现
│       ├── device/       # 设备对接
│       ├── sync/         # 数据同步
│       └── config/       # 本地配置
├── configs/               # 配置文件
└── docs/                  # 文档

6. 接口设计

6.1 服务端接口

产线管理

  • POST /v1/production-lines - 创建产线
  • GET /v1/production-lines/{id} - 获取产线详情
  • PUT /v1/production-lines/{id} - 更新产线配置

过站校验

  • POST /v1/trace/validate - 过站防呆校验
    {
      "product_sn": "SN123456",
      "operation_id": "OP04",
      "station_id": "IPC-001",
      "device_data": {...}
    }
    

数据上报

  • POST /v1/trace/records - 批量上报过站记录

6.2 工控机接口

配置同步

  • GET /v1/agent/config - 拉取工控机绑定配置

心跳与状态

  • POST /v1/agent/heartbeat - 心跳上报

7. 部署方案

7.1 服务端部署

# Docker部署
docker build -t poka-yoke-server .
docker run -d \
  -p 8000:8000 \
  -p 9000:9000 \
  -v /path/to/configs:/data/conf \
  poka-yoke-server

7.2 工控机部署

  • 独立可执行程序
  • 本地配置文件(config.yaml)
  • 开机自启服务

8. 迭代规划

Phase 1: 基础框架

Phase 2: 核心功能

Phase 3: 设备对接

Phase 4: 完善优化

posted @ 2026-02-25 14:02  老卫同学  阅读(2)  评论(0)    收藏  举报