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

2023-10-19 15:24 1040 3 3 分类: 物联网
一、应用设备

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以及企业级信息安全管理等功能。


工业树莓派特价活动

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

作者: 宏集科技, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3988247.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条