当前位置:首页>python>工业数据采集进阶:Python 对接 OPC UA 服务器

工业数据采集进阶:Python 对接 OPC UA 服务器

  • 2026-10-11 07:49:10
工业数据采集进阶:Python 对接 OPC UA 服务器
“《工业数据可视化:Python + Flask 实现 Web 实时读取 MySQL 数据》该篇中已经实现了 Python + MySQL + Flask 的工业数据可视化基础框架,但实际工业现场的数据往往并不直接来自数据库,而是来自 PLC、组态软件、DCS、仪表设备及 OPC Server。因此本文开始拓展工业数据采集层,不局限于直接通信读取设备的信息,本文使用 Python 对接 OPC UA Simulation Server,实现 OPC UA 实时变量读取,并为后续 OPC UA → MySQL → Web SCADA 的完整工业数据链路做准备。”

目前大多数 PLC 编程软件、组态软件、SCADA 系统以及工业平台,基本都已经支持 OPC UA 接口。相比直接研究组态软件内部数据库结构或私有通信协议,通过 OPC UA 获取实时数据通常更加标准化,也更适合进行 Python、Web、数据库及工业数据平台的二次开发。

整理了几个常用设备的OPC UA文档如下:

01
OPC UA 简介
OPC UA(Open Platform Communications Unified Architecture)是一种工业自动化领域通用的数据通信协议,由 OPC Foundation 制定。相比传统工业协议,OPC UA 不仅可以读取变量数据还能支持设备模型,变量描述,报警事件,历史数据和权限认证等。因此在 MES、SCADA、工业互联网及数字化工厂中应用越来越广泛。典型通信结构如下:

PLC / DCS / 仪表设备↓OPC Server↓OPC UA 协议↓Python / Web / SCADA

02
搭建 OPC UA 仿真服务器

在实际工业现场中,OPC UA Server 通常由:PLC,DCS,SCADA,组态软件,工业网关等设备或软件提供。但在学习阶段,如果没有真实PLC,也可以通过 OPC UA 仿真服务器模拟工业数据环境。

我选择了OPC UA Simulation Server来作为测试服务器,用于模拟温度,压力,电机状态,计数器,模拟量等数据。该软件官网网址为(若无法下载则科学上网):https://downloads.prosysopc.com/opc-ua-simulation-server-downloads.php,安装好后如下图:
图中opc.tcp://暴龙战神:53530/OPCUA/SimulationServer则为OPC的连接地址。
在objects中有软件自带的几种数据类型,下面就用Python读取里面的数据。
03
Python 连接 OPC UA 并读取数据
一.首先安装 Python OPC UA 支持库
pip install opcua
二.测试代码如下
    这里的ns=3;i=1002代表的是OPC UA 节点ID
    读取成功
    04
    OPC UA 节点结构
    一.数据结构
    与 Modbus 直接通过寄存器地址读取数据不同,OPC UA 中所有数据都以Node(节点)的形式存在。整个就像工业数据树,所有变量、设备、文件夹、状态、历史数据等内容,都会以节点结构组织。Python 实际读取的就是这些节点中的变量数据。modbus能通过寄存器地址来读值那么opc呢,下面就要引入NodeId节点标识.
    二.NodeId 节点标识
    在 OPC UA 中,每个节点都会有唯一 NodeId。例如
    ns=3;i=1002
    部分
    含义
    ns=3(namespace)
    命名空间编号
    s=Counter
    字符串类型节点名
    总之,有节点标识,就能取到对应的值。节点标识就是数据的唯一身份证号。
    谢谢观看!!

    最新文章

    随机文章