Ok, spróbuję, aczkolwiek może to trochę potrwać, bo liczniki są 200km ode mnie.
Terminacji nie próbowałem, ponieważ wyczytałem, że stosuje się ją przy transmisji danych na większe odległości. W moim przypadku odległość Raspberry od licznika to max 5m.
Dodam jeszcze, że użyte parametry są domyślnymi wg dokumentacji płytki Modbus RTU. Poniżej log z programu mbpoll:
$ sudo mbpoll -a 41 -b 19200 -t 4:float -r 256 -0 -c 16 -s 1 -d 8 -P even -v /dev/ttyAMA0
mbpoll 1.0-0 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2015 epsilonRT, All rights reserved.
This software is governed by the CeCILL license <
http://www.cecill.info>
Opening /dev/ttyAMA0 at 19200 bauds (E, 8, 1)
Protocol configuration: Modbus RTU
Slave configuration...: address = [41]
start reference = 256, count = 16
Communication.........: /dev/ttyAMA0, 19200-8E1
t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
-- Polling slave 41... Ctrl-C to stop)
[29][03][01][00][00][10][43][D2]
Waiting for a confirmation...
ERROR Connection timed out: select
Read output (holding) register failed: Connection timed out
Są jeszcze jakieś inne pomysły?