3. EWI系统总体架构设计

EWI(电子作业指导书)系统不是把纸质SOP简单转成网页,而是一套把工艺文件、工位终端、生产数据和权限控制串起来的工程系统。总体架构设计要回答四个问题:系统分成哪几层、每层由哪些模块组成、数据在层与模块之间怎么流动、模块之间用什么接口对接。这四个问题定下来,后续的数据库设计、前端开发和现场部署才有稳定依据。

一、分层架构:五层职责边界

EWI系统推荐采用五层架构,自下而上依次为设备接入层、数据层、服务层、应用层和展示层。分层的核心价值是限定变更影响范围:更换工位终端只影响展示层,调整工艺审批规则只影响服务层,不会牵动全局。

  • 设备接入层:负责与现场硬件打交道,包括工位一体机、扫码枪、PLC、电子看板、打印机。该层把不同厂商、不同协议的设备统一抽象为“可读状态”和“可下发指令”两类能力,向上屏蔽硬件差异。
  • 数据层:存放工艺文件、版本记录、工位配置、操作日志、权限数据。结构化数据用关系库,工艺图纸、视频、PDF等大文件用对象存储,二者通过文件ID关联。
  • 服务层:承载业务逻辑,包括工艺文件管理、版本发布、权限校验、数据采集、消息通知。服务层不直接操作界面,也不直接驱动硬件,只对外提供接口。
  • 应用层:面向角色的功能集合,如工艺员编辑端、主管审批端、产线看板端、管理后台。应用层调用服务层接口,不跨层访问数据层。
  • 展示层:工位终端上真正呈现给操作员的内容,包括步骤卡片、图示、参数输入框、报警提示。展示层要针对触摸屏、强光环境、戴手套操作做适配。
分层不是越多越好。五层适合中大型工厂;若只有一条产线、十几个工位,可把设备接入层并入服务层,减少部署复杂度,但数据层与应用层的边界仍应保留。

二、模块划分:按职责而非按页面

模块划分常见误区是按界面切分,比如“编辑页模块”“看板页模块”,结果业务逻辑散落各处。正确做法是按职责划分,每个模块有明确的输入、输出和归属层。EWI系统可划分为以下核心模块:

模块所属层核心职责关键输出
工艺文件管理服务层文件创建、编辑、附件挂载文件主记录、附件ID
版本与发布服务层版本号生成、审批流转、生效控制已发布版本、生效工位列表
权限与角色服务层角色定义、工位授权、操作鉴权鉴权结果、授权矩阵
终端渲染展示层按工位拉取当前版本并渲染步骤卡片、输入控件
数据采集设备接入层采集扫码、按钮、设备状态带时间戳的事件流
日志与追溯数据层+服务层记录谁在何时看了哪版、填了什么可查询的操作记录

模块之间只允许通过接口通信,禁止一个模块直接读写另一个模块的私有数据表。这条约束在后期排查“为什么工位显示旧版本”这类问题时非常关键。

三、数据流:从工艺员发布到工位呈现

下面这张图描述EWI系统的主数据流:工艺员在编辑端完成文件并提交审批,审批通过后生成发布版本;发布事件写入版本库并推送到消息通道;工位终端订阅自己所属工位的版本变更,拉取最新版本并渲染;操作员的操作与扫码数据反向回流到采集与日志模块,形成追溯闭环。

EWI系统主数据流与接口关系 工艺员编辑端 创建/编辑工艺文件 挂载图纸、视频、参数 审批与发布 版本号生成 生效工位绑定 版本库 已发布版本 + 附件ID 生效工位映射表 消息通道 版本变更事件 按工位订阅 工位终端 拉取当前生效版本 渲染步骤卡片 本地缓存最近版本 操作员 按步骤作业 扫码确认物料/工单 录入关键参数 数据采集与追溯日志 事件:工位号 / 版本号 / 操作员 / 时间戳 / 扫码值 / 录入参数 用途:版本追溯、异常复盘、质量记录 设备接入层 扫码枪 / PLC / 看板 协议适配与状态上报 指令下发 版本下发 操作与采集数据回流

图中正向链路(蓝色)是版本下发:编辑端→审批发布→版本库→消息通道→设备接入层→工位终端→操作员。反向链路(橙色)是数据回流:操作员操作、终端事件、设备状态统一汇入采集与追溯日志。两条链路分离设计,保证即使采集服务短暂不可用,工位仍能凭本地缓存继续显示工艺内容,不会因数据回传失败而停线。

四、接口设计:三类接口与关键约定

EWI系统的接口可分为三类,各自关注点不同:

  1. 业务接口(应用层↔服务层):采用HTTP+JSON,按资源组织。例如获取工位当前版本用 GET /api/stations/{stationId}/active-version,返回版本号、步骤列表和附件地址。约定:所有写操作必须携带操作员身份令牌,服务端据此记录日志。
  2. 事件接口(服务层↔终端/设备):版本发布、工位授权变更等用消息订阅方式推送,避免终端轮询。终端订阅主题按工位号划分,如 ewi/station/A03/version,只接收与自己相关的变更。
  3. 设备接口(设备接入层↔硬件):扫码枪常用USB-HID或串口,PLC常用Modbus TCP或OPC UA。接入层把不同协议统一转换为内部事件格式,向上只暴露“事件类型+工位号+值+时间戳”四个字段。
接口设计中最容易埋隐患的是版本一致性。工位终端拉取版本时,必须同时拿到版本号和内容校验值(如文件哈希)。若只比对版本号,遇到内容被误改但版本号未变的情况,终端会继续显示错误内容。建议在返回体中包含 contentHash,终端本地缓存时一并保存,下次拉取先比对哈希再决定是否重新渲染。

五、技术选型原则

技术选型不应追求“最新最热”,而应围绕现场约束做取舍。EWI系统的选型可遵循四条原则:

  • 现场可用优先:工位终端可能长期运行、网络不稳定、环境有粉尘和油污。前端应选择能在低配一体机上流畅渲染的方案,避免依赖持续联网的重型框架;数据同步要支持断网缓存与恢复后补传。
  • 数据可追溯优先:数据库选型首先看事务能力和审计支持,其次才看扩展性。工艺版本、审批记录、操作日志属于质量追溯证据,不能只存在内存或临时文件中。
  • 接口稳定优先:设备品牌和型号会随产线改造变化,接入层必须做成可替换的适配器。选型时确认目标设备是否提供开放协议文档,避免只能依赖厂商私有SDK。
  • 运维成本优先:工厂IT人力有限,组件越少越好。若团队没有容器运维经验,就不必为了“架构先进”强行上Kubernetes;单机部署加定时备份,往往比复杂集群更可靠。

把上述内容落到一份可执行的架构决策上,可以用下面这张简表记录关键选择与理由,便于后续评审和交接:

决策项选择主要理由
终端渲染方式轻量Web页面 + 本地缓存低配一体机可运行,断网仍可显示
版本下发方式消息订阅 + 启动时全量拉取减少轮询,兼顾实时性与首次加载
设备接入方式适配器模式,按协议分插件更换设备不影响上层业务
日志存储关系库存结构化事件,对象存储存附件便于按工位、版本、时间检索追溯

总体架构设计完成后,应能回答一个检验性问题:当某工位显示内容与最新发布版本不一致时,能否沿着“版本库→消息通道→终端缓存→渲染”这条链路逐段定位?如果每一段都有明确的接口、日志和校验值,架构就是可运维的;如果某一段只能靠“重启试试”,说明该层的接口约定或数据流设计还需要补强。