有没有一个python库,它实现了读写文件记录的函数(函数代码: 20,21)。流行的pymodbus库(pymodbus,pymodbusTCP)提供了这些功能,但没有实现它们。谢谢。
发布于 2018-09-26 12:37:42
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问题。
https://stackoverflow.com/questions/52494011
复制相似问题