我需要通过pymodbus获取设备信息(设备名称等)。 有谁知道如何实现这个目标?
由于
答案 0 :(得分:1)
如果您通过串行端口(usb- / comport)进行通信,则可以使用serial中的list_ports获取Comports上的串行设备列表:
64位python:
import serial.tools.list_ports as portlist
for port in portlist.comports():
print(port)
print(port.device)
输出:
COM10 - 串行USB设备(COM10)
USB VID:PID = 15A2:0300 SER = 6 LOCATION = 1-4.3
对于Comport 10上的Modbus设备
32位python:
import serial.tools.list_ports as portlist
for port in portlist.comports():
print(port)
输出包含设备名称,供应商ID,产品ID等的元组。
答案 1 :(得分:1)
如果您的modbus设备通过封装的接口命令(0x2b 0x0e)支持Device Information命令,您可以使用以下命令通过pymodbus获取设备信息(输入正确的地址等):
>>> from pymodbus.client.sync import ModbusSerialClient as ModbusClient
>>> mc = ModbusClient(method='rtu', port='/dev/ttyACM1')
>>> mc.connect()
True
>>> from pymodbus import mei_message
>>> rq = mei_message.ReadDeviceInformationRequest(unit=5,read_code=0x03)
>>> rr = mc.execute(rq)
>>> rr.information
{0: ...}