厂务数据采集与可视化分析实战 - 第3节
3.1 可编程逻辑控制器(PLC)的核心作用
在厂务数据采集体系中,可编程逻辑控制器(PLC)是连接物理设备与上层信息系统的核心枢纽。它并非简单的继电器替代品,而是一个集成了逻辑运算、顺序控制、定时计数与数据处理功能的工业级嵌入式计算机。
核心定位:PLC 是厂务自动化系统的“现场大脑”,负责实时采集传感器信号,执行用户编写的控制逻辑,并驱动执行机构(如阀门、电机、变频器)完成预定动作。
3.1.1 PLC 在厂务系统中的三大关键作用
| 作用维度 | 具体描述 | 厂务典型场景 |
|---|---|---|
| 信号采集与调理 | 接收来自温度、压力、流量、液位、振动等传感器的模拟量(4-20mA / 0-10V)或数字量(干接点、NPN/PNP)信号,并进行滤波、量程转换与工程单位换算。 | 洁净室温湿度采集、冷却水循环泵出口压力监测 |
| 逻辑控制与联锁 | 执行梯形图(LAD)、结构化文本(ST)或功能块图(FBD)编写的控制程序,实现设备启停、顺序控制、故障联锁保护。 | 空压机轮值切换、冷冻水系统旁通阀PID调节 |
| 数据预处理与通信 | 在本地完成数据聚合、阈值判断、报警生成,并通过工业以太网或现场总线将处理后的数据上传至上位机或SCADA系统。 | 电力参数(电压、电流、功率)的瞬时值打包上传 |
选型提示:厂务项目中,主流PLC品牌包括西门子S7-1200/1500、罗克韦尔CompactLogix、三菱FX5U、欧姆龙NJ/NX系列。选择时需重点评估I/O点数、通信接口类型(Profinet/EtherNet/IP/Modbus TCP)以及是否支持冗余配置。
3.1.2 PLC 数据采集架构示意
下图展示了PLC在厂务数据采集链路中的典型位置与数据流向:
3.2 远程终端单元(RTU)的适用场景
与PLC不同,远程终端单元(RTU)专为恶劣环境、分散站点和长距离通信而设计。它强调低功耗、宽温工作、强大的远程通信能力以及对电池供电的支持。
关键区别:PLC 更擅长本地高速逻辑控制,而 RTU 更擅长远程数据采集、遥测遥控(SCADA 的前端)。在厂务系统中,两者并非替代关系,而是互补关系。
3.2.1 RTU 的典型适用场景
- 厂区边缘站点:如远离中央控制室的冷却塔、深井泵站、污水处理站、废气处理系统。这些站点通常不具备稳定的工业以太网环境,依赖4G/NB-IoT/卫星通信。
- 电力与能源监测:厂内变配电站、光伏发电系统、储能系统。RTU 支持 IEC 61850、DNP3、Modbus 等电力行业协议,可采集电表、保护装置数据。
- 环境与安全监测:分布在厂区各处的气体探测器(VOC、H2S、CO)、噪声监测站、粉尘监测点。RTU 的低功耗特性使其可依靠太阳能电池板长期运行。
- 老旧设备改造:当现场只有干接点或模拟量信号,且不具备 PLC 改造条件时,RTU 可作为“智能网关”将老旧信号转换为标准通信协议。
3.2.2 PLC 与 RTU 核心特性对比
| 对比维度 | PLC | RTU |
|---|---|---|
| 控制逻辑能力 | 强,支持复杂梯形图、PID、运动控制 | 弱,以逻辑判断和顺序控制为主 |
| 通信方式 | 工业以太网(Profinet/EtherNet/IP)为主 | 串口(RS-232/485)、无线(4G/LoRa)、卫星 |
| 工作环境 | 控制柜内,温度 0~55°C | 户外/恶劣环境,-40~70°C,IP65+ |
| 功耗 | 较高,通常 10~50W | 极低,可低至 1~5W,支持电池供电 |
| 典型协议 | Profinet, EtherNet/IP, Modbus TCP | Modbus RTU, DNP3, IEC 60870-5-101/104 |
| 数据存储 | 有限,依赖上位机历史库 | 内置大容量 Flash,支持断点续传 |
选型建议:如果现场需要高速闭环控制(如变频器PID调节),优先选择PLC;如果现场是分散监测点、通信距离远、供电困难,RTU 是更经济可靠的选择。
3.3 PLC 与上位机的通信方式
PLC 采集的数据必须通过可靠的通信链路传输至上位机(SCADA 服务器、工业数据库、MES 系统)。现代厂务系统主要采用以下三种通信架构:
3.3.1 工业以太网通信(主流方式)
基于 TCP/IP 的工业以太网已成为厂务数据采集的标准选择。它支持高带宽、远距离(通过交换机级联)和灵活拓扑。
- Profinet(西门子):实时性高(循环时间 1ms 级),支持等时同步,适用于西门子 S7-1200/1500 系列。
- EtherNet/IP(罗克韦尔/ODVA):基于 CIP 协议,兼容标准以太网硬件,广泛用于罗克韦尔、欧姆龙等品牌。
- Modbus TCP:开放、简单、跨平台,几乎所有 PLC 和上位机都支持,是厂务系统中最通用的“互操作语言”。
3.3.2 串行总线通信(传统方式)
在老旧设备或距离较近(< 1200m)的场景中,RS-485 总线仍被广泛使用。
- Modbus RTU:采用主从模式,上位机作为主站轮询各 PLC 从站。波特率通常为 9600~115200 bps。
- Profibus DP:西门子经典现场总线,传输速率最高 12 Mbps,适用于 S7-300/400 系列。
避坑提示:RS-485 总线需要正确配置终端电阻和偏置电阻,否则在长距离或高波特率下容易出现数据丢包或通信中断。建议使用带隔离的 RS-485 转换器。
3.3.3 OPC UA(统一架构)
OPC UA 是面向未来的跨平台通信标准,它不依赖 DCOM,支持加密、认证和信息模型。
- 优势:安全(支持 X.509 证书)、平台无关(Windows/Linux/嵌入式)、语义化(可描述设备属性与方法)。
- 适用场景:多品牌 PLC 混合接入、需要与 MES/ERP 系统直接交互、远程访问(通过互联网隧道)。
3.3.4 通信方式对比表
| 通信方式 | 传输速率 | 最大距离 | 实时性 | 典型协议 | 适用场景 |
|---|---|---|---|---|---|
| 工业以太网 | 100 Mbps ~ 1 Gbps | 100m/段(交换机级联不限) | 高(1~10ms) | Profinet, EtherNet/IP, Modbus TCP | 新建厂务系统、高速控制 |
| RS-485 串行总线 | 9.6 kbps ~ 12 Mbps | 1200m(不加中继) | 中(10~100ms) | Modbus RTU, Profibus DP | 老旧设备、短距离多站 |
| OPC UA | 取决于底层网络 | 无限制(基于IP) | 中(20~100ms) | OPC UA 二进制/XML | 跨平台集成、信息安全要求高 |
3.3.5 典型通信架构图
下图展示了 PLC 通过不同通信方式与上位机系统连接的典型架构:
3.3.6 通信配置示例(Python 读取 Modbus TCP)
以下代码展示了使用 Python 的 pymodbus 库通过 Modbus TCP 协议读取 PLC 保持寄存器的典型实现:
from pymodbus.client import ModbusTcpClient
# 连接 PLC(假设 IP 为 192.168.1.100,端口 502)
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()
try:
# 读取保持寄存器,起始地址 0,读取 10 个寄存器
response = client.read_holding_registers(address=0, count=10, slave=1)
if not response.isError():
# 将原始值转换为工程值(假设量程 0-100°C,对应 0-65535)
raw_value = response.registers[0]
temperature = round(raw_value * 100.0 / 65535, 2)
print(f"当前温度:{temperature} °C")
else:
print("读取失败:", response)
finally:
client.close()
实践要点:实际项目中,PLC 的寄存器地址映射需要参考设备手册。建议在 PLC 程序中为上位机预留专用的“数据发布区”,避免直接读取控制逻辑内部的临时变量,以提高通信稳定性。