通讯协议Modbus、OPC UA、MQTT,结合Ignition实际应用

发布时间:2026/7/30 18:16:28

通讯协议Modbus、OPC UA、MQTT,结合Ignition实际应用 文章目录Modbus、OPC UA、MQTT 三者概述一、Modbus场景一、Ignition中的ModbusModbus RTUModbus TCPModbus RTU over TCP二、OPC UA场景一、Ignition中的OPC UA场景二配置Ignition (客户端) 与 BR (服务器) 证书双向认证场景三UAExpert作为客户端连接Ignition OPC UA Server场景四UAExpert作为客户端连接BR的OPC UA Server场景五UAExpert作为客户端连接正点原子开发板场景六Ignition OPC UA Server连接失败场景七OPC UA 开源库open62541场景七OPC UA 开源库opcua-asyncio三、MQTT场景一、Ignition中的MQTTModbus、OPC UA、MQTT 三者概述三者区别Modbus 是点解决 “设备怎么连” 的问题。用来“抠”现场设备数据的。OPC UA 是面解决 “数据代表什么” 的问题。来“揉”数据和跨系统集成的。MQTT 是线解决 “数据怎么传” 的问题。用来“扔”数据上云或者做物联网的。Modbus/OPC UA主要是 LAN局域网 内的通讯。MQTT天生是为了 WAN广域网 和物联网设计的。一、Modbus基本概念查看另一篇文章场景一、Ignition中的ModbusModbus RTU用于串口设备串口连接设备直连Ignition电脑指定物理串口号场景称 - 485转232 - 串口-电脑模拟Ignition (主站) - 虚拟COM1 - Modbus Slave (从站/称)软件需要modbus slave 和 虚拟串口 Virtual Serial Port Driver (VSPD)Modbus TCP用于网口设备网口连接基于以太网通讯指定IP地址和端口号默认502场景一称-485串口-接线到硬件-串口服务器或Modbus网关模块再接入局域网设备串口服务器或Modbus网关它能将RS485串口数据“包装”成TCP/IP数据包通过以太网传输 迈威通信 Mport3102、摩莎 Moxa MGate MB3170/MB3180、有人物联网模块等软件Ignition上新建Modbus TCP通讯场景二现场需要防爆模块需要防爆造价很高先接入PLC再通过PLC 传给 Ignition。PLC可以通过OPC UA协议连接到Ignition。[总线方式-有防爆要求工厂] ┌─────────────────────────────────────┐ │ 称重设备1 (RS485) ──┐ │ │ 称重设备2 (RS485) ──┼── 485总线 (屏蔽双绞线) ── 拉到中控室 │ 称重设备3 (RS485) ──┘ │ └─────────────────────────────────────┘ │ ▼ ┌──────────────── PLC 控制柜 ──────────────────┐ │ ┌─────────────────────────────┐ │ │ │ 西门子PLC (S7-1200/1500/300) │ │ │ │ ├─ 485模块 (CM1241/CB1241/CP341) │ │ │ └─ 接收称重数据 │ │ └──────────────┬──────────────┘ │ │ │ 以太网 (Profinet) │ │ ┌──────────────▼──────────────┐ │ │ │ Ignition 服务器 │ │ │ │ (通过S7驱动读取PLC数据) │ │ │ └─────────────────────────────┘ │ └─────────────────────────────────────────┘[分布式方式-有防爆要求工厂] ┌─────────────────────────────────────┐ │ 防爆箱 (Ex d / Ex e) │ │ ┌─────────────────────────────┐ │ │ │ BR X20 分布式I/O模块 │ │ │ │ ├─ 485模块 (读取称数据) │ │ │ │ ├─ 电源模块 │ │ │ │ └─ 总线模块 (X20BM01/X20BR9300) │ │ │ └──────────────┬──────────────┘ │ │ │ 485线 │ │ [称重设备1]──────┘ │ │ [称重设备2]─────────────────────────┘ └─────────────────────────────────────┘ │ │ 工业以太网 (POWERLINK / PROFINET) ▼ ┌──────────────── PLC 控制柜 ──────────────────┐ │ ┌─────────────────────────────┐ │ │ │ BR PLC (中央控制器) │ │ │ │ (如 X20 CP系列 CPU) │ │ │ └──────────────┬──────────────┘ │ │ │ 以太网 │ │ ┌──────────────▼──────────────┐ │ │ │ Ignition 服务器 │ │ │ │ (通过OPC UA或BR驱动读取) │ │ │ └─────────────────────────────┘ │ └─────────────────────────────────────────┘Modbus RTU over TCP网口连接把RTU数据包“包装”后再通过TCP/IP网络发送通常用于连接特定的串口服务器或网关设备二、OPC UAOPC UA是“建模”而不是“传点”Modbus 是“我要读地址 40001 的数据”而 OPC UA 是“我要读‘1号称重仪’的‘当前重量’”。它不再只是一个通信协议更像是一套工业数据的“普通话”标准。理解 OPC UA最关键的是要建立两个认知1、它不是“点表”而是“信息模型”传统的 Modbus 或西门子 S7 协议传输的是寄存器的“裸数据”。你得提前知道 40001 是温度40002 是压力。但 OPC UA 在传输数据的同时还自带了数据的“说明书”——这个数据叫什么、单位是什么、属于哪个设备、甚至支持什么操作方法比如“复位”。这就叫语义建模。2、安全是内建的不是后加的OPC UA 从设计之初就把安全考虑进去了。它不像 Modbus 那样裸奔在网络上而是通过 X.509 证书进行双向身份认证通信过程可以加密可以有效防止中间人攻击 。你在 Ignition 里连接 PLC 时遇到的那些证书导入导出的步骤就是这套安全机制在起作用。“安全策略和认证方式” 区别安全策略Security Policies None是Low securityBasic256Sha256是High securityIgnition默认就是(default: Basic256Sha256)可以改成None 但是不安全认证方式AuthenticationAnonymous、UserName/Password、Certificate是三种独立的认证方式Ignition默认不开启匿名访问 Anonymous Access AllowedFalse常用PLC配置OPC UABR PLC 和西门子 PLC它们的配置思路既有共性也有各自的脾气。共性第一步激活服务器与安全配置不管什么品牌的 PLC想用 OPC UA头两步都是一样的1、激活服务器在 PLC 的硬件配置里找到 OPC UA 相关的选项打个勾把服务器功能打开 。2、搞定证书这是最容易卡住的地方。PLC 作为服务器会有一份自己的证书。当 Ignition作为客户端第一次连它时PLC 会要求 Ignition 提供客户端证书。你需要把 Ignition 生成的证书导出放到 PLC 的“信任列表”里同时也要把 PLC 的证书导出来加到 Ignition 的信任存储中。这就是所谓的双向认证 。场景一、Ignition中的OPC UAIgnition 的“大脑”负责揉数据和互操作在 Ignition 里OPC UA 有两种角色1、作为客户端去连别人如你的 BR PLC2、作为服务器让别人来连它如给 MES 系统这就是“揉数据”Modbus 的称、OPC UA 的 PLC数据格式本来不同但在 Ignition 的 OPC UA 服务器里它们统一成了标准的、带语义的标签。场景二配置Ignition (客户端) 与 BR (服务器) 证书双向认证场景三UAExpert作为客户端连接Ignition OPC UA Server连接BR的OPC UA Server连接的OPC UA ServerIP地址opc.tcp://localhost:62541/discovery默认用户名opcuauser默认密码password注意Ignition中配置参数在Ignition-Gateway-Config-OPC UA-OPC UA Settings-可以修改是否允许匿名访问Authentication-Anonymous Access Allowed在Ignition-Gateway-Config-Security-opcua-module-users-opcuauser可以新增用户名和修改密码UAExpert连接上Ignition OPC UA Server服务器后在Gateway-Config-OPC UA-Security-Server 信任证书。UAExpert连接上Ignition OPC UA Server服务器后能看到Modbus TCP那些设备点位但是看不到Ignition作为Client 连接到BR的数据。需要开启- Gateway- Config - Opcua -OPC UA Settings中Advanced-启用Expose Tag Providers暴露Tag然后重启服务。这样就能看到Ignition所有Tag Provider。场景四UAExpert作为客户端连接BR的OPC UA Server跟场景三类似只不过在BR里面可以新增用户和密码然后配置读写权限场景五UAExpert作为客户端连接正点原子开发板目前最主流、最适合嵌入式的开源库是 open62541开启虚拟机编译的OPC UA协议到板子运行外机用OPC UA UaExpert连接场景六Ignition OPC UA Server连接失败Ignition偶尔会出现自带的OPC UA Server 连接失败。处理方式1、OPC UA -Security- Cient 删除证书重新Trust2、OPC UA -Security-Server 删除证书重新Trust3、OPC UA -Security-Certificates 重新生成证书4、重启服务场景七OPC UA 开源库open62541最流行的开源库open62541既可以在只有几十KB内存的嵌入式微控制器上运行也可以在Windows服务器上编译部署。C语言场景七OPC UA 开源库opcua-asyncio这是目前Python社区最流行、维护最活跃的 OPC UA 库。它完全是 Python 写的安装简单上手极快。三、MQTTMQTT的核心思想发布/订阅有一个人发布者把消息贴到公告板Broker上。感兴趣的人订阅者去公告板查看自己感兴趣的主题。发布者和订阅者完全解耦不需要知道对方的存在。场景一、Ignition中的MQTTIgnition 的“神经”负责扔数据上云/物联网Ignition 通过MQTT 传输模块来实现 MQTT 通讯。这个模块可以让你把 Ignition 变成一个MQTT 客户端。实际场景一Ignition 作为 MQTT 发布者边缘到云这是最常见的用法。假设你有多个工厂每个工厂有一个 Ignition 边缘网关。配置 MQTT Broker在云端如 AWS IoT、Azure IoT Hub 或自己搭建的 EMQX有一个MQTT 服务器。配置 Ignition 边缘网关给每个网关安装 MQTT 传输模块配置好云端 Broker 的地址和证书。数据上云在 Ignition 里你可以非常灵活地选择哪些标签需要上报云端比如只上报称的最终重量不上报中间变量。Ignition 会把这些标签的变化通过 MQTT 协议发布到云端的 Broker。云端的接收云端的应用程序如另一个 Ignition 中心服务器订阅相关的主题就能实时收到所有工厂的数据。实际场景二Ignition 作为 MQTT 订阅者云到边/端反过来你也可以在云端下发指令。云端的应用发布一个消息到某个主题如 factory1/scale1/tare。工厂 1 的 Ignition网关订阅了这个主题收到消息后通过 Modbus 给称发送一个“清零”指令。

相关新闻