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