版本 :V1.1 日期 :2025年5月2日
一、设备协议兼容性设计
1.1 设备接入框架
OPC UA
Modbus RTU
自定义协议
设备
协议类型
UA Server代理
串口转TCP网关
协议解析插件
统一数据标准化层
MQTT Broker集群
1.1.1 协议适配方案
设备类型 适配方案 性能保障措施 新设备 原生OPC UA接入 QoS=1(至少一次送达) 老旧PLC Modbus转OPC UA网关(部署在边缘节点) 数据补发窗口≥15分钟 传感器 MQTT直连+Topic分级管理 心跳包间隔≤30秒 定制设备 开发Lua解析脚本(支持热加载) 脚本沙箱隔离机制
1.1.2 断网续传实现
class EdgeBuffer : def __init__ ( self) : self. cache = CircularBuffer( size= 100MB) self. flush_threshold = 80 % def handle_data ( self, data) : if network_status( ) == ONLINE: send_to_cloud( data) else : self. cache. write( data) if self. cache. usage > self. flush_threshold: compress_and_save_to_disk( )
1.2 兼容性验证方案
测试用例设计
测试场景 预期结果 验证指标 同时接入OPC UA/Modbus设备 数据无混淆丢失 丢包率<0.1% 网关断电重启 自动续传最后断点数据 数据连续性100% 500设备突发高频上报 边缘节点CPU<70% 处理延迟≤2秒(P99)
测试工具链
协议模拟器 :Prosys OPC Simulation Server(模拟OPC UA设备)压力测试 :JMeter + MQTT Load Generator(模拟10,000+设备连接)异常注入 :Chaos Mesh(网络中断/高延迟模拟)
二、核心服务详细设计
2.1 工单服务性能优化
2.1.1 工单状态机设计
创建工单
排产完成
设备就绪
人工干预
继续执行
全部报工
质量审核
Created
Scheduled
Running
Paused
Completed
Closed
2.1.2 高并发处理机制
public class WorkOrderService { @Autowired private KafkaTemplate < String , String > kafkaTemplate; @Async ( "workOrderExecutor" ) public void processOrder ( WorkOrder order) { journalLogRepository. save ( order. toJournal ( ) ) ; kafkaTemplate. send ( "workorder_topic" , order. serialize ( ) ) . addCallback ( this :: handleSuccess , this :: handleRetry ) ; }
}
2.2 实时计算引擎
2.2.1 Flink数据处理流水线
实时报警
OEE计算
持久化
Kafka Source
数据清洗
数据路由
CEP复杂事件处理
滚动窗口聚合
TimescaleDB Sink
2.2.2 窗口优化配置
execution.checkpointing.interval : 10s
state.backend : rocksdb
table.exec.window.allow-retract : true
oee_calculation : window_size : 5m allowed_lateness : 1m parallelism : 8
2.3 性能基线验证方案
2.3.1 测试环境
组件 配置 网络条件 被测服务 4节点(8C16G) 万兆局域网 压力源 10台负载生成器(32C64G) 模拟车间网络抖动 监控工具 Prometheus+Grafana 采样间隔1秒
2.3.2 基准测试用例
场景 负载规模 通过标准 工单创建峰值 500工单/秒持续5分钟 平均响应<800ms P99<2s 实时数据吞吐 10万数据点/秒 处理延迟≤1.5s(端到端) 复杂查询响应 并发100个聚合查询 95%请求<3s
2.3.3 性能调优路径
数据库优化 : TimescaleDB连续聚合物化视图 PostgreSQL分区表(按时间范围) 缓存策略 :@Cacheable ( value = "workOrderCache" , key = "#orderId" , cacheManager = "caffeineCacheManager" )
public WorkOrder getOrder ( String orderId) {
}
caffeine. spec= maximumSize= 10_000 , expireAfterWrite= 10 m
JVM调优 : -XX:+UseG1GC -Xms8g -Xmx8g -XX:MaxGCPauseMillis=200
三、详细接口定义
3.1 设备控制接口
syntax = "proto3";message DeviceCommand {string device_id = 1;enum CommandType {START = 0;STOP = 1;PAUSE = 2;}CommandType cmd = 2;map<string, string> params = 3; // 扩展参数
}service DeviceControlService {rpc ExecuteCommand(DeviceCommand) returns (CommandAck);
}
3.2 数据查询接口
type Query {workOrder(id: ID!): WorkOrderequipmentOEE(equipmentId: ID!, start: DateTime!, end: DateTime!): OEE
}type WorkOrder {id: ID!status: Status!progress: Float!qualityStats: QualityData!
}
四、实施计划
4.1 开发里程碑
阶段 周期 交付物 验证重点 协议适配层 6周 设备SDK+模拟测试平台 98%设备类型覆盖率 核心服务 8周 工单/质量/设备微服务 通过性能基线测试 前端应用 4周 车间看板+移动端APP 用户操作体验验收
4.2 测试策略
测试类型 工具/方法 覆盖率目标 协议兼容性 设备矩阵测试法 100%协议类型 性能测试 Locust+JMeter 满足SLA 120% 故障恢复 Chaos Engineering 核心服务RTO<5m
五、风险应对
风险等级 风险项 应急方案 高 OPC UA网关性能瓶颈 预置横向扩展方案(Docker集群化) 中 工单状态不一致 实现双向同步补偿事务 低 移动端离线支持不足 引入SQLite本地存储+冲突解决算法
下一步行动建议 :
搭建设备仿真测试平台,验证至少3种典型设备协议场景 对工单服务进行压力测试,逐步提升负载至设计容量的150% 制定性能基线验收checklist,明确各指标测量方法论
该详细设计通过以下创新点保障设备兼容性与性能:
协议插件化架构 :支持在不重启服务情况下动态加载新协议解析器分级背压控制 :在数据管道中实现动态流量整形,防止过载混合事务模型 :结合本地事务与Saga模式,平衡一致性与性能