lopes
lopes

Reputation: 29

no communication with the instrument (no answer) Minimalmodbus

I'm having problem with minimalmodbus library. The slave does not respond to the master's request, I want to request a read. I'm using the Raspberry Pi 3 Model B+, with Python 3.10.1, it's the minimalmodbus library with version 2.0. I'm using the Arduino Mega as a slave and I'm also using a Mini Adapter Serial Converter USB to RS485 is a Converter Module RS485 for Arduino.

import serial
import minimalmodbus

instrument = minimalmodbus.Instrument('COM6',1)
instrument.serial.baudrate = 9600
instrument.serial.timeout = 10
instrument.clear_buffers_before_each_transaction = True
instrument.debug = True
temperature = instrument.read_register(1,1)
print(temperature)
MinimalModbus debug mode. Will write to instrument (expecting 7 bytes back): 01 03 00 01 00 01 D5 CA (8 bytes)
MinimalModbus debug mode. Clearing serial buffers for port COM6
MinimalModbus debug mode. No sleep required before write. Time since previous read: 87898406.00 ms, minimum silent period: 4.01 ms.
MinimalModbus debug mode. Response from instrument:  (0 bytes), roundtrip time:10.0 ms. Timeout for reading: 0 ms.

Upvotes: 1

Views: 3540

Answers (1)

Terrabit70
Terrabit70

Reputation: 11

I have a similar issue on Win10 python 3.7.9. When I write

import minimalmodbus

instrument = minimalmodbus.Instrument('COM3', 2)
instrument.serial.baudrate = 9600
instrument.clear_buffers_before_each_transaction = True

reg_0 = instrument.read_register(0, 0)
reg_1 = instrument.read_register(1, 0)

print(reg_0)
print(reg_1)

instrument.serial.close()

I have error message "minimalmodbus.NoResponseError: No communication with the instrument (no answer)". But, when I write

import minimalmodbus

instrument = minimalmodbus.Instrument('COM3', 2)
instrument.serial.baudrate = 9600
instrument.clear_buffers_before_each_transaction = True
instrument.debug = True

reg_0 = instrument.read_register(0, 0)
reg_1 = instrument.read_register(1, 0)

print(reg_0)
print(reg_1)

instrument.serial.close()

all works correct. I use Arduino UNO as a slave. In ModbusPoll both registrers read correct

Upd. When I use construction "try... except..." all works correctly

import minimalmodbus

instrument = minimalmodbus.Instrument('COM3', 2)
instrument.serial.baudrate = 9600
instrument.clear_buffers_before_each_transaction = True

try:
    reg_0 = instrument.read_register(0, 0)
except minimalmodbus.NoResponseError:
    reg_0 = instrument.read_register(0, 0)      
reg_1 = instrument.read_register(1, 0)

print(reg_0)
print(reg_1)

instrument.serial.close()

Upvotes: 1

Related Questions