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 import modbus_tk.modbus_tcp as mt ACCESS_TOKEN='xxxxxxxxxx' broker="xxxxxxxx" port=1883 master = mt.TcpMaster("192.168.1.75", 502) master.set_timeout(1.0) client1= paho.Client("control1") client1.username_pw_set(ACCESS_TOKEN)
while True: data_sam = master.execute(slave=1, function_code=3, starting_address=50, quantity_of_x=16,output_value=0) list_data = list(data_sam) payload="JSON of Modbus data" ret= client1.publish("v1/devices/me/telemetry",payload)
|
以上是最基本的框架,工程中要采用完备的try catch机制来处理可能出现的各种异常。