news 2026/7/7 19:39:39

PLC、Mod、MQTT工厂数据采集与协议转OPC UA

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PLC、Mod、MQTT工厂数据采集与协议转OPC UA

PLC、Mod、MQTT工厂数据采集,协议转opc ua

工厂里的数据采集就像给设备装上了听诊器,但不同设备说着不同的方言——Modbus、MQTT、OPC UA这些协议就是典型的"方言现场"。今天咱们用Python来当翻译官,把车间里PLC的Modbus数据通过MQTT传上网,最后转成OPC UA的标准格式。

先看PLC侧的Modbus数据抓取。车间里的三菱FX5U用Modbus TCP暴露数据,咱们用pymodbus库来撩它:

from pymodbus.client import ModbusTcpClient def read_plc_data(): client = ModbusTcpClient('192.168.1.10', port=502) try: if not client.connect(): raise Exception("PLC拒接") result = client.read_holding_registers(0, 2, slave=1) temperature = result.registers[0] / 10.0 # 温度值有小数点 pressure = result.registers[1] return {'temp': temperature, 'press': pressure} finally: client.close()

这里有个坑要注意——Modbus寄存器地址需要减1,比如40001对应地址0。读出来的数据可能需要做量程转换,比如温度值可能放大了10倍存储。抓数据时最好用try包裹,车间网络说断就断。

抓到的数据得往云端甩,这时候MQTT就派上用场了。用paho-mqtt包发数据:

import paho.mqtt.client as mqtt mqtt_client = mqtt.Client() mqtt_client.connect("iot.eclipse.org", 1883, 60) def publish_data(data): payload = f"temp/{data['temp']}/press/{data['press']}" # QoS设为1确保至少送达一次 mqtt_client.publish("factory/plc1", payload, qos=1) mqtt_client.loop() # 处理网络流量

注意MQTT的遗嘱消息(Last Will)设置能让服务器在断线时通知其他客户端。生产环境建议用带TLS的加密连接,别让车间数据裸奔在公网上。

最后的重头戏是转OPC UA。用opcua库架个服务器:

from opcua import Server server = Server() server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/") # 命名空间相当于数据目录 uri = "http://factory.io" idx = server.register_namespace(uri) # 创建对象节点 objects = server.get_objects_node() plc_node = objects.add_object(idx, "PLC1") # 添加变量节点 temp_var = plc_node.add_variable(idx, "Temperature", 0.0) press_var = plc_node.add_variable(idx, "Pressure", 0) temp_var.set_writable(False) # 只读变量 # 启动服务 server.start() # 数据更新函数 def update_opcua(data): temp_var.set_value(data['temp']) press_var.set_value(data['press'])

OPC UA的节点树结构特别适合表达设备层级关系。注意变量访问权限设置,别让不该写的客户端乱改数据。实际部署时要配证书,匿名访问就像车间大门不锁。

整个数据流的拼装就像车间流水线:

while True: plc_data = read_plc_data() publish_data(plc_data) # 推MQTT update_opcua(plc_data) # 更OPC UA time.sleep(1) # 别把PLC读死了

这里要平衡采集频率和系统负载,有些老PLC处理不了高频请求。遇到通讯中断时要有重试机制,别让整个链路轻易崩溃。

协议转换最难的不是代码,是理解不同协议的设计哲学——Modbus简单直接但功能简陋,MQTT轻巧适合物联网传输,OPC UA则带着工业4.0的野心而来。把这些协议打通,相当于在车间设备、云端系统和IT系统之间架起三座桥,让数据能跨过协议鸿沟自由流动。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 10:09:50

Open-AutoGLM弹窗管理:3步实现复杂场景下的稳定交互

第一章:Open-AutoGLM 多弹窗叠加处理在自动化测试与智能流程执行中,多弹窗叠加是常见的交互难题。Open-AutoGLM 通过语义理解与视觉定位融合机制,实现对嵌套式弹窗的精准识别与顺序处理。弹窗识别策略 系统采用分层检测逻辑,优先捕…

作者头像 李华
网站建设 2026/7/7 6:46:33

Java Web 动物领养平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着社会对动物福利的关注度不断提升,动物领养平台的需求日益增长。传统的线下领养模式存在信息不对称、流程繁琐等问题,亟需一种高效、透明的线上解决方案。基于此背景,本研究设计并实现了一个基于Java Web的动物领养平台系统&#xff…

作者头像 李华
网站建设 2026/7/7 14:19:51

计算机毕业设计|基于springboot + vue职位管理推荐系统(源码+数据库+文档)

职位推荐系统 目录 基于springboot vue职位推荐系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue职位推荐系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/7/7 11:24:59

云迁移安全决胜之道:企业全业务上云的战略布局与风险防控指南

在数字化转型的深水区,企业上云早已从“试水”阶段迈入“全面攻坚”的关键期。当核心业务、敏感数据、全链路流程向云端迁移时,安全不再是“附加项”,而是决定迁移成败的核心命脉。不同于零散系统的上云实践,企业整体业务上云涉及…

作者头像 李华
网站建设 2026/7/7 18:37:42

LangFlow多语言支持能力测试报告

LangFlow多语言支持能力测试报告 在AI应用加速走向全球化的今天,如何让非英语开发者也能高效参与大模型项目,正成为低代码平台必须面对的挑战。LangFlow作为LangChain生态中炙手可热的图形化工具,凭借“拖拽即用”的特性迅速吸引了大量用户。…

作者头像 李华
网站建设 2026/7/6 16:15:30

基于springboot + vue旅游网系统

旅游网系统 目录 基于springboot vue旅游网系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue旅游网系统 一、前言 博主介绍:✌️大厂…

作者头像 李华