当前位置: 首页 > news >正文

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系统之间架起三座桥,让数据能跨过协议鸿沟自由流动。

http://www.jsqmd.com/news/122489/

相关文章:

  • 信息管理毕设2026开题汇总
  • 基于51单片机的PM2.5监测系统设计—环境监测仪
  • 超大规模研发体系下的安全左移实践:LinkedIn万级仓库SAST流水线构建与深度优化
  • LangFlow在AIGC领域的10种创新应用场景
  • 谷歌浏览器翻译插件的使用
  • 基于JavaScript的校园二手交易微信小程序课设报告
  • 信号VS共享内存:进程通信谁更强?
  • 能源管理系统(开源):打造智能高效的能源管控新模式
  • SGLang AI 金融 π 对(杭州站)回顾:大模型推理的工程实践全景
  • 孤能子视角:植物、微生物和动物
  • LangFlow + GPU算力加速:打造高性能AI工作流新体验
  • LangFlow监控面板怎么加?自定义指标追踪方案
  • LangFlow日志记录功能配置说明
  • 弹窗失控?Open-AutoGLM错误未捕获的5个真实场景与修复方案
  • 2025 年 12 月阻燃毛毡厂家权威推荐榜:预氧丝/芳纶/防火毛毡,精选耐高温与极致安全的工业防护材料源头企业 - 品牌企业推荐师(官方)
  • Open-AutoGLM响应延迟高达10秒?资深专家教你60秒定位瓶颈
  • LangFlow异常处理机制设计原则解读
  • LangFlow权限控制系统设想与路线图
  • 融合风险治理的轨道交通全域安全生产体系构建研究:以网络与人身安全为核心
  • 【企业级弹窗治理方案】:用Open-AutoGLM实现千级页面干扰清理
  • LangFlow导出为Python脚本的功能可用了吗?
  • 想在广东省中山市农村盖房子,靠谱的自建房设计公司口碑推荐 - 苏木2025
  • LangFlow与Todoist待办事项集成创建AI提醒任务
  • LangFlow入门必看:可视化节点连接实现智能对话系统
  • 实用的.Net开发类库
  • Open-AutoGLM实战案例解析(多弹窗并发处理技术大揭秘)
  • CSS继承机制:哪些属性会继承,哪些不会
  • 2025年12月喷涂聚脲,聚脲防腐,聚脲修缮翻新厂家推荐:聚焦企业施工实力与核心竞争力 - 品牌鉴赏师
  • 基于JavaScript的校园二手交易微信小程序任务书
  • 2025 年 12 月广东阻燃针刺棉品牌实力推荐榜:防火先锋,匠心织造,源头工厂精选与性能深度解析 - 品牌企业推荐师(官方)