RaspberryPi +Modbus

Dyskusje o programowaniu mikroprocesorów.

Autor tematu
cspna06
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 05 mar 2018, 20:56

RaspberryPi +Modbus

#1

Post napisał: cspna06 » 05 mar 2018, 21:12

Witam,
Mam za zadanie zczytać dane z licznik Multical 602 (w płytką Modbus RTU http://www.multical.hu/MODBUS_datasheet.pdf). Próbuję do tego wykorzystać RPi3 z dodatkowym shieldem https://botland.com.pl/raspberry-pi-hat ... i-2bb.html.

Wcześniej nie mając do dyspozycji licznika Multical, symulowałem go za pomocą drugiego komputera z konwerterem USB -> RS485 i komunikacja działała bez zarzutów. Po podłączeniu RPi kablem do licznika ciepła nie mam możliwości skomunikować się z tym urządzeniem korzystając z domyślnych parametrów. Bawiłem się też zmianą tych parametrów i nic.

Próbowałem już skrypt przygotowany w Pythonie:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient

client = ModbusClient(method='rtu', port='/dev/ttyAMA0', timeout=1, stopbits = 1, bytesize = 8, baudrate=19200, parity='E')
conn = client.connect()

rr = client.read_holding_registers(0x0100, 16, unit=41)


ponadto korzystałem z programu mbpool https://github.com/epsilonrt/mbpoll , komenda:
sudo mbpoll -a 4 -b 19200 -t 4 -r 0x0100 -c 16 -s 1 -d 8 -P even -v /dev/ttyAMA0

W każdym przypadku otrzymuję błędy typu:
"Read output (holding) register failed: Connection timed out"
"No response received from remote host"

Może ktoś spotkał się wcześniej z czymś takim i byłby mi w stanie pomóc? :D




mareq_bb
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 3
Posty: 246
Rejestracja: 26 wrz 2016, 14:10
Lokalizacja: Bielsko-Biała

Re: RaspberryPi +Modbus

#2

Post napisał: mareq_bb » 06 mar 2018, 08:34

Spróbuj zamienić miejscami przewody A i B. Próbowałeś terminować linię?


Autor tematu
cspna06
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 05 mar 2018, 20:56

Re: RaspberryPi +Modbus

#3

Post napisał: cspna06 » 06 mar 2018, 09:17

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?


mareq_bb
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 3
Posty: 246
Rejestracja: 26 wrz 2016, 14:10
Lokalizacja: Bielsko-Biała

Re: RaspberryPi +Modbus

#4

Post napisał: mareq_bb » 06 mar 2018, 13:14

A ten licznik też używa prędkości 19200? Tu może być pies pogrzebany.


Autor tematu
cspna06
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 05 mar 2018, 20:56

Re: RaspberryPi +Modbus

#5

Post napisał: cspna06 » 06 mar 2018, 16:55

Według informacji od konsultanta technicznego Kamstrup, płytkę Modbus RTU wystarczy tylko włożyć do licznika Multical i jest gotowa do użytku, a parametry połączenia dobieram z dokumentacji technicznej - tam są opisane jako domyślne.


behavior
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 1
Posty: 14
Rejestracja: 04 mar 2005, 14:29
Lokalizacja: Szczecin

Re: RaspberryPi +Modbus

#6

Post napisał: behavior » 21 mar 2018, 08:42

W instrukcji od płytki piszą, że "The module can be addressed as a slave in the range of 1-247" Ty używasz adersu 41 (0x29). Może np. popełniasz prostą pomyłkę i odczytujesz slavea 0x29 zamiast 0x41?


Autor tematu
cspna06
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 4
Posty: 4
Rejestracja: 05 mar 2018, 20:56

Re: RaspberryPi +Modbus

#7

Post napisał: cspna06 » 29 mar 2018, 11:21

Udało się rozwiązać problem!
Otóż płytka Modbus ma trochę inne oznaczenia gniazd: A/- i B/+. W tym przypadku kabelki muszą być podłączone krzyżowo:
A -> B/+, B -> A/-

Dzięki za pomoc, pozdrawiam :)


mareq_bb
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 3
Posty: 246
Rejestracja: 26 wrz 2016, 14:10
Lokalizacja: Bielsko-Biała

Re: RaspberryPi +Modbus

#8

Post napisał: mareq_bb » 29 mar 2018, 11:30

A nie mówiłem :) .
Często łączę magistrale na RS482 i 422 i nawet urządzenia jednego producenta potrafią mieć zamienione styki miejscami.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Arduino, Raspberry pi i inne systemy mikroprocesorowe”