如何用工业树莓派和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以及企业级信息安全管理等功能。


工业树莓派特价活动

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/140642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重学前端-js类型

javascript目前位置一共有7种数据类型,分别为: Undefined;Null;Boolean;String;Number;Symbol;Object。 Undefined与Null Undefined 类型表示未定义,它的类型只有一个…

Windows11家庭版没有本地组策略编辑器解决

1. 新建一个文本文件将下面代码粘到里面,保存后修改后缀为.cmd或者.bat echo off pushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packa…

【2023双十一新玩法】如何快速让数据达到预期目的,让销售额提升10倍,客群提升10倍,销量提升10倍

2023年的双十一即将到来,商家们依然在为销售目标而努力,而数据分析就成为了其中不可或缺的一环。大大小小的企业都纷纷采用了数据分析来提高销售效率,而老板们也都习惯了看着大屏幕上的实时数据。 然而,对于员工而言,做…

【JVM】JVM类加载机制

JVM类加载机制 加载双亲委派模型 验证准备解析初始化 JVM的类加载机制,就是把类,从硬盘加载到内存中 Java程序,最开始是一个Java文件,编译成.class文件,运行Java程序,JVM就会读取.class文件,把文件的内容,放到内存中,并且构造成.class类对象 加载 这里的加载是整个类加载的一…

【广州华锐互动】VR高层小区安全疏散演练系统

在今天的高科技时代,虚拟现实(VR)技术已经被广泛应用到各个领域,包括教育和培训。由广州华锐互动定制开发的VR高层小区安全疏散演练系统,开始在房地产行业中崭露头角。这种系统通过模拟真实的紧急情况,帮助…

测试新人须知:如何提高软件测试效率

在互联网行业,提高团队效率通常有两种手段:一种是技术手段,另一种是管理手段。 一、规范测试流程 1. 测试依据:《需求规格说明书》、《详细设计文档》、《概要设计》; 2. 根据需求评审和开发排期,进行测试排…

Qt/C++开源作品45-CPU内存显示控件/和任务管理器一致

一、前言 在很多软件上,会在某个部位显示一个部件,专门显示当前的CPU使用率以及内存占用,方便用户判断当前程序或者当前环境中是否还有剩余的CPU和内存留给程序使用,在不用打开任务管理器或者资源查看器的时候直接得知当前系统的…

KT6368A的封装怎么画 原理图怎么画 资料怎么看 怎么下载呢

一、简介 KT6368A的封装怎么画 原理图怎么画 资料怎么看 怎么下载呢 也有好几个客户问我们这样的问题,实在是太难了 但是没办法,客户就是上帝,也只能选择认真的回答, 这里对这类型的问题进行统一精细化回复,高手请…

C++前缀和算法应用:和至少为 K 的最短子数组的原理、源码及测试用例

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个整数数组 nums 和一个整数 k ,找出 nums 中和至少为 k 的 最短非空子数组 ,并返回该子数组的长度。如果不存在这样的 子数组 &a…

2023年【建筑架子工(建筑特殊工种)】考试内容及建筑架子工(建筑特殊工种)找解析

题库来源:安全生产模拟考试一点通公众号小程序 建筑架子工(建筑特殊工种)考试内容是安全生产模拟考试一点通生成的,建筑架子工(建筑特殊工种)证模拟考试题库是根据建筑架子工(建筑特殊工种)最新版教材汇编出建筑架子工(建筑特殊工种)仿真模拟考试。2023…

Mybatis对数据库进行增删查改以及单元测试

这篇写的草率了,是好几天前学到,以后用来自己复习 UserInfo import lombok.Data;Data public class UserInfo {private int id;private String name;private int age;private String email;//LocalDateTime可用于接收 时间}Mapper UserMapper pack…

Python-flask高级使用

文章目录 一.Python-flask使用数据库第一步:首先安装包安装 flask-sqlalchemy (用于ORM):安装 flask-migrate (用于数据迁移):安装 pymysql (MySQL驱动): 第二步:在__init__ 配置第三步:插件管理第一步&…