不用二次开发、PLC不用编程,实现JSON文件MQTT发布与订阅

        PLC通讯智能网关IGT-DSER系列智能网关支持MQTT协议,方便将多台PLC设备的数据JSON格式发布/订阅。支持OneNET、阿里云等多种平台。

        本案例是采用IGT-DSER智能网关,实现PLC变量寄存器地址通过一个免费的MQTT服务端(Broker:broker.hivemq.com:1883),与MQTT的其它客户端双向通讯。PLC和网关都不用编程和二次开发,直接配置IP地址、PLC数据地址即可。以下是参数配置软件(下载地址)的配置及其对应的JSON文件:

       PLC采用MODBUSTCP协议通讯,智能网关是地址区域代码+寄存器地址模式,HR0对应400001,关于Modbus的数据地址模型可查看这篇文章。采用MQTTBox软件配合调试,进行发布和订阅,如下图:

        网关支持多种工作模式:周期模式是按设置的周期时间发布JSON文件;触发模式可配置一个或多个触发条件,网关根据触发条件的数据变化进行JSON文件发布,不用编程,简单配置即可支持以下JSON格式

         如果是上面这样的格式,埃和智能的IGT-DSER直接配置即可实现;更复杂的格式可以使用边缘计算的脚本程序打包JSON,具体可查看相关的案例和手册。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!要使用C语言实现MQTT发布订阅功能,你可以使用一些开源的MQTT库,如Paho MQTT C库。下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <MQTTClient.h> #define MQTT_ADDRESS "tcp://mqtt broker的地址:mqtt端口号" #define MQTT_CLIENT_ID "your_client_id" #define MQTT_TOPIC "your_topic" int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) { printf("消息内容: %.*s\n", message->payloadlen, (char*)message->payload); MQTTClient_freeMessage(&message); MQTTClient_free(topicName); return 1; } int main() { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; MQTTClient_message pubmsg = MQTTClient_message_initializer; MQTTClient_deliveryToken token; int rc; MQTTClient_create(&client, MQTT_ADDRESS, MQTT_CLIENT_ID, MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("连接到MQTT Broker失败,返回代码:%d\n", rc); exit(-1); } MQTTClient_subscribe(client, MQTT_TOPIC, 1); while (1) { // 发布消息 char payload[100]; sprintf(payload, "Hello, World! %d", rand()); pubmsg.payload = payload; pubmsg.payloadlen = strlen(payload); pubmsg.qos = 1; pubmsg.retained = 0; MQTTClient_publishMessage(client, MQTT_TOPIC, &pubmsg, &token); rc = MQTTClient_waitForCompletion(client, token, 1000); printf("已发布消息:%s\n", payload); // 每隔1秒发布一次消息 sleep(1); } MQTTClient_disconnect(client, 10000); MQTTClient_destroy(&client); return 0; } ``` 你需要替换代码中的MQTT_ADDRESS、MQTT_CLIENT_ID和MQTT_TOPIC为你实际的MQTT Broker地址、客户端ID和订阅主题。运行这段代码后,它将以每秒一次的频率发布一条带有随机数的消息,并在收到订阅的消息时打印出来。 这只是一个简单的示例,你可以根据需要进行修改和扩展。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值