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

一、应用设备

OT端设备:步进电机,MODBUS TCP远程I/O模块,PLC设备
边缘侧设备:宏集工业树莓派;
IT端设备:PC、安卓手机;
IT端软件:宏集HiveMQ MQTT通信平台

二、原理


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

三、实际测试

1、工业树莓派源码

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

2、效果

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

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



坐沙发

发表评论

你的邮件地址不会公开


*