项目背景
客户运营一座高度自动化的精密零部件生产车间,产线包含多台六轴机械臂、传送带系统、AGV 搬运车及在线检测设备,均由西门子 S7-1500 PLC 统一控制。原有 SCADA 系统仅提供二维组态画面,操作人员难以直观感知设备的空间位置和运动姿态。在推进无人化车间的过程中,客户需要一套能够远程查看设备实时状态并进行操控的三维上位机系统,使管理人员在办公室甚至异地即可掌握车间全貌。
技术挑战
项目面临三个核心难点。首先,36 台异构设备的三维模型需要精确还原机械结构与运动副关系,尤其是六轴机械臂的关节联动;其次,PLC 寄存器数据到三维模型姿态的实时映射需要极低的延迟;最后,远程控制指令的下发必须具备完善的安全校验与权限管控机制,确保误操作不会造成设备损坏。
技术方案
整体架构采用"边缘采集层 → 数据服务层 → 三维展示层"的三层结构。边缘层通过 OPC-UA 网关采集 PLC 数据,服务层进行协议转换与业务逻辑处理,展示层在浏览器端渲染三维场景。
PLC 数据采集方面,使用 OPC-UA 客户端,以订阅模式监听 PLC 中 1200+ 个数据点位,包括设备运行状态、关节角度、速度、温度、故障码等。采集频率根据数据类型差异化设置:运动类数据 100ms 一次,状态类数据 500ms 一次,温度等缓变量 5s 一次。采集数据经 Spring Boot 服务写入 Redis 实时缓存,同时通过 WebSocket 向前端推送。
三维模型与设备联动是系统的核心。设备的三维模型在 Blender 中按 1:1 比例建模,导出为 glTF 格式后在 Three.js 中加载。每个模型的可动关节预先绑定骨骼或变换节点,前端接收到 PLC 数据后,通过映射表将寄存器值换算为关节旋转角度或位移量,驱动模型实时运动。例如,六轴机械臂的 6 个关节角度分别对应 PLC 中的 DB100.DBD0 到 DB100.DBD20 六个双字寄存器,经过单位换算后直接赋值给模型骨骼节点的 rotation 属性。
远程控制功能设计了三级安全机制:操作员身份认证 → 指令参数范围校验 → PLC 侧硬件互锁确认。控制指令从前端发出后,经 Spring Boot 服务进行权限与参数合法性校验,校验通过后通过 OPC-UA 写入 PLC 对应寄存器,PLC 侧的安全程序进行最终的互锁判定后执行。所有操控行为全程日志记录,支持操作回溯与审计。
功能亮点
- 车间全景漫游:1:1 还原整条产线布局,支持自由视角浏览,点击任意设备进入详情视图查看实时参数
- 设备状态着色:运行中(绿色)、待机(蓝色)、告警(橙色)、故障(红色)四色直觉映射,一眼识别车间状态
- 机械臂姿态同步:6 个关节角度实时映射到三维模型,动画插值确保视觉流畅,延迟 < 50ms
- 远程启停与调参:在三维场景中选中设备后弹出控制面板,可执行启动、停止、速度调整、复位等操作
- 历史回放:选择时间段后回放设备的历史运动轨迹与状态变化,辅助故障定位与工艺分析
项目成果
系统上线后,客户实现了真正意义上的无人值守产线运行。管理人员通过浏览器即可实时查看车间所有设备的三维状态,无需到现场巡检。异常告警与远程处置能力将故障平均响应时间从原来的 15 分钟缩短至 3 秒内弹窗告警 + 1 分钟内远程干预。系统连续运行 8 个月,累计远程处理设备异常 230+ 次,无一次因远程操控导致的安全事故。
