1

我正在使用 minimummodbus python 库将我的 Raspberry Pi 与“Spacelogic Thermostat TC900”(RTU)进行通信。

我读取数据没有问题,但是当我尝试在其上写入时,控制台显示下一个错误:

No communication with the instrument (no answer)

在我看来,这个错误没有任何意义,因为如果我能阅读,我必须与仪器进行通信。

最小modbus主页:https ://minimalmodbus.readthedocs.io/en/stable/index.html

minimummodbus 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, 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在上面写字,没有问题。

4

0 回答 0