19 KiB
19 KiB
北京电力智能产线系统 — 需求规格与开发规划
本文档综合《项目说明.md》《头脑风暴.md》及甲方(孙工/韩总)通话录音纪要整理,作为 5 个软件项目的开发总纲。逻辑闭环,尽量不遗漏文档/录音中提到的需求点。
一、项目背景
为北京电力设备总厂建设一条自动化智能产线(传送带流水线,12 道工序)。软件侧规划:
- 精确对接西门子 S7-1214 PLC:下发工序组合(如
135→ 只做 1、3、5 序;234→ 做 2、3、4 序)。 - 对接海康 AGV 调度系统(RCS-2000):指挥 2 台 AGV 在 21 个接驳台之间搬运物料。
- 库房记账与追溯(WMS):管到区域 + 数量 / 序列号,无智能立库、无传感器货架坐标。
- 产线控制 (MES) + 库房 (WMS) + 看板 (Dashboard) + 工位终端 + 库房客户端。
结论性判断:无需独立 MIS 系统。甲方 5 个系统,我方开发 3 类后台(MES/WMS/工位终端)与 2 类前端(看板/库房客户端),AGV 调度系统与拧紧工具系统为外部既有系统(仅对接)。
业务可追溯:入库、出库、加工、页面操作、触发agv ,等等,都需要记录清楚,在工件、工单、审核、等场景标记清楚。所以,登录权限必须完善、菜单权限,token失效时间要短。
二、业务全貌与核心流程
2.1 生产模式
- 工单驱动、按日批量备料:一个合同 = 一个工单(如 100 台设备),按日排产(今天 20 台)。开工前用 AGV 将当日所需全部物料(芯片=器件、螺丝=结构件、屏幕等)一次性配送到各工位(新建工单时,可以选择都是哪个工位送料,分别是什么料。仓库管理后台可以把多个料打包成一个概念,即套件。工单支持混合选择【工件(独立物料)】与【套件(虚拟物料组合)】),软件层面中途没有停线补料逻辑(返修/报废才走补料申请,主管审批)。
- 出库强约束:累计出库 ≤ 工单 BOM 需求量,超发需补料流程。
2.2 两类物料差异化管理
| 类型 | 例 | 管理粒度 | 入库方式 | 出库方式 |
|---|---|---|---|---|
| 精密件 | 芯片/器件/成品 | 序列号 SN,逐件 | 扫码逐件录入,单件追溯,支持连续扫码。(先选择模版,再扫描,否则大量其他信息需要填入)。可人工修改工件,再保存提交。 | 同入库 |
| 结构件 | 机加工件/螺丝 | 图号+批次 | 按批次/图号录入,支持 Excel 批量导入,分多批到货 | 同入库 |
- 物料总状态:原材料 / 半成品(记录已完成工序)/ 成品。
- 检验三状态:未检 → 合格 / 不合格,需批量翻转;分来料检、过程检、成品检;部分检验项需录实测值。
- 为保证通用性,两种物料,都用同样的表结构,结构件不写 sn即可,也可以手动选择物料类型。
- 物料,必须有 code唯一码(物料模版里面有,新建物料时必须选择物料模版,也是物料种类,比例螺丝、剪刀,等分类),真实名称、简称、描述、等等,包含不限于上面字段。
2.3 完整业务流程(闭环)
1. 库房入库 WMS 记账(精密件逐扫 SN / 结构件 Excel 批次)。为保证一致性,不做特殊区分,都可以批量、或者扫码、或者手动输入sn。功能越全越好,仅仅类型区分,和sn码有或无。
2. 创建工单 MES:工单 + BOM + 日排产
3. 锁库存 MES 调 WMS:按 BOM 校验并锁定库存(批次/SN)
4. 生成备料单 系统按日排产自动算料 → 备料单 。
5. AGV 配送 MES 调海康 RCS:库房接驳台 DOCK21 → 产线 DOCK01~20
6. 到货上料 主线扫码枪识别托盘 → 分流决策 → 送往目标支线
7. 支线装配 12 工位,拧紧枪采集数据,工位终端实时显示
8. 工序报工 支线扫码枪扫码报工 → MES 更新工单进度
9. 完工 全部工序完成 → 半成品/成品回库 WMS
10. 追溯/打印 流程卡:工序操作人/检验人/检验结果汇总 PDF
补充
# 整体业务方案 补充
1、日排产:可编排当日以及未来多天的生产计划,作为仓库的前瞻参考信息;日排产仅做计划预告,**不直接触发出库、不下发领料指令**。
2、MES向下游WMS下发生产工单,工单为仓库出库唯一挂靠载体;工单携带产品、BOM、物料总需求量。
3、工单只管控物料总的需求数量,**不管理出库节奏,不做拉动式叫料控制**;每次出库何时出、出多少、分几趟AGV送货,决策权交由仓库/WMS自主决定。
4、仓库配送拥有两种自由选择:可早上一次性将工单所需物料全部出库配送完毕;也可拆分为多批次,分次出库、分批AGV送货。
5、WMS实时维护工单物料台账:物料总需求数量、累计已出库数量、剩余待出库数量;系统强制校验,累计出库数量不可超过工单总需求量;当累计出库等于总需求,工单领料完结,禁止再出库。
6、后期如需升级为MES拉动叫料补料模式,现有工单‑出库架构可无缝叠加,无需推翻改造。
三、五个项目职责、技术栈与页面
项目构成以《项目说明.md》为准,共 5 个,均可单独编译、单独部署。
项目 A:bj_power_dashboard(看板,H5 前端)
- 技术栈:Vue/React + ECharts + SSE。只展示,不读写业务。数据来源于项目 B(MES),经 Redis 缓存。
- 部署:厂房大门口大显示器(联想 ECI-521 主机 + 100 吋屏)。
- 页面:
- 生产数据看板(产线运行状态、产量、进度、合格率)
- 仓储数据看板(库存总量、物料种类、出入库动态)
- 物流设备看板(AGV 位置/状态/电量/任务执行)
- 异常报警(设备故障、物料短缺、AGV 异常)
- 三维产线模型(可选,展示各工位/AGV 状态,数据须准确)【录音:面子+里子】
项目 B:bj_power_mes(MES 产线控制,Go + Vue)
- 技术栈:Go 后端(go-zero 或 gin)+ Vue 前端;前端需自适应 平板/iPad/手机/台式机。
- 部署:库房/业务服务器(联想 ECI-521),
MySQL(MES 独立库)。 - 职责:工单/排产/BOM/备料、调 WMS 锁库扣库、调海康 RCS 下发 AGV、写 PLC 工序码+读完成信号、收拧紧数据、工序扫码报工、半成品流转、追溯、看板缓存接口。
- 页面:
- 登录/个人中心(自适应)
- 工单管理(创建/查询/排产)/ BOM / 备料单
- 工位监控(12 工位状态实时)
- PLC / AGV 状态页
- 半成品流转
- 工序扫码报工记录 / 进度
- 拧紧数据查询 / 追溯报表 / 流程卡生成打印
- 看板数据接口(Redis 缓存,供项目 A)
项目 C:bj_power_wms(WMS 仓库,纯 Go,无前端)
- 技术栈:Go 后端。不包含前端代码。
- 部署:库房/业务服务器,
MySQL(WMS 独立库)。 - 职责:物料/批次/SN、出入库、库存锁定/扣减、检验、半成品/成品、包装追溯;对外提供 API。
- 无页面(前端由项目 E 提供)。
项目 D:bj_power_workstation(12 个工位终端,Go + Vue)
- 技术栈:Go + Vue Web 应用(独立项目,因为有扫码枪和拧紧枪)。运行于 12 台触控一体机(浏览器访问)。
- 数据来源:项目 B(MES) API。本地 SQLite 缓存待上报的拧紧数据,点"完成"才上报 MES,失败保留重试(断点续传);不存储历史数据,历史数据来自 MES。
- 页面/功能:
- 登录(账号自动记录操作人)
- 当前工单 + 当前工序导航(完成一步点"下一步")
- 工艺文件 PDF 预览(预缓存,工位配置"工序文件"上传)
- 拧紧结果实时显示(扭矩/角度/OK·NG,进度如 8/10 颗,NG 红色闪烁)
- 扫码报工(主线/支线)
- 完成上报 / 返修重置(记录历史操作日志)/ 暂存退回库房(半成品)
项目 E:bj_power_wms_client(库房客户端,Go + Vue)
- 技术栈:Go + Vue Web 应用(独立项目,因为有扫码枪)。
- 部署:库房 2 台台式机(各一显示屏,分出入库),浏览器输入 WMS(项目 C) 地址。
- 页面/功能:
- 登录
- 入库:精密件逐件扫码(连续扫码、实时已扫数量)、结构件 Excel 批量导入 / 手动单条,多批到货追加
- 出库:按备料单/工单领料、扫码复核(校验物料+批次)、先进先出、异常出库实时报警、自动扣减库存
- 库存查询、盘点(动态/静态/抽盘、扫码快速盘点)
- 质量检验:未检/合格/不合格管理、批量翻转、实测值录入
- 半成品/成品入库、包装绑定(箱号 ↔ SN)
四、系统交互与 API 契约(跨项目)
4.1 拓扑
工位终端D ──HTTP──► MES(B) API ──┬──► [MES库 MySQL]
PAD ───浏览器──► MES(B) 前端 ├──► Redis(看板缓存)
看板A ───SSE/HTTP──► MES 读缓存 │
库房客户端E ──HTTP──► WMS(C) API ─┴──► [WMS库 MySQL]
WMS(C) ◄══API══► MES(B) (独立库,联动)
外部:海康RCS(AGV)、西门子PLC、丹尼科尔拧紧工具
4.2 关键 API(B ↔ C,独立数据库通过 API 互通)
| 方向 | 接口 | 说明 |
|---|---|---|
| C 提供 | POST /api/stock/lock |
工单锁定库存(批次/SN),带 order_no |
| C 提供 | POST /api/stock/deduct |
出库扣减,order_no+qty,WMS 校验累计≤BOM |
| C 提供 | GET /api/stock/query |
库存查询(MES 查料) |
| C 提供 | POST /api/semi/inbound / outbound |
半成品入库/出库,携带"已完成工序" |
| B 提供 | GET /api/order/query |
工单/工序进度(WMS 取工单) |
4.3 对接外部
- 海康 RCS:HTTP,HMAC-SHA256 签名 +
X-LR-REQUEST-ID防重放。封装独立HikRcsClient:SubmitTask(fromDock,toDock,carrier)、QueryTask。DOCK01~20 产线,DOCK21 库房;路径规划 RCS 自理。 - 西门子 PLC (S7-1214):用整型寄存器写工序码(如 MW100=135),读完成信号位(M100.0);未收到完成信号不下发下一条。
- 拧紧工具(丹尼科尔):实时采集扭矩/角度/时间/结果/操作人/工单号,异常报警;数据对接 MES 质量追溯。
4.4 看板缓存方案(已采纳)
- 看板读 Redis,不直查 MES 业务库。TTL=60s;业务变更主动刷新/删 key,未刷新也会过期回源 DB 重查。
- 防击穿:同一 key 同一时刻仅允许一个查询打到 DB(SETNX 加锁),其他等待后重试读缓存。
- 看板局部刷新用 SSE 推送;工位/库房客户端走普通 HTTP(强一致性)。
4.5 拧紧数据两段式(已采纳)
- 工位终端 D:实时显示 + SQLite 缓存每把数据 → 点"完成"才上报 MES → 成功后标记同步;失败保留本地重试。历史数据只存 MES。
4.6 半成品流转(已采纳)
- 工位"暂存/退回库房" → D 上报 MES 记录已完成工序 → MES 调 WMS 半成品入库 → 重上线 WMS 出库 → MES 从下一工序继续。
五、数据模型(核心表,逻辑闭环)
5.1 WMS(C) 库
| 表 | 关键字段 | 说明 |
|---|---|---|
material |
code,name,spec,unit,manage_mode(1批次/2序列号),is_batch_managed,is_serial_managed | 物料档案 |
zone |
zone_code,zone_name | 待检/合格/不合格/退货区 |
inventory_batch |
material_code,batch_no,quantity,locked_qty,production_date,supplier,quality_status,zone_code | 结构件批次台账 |
serial_number |
sn_code,material_code,batch_no,status(在库/锁定/出库/使用/报废),current_zone,last_in/out | 精密件/成品单件 |
inventory_lock |
batch_id,order_no,locked_qty,status,expired_at | 批量锁定、防超卖 |
inbound_order / inbound_detail |
类型、批次/SN、数量、操作人、台账 | 入库(含半成品/成品) |
outbound_order / outbound_detail |
order_no,qty,批次/SN、复核人 | 出库,关联工单,BOM 校验 |
inspection_record |
target(批次/SN),status(未检/合格/不合格),inspector,time,result_value | 来料/过程/成品检 |
semi_finished |
sn,completed_process,quantity,zone | 半成品库存 |
package_box |
box_no,sn_list | 包装箱 ↔ SN 关联 |
5.2 MES(B) 库
| 表 | 关键字段 | 说明 |
|---|---|---|
work_order |
order_no,product_code,total_qty,daily_qty,plan_start,status | 工单 |
work_order_bom |
product_code,material_code,unit_qty,loss_rate | BOM |
daily_plan |
order_no,plan_date,qty | 日排产 |
material_request |
order_no,material_code,qty,status,target_dock | 备料单 |
dock_station |
dock_code(DOCK01~21),dock_type | 21 接驳台 |
plan_process / work_order_process |
order_no,process_code(135),status | 工序 / 流转 |
torque_result |
sn,strain,angle,result,operator,work_order,time | 拧紧数据 |
scan_record |
station,sn,order_no,type,operator,time | 扫码报工 |
association_trace |
sn → 工序/检验/物料批次 关联链 | 追溯 |
| RBAC | user/role/permission/dept | 登录与权限 |
字段以开发时逐表 DDL 为准,此表为设计基线。
六、设备/硬件部署对应
| 设备 | 数量 | 运行 | 数据来源 |
|---|---|---|---|
| 库房台式机 | 2 | 项目 E(出入库) | WMS(C) |
| 看板大屏 + 主机 | 1 | 项目 A | MES 缓存 |
| 工位触控一体机 | 12 | 项目 D | MES(B) |
| PAD(iData P1) | 3 | 浏览器访问 B/C 前端 | MES/WMS |
| WMS 显示器(55 吋) | 1 | 展示库存总览 | WMS |
| 扫码枪 | 主线2+支线12+库房 | / | 上报 MES/WMS |
| AGV | 2 | 海康 RCS(对接) | / |
| PLC | 1 | 西门子 | MES 写工序 |
| 拧紧工具 | / | 丹尼科尔(对接) | MES 收数据 |
七、分阶段开发路线(先怎么开始,再怎么开始)
阶段 0 — 工程地基
- 建 5 个工程骨架(Go 后端 + Vue 前端),改 module/包名,各自
go build/pnpm build可运行;统一配置、日志、鉴权骨架。
阶段 1 — C WMS 核心 + E 库房客户端
- WMS 建表(物料/批次/SN/锁定/检验)→ 入库(扫码+Excel)→ 出库(锁定→扣减→BOM 校验)→ 检验批量翻转 → 追溯查询。
- E 库房客户端界面对接,最快出可演示成果。
阶段 2 — B MES 工单/排产/备料 + 联动
- MES 建表 → 工单+BOM+日排产 → 备料单生成 → 调 WMS 查库/锁库/扣库;前端自适应页面(web/pad)。
阶段 3 — 外部对接
- 海康 RCS 客户端(签名+下发+查状态)→ AGV 闭环;PLC 工序码下发+完成信号轮询;丹尼科尔拧紧工具对接。
阶段 4 — D 工位终端 + E 深化
- D:工序导航/工艺PDF/拧紧实时/SQLite缓存/完成上报/扫码报工/暂存;E:出库复核、盘点、批量翻转、包装绑定。
阶段 5 — A 看板 + SSE + Redis
- 看板页 + MES dashboard 缓存接口(Redis1 分钟+防击穿)+ SSE 局部刷新 + 3D 模型(可选)。
阶段 6 — 闭环与验收
- 全链路联调(创建工单→备料→AGV→装配→拧紧→报工→完工入库)、流程卡打印、半成品流转、容错/断点续传、数据备份(保留≥1 年)。
八、验收相关指标(软件需支撑,不越硬件职责)
- 扫码识别率一次成功率 ≥92%(记录扫码成功/失败,为验收提供数据证据)。
- 看板刷新延迟 ≤4s(99%),WMS↔MES 同步 ≤2s,AGV 任务成功率 ≥99%(软件侧记录与重试)。
- 数据保留 ≥1 年,每日自动备份。
- 知识产权归甲方,支持二次开发(模块解耦、独立升级)。
九、待甲方确认清单(遗留)
- 结构件批次号规则:甲方定义 or 系统自动生成? 答:自动生产,按日期 + 自增数量
- 拧紧工具对接数据字段与协议(丹尼科尔是否提供 API)。 答:暂放
- AGV 位置/电量实时推送 or 轮询。 答:见文档:AGV海康.md
- PAD 网络与离线需求。 答:什么需求,离线不可工作,因为要登录授权
- 看板 3D 模型精度需求。 答:暂放
已采纳的甲方明确结论(来自对话/录音): ① 库房 2 台台式机 ✅ ② 看板走 Redis、1 分钟过期、防击穿 ✅ ③ WMS 与 MES 独立库、API 互通 ✅ ④ 拧紧数据本地缓存、点完成上报 MES ✅ ⑤ 半成品流转记录已完成工序 ✅