🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 前言 本方案以MQTT.fx客户端软件为例介绍如何接入创恒云平台,接收和下发设备数据,MQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具,支持通过Topic订阅和发布消息。下面以MQTT.fx为例,介绍使用第三方软件以MQTT协议接入云平台,实现Modbus、西门子PPI、三菱FX等协议的PLC数据的读取和写入。 ## 前提条件 通过MQTT接入设备数据,需要在平台加入添加通道和点表,并可以通过平台正常获取到PLC数据。该文档面向开发人员,需掌握MQTT协议、JSON数据格式、PLC点表配置方法。 ## 一、获取MQTT服务参数 登陆创恒云新平台 https://cloud.truhigh.com,点击左侧菜单栏“MQTT服务”,获取到MQTT连接的域名(Broker Address)、端口号(Broker Port)参数。 ![](http://qiniu.yuncon.net/027d57898d405edbc0b2adad3800e7fe) **获取MQTT服务用户名和密码** 点击MQTT服务的用户按钮,进入用户列表页面,最后一条为权限最高的系统用户。 *(如果需要按权限分配给不同的用户,可以新建用户,并为用户分配特定的访问策略。)* ![](http://qiniu.yuncon.net/ce7089c89be84b3e3b2fd26d425b2afb) ## 二、配置MQTT.fx的连接参数,连接MQTT服务 1. 下载并安装MQTT.fx软件,请访问[MQTT.fx官网](https://mqttfx.jensd.de/index.php/download) 2. 打开MQTT.fx软件,设置连接参数 **说明:** 设置参数时,请确保参数值中或参数值的前后均没有空格。 ![](http://qiniu.yuncon.net/e3611fc0e1dc983f99d0671d719f5899) 4. 取消TLS认证 ![](http://qiniu.yuncon.net/5db3d9bda6f8952ffc3330c0b08b160b) 5. 点击“OK”保存参数后,点击“Connect”按钮,接入创恒云平台。 ## 三、网关数据上报主题 **Modbus**: BOX/${deviceId}/event/property/post/${nDeviceId} **PPI**: BOX/${deviceid}/event/property/post/ppi/{nDeviceId} **三菱FX**: BOX/${deviceid}/event/property/post/fx/{nDeviceId} | 参数 | 说明 | | --- | --- | | deviceid | 网关ID,可在平台界面找到(见附录II) | | nDeviceId | 设备ID(PLC ID),可在平台界面找到(见附录II) | 网关采集到的数据将按照点表设置,按以下格式上报的相应主题。参数格式不区分协议,即无论是PPI数据还是modbus数据,将统一封装成以下格式 ``` { "time": 1575971814027, "params": { "name1": value1, "name2": value2, "name3": value3, "name4": value4 } } ``` | 参数 | 说明 | | --- | --- | | time | UTC时间 | | name | 对应点表内设置的点的名称 | | value | 采集到的PLC对应点的数据(具体数据类型根据点表配置不同而不同) | ## 四、网关数据下发主题 创恒云平台或第三方云平台通过对以下主题发送数据实现PLC数据的修改 **Modbus**: BOX/${deviceId}/event/property/set/${nDeviceId} **PPI**: BOX/${deviceid}/event/ppi/set/${nDeviceId} **三菱FX**: BOX/${deviceid}/event/fx/set/${nDeviceId} | 参数 | 说明 | | --- | --- | | deviceid | 网关ID,可在平台界面找到(见附录II) | | nDeviceId | 设备ID(PLC ID),可在平台界面找到(见附录II) | 格式: ``` { "id": "12312312312312", "params": { "name": value } } ``` 参数说明: | 参数 | 说明 | | --- | --- | | id | 随机字符串,确定消息的唯一性 | | name | 对应点表内设置的点的名称 | | value | 采集到的PLC对应点的数据(具体数据类型根据点表配置不同而不同) | ## 五、网关数据下发后,网关上报确认结果主题 **Modbus**: BOX/${deviceId}/event/property/setResult/${nDeviceId} **PPI**: BOX/${deviceid}/event/ppi/setResult/${nDeviceId} **三菱FX**: BOX/${deviceid}/event/fx/setResult/${nDeviceId} | 参数 | 说明 | | --- | --- | | deviceid | 网关ID,可在平台界面找到(见附录II) | | nDeviceId | 设备ID(PLC ID),可在平台界面找到(见附录II) | **主题内容格式:** ``` { "id": "12312312312312", "result": { "name": value } } ``` | 参数 | 说明 | | --- | --- | | id | 随机字符串,确定消息的唯一性(与数据下发的ID相同) | | name | 对应点表内设置的点的名称 | | value | 错误码,只有0代表下发成功(具体错误码见附录) | ## 附录 [附录I、错误码说明](errroCode.md) [附录II、获取网关ID和设备ID](getID.md)