Python modbus lib用于读取文件记录

时间:2018-09-25 08:44:23

标签: python modbus

是否有一个python modbus库,该库实现了用于读取和写入文件记录的功能(功能代码:20,21)。流行的Python modbus库(pymodbus,pymodbusTCP)提供了这些功能,但并未实现。谢谢。

1 个答案:

答案 0 :(得分:1)

Pymodbus确实支持ReadFileRecordRequest (0x14),但使用起来有些棘手,该请求希望将记录列表作为其有效内容的一部分进行查询。每个记录都是具有以下属性的子请求。

  

引用类型:1个字节(必须指定为6个字节)

     

文件号:2个字节

     

文件中的起始记录号:2个字节

     

要读取的记录的长度:2个字节。

为便于创建这些子请求,pymodbus提供了一个类FileRecord,该类可用于表示每个子请求。请注意,读取的数据量(253字节)也有限制,因此您需要确保记录的总长度小于该长度。

这是示例代码。

import logging

logging.basicConfig()

log = logging.getLogger()
log.setLevel(logging.DEBUG)

from pymodbus.file_message import FileRecord, ReadFileRecordRequest

from pymodbus.client.sync import ModbusSerialClient


client = ModbusSerialClient(method="rtu", port="/dev/ptyp0", baudrate=9600, timeout=2)

records = []
# Create records to be read and append to records
record1 = FileRecord(reference_type=0x06, file_number=0x01, record_number=0x01, record_length=0x01)
records.append(record1)

request = ReadFileRecordRequest(records=records, unit=1)
response = client.execute(request)
if not response.isError():
    # List of Records could be accessed with response.records
    print(response.records)
else:
    # Handle Error
    print(response)

注意。此功能几乎未经测试,如果您在使用此功能时遇到任何问题,请随时提出github问题。