UE5使用MQTT通信订阅PLC发布数据
3) mqttTopic是发布的主题,很关键,另一个客户端订阅的时候要保持与这个一致;跟着GPT给的步骤一步一步做【块引用里的是GPT给的答案,有的不对,并且GPT4o有时候真的好呆不说了,只能参考一个大概的流程】现在需要在UE5中配置MQTT客户端,连接到你之前设置的MQTT Broker,并订阅PLC发布的Topic。现在需要在UE5中安装一个MQTT客户端插件,以便UE5可以订阅PLC发布的
跟着GPT给的步骤一步一步做【块引用里的是GPT给的答案,有的不对,并且GPT4o有时候真的好呆不说了,只能参考一个大概的流程】
以下步骤详细的离谱,傻瓜式教程,不用思考就完事儿了
不带冒号、序号、波浪号的句子都是解释句子上面的图的
1.在PLC S7-1500上启用MQTT功能(事实证明先做第二个步骤broker好点)
首先,需要确保PLC S7-1500能够通过MQTT协议发送和接收数据。你可能需要额外的MQTT库或通过第三方功能块实现。
步骤:
- 下载MQTT库:访问西门子官网或其他第三方资源,找到并下载适用于S7-1500的MQTT功能块(如西门子的Simatic S7 MQTT库)。
- 导入功能块:打开TIA Portal软件,连接到你的PLC S7-1500。在你的项目中,导入下载的MQTT功能块。
- 配置MQTT客户端:
- 在PLC项目中使用MQTT功能块(FC或FB)创建一个MQTT客户端。
- 设置MQTT Broker的IP地址或域名(稍后我们会设置这个Broker)。
- 设置你要发布的Topic名称和对应的PLC数据。例如,你可以将温度传感器的值发布到
"sensor/temperature"
这个Topic上。- 建立发布逻辑:在PLC程序中编写逻辑,使用MQTT功能块定期发布数据。你可以让PLC每秒钟向指定Topic发送一次传感器数据。
1. 西门子官网下载MQTT库:
找到这个LMQTT_Client拖到左边程序块就实例化好了
直接拖到Main里面
3. Main(OB1):
这个DB是手动创建的:
需要注意的:
1) connParam-broker是服务器的ip,因为在电脑上开的服务器所以直接就是电脑ip(搞了半天客户端一直没连上服务器,原因就是这个ip写错了)
补充一下:不要开代理,PLC会连不上服务器。血泪教训/(ㄒoㄒ)/~~
2) clientId、username、password没看出来啥作用,好像就是创建链接的时候标识一下是哪个客户端(p.s. 我没用MQTT的安全连接)
3) mqttTopic是发布的主题,很关键,另一个客户端订阅的时候要保持与这个一致;修改了publishMsgPayload让它输出plc1
(通常不建议主题以 / 开头或结尾,例如 /chat 或 chat/)
找到一个人写的csdn里面的图参考一下~西门子学习笔记5 - 工业物联网(MQTT库的使用)_西门子mqtt功能块说明-CSDN博客
2.设置MQTT Broker(消息中介)
MQTT Broker是实现PLC与UE5通信的关键部分。它负责接收PLC发送的数据并将其分发给订阅该Topic的UE5。
步骤:
- 选择MQTT Broker:
- 使用公共Broker:你可以使用免费的公共MQTT Broker,例如
broker.hivemq.com
或test.mosquitto.org
,适合初学者。- 设置本地Broker:你也可以在本地搭建MQTT Broker,推荐使用Mosquitto,它是一款轻量级且常用的开源MQTT Broker。
- 安装Mosquitto Broker(本地搭建时):
- 下载并安装Mosquitto(下载地址)。
- 启动Mosquitto服务器。默认情况下,MQTT Broker监听端口是1883。
- 测试Broker:使用命令行工具或MQTT客户端工具(如MQTT.fx或MQTT Explorer),连接到MQTT Broker并测试发布和订阅功能。
用MQTT客户端来测试发布订阅功能,参考这篇:Windows系统下本地MQTT服务器搭建(保姆级教程)_mqtt windows-CSDN博客
2. 安装:我用的Broker是EMQX
(这里面有些教程比如开机自启动之类的不知道用不用的上先放着,其实上面那篇已经很详细了windows10-EMQX与MQTTX的安装及配置使用教程_emqx安装-CSDN博客)
EMQX下载地址:Directory listing for EMQX: / | EMQhttps://www.emqx.com/zh/downloads/broker,直接去官网没找到
启动服务器:
MQTT后台管理页面:EMQX Dashboardhttp://localhost:18083/#/dashboard/overview
默认账号:admin 密码:public
3. MQTT客户端,用的MQTTX:MQTTX 下载https://mqttx.app/zh/downloads
新建俩客户端,让他们相互订阅,保证添加订阅的主题跟对话框发消息那的主题一致就行了
3. 在UE5中安装MQTT客户端插件
现在需要在UE5中安装一个MQTT客户端插件,以便UE5可以订阅PLC发布的数据。
步骤:
- 打开你的UE5项目,进入Unreal Engine Marketplace,搜索并安装一个MQTT客户端插件,例如“MQTT Client Plugin”。
- 在项目设置中,确保已启用该插件。
- 重启UE5项目,使插件完全加载。
1. 插件选了MonsterMQTT,因为有一点教程可以参考。
GitHub - Hengle/MonsterMQTT: An Unreal Engine4/5 MQTT Pluginshttps://github.com/Hengle/MonsterMQTTue接入mqtt进行发布和订阅_mqtt ue-CSDN博客
https://blog.csdn.net/a7777777i/article/details/142566041(官网MQTT不知道咋用MQTT | Unreal Engine 5.5 Documentation | Epic Developer Community (epicgames.com),DTMqtt要马内UE DTMqtt 虚幻引擎 Mqtt 客户端插件说明-阿里云开发者社区 (aliyun.com),还有一个C++的探索UE5 MQTT插件:轻松集成消息通信-CSDN博客)
2. 步骤:
先把GitHub上的压缩包随便下载到什么地方
打开插件之后选添加:
在上图Plugins下的MonsterMQTT的文件夹(文件资源管理器)里把解压之后的这几个文件复制进去就行了:
提示就直接替换
3. 重启一下项目就能用了,如果不能用再进插件界面启用一下
4. 在UE5中配置MQTT客户端
现在需要在UE5中配置MQTT客户端,连接到你之前设置的MQTT Broker,并订阅PLC发布的Topic。
步骤:
- 创建MQTT客户端对象:
- 在UE5中,通过蓝图或C++创建一个MQTT客户端对象。
- 配置连接参数:
- 设置MQTT Broker的IP地址(如
broker.hivemq.com
或localhost
,如果你使用本地Mosquitto Broker)。- 设置Broker的端口,通常是1883(非加密)。
- 设置客户端ID,可以是任何字符串,用来唯一标识该客户端。
- 订阅PLC发布的Topic:
- 使用插件提供的API函数,订阅PLC发布的Topic,例如
"sensor/temperature"
。- 每当PLC向该Topic发布数据时,UE5中的MQTT客户端将接收到数据。
蓝图示例:
- 创建一个事件来处理接收到的消息。通过插件的回调函数,读取PLC发布的数据并在UE5中使用。
1. 我直接用的关卡蓝图测的
2. 创建客户端、连接、订阅另一个客户端发布的主题、打印接收的内容
3. 另一个客户端是用的MQTTX创建的,没用PLC直接连
成功接收了
4. UE5订阅PLC发布的数据
监视这个DB块的时候可以修改值,这里修改的是hiue(选“字符”)
修改publish的状态:
注意UE要改一下订阅的主题:
在UE里能看到:

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)