• 如何用工业树莓派和MQTT平台打通OT和IT?


    一、应用设备

    OT端设备:步进电机,MODBUS TCP远程I/O模块,PLC设备

    边缘侧设备:宏集工业树莓派;

    IT端设备:PC、安卓手机;

    IT端软件:宏集HiveMQ MQTT通信平台

    二、原理

    宏集工业树莓派通过MODBUS协议分别采集步进电机、MODBUS TCP I/O模块、PLC设备数据,并在工业树莓派完成一些简单的数据处理。宏集HiveMQ将PC端配置为MQTT Broker;工业树莓派可通过MQTT协议将数据传输到PC端;在手机端,操作人员可通过自行编写的APP程序订阅PC端的数据主题。

    三、实际测试

    1.工业树莓派源码

    1. import threading  
    2. import time  
    3. from doctest import OutputChecker  
    4. from os import P_PID  
    5. from time import sleep  
    6. from threading import Thread  
    7. from tkinter import W  
    8. from myCtrlLib import *  
    9. import sys  
    10. import serial  
    11. import paho.mqtt.client as mqtt  
    12. import json  
    13.   
    14.   
    15. def on_connect(client, userdata, flags, rc):  
    16.     print(f"Connected with result code {rc}")  
    17.    
    18. client = mqtt.Client()  
    19. client.on_connect = on_connect  
    20. client.connect("192.168.1.168", 1883, 60)  
    21.   
    22. #读取PLC数据  
    23. def read_plc_data():  
    24.     on_motor()  
    25.     i = 0  
    26.     j = 0  
    27.     while True:  
    28.         Weight = readFromName('Weight')         #读取PLC重量值数据  
    29.         Humidity = readFromName('Humidity')     #读取PLC湿度值数据  
    30.         Temperature = readFromName('Temperature')       #读取PLC温度值数据  
    31.           
    32.         #读取光电开关状态,0表示两个光电开关没有被触发;1表示光电开关1被触发,2表示光电开关2被触发,3表示两个光电开关同时被触发  
    33.         Switch = readFromName('Switch_1')  
    34.         sleep(1)  
    35.         Back_motor()  
    36.         sleep(1)  
    37.         Advance_motor()  
    38.   
    39.         #根据光电开关状态控制电机  
    40.         if Switch == 1:  
    41.             i = i+1  
    42.   
    43.         if Weight > 500:  
    44.             j = 1  
    45.         else:  
    46.             j = 0  
    47.   
    48.         #构建JSON数据  
    49.         data = {  
    50.             'Stepping_motor_speed':300,     #电机转速  
    51.             'Temperature':Temperature,      #温度值  
    52.             'Humidity':Humidity,        #湿度值  
    53.             'Obj_weighth':Weight,            #重量值  
    54.         }  
    55.   
    56.         json_data = json.dumps(data)  
    57.         client.publish('IndustrialProductionLin', payload=json_data, qos=0, retain=True)  
    58.         print(i)  
    59.   
    60. #电机启动  
    61. def on_motor():  
    62.     writeToName('Motor',1)  
    63.     pass  
    64.   
    65. #电机正转  
    66. def Advance_motor():  
    67.     writeToName('DIR',0)  
    68.     pass  
    69.   
    70. #电机反转  
    71. def Back_motor():  
    72.     writeToName('DIR',1)  
    73.     pass  
    74.   
    75. #电机停止  
    76. def stop_motor():  
    77.     writeToName('Motor',0)  
    78.     pass  
    79.   
    80.   
    81. # 创建并启动线程  
    82. plc_thread = threading.Thread(target=read_plc_data)  
    83.   
    84. #启动线程  
    85. plc_thread.start()  
    86.   
    87. # 主线程等待两个线程结束  
    88. plc_thread.join()  

     2. 效果

     

    四、为何选择宏集工业树莓派和宏集HiveMQ方案?

    1. 宏集工业树莓派集成了较多的现场总线协议,配合对应的Python库,能通过一些简单配置就能够实现OT端数据的采集,例如该案例使用的MODBUS协议,通过PiCtory配置,就能够编写Python程序,快速实现OT端的数据对接

    2. 宏集工业树莓派目前最高配置达到了8GB RAM,性能上等同于一台PC,能够完成一些较为复杂的运算和轻量化机器学习模型。

    3. 宏集HiveMQ平台是基于MQTT通信的物联网解决方案,支持快速配置MQTT Broker,支持高负载、高并发、高扩展性。在实际应用中,能够确保数据的快速稳定传输,保证不会出现任何一条数据丢失。除此之外的话,它还支持企业级扩展,例如对接Kafka以及企业级信息安全管理等功能。


    工业树莓派特价活动

    宏集工业树莓派特价活动火爆进行中,欢迎扫描下方小程序码咨询选购~

     

  • 相关阅读:
    vue学习总结
    [附源码]计算机毕业设计基于SpringBoot的在线作业批改系统
    2023最新版JavaSE教程——第3天:流程控制语句之顺序语句与分支语句
    [HJ60 查找组成一个偶数最接近的两个素数]
    gazebo各种插件
    spring中使用getBean获取ioc容器创建的对象常见异常
    聊聊今年测试秋招情况......
    开关电源环路稳定性分析(03)-开环电源
    第四十二章 持久对象和SQL - 用于创建持久类和表的选项
    荐书丨《进化心理学》:刘耕宏、王心凌背后的魔力之谜
  • 原文地址:https://blog.csdn.net/Hongke_IIOT/article/details/133926601