Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Modbus RTU - odczyt z licznikow

kasztanowy_jim 19 Jul 2018 13:33 1506 19
  • #1
    kasztanowy_jim
    Level 8  
    Cześć.

    Mam dwa liczniki przepływu metronic FP-2001 spięte razem w sieć MODBUS RTU, po RS485. Zapinam się z komputerem i konwerterem DIGITUS. Niestety, jeśli mam do sieci wpięte oba liczniki, to z żadnego nie mogę czytać. Wypinając jeden licznik, bez problemu czytam dane z drugiego (a więc parametry sieci, adresacja, rejestry są ok.). Jeśli są wpięte - przy próbach odczytu z jednego lub drugiego mam Read Error i Write Error naprzemian. Testowane przez ModbusPoll i Mbus, w obu programach ta sama sytuacja. Zapinanie terminatorów 120 ohm na obu końcach sieci nie pomaga.

    Co ciekawe. Jeśli mam wpięte oba liczniki do sieci i je odpytuję, na odpytywanym liczniku miga dioda EXT (co wg dtr jest "potwierdzeniem zaadresowania licznika przez komputer przy komunikacji RS485). Wygląda więc na to, że zapytania do liczników docierają.

    Nie pomaga również zwiększanie wartości TimeOut w programie testującym (próbowałem na 1, 2, 5, 7 sekund).

    Czy macie może pomysł, o co może chodzić?
  • #2
    pearlchili
    Level 14  
    Czy oba liczniki mają ustawione unikalne adresy Modbus?
    Czy na pewno prawidłowo podłączone linie transmisyjne?

    Przy podpinaniu "na krótko" do komputera terminatory zazwyczaj mogą być pomijane.

    Do testów polecam użyć qModMaster, bo w tym programie w "ładny" sposób można pooglądać treść ramek biegających po magistrali i powinieneś widzieć co się dzieje po wysłaniu zapytania przez mastera.
  • Helpful post
    #3
    kk.2000
    Level 26  
    Jakie masz adresy poszczególnych urządzeń, tj. stacja bazowa, licznik nr 1 i licznik nr 2?

    Jakie masz długości przewodu łączącego i jaki to przewód? (skrętka, FTP itd)

    Czy obydwa liczniki podłączasz bezpośrednio do portu master czy z mastera przewód idzie do jednego z liczników a z niego do następnego?
  • Helpful post
    #4
    Pittt
    Level 32  
    jeżeli przepinasz tylko urządzanie i raz działa jedno a raz drugie, tzn że mają ten sam adres, pewnie 1. w jednym urządzeniu musisz zmienić jego adres, zmieniając parametr w określonym rejestrze. znajdziesz to w instrukcji.
  • #5
    kasztanowy_jim
    Level 8  
    Adresy i linia są ok - jeśli wypnę jeden licznik sieci, z drugiego bez problemu wszystko czytam.
    Liczniki mają adres 5 i 6. Załączam zdjęcie z poleconego przez Ciebie programu przy obu licznikach wpiętych i odpytywaniu licznika o adresie 5 (drugi licznik ma adres 6). Czy coś Ci to mówi?

    Edit: na podstawie informacji z neta: wygląda na to, że liczniki zawsze wysyłają odpowiedzi, nawet jeśli zapytanie nie jest adresowane do nich. Natomiast nie mam pojęcia jak można to zmienić
  • #6
    Pittt
    Level 32  
    A jak są wpięte oba to możesz odczytywać tylko jeden albo tylko drugi ?
  • #7
    kasztanowy_jim
    Level 8  
    Nie, jeśli są wpięte oba - nie mogę czytać zadnego
  • #8
    Pittt
    Level 32  
    a w programie zmieniasz adres urządzenia jak przepinasz liczniki aby je odpytać ?
  • #9
    kasztanowy_jim
    Level 8  
    Oczywiście :) Sytuacja: Mam wpięty tylko licznik z adresem 6 i działa, wpinam licznik z adresem 5 i w tym momencie zrywa komunikację z licznikiem 6, odpytuję 5 i też nic. Gdy wypnę dowolny z nich, to drugi działa
  • Helpful post
    #10
    kk.2000
    Level 26  
    kasztanowy_jim wrote:
    Edit: na podstawie informacji z neta: wygląda na to, że liczniki zawsze wysyłają odpowiedzi, nawet jeśli zapytanie nie jest adresowane do nich.


    Sprawdź to osobiście, kolego. Podłącz licznik z adr. 6, ale odpytuj adres 5. Odpowie czy nie?

    Sprawa 2.
    Nie odpytuj 10 kolejnych rejestrów, tylko skup się na jednym.
  • Helpful post
    #11
    Pittt
    Level 32  
    Może masz uszkodzony któryś interfejs RS485 albo się nie wyrabiają w czasie ? Spróbuj z jeszcze jednym urządzeniem.
  • #12
    kasztanowy_jim
    Level 8  
    kk.2000 wrote:
    Sprawdź to osobiście, kolego. Podłącz licznik z adr. 6, ale odpytuj adres 5. Odpowie czy nie?
    - w takiej sytuacji jest TimeOut
    kk.2000 wrote:
    Nie odpytuj 10 kolejnych rejestrów, tylko skup się na jednym.
    - odpytujac 1 rejestr ta sama sytuacja

    Dodano po 3 [minuty]:

    Pittt wrote:
    Może masz uszkodzony któryś interfejs RS485 albo się nie wyrabiają w czasie ? Spróbuj z jeszcze jednym urządzeniem.

    Jeśli w sieci mam wpięty tylko jeden licznik (obojętnie który), to wszystko jest ok - czy to nie oznacza, że z interfejsem wszystko jest ok?
    Jeśli komunikacja nie wyrabia się w czasie - czy nie wystarczyłoby zwiększenie TimeOut? Jak pisałem probowałem nawet na 7-8 sekundach, i nic.
    Wcześniej miałem wpięty jeszcze jeden licznik i było podobnie, ograniczyłem się do dwóch żeby łatwiej zdiagnozować problem.
  • Helpful post
    #13
    Pittt
    Level 32  
    masz załączoną terminację ? po stronie PC jakiego interfejsu używasz ?

    Mimo wszystko spróbuj popodmieniać te liczniki.
  • #14
    kasztanowy_jim
    Level 8  
    Po stronie PC: konwerter digitus DA-70157, wpięty do PC pod usb.

    Terminacja: zapięcie 120 ohm na obu końcach nic nie daje. Co ciekawe, jeśli mam wpięty tylko jeden licznik i sprawną komunikację i założę terminator na początek (przy konwerterze) to zrywa komunikację.-

    Dodano po 1 [minuty]:

    Właśnie sprawdzałem na 3 innych i to samo
  • #15
    Pittt
    Level 32  
    Pozostaje testetowanie interfejsu w PC (ja mam taki), lub przetestowanie go z innymi urządzeniami lub kontakt z producentem licznika. Może trzeba jeszcze coś w nich ustawić.
  • Helpful post
    #16
    kk.2000
    Level 26  
    kasztanowy_jim wrote:
    kk.2000 wrote:
    Sprawdź to osobiście, kolego. Podłącz licznik z adr. 6, ale odpytuj adres 5. Odpowie czy nie?
    - w takiej sytuacji jest TimeOut
    kk.2000 wrote:
    Nie odpytuj 10 kolejnych rejestrów, tylko skup się na jednym.
    - odpytujac 1 rejestr ta sama sytuacja


    Jeśli TimeOut to bajki z internetu masz już za sobą.

    W takim razie koniecznie sprawdż następujące podłączenie:

    Przewód (koniecznie skrętka) biegnie od mastera do jednego z liczników. Z tego licznika kolejny przewód biegnie do następnego licznika. Bez terminatorów.

    Jaka prędkość transmisji?
  • Helpful post
    #17
    pearlchili
    Level 14  
    kasztanowy_jim wrote:
    Adresy i linia są ok - jeśli wypnę jeden licznik sieci, z drugiego bez problemu wszystko czytam.
    Liczniki mają adres 5 i 6. Załączam zdjęcie z poleconego przez Ciebie programu przy obu licznikach wpiętych i odpytywaniu licznika o adresie 5 (drugi licznik ma adres 6). Czy coś Ci to mówi?


    Na podstawie tego co wkleiłeś coś się sypie z interpretowaniem ramek odpowiedzi. W zapytaniu pytasz o 10 rejestrów a ramka odpowiedzi nie dość, że zaczyna się od 00, a powinna od adresu slave'a to jeszcze całość odpowiedzi wygląda na rozbitą na dwie osobne ramki i do tego bez CRC na końcu.

    Miałem raz podobną sytuację przy odczycie wielu urządzeń z jednej magistrali. W tamtym przypadku problem wynikał z kiepskiego elektrycznego wykonania interfejsów RS485, gdzie przy kilkunastu podłączonych urządzeniach spadek napięcia różnicowego transmisji był tak duży, że uniemożliwiał komunikację. Ale nie sądzę, żeby przy dwóch urządzeniach działy się takie cyrki...
    Jak możesz to wypróbuj też jakiś inny adapter do komputera.
  • #18
    kasztanowy_jim
    Level 8  
    Prędkość 9600

    Podłączenie poprawne: od mastera do pierwsze urzadzenia, potem do drugiego itp.
  • #19
    kk.2000
    Level 26  
    kasztanowy_jim wrote:
    Prędkość 9600

    Czyli prędkość nie jest na tyle duża, żeby wymagała terminatora. Rozumiem jednak, że próbowałeś podłączenia terminatora na ostatnim złączu magistrali...

    kasztanowy_jim wrote:
    Podłączenie poprawne: od mastera do pierwsze urzadzenia, potem do drugiego itp.

    Zatem masz problem z interfejsem. Nie radzi sobie z impedancją dwóch urządzeń podpiętych na raz. Co to za interfejs?

    Swoją drogą, to, że nie robi różnicy, ile rejestrów odczytujesz na raz, bo nie działa komunikacja, to nie znaczy, że należy odpytywać 10. Zmniejsz tą wartość do 1. Unikniesz kolejnego problemu - przepełnienia bufora odczytu.
  • #20
    kasztanowy_jim
    Level 8  
    kasztanowy_jim wrote:
    o stronie PC: konwerter digitus DA-70157, wpięty do PC pod usb.