前阵子有个做自动化集成的老朋友问我:现在到处都在讲 AI Agent,这东西跟我们厂里天天在跑的 OPC 服务器到底能有什么关系?他手上有十几个项目的 PLC、DCS、仪表数据要往上送,WINCC 里配了一堆 OPC 通道,干活极其繁琐,听别人说“以后靠 Agent 就能自己搞定”,又觉得像在说科幻片。
这问题让我琢磨了很久。OPC 是工业数据互联的老底子,Agent 是当下最热的 AI 执行范式,Open Person Company 则是一个听起来更超前、但正在悄悄成形的组织概念。三者放在一起,表面上风马牛不相及,实际上有一条很清晰的逻辑线:OPC 解决了设备和系统之间“互相听不懂”的问题,Agent 解决了系统和人之间“只会执行不会判断”的问题,而 Open Person Company 要解决的是单个人如何具备“企业级交付能力”的问题。 这三层问题,本质上是同一件事在不同尺度上的展开。
这篇文章我就从自己这些年做工业数据项目的实际经验出发,把这条线彻底拆开讲清楚。不管你是在工厂里管信息化,还是在做工业软件创业,或者只是单纯对“个人公司”这个概念感兴趣,应该都能从中找到一点能拿去用的东西。
1. OPC 平台不是“协议插件”,而是工业数据的操作系统
很多人一提 OPC,第一反应是“哦,一个工业通信协议”。这个理解不能说错,但远远不够。如果只把它当成协议,你会发现后面所有关于“企业级平台”和“Agent 改造”的讨论都立不住。
1.1 OPC DA 与 OPC UA:为什么我们最终抛弃了 COM/DCOM
先说点历史。OPC 最早的标准是 OPC DA(Data Access),它基于 Windows 的 COM/DCOM 技术。在老一辈工程师的记忆里,配 OPC DA 连接简直是噩梦:DCOM 要在注册表里配置一堆权限,防火墙要开一堆端口,还得保证两边 Windows 用户权限一致。我记得有一次在现场调一个 OPC DA 连接,两边机器都是 Win10,DCOM 配置也按网上教程一步步改了,客户端就是报“拒绝访问”。最后折腾了大半天,发现是其中一台机器的“网络访问: 本地账户的共享和安全模型”策略默认是“仅来宾”,改回“经典”就好了。这种问题,没有几年的踩坑经验根本想不到。
OPC UA(Unified Architecture)就是来终结这些噩梦的。它抛弃了 COM/DCOM,改用纯粹的 TCP 通信,跨平台,内置了证书加密和用户认证,更重要的是它带了一套完整的信息建模规范。这意味着你用 OPC UA 传的不仅仅是“这个变量值是 36.5”,还能传递“这个值是 3 号车间注塑机 A 的料筒温度,单位是摄氏度,上限 40 度,属于工艺质量关键参数”这样的语义信息。
1.2 企业级 OPC 平台的五个能力层
理解了 OPC UA 和 OPC DA 的区别之后,“企业级 OPC 平台”这个概念才立得住。它绝对不只是装一个 OPC UA 服务器,把 PLC 的数据暴露出来给客户端读。一个真正能扛住企业级需求的 OPC 平台,至少包含下面五个层次:
- 接入层:支持多种工业协议(Modbus TCP、Profinet、EtherNet/IP、S7 等)与 OPC UA/DA 的互通,把底层设备的数据“翻译”成统一格式。
- 建模层:把 PLC 里的裸变量映射成有业务含义的对象模型。比如一个“反应釜”对象下面挂温度、压力、搅拌转速、运行状态等属性,而不是一盘散沙的 DB100.DBD24。
- 安全层:用户认证、证书管理、操作审计。这一点在等保和行业合规语境下尤其重要,谁也不想自己的工艺参数被人随便读走。
- 服务层:对外提供统一的访问接口,包括历史数据查询、实时订阅、报警事件上报。不只是“能读”,还要读得快、读得全、读得可追溯。
- 治理层:平台自身的可运维性,包括配置变更管理、网关冗余、链路监控、日志归集。
我在很多项目里看到的情况是:大家把 OPC 平台当成“数据搬运工”,搬完数据就万事大吉。结果做数据治理的时候,面对一堆没有任何语义的变量名(比如 Tag_00124)完全无从下手。真正的企业级 OPC 平台,功夫全在“接入之后、展示之前”的那一段。
1.3 一个最常见的认知误区:把 OPC 当网关用
这个误区太普遍了,而且特别隐蔽。很多人理解的 OPC 架构是“PLC → OPC 服务器 → 客户端”,把 OPC 服务器当成一个简单的协议转换网关。但在企业级场景里,OPC 平台更像一个数据总线,它不仅仅是改变数据的传输协议,更是改变数据在组织内部的流动方式。
举个例子,同样是一条温度数据:
- 用“网关”思路做:SCADA 从 OPC DA 读取温度,显示到画面上;MES 系统从 OPC UA 读取温度,存到数据库里;能源管理系统再从数据库取温度,做能耗分析。结果是同一份数据被复制了三份,口径还可能不一致(一个是原始值
