2. 工业数据源与接口类型解析
在AVEVA工业数据集成项目中,第一步不是打开建模工具,而是把现场“有什么数据、从哪里来、以什么方式交付”梳理清楚。工业数据源与接口类型决定了后续采集架构、刷新频率、数据质量处理方式以及系统耦合程度。本节围绕DCS、PLC、SCADA、OPC DA/UA、Modbus、MQTT、关系数据库和REST API八类常见对象,分析其特征、适用场景与集成难点。
一、从控制系统到IT系统:数据源的分层特征
DCS(集散控制系统)通常用于连续过程工业,如化工、电力、冶金。它的特点是控制回路封闭、数据点密集、实时性要求高,但对外接口往往受厂商和网络安全策略限制。PLC(可编程逻辑控制器)更偏向离散制造与设备控制,扫描周期常在10~100ms量级,数据以寄存器、线圈、DB块等形式存在,适合通过Modbus、OPC或厂商专有协议读取。SCADA(数据采集与监视控制系统)位于监控层,本身不直接产生原始测量值,而是汇聚PLC、RTU和仪表数据,提供报警、趋势、画面和 historian 历史库。因此,SCADA作为数据源时,实际获取的是“已被加工过的监控数据”,需关注其刷新周期、死区和人工置数标记。
这三类源系统的集成难点不同:DCS重在上位接口授权与单向隔离;PLC重在对点表、地址映射和批量读取优化;SCADA重在对历史库查询接口和实时标签命名规范的统一。
二、OPC DA/UA:从COM到跨平台的接口演进
OPC DA基于Windows COM/DCOM,采用同步或异步方式读写标签,适合局域网内与Windows上位机通信。其典型配置包括ProgID、CLSID、ItemID和访问路径。例如,一个DA标签可能写作 Channel1.Device1.Tag_101。DA的难点在于DCOM配置复杂、跨防火墙困难、不支持跨平台,且大量标签逐点读取时效率低,需要分组订阅和死区设置。
OPC UA在DA基础上引入地址空间、信息模型、安全通道和订阅机制,支持TCP二进制和HTTPS,可跨平台。UA的节点用NodeId标识,如 ns=2;s=Boiler1.Temp,其中ns为命名空间索引。UA适合作为AVEVA与DCS/PLC之间的标准中间层,但集成时需处理证书信任、用户权限、会话超时和订阅发布周期。若现场只有DA,可通过DA-to-UA网关转换,但会增加延迟和单点故障。
三、Modbus与MQTT:轻量协议的两类典型场景
Modbus分为RTU和TCP。RTU走串口,常用波特率9600/19200,需配置从站地址、功能码、寄存器地址和字节序。例如读取保持寄存器40001~40010,功能码03,从站地址1。Modbus的难点是地址偏移(0基与1基)、32位浮点高低字顺序、无时间戳和批量读取上限。它适合仪表、电表、小型PLC等低带宽场景。
MQTT是发布/订阅模型,适合广域、低带宽、海量设备接入。主题如 factory/line1/plc01/temperature,QoS 0/1/2决定消息可靠性。MQTT本身不定义数据语义,因此集成时必须约定Payload格式(如JSON)和主题命名规范。其难点在于断线重连后的数据补发、QoS与吞吐的权衡、以及边缘侧数据缓存。
四、关系数据库与REST API:IT侧数据源
关系数据库(如SQL Server、Oracle、MySQL)常作为MES、LIMS、ERP的数据源,通过SQL查询获取批次、工单、质量结果。集成时需关注连接池、查询超时、增量字段(如更新时间戳)和字符集。REST API则以HTTP+JSON方式提供业务数据,适合云平台、第三方系统。难点在于认证(Token/OAuth)、分页、限流和接口版本变化。
五、接口选型与集成难点对照
实际项目中,接口选择不是“越新越好”,而是由实时性、网络条件、数据语义和运维能力共同决定。下表给出常见场景的参考判断。
| 数据源/接口 | 典型实时性 | 适用场景 | 主要集成难点 |
|---|---|---|---|
| OPC DA | 100ms~1s | Windows局域网、老DCS/PLC | DCOM配置、跨防火墙、逐点读取效率 |
| OPC UA | 50ms~1s | 跨平台、安全要求高的采集 | 证书信任、会话管理、命名空间映射 |
| Modbus RTU/TCP | 100ms~2s | 仪表、电表、小型PLC | 地址偏移、字节序、无时间戳 |
| MQTT | 1s~分钟级 | 广域、无线、海量设备 | QoS选择、断线补发、Payload约定 |
| 关系数据库 | 分钟级~小时级 | MES/ERP批次、工单、质量 | 增量字段、连接池、查询超时 |
| REST API | 分钟级~按需 | 云平台、第三方业务系统 | 认证、分页、限流、版本变化 |
六、一个可执行的采集点表样例
无论采用哪种接口,落地时都应先形成采集点表。以下为示例,字段可根据项目调整,但“源地址—数据类型—刷新周期—质量码”四项必须明确。
点表示例(假设数据,仅用于说明结构)
tag_name 源类型 源地址/主题 数据类型 刷新周期 质量码规则
Boiler1_Temp OPC UA ns=2;s=Boiler1.Temp Float 500ms Bad=0x80
Line1_Motor Modbus 从站1, 功能码03, 40001, 2寄存器 Float32 1s 超时=Bad
Tank_Level MQTT factory/tank1/level JSON 5s 断线=Stale
Batch_No SQL SELECT batch_no FROM prod WHERE ... String 10min 空值=Bad
Order_Status REST GET /api/orders?updated_after=... JSON 5min HTTP!=200=Bad
七、集成难点与应对思路
第一,时间戳统一。DCS/PLC数据往往没有统一时标,SCADA历史库有本地时间,IT系统用数据库时间。集成时应统一为UTC或明确时区,并在点表中记录时标来源。第二,质量码传递。OPC UA自带StatusCode,Modbus没有,需在采集端根据通信超时、寄存器越界等规则生成质量码。第三,批量与频率平衡。Modbus逐点读取效率低,应按连续寄存器合并;OPC UA订阅可设置发布间隔和死区,避免高频无用数据冲击平台。第四,安全隔离。生产网与信息网之间应通过单向网关或DMZ部署采集代理,OPC UA使用证书和用户认证,REST API使用Token并限制来源IP。