Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

komunikacja rs485 - pc jak sprawdzić poprawność przesyłu

24 Lip 2019 08:33 264 10
  • Poziom 3  
    Witam

    Na wstępie zaznaczę że jestem zielony w temacie. Mam miernik jak na zdjęciach, który ma możliwość komunikacji po RS485.

    komunikacja rs485 - pc jak sprawdzić poprawność przesyłu

    Potrzebuję przesłać z niego dane do komputera i zapisywać je co np. 15 sek. Próbowałem przesłać dane do komputera za pomocą konwertera jak na zdjęciu i chciałem odczytać dane za pomocą programu CoolTermWin.
    komunikacja rs485 - pc jak sprawdzić poprawność przesyłu
    Niestety program widzi port szeregowy COM ale nie wyświetla żadnych danych. Czy winą może być przejściówka? Czy powinienem zakupić jakaś lepszą przejściówkę ? Czy jest jakiś prosty sposób żeby sprawdzić czy mam komunikację z analizatorem? W załączniku instrukcja miernika.
  • Poziom 28  
    Prawdopodobnie przejściówka jest dobra. Komunikacja powinna odbywać się protokołem MODBUS, więc sam terminal to za mało.
    Domyślne parametry transmisji (z instrukcji):
    MODBUS COMMUNICATIONS : DEFAULT PARAMETERS
    Peripheral number : 1
    Transmission speed : 9600
    Parity : No
    Number of data bits : 8
    Number of Stop bits : 1


    Resztę potrzebnych parametrów, m.in. mapę zmiennych również znajdziesz w instrukcji.
  • Poziom 20  
    Cechy protokołu MODBUS (Link)
    - Zasada dostępu do łącza „Query – Response” („Zapytanie - Odpowiedz”)
    - Węzeł nadrzędny (Master) steruje pracą sieci
    - Węzły podrzędne (Slaves) nie podejmują samodzielnie transmisji, odpowiadają na zdalne polecenia od węzła nadrzędnego.
    - Każdy z węzłów podrzędnych posiada przypisany unikalny adres z zakresu 1-247.
    - Węzeł nadrzędny nie posiada adresu.

    Na stronie 46 instrukcji masz przykładowe ramki zapytania i odpowiedzi, a na 44 listę dostępnych zapytań. Zwróć uwagę na adres urządzenia w zapytaniu (prawdopodobnie domyślnie masz ustawione 1, w przykładach jest 10).
  • Poziom 3  
    chudybyk napisał:
    Prawdopodobnie przejściówka jest dobra. Komunikacja powinna odbywać się protokołem MODBUS, więc sam terminal to za mało.
    Domyślne parametry transmisji (z instrukcji):
    MODBUS COMMUNICATIONS : DEFAULT PARAMETERS
    Peripheral number : 1
    Transmission speed : 9600
    Parity : No
    Number of data bits : 8
    Number of Stop bits : 1


    Resztę potrzebnych parametrów, m.in. mapę zmiennych również znajdziesz w instrukcji.


    W takim razie co muszę jeszcze dokupić dodatkowo? Parametry w menedżerze urządzeń ustawiłem tak jak napisałeś już wcześniej lecz nic to nie dało.
  • Poziom 21  
    Jak rozumiem miernik ma wyjście Modbus RTU.

    Programem terminalowym można go opukać i uzyskać odpowiedź ale trzeba poskładać poprawną ramkę na którą składa się (przykładowo):
    1. adres urządzenia
    2. numer funkcji (np 0x03 - odczyt rejestrów 16bitowych),
    3. liczba danych pobieranych
    4. adres pierwszego odczytywanego rejestru w urządzeniu
    5. suma kontrolna CRC z powyższego

    Ręczne wyskładanie poprawnej ramki to jest męka nawet dla osoby, która wie jak to zrobić. Błędna ramka w większości przypadków zostanie milcząco zignorowana przez urządzenie odpytywane i wtedy nie wiadomo czy problem w kabelkach, parametrach czy inny ...


    Do testów potrzebny jest więc program typu "modbus pool", który zrobi większość rzeczy sam. Inicjuje komunikację i odbiera dane od urządzenia. Programów tego typu jest multum, część płatna. Tu jest jakiś wątek częściowo zbieżny (https://www.elektroda.pl/rtvforum/topic3438895.html)

    Trzeba ustawić w programie i urządzeniu te same parametry transmisji (np: 9600 8N1), ten sam adres SLAVE (np.1), z dokumentacji znaleźć jakie adresy rejestrów należy czytać (np 1 - UL1, 2 -UL2) i wtedy próbować nawiązać łączność. Przy braku komunikacji warto zacząć od zamiany miejscami przewodów komunikacyjnych A/B, bo w tej kwestii panuje rozmyślny bałagan i część producentów oznacza A jako "minus", inni jako "plus"
  • Poziom 3  
    ArtXs napisał:
    Cechy protokołu MODBUS (Link)
    - Zasada dostępu do łącza „Query – Response” („Zapytanie - Odpowiedz”)
    - Węzeł nadrzędny (Master) steruje pracą sieci
    - Węzły podrzędne (Slaves) nie podejmują samodzielnie transmisji, odpowiadają na zdalne polecenia od węzła nadrzędnego.
    - Każdy z węzłów podrzędnych posiada przypisany unikalny adres z zakresu 1-247.
    - Węzeł nadrzędny nie posiada adresu.

    Na stronie 46 instrukcji masz przykładowe ramki zapytania i odpowiedzi, a na 44 listę dostępnych zapytań. Zwróć uwagę na adres urządzenia w zapytaniu (prawdopodobnie domyślnie masz ustawione 1, w przykładach jest 10).


    Tyle, że jak napisałem jestem zielony w temacie. Myślałem, że da się po prostu podłączyć w jakiś prosty sposób analizator do PC i zczytać dane do PC za pomocą prostego programu typu CoolTermWin. Ustawiłem adres urządzenia już wcześniej lecz chyba to nie pomaga
  • Poziom 20  
    Spróbuj użyć Modbus Tester Link

    Przykładowa ramka jest na stronie 46. W tym przykładzie urządzenie ma adres 10 (0A hex). Na stronie 44 jest tabela rejestrów z wartościami chwilowymi, max. i min.
    Każdy mierzony parametr zajmuje 2 rejestry.

    Ustaw adres - domyślnie powinien być 1
    Funkcja - 04 (Data Type)
    Adres startowy - z tabeli np. 2A jak w przykładzie.
    Liczba rejestrów - 2
  • Poziom 3  
    Dzięki za pomoc jak na razie czyta mi 40 zmiennych za pomocą programu Modbus Poll. Kiedy wpiszę większa ilość do wyświetlania zmiennych program wywala błąd. Czy wiecie może co może być przyczyną? I czy mogę prosić o poradę jak stworzyć taki program podobny do Modbus Poll który dodatkowo zapisywałby mi dane do pliku np co 2 minuty ?
  • Poziom 21  
    Urządzenia mają limit zmiennych na jedno zapytanie. Czasami sto, czasami czterdzieści, a czasami tylko jedna. Szczegóły będą w dokumentacji.
  • Poziom 20  
    Ostatnia linijka na stronie 46:
    Cytat:
    Note: Every Modbus frame has a maximum limit of 20 variables (40 register).

    Jednorazowo możesz odczytać 20 zmiennych czyli zawartość 40 rejestrów. Jest to maksymalna długość ramki danych.

    Skopiuj sobie wysyłane zapytania o zmienne które cię interesują (kompletne ramki z CRC). Zawsze będą takie same. Wtedy możesz używać nawet dowolnego terminala lub napisać prosty program odbierający dane z RS-a
  • Poziom 3  
    ArtXs napisał:
    Ostatnia linijka na stronie 46:
    Cytat:
    Note: Every Modbus frame has a maximum limit of 20 variables (40 register).

    Jednorazowo możesz odczytać 20 zmiennych czyli zawartość 40 rejestrów. Jest to maksymalna długość ramki danych.

    Skopiuj sobie wysyłane zapytania o zmienne które cię interesują (kompletne ramki z CRC). Zawsze będą takie same. Wtedy możesz używać nawet dowolnego terminala lub napisać prosty program odbierający dane z RS-a


    Czy mógłbyś mi pomóc w napisaniu takiego programu lub podać jakiś przykład? Mam excela z VBA który odczytuje mi 40 zmiennych ale bez możliwości wyboru. Po prostu 20 pierwszych parametrów z urządzenia a nie wiem za bardzo jak to zmienić