概述

【免费下载链接】CODESYS-MQTT MQTT client library for CODESYS, supporting all QoS 【免费下载链接】CODESYS-MQTT 项目地址: https://gitcode.com/gh_mirrors/co/CODESYS-MQTT

CODESYS-MQTT是一个专为CODESYS自动化开发环境设计的MQTT客户端库,支持所有QoS(服务质量)等级。该库提供了高性能的MQTT通信能力,能够在单个周期内处理大量数据包传输,同时支持多服务器连接和TLS加密通信。

项目特性

  • 全面QoS支持:支持所有QoS等级(0、1、2)的发布和订阅操作
  • 高性能传输:在默认配置下,单个周期内可传输50个QoS 0数据包
  • 多服务支持:支持同时连接到多个MQTT服务器
  • TLS加密:提供TLS支持(无需证书验证)
  • 回调机制:采用强大的回调系统实现高效集成
  • 动态内存分配:支持64位系统和动态内存配置
  • 无限制功能块:支持无限制数量的发布和订阅功能块

安装与配置

添加库文件

首先需要在CODESYS项目中添加MQTT库文件:

  1. 在CODESYS开发环境中右键点击项目
  2. 选择"添加库"
  3. 浏览并选择相应的MQTT库文件(如MQTT 1.2.0.7.library)

添加库文件

启用动态内存分配

为了确保库的正常运行,需要启用动态内存分配:

  1. 右键点击Application
  2. 选择"Option Application"
  3. 启用动态内存分配选项

动态内存配置

基础使用

MQTT处理器设置

要开始使用MQTT通信,首先需要创建一个SD_MQTT.MQTT_IN_OUT结构体用于与服务器的通信:

VAR
    mqttInOut: SD_MQTT.MQTT_IN_OUT;
END_VAR

这个设置将建立与服务器的连接,但此时还不会发送或接收发布数据包。

MQTT处理器配置

调试与错误处理

在遇到问题时,SD_MQTT.HANDLE_MQTT实例中包含ErrorHistory功能,可以提供详细的错误提示信息:

错误历史查看

发布数据

创建发布实例

要发布数据到MQTT服务,需要创建SD_MQTT.MQTTPublish实例:

  1. 实例化SD_MQTT.MQTTPublish功能块
  2. 调用SET_MQTT_IN_OUT方法一次,传入SD_MQTT.MQTT_IN_OUT结构体参数
  3. 调用实例时定义主题、负载、QoS和保留标志

发布配置选项

  • 负载类型:可以是字符串或字节数组(通过PublishAsString输入选择)
  • 传输控制:设置send输入为True时发布数据包
  • 完成检查:使用done输出检查传输是否完成
  • 实例数量:可以实例化任意数量的SD_MQTT.MQTTPublish实例

首次发布配置

订阅管理

订阅工作原理

订阅功能通过SD_MQTT.MQTTSubscribe功能块实现:

  1. 向服务注册订阅主题
  2. 在SD_MQTT.HANDLE_MQTT功能块中注册对应主题的回调
  3. 当前支持最多200个订阅主题注册

回调机制

当服务向客户端发送发布数据包时:

  1. HANDLE_MQTT功能块检查接收到的主题匹配哪个订阅主题
  2. 调用传递给SD_MQTT.MQTTSubscribe功能块的PublishReceived方法
  3. 向PublishReceived方法传递包含所有所需数据的CALLBACK_DATA参数

回调收集器

回调收集器(CallbackCollector)提供了强大的功能:

  • 动态内存分配:使用动态内存分配,受可用动态内存量限制
  • 多实例收集:可以收集任意数量的功能块实例
  • 高效处理:在单个周期内将所有接收到的负载传递给应用程序
  • 高速性能:如果一个周期缓冲区中有20个发布数据包,这些数据包将在完全相同的周期内传递给应用程序

基本订阅设置

创建CallbackCollector和SD_MQTT.MQTTSubscription功能块的实例,进行一些初始化设置后即可开始接收数据:

首次订阅配置

高级功能

JSON支持

新版本库提供了与JSON/zigbee2mqtt轻松使用的功能,通过专门的库支持JSON数据处理。

监控功能

版本1.2.0.1新增了监控功能块,可以通过MQTT监控MQTT客户端状态。

命名空间改进

新版本改变了命名空间,并改进了类型系统,使用Base Interfaces TypeClass来支持any类型。

示例项目

项目中包含多个示例项目,分别针对不同平台和配置:

  • Windows平台:带TLS和不带TLS的示例
  • Raspberry Pi平台:带TLS和不带TLS的示例
  • 高性能测试:TestMQTTGithubWindowsHighLoad项目展示高负载性能
  • 接口示例:多个示例展示主题和负载处理的不同方法

GreatExampleOfAdvantages项目

这是一个特别推荐的示例项目:

  • 开箱即用,与test.mosquitto.org配合工作
  • 在MyProperty程序中展示如何避免在程序中硬编码主题
  • 演示了基于实例和变量名称的直接发布功能

性能特点

  • 极速传输:每个接收到的数据包都在接收周期内交付给应用程序
  • 高吞吐量:testHighReciveSplitPayload()测试显示近600次发送/接收每秒
  • 灵活配置:QoS通道大小和历史记录大小现在可配置

依赖库

所有需要的依赖库都可以在相应的GitHub仓库中找到,确保在集成前安装所有必需的依赖项。

注意事项

  • 客户端不是线程安全的
  • 需要启用动态内存分配以获得最佳性能
  • 建议使用最新版本的库以获得所有功能和修复
  • 在部署前充分测试所有配置

通过遵循本指南,您可以成功地将CODESYS-MQTT客户端库集成到您的自动化项目中,实现高效的MQTT通信功能。

【免费下载链接】CODESYS-MQTT MQTT client library for CODESYS, supporting all QoS 【免费下载链接】CODESYS-MQTT 项目地址: https://gitcode.com/gh_mirrors/co/CODESYS-MQTT

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐