宏集方案 | 如何用工业树莓派和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. on_connect = on_connect  
  20. 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. 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. start()  
  86.  
  87. # 主线程等待两个线程结束
  88. join()  

2. 效果

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

  1. 宏集工业树莓派集成了较多的现场总线协议,配合对应的Python库,能通过一些简单配置就能够实现OT端数据的采集,例如该案例使用的MODBUS协议,通过PiCtory配置,就能够编写Python程序,快速实现OT端的数据对接;
  2. 宏集工业树莓派目前最高配置达到了8GB RAM,性能上等同于一台PC,能够完成一些较为复杂的运算和轻量化机器学习模型。
  3. 宏集HiveMQ平台是基于MQTT通信的物联网解决方案,支持快速配置MQTT Broker,支持高负载、高并发、高扩展性。在实际应用中,能够确保数据的快速稳定传输,保证不会出现任何一条数据丢失。除此之外的话,它还支持企业级扩展,例如对接Kafka以及企业级信息安全管理等功能。

工业树莓派特价活动

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