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机制来处理可能出现的各种异常。


阅读全文