问题描述
我正在使用 minimummodbus python 库将我的 RaspBerry Pi 与“Spacelogic Thermostat TC900”(RTU)进行通信。
我读取数据没有问题,但是当我尝试写入数据时,控制台显示下一个错误:
No communication with the instrument (no answer)
在我看来,这个错误没有意义,因为如果我能读,我必须和仪器有通信。
minimalmodbus 主页:https://minimalmodbus.readthedocs.io/en/stable/index.html
minimalmodbus write_bits 页:https://minimalmodbus.readthedocs.io/en/stable/apiminimalmodbus.html?highlight=write_bits#minimalmodbus.Instrument.write_bits
我的代码:
#imports
import minimalmodbus
import serial
#instr creation
instr = minimalmodbus.Instrument('/dev/ttyUSB0',1)
#instr config
instr.serial.baudrate = 9600
instr.serial.timeout = 1
instr.mode = minimalmodbus.MODE_RTU
instr.serial.parity = serial.PARITY_ODD
instr.serial.bytesize = 8
instr.serial.stopbits = 1
instr.debug = True
try:
print("READ:")
print(instr.read_bits(4,3,functioncode=1))
except Exception as e:
print("Error reading coil: ",e)
try:
print("WRITE")
instr.write_bits(5,[True,False])
except Exception as e:
print("Error writing Coil: ",e)
控制台输出:
READ:
MinimalModbus debug mode. Will write to instrument (expecting 6 bytes back): '\x01\x01\x00\x04\x00\x03=Ê' (01 01 00 04 00 03 3D CA)
MinimalModbus debug mode. Clearing serial buffers for port /dev/ttyUSB0
MinimalModbus debug mode. No sleep required before write. Time since prevIoUs read: 25577762.09 ms,minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument: '\x01\x01\x01\x04PK' (01 01 01 04 50 4B) (6 bytes),roundtrip time: 42.5 ms. Timeout for reading: 1000.0 ms.
[0,1]
WRITE
MinimalModbus debug mode. Will write to instrument (expecting 8 bytes back): '\x01\x0f\x00\x05\x00\x02\x01\x01ÓW' (01 0F 00 05 00 02 01 01 D3 57)
MinimalModbus debug mode. Clearing serial buffers for port /dev/ttyUSB0
MinimalModbus debug mode. Sleeping 1.98 ms before sending. Minimum silent period: 4.01 ms,time since read: 2.03 ms.
MinimalModbus debug mode. Response from instrument: '' () (0 bytes),roundtrip time: 1001.8 ms. Timeout for reading: 1000.0 ms.
Error writing Coil: No communication with the instrument (no answer)
我也试过pymodbus,但还是一样,我只能读取数据。
我认为错误可能出在恒温器上,但我使用 Modbus Poll 在上面写了,我没有问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)