程序是为了循环读取功率仪704地址的数据,程序段如下:
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import time
def sleeptime(hour,min,sec):
return hour*3600 + min*60 + sec
master = modbus_rtu.RtuMaster(
serial.Serial('COM8', baudrate=19200, bytesize=8, parity='N', stopbits=1)
)
master.set_timeout(5.0)
while (True):
data = master.execute(1, cst.READ_HOLDING_REGISTERS, 704, 1)
print (data)
second = sleeptime(0,0,3)
time.sleep(second)
但是每次运行只有第一次能读出来,然后后面就出现以下报错:
Traceback (most recent call last):
File "C:\Users\zqc\Desktop\新建文本文档 (2).PY", line 15, in <module>
data = master.execute(1, cst.READ_HOLDING_REGISTERS, 704, 1)
File "E:\Python\lib\site-packages\modbus_tk\utils.py", line 39, in new
raise excpt
File "E:\Python\lib\site-packages\modbus_tk\utils.py", line 37, in new
ret = fcn(*args, **kwargs)
File "E:\Python\lib\site-packages\modbus_tk\modbus.py", line 306, in execute
response_pdu = query.parse_response(response)
File "E:\Python\lib\site-packages\modbus_tk\modbus_rtu.py", line 46, in parse_response
raise ModbusInvalidResponseError("Response length is invalid {0}".format(len(response)))
modbus_tk.exceptions.ModbusInvalidResponseError: Response length is invalid 0