Modbus2MQTT

Modbus协议广泛应用于工控和物联网领域,最常见的场景是上位机或PLC通过Modbus协议访问其他设备,上位机可以是工控机,也可以是树莓派这样的嵌入式系统,可以通过Modbus Poll这样的传统软件,也可以自己编程实现,不过这些都太重了,在评估了多款市售的嵌入式成品后,我们终于找到了理想的产品。

Modbus转MQTT的Python实现

下面是用Python实现的Modbus转MQTT的框架代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import paho.mqtt.client as paho       #MQTT Library
import modbus_tk.modbus_tcp as mt #Modus Library
ACCESS_TOKEN='xxxxxxxxxx' #Token of MQTT Broker
broker="xxxxxxxx" #host name
port=1883 #MQTT listening port
master = mt.TcpMaster("192.168.1.75", 502) #ModbusTCP Client
master.set_timeout(1.0)
client1= paho.Client("control1") #create client object
client1.username_pw_set(ACCESS_TOKEN) #access token from thingsboard device

while True:
data_sam = master.execute(slave=1, function_code=3, starting_address=50, quantity_of_x=16,output_value=0) #Read modbus TCP
list_data = list(data_sam)
payload="JSON of Modbus data" #基于Modbus数据组装JSON格式MQTT消息
ret= client1.publish("v1/devices/me/telemetry",payload) #topic- v1/devices/me/telemetry

以上是最基本的框架,工程中要采用完备的try catch机制来处理可能出现的各种异常。

可编程嵌入式网关

AiMaster300是采用Lua语言的可编程物联网网关。产品硬件采用:32位CPU/32M内存/3个RS232、RS485通用的串口/可选带温度补偿的时钟模块 。
AiMaster300以写语句,调函数方式编程,采用了与高级语言(C#,Delphi,VB)类似编程思路。其软件框架支持:多线程编程,串口编程, TCP/IP和UDP编程,SQL数据库接口(可执行SQL语句和存储过程),Modbus主从机功能库,mqtt协议库,JSON函数库等。同时还提供大量的专业的数据转换和处理函数。
AiMaster系列产品通过以太网编程调试,无需编程线和SDK,支持透明式多任务系统,零代码实现多个控制任务同时运行。
Lua语言为AiMaster300产品带来了远超传统PLC的灵活性,可以迅速实现想法和创意,使之前需要几周甚至几个月的开发项目,缩短至几个小时。

看上去象是Lua魔改的嵌入式系统,很强大,内置了很多函数库,不过还是太重了。

存储型Modbus转MQTT嵌入式网关

这才是理想中的产品,价格便宜,稳定够用。

-数据采集支持RS232/485接口转网口/4G,可以和卓岚云对接。
-支持Modbus RTU/DLT645设备转JSON/MQTT格式。
-数据采集支持阿里云/ONENET/百度云/腾讯云/卓岚云等各大云平台。
-耐高温-在85度高温下流畅播放视频。
-支持MQTT协议、JSON格式上传,采用MQTT为基础的协议和服务器建立连接,采用订阅发布的形式进行数据通讯,支持Modbus RTU/DLT645设备转JSON/MQTT格式 支持非标串口协议转JSON+ MQTT。
-支持将特定的Modbus寄存器内容转化为JSON格式定时主动上发,可在JSON格式中加入设备ID,方便云端识别设备。
-数据采集支持RS232/485接口转网口/4G,可以和各大云平台对接。
-支持阿里云,百度云,OneNet,华为云,腾讯云,卓岚云,私有云等各云平台。
-支持主动查询Modbus/645仪表。
-支持网关自动采集数据,定时上发数据。
-支持HTTP POST+JSON和HTTP GET JSON数据,支持上传时间、设备ID等数据格式。
-支持在JSON格式中加入设备ID,方便云端识别设备。
-支持无符号数据和有符号数据,支持小数点表示,支持4字节长度数据。所有配置都可以界面化配置完成,用户自主配置无需定制。
-自定义注册包心跳包,支持远程配置和升级维护。

零代码配置,只要熟悉MQTT和Modbus很快可以配置好,有完善的续传机制,实测稳定可靠,如果有PoE版就更好了。