2. 矿山PLC设备与通信协议初识

在矿山自动化系统中,PLC 是现场数据的“源头”。要做数据采集并写入 InfluxDB,第一步不是写代码,而是搞清楚:现场有哪些 PLC、它们各自支持什么协议、这些协议在矿山环境下有什么限制。本节围绕三类典型设备(西门子 S7-1200/1500、罗克韦尔 AB ControlLogix)和三种常见协议(Modbus TCP、Modbus RTU、OPC UA)展开,帮助你在采集方案设计阶段做出合理选型。

一、典型矿山PLC型号及其数据访问特点

矿山场景中,提升机、皮带运输、通风机、排水泵站、选矿流程等环节常见两类 PLC 体系。

西门子 S7-1200/1500 在中大型矿山项目中占比很高。S7-1200 适合单机或小型站房(如泵站、局部皮带控制),S7-1500 多用于主控或流程联锁。它们的数据以“数据块(DB)”组织,采集时通常读取 DB 中的变量偏移地址。S7 系列原生协议为 S7comm,但出于安全考虑,S7-1200/1500 默认关闭“允许来自远程伙伴的 PUT/GET 访问”,需要在 TIA Portal 中勾选该选项,采集端才能通过 S7 协议读取 DB。若不便开放,可改用 PLC 内置的 OPC UA 服务器(S7-1500 固件 V2.0 以上支持,S7-1200 需较新固件并购买授权)。

AB ControlLogix 常见于选矿厂和大型驱动控制。其数据以“标签(Tag)”形式存在,采集依赖 CIP/EtherNet-IP 协议,通常通过 RSLinx 或第三方库(如 pycomm3)按标签名读取。ControlLogix 的标签分为控制器标签和程序标签,采集前要确认标签作用域,否则会出现“标签不存在”的错误。

二、三种协议的特点与适用边界

Modbus TCP 基于以太网,报文简单、跨厂商兼容性好,是矿山仪表、变频器、电表、部分小型 PLC 的通用语言。它按“从站地址 + 功能码 + 寄存器地址”寻址,常见功能码 03(读保持寄存器)、04(读输入寄存器)。缺点是只有寄存器概念、无数据类型语义,浮点数需要按字序(高低字交换)自行解析,且无内建安全机制。

Modbus RTU 走 RS-485 串行总线,适合距离较远、布线不便的现场仪表(如皮带秤、料位计、温度变送器)。它需要配置波特率、数据位、停止位、校验位和从站地址,多设备共用一条总线时需轮询,实时性随从站数量增加而下降。矿山现场电磁干扰强,屏蔽双绞线和终端电阻不可省略。

OPC UA 是面向服务的协议,自带信息模型、数据类型和加密认证(证书、签名、加密),适合跨系统集成和需要语义化数据的场景。S7-1500、ControlLogix 均可作为 OPC UA 服务器。代价是配置复杂度高、资源占用大,老设备往往不支持。

矿山PLC设备—协议—采集端选型关系 西门子 S7-1200/1500 数据组织:DB 数据块 原生:S7comm(PUT/GET) 可选:内置 OPC UA 服务器 AB ControlLogix 数据组织:Tag 标签 原生:CIP / EtherNet-IP 可选:OPC UA 服务器 现场仪表/变频器 皮带秤、料位计、电表 温度变送器、软启 多为 Modbus 从站 S7comm / OPC UA 以太网,按 DB 偏移读取 需开启远程访问权限 CIP / OPC UA 以太网,按标签名读取 注意标签作用域 Modbus TCP / RTU TCP:以太网,寄存器寻址 RTU:RS-485,轮询从站 采集网关 / 边缘程序 统一转换为时间戳 + 测点 + 值,写入 InfluxDB 选型主线:设备原生协议优先 → 不开放则用 OPC UA → 仪表类走 Modbus

三、选型依据:从现场条件倒推协议

协议选择不是“越先进越好”,而是由设备能力、网络条件、实时性要求和安全约束共同决定。可以按以下顺序判断:

  1. 看设备原生支持:S7-1500 优先考虑 OPC UA 或 S7comm;ControlLogix 优先 CIP;仪表类基本只有 Modbus。强行给不支持 OPC UA 的老设备上 OPC UA,需要额外网关,增加故障点。
  2. 看网络与距离:已有工业以太网的站房走 Modbus TCP / OPC UA;分散在皮带沿线、只有 RS-485 布线的仪表走 Modbus RTU,再经串口服务器转 TCP 汇聚。
  3. 看实时性:Modbus RTU 多从站轮询时,单点刷新周期 = 轮询一轮的时间。例如 8 个从站、每站 50 ms 响应,一轮约 400 ms,若采集 20 个寄存器还需分批,实际周期可能到 1 s 以上。对提升机、联锁信号这类需要亚秒级的数据,应走以太网协议。
  4. 看安全与运维:矿山逐渐要求数据不出内网、访问可审计。OPC UA 的证书与加密更符合要求;Modbus 无认证,应限制在受控网段。
工程经验:一个矿山项目里往往同时存在 S7、ControlLogix 和 Modbus 三类设备。采集端不必强求统一协议,而应统一“数据模型”——把不同协议的地址映射为统一的测点名(如 pump01.flow),再写入 InfluxDB,这样后续查询和看板才不会被协议差异拖累。

四、一个可参考的地址映射示例

假设某泵站有一台 S7-1200,采集 3 个量:出口压力(DB1.DBD0,REAL)、电机电流(DB1.DBD4,REAL)、运行状态(DB1.DBX8.0,BOOL)。在采集程序中,需要把协议地址与测点名建立映射,示例配置如下(参数为教学示例,非现场实测):

# 测点映射示例(S7-1200,S7comm 读取)
points:
  - name: pump01.pressure      # 出口压力 MPa
    address: DB1.DBD0
    type: REAL
    scale: 1.0
  - name: pump01.current       # 电机电流 A
    address: DB1.DBD4
    type: REAL
    scale: 1.0
  - name: pump01.running       # 运行状态
    address: DB1.DBX8.0
    type: BOOL
    scale: 1

若同一泵站还有一台 Modbus RTU 电表,从站地址 3、波特率 9600、8N1,读取保持寄存器 0x0000 的电压值(32 位浮点、高字在前),则需在采集端单独配置串口参数与字序。两类数据最终都以“测点名 + 时间戳 + 值”的形式进入时序库,协议差异在采集层被消化掉。

五、初识阶段要确认的关键信息

在正式开发采集程序前,建议先到现场或通过图纸确认以下信息,避免后期返工:PLC 具体型号与固件版本;是否已启用 OPC UA 及授权;S7 的 PUT/GET 是否开放;ControlLogix 的标签清单与作用域;仪表从站地址、寄存器表、数据类型与字序;网络拓扑与可用网段;以及是否存在串口服务器及其端口映射。把这些信息整理成一张设备—协议—地址清单,就是后续采集配置的直接输入。

理解设备与协议,本质上是理解“数据从哪里来、以什么形式来、有什么限制”。只有把这一层摸清,后面的采集程序与 InfluxDB 存储设计才有可靠基础。