1. 项目背景与核心需求
在注塑生产线上,数据追溯系统就像给机器装上了"黑匣子"。去年接手某汽车配件厂的MES改造项目时,他们最头疼的就是注塑工艺参数丢失问题——当出现批量不良品时,往往要花两三天人工排查生产记录。这套基于C#开发的上位机系统,核心要解决三个痛点:
- 多源数据实时采集:同时对接西门子S7-1500 PLC和注塑机本体,前者控制外围设备(如机械手、输送带),后者提供模具温度、注射压力等核心参数
- 高并发数据存储:单台注塑机每3秒产生一个包含50+参数的数据包,20台设备同时运行时的写入压力极大
- 毫秒级响应界面:操作员需要实时监控压力曲线,任何卡顿都可能导致错过异常情况
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 通信架构设计
2.1 双OPC协议混搭方案
面对PLC和注塑机不同的通信协议,我们采用了"OPC DA+OPC UA"的混合架构:
csharp复制// OPC DA连接西门子PLC
var daConnector = new OpcDaConnector("S7.OPCDAServer.1");
daConnector.AddGroup("InjectionData", 200,
new[] { "DB101.DBD0", "DB101.DBD4", "DB101.DBD8" });
// OPC UA连接注塑机
var uaClient = new OpcUaClient("opc.tcp://192.168.1.100:4840");
await uaClient.ConnectAsync();
var moldTemp = uaClient.ReadNode("ns=3;s=Mold.Temperature");
协议选型考量:
- OPC DA:西门子PLC原生支持,读取速度更快(实测比UA快30ms),但存在两点局限:
- 仅支持Windows平台
- 数据块偏移量需要+4字节(S7-1500特性)
- OPC UA:跨平台优势明显,注塑机厂商普遍提供UA接口,但需要处理异步通信
关键细节:DA通信使用SiemensDAAuto.dll封装时,务必设置
Instance.ByteOffset = 4,否则读取的DB块数据会错位。
