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

Modbus - jak wygląda budowa ramki danych?

Camillo2000 08 Lut 2011 14:39 4269 18
  • #1 08 Lut 2011 14:39
    Camillo2000
    Poziom 9  

    Witam. Chcę wysłać do urządzenia po modbusie RTU komendę załączającą jedno z wyjść przekaźnikowych. Moje pytanie to jak powinna wyglądać ramka na podstawie poniższych danych:
    Bity nadawane przez koncentrator:
    ADRES-adres urządzenia (1bajt)
    FUNKCJA-5(1bajt)
    ADRES HI-adres wyjścia (starszy bajt)-0
    ADRES LO-adres wyjścia (młodszy bajt)-1,2 lub 10
    WARTOŚĆ HI-wartość(starszy bajt)-FFH
    WARTOŚĆ LO-wartość(młodszy bajt)-0
    CRC LO-crc(młodszy bajt)
    CRC HI-crc(starszy bajt)

    ADRES WYJŚCIA-0001H
    OPIS-pobudzenie wyjścia przekaźnikowego

    Mógłby mi to ktoś wytłumaczyc łopatologicznie.[/code]

    0 18
  • Relpol
  • Pomocny post
    #2 08 Lut 2011 15:23
    jestam
    Specjalista Automatyk

    Nie podałeś jaki jest adres urządzenia. Załóżmy 3. Umieszczasz go w pierwszym bajcie ramki. Później kolejno bajty o wartości 5, 0, 1, 0xff, 0 i dwa bajty crc.

    Ramka: 3, 5, 0, 1, 0xff, 0, 0xdc, 0x18

    CRC policzone tym kalkulatorem, może być błędne. Algorytm z przykładem kodu jest w specyfikacji.

    Numer wyjścia określają bajty trzeci i czwarty. W bajcie trzecim zawsze 0, w bajcie czwartym dozwolone wartości 1, 2 lub 10.
    Wyzerowanie wyjścia to wartość 0 w piątym bajcie ramki, ustawienie - 0xff.

    Kompletna specyfikacja Modbus tutaj.

    Edit: poprawiona suma kontrolna (błąd w danych wpisanych w kalkulatorze CRC, poprawna podana przez kol. WOBI)

    0
  • Relpol
  • #3 08 Lut 2011 19:28
    Camillo2000
    Poziom 9  

    wysyłając ramkę: 3, 5, 0, 1, 0xff, 0, 0xab, 0x3a urządzenie nadal nie reaguje na polecenie.

    1
  • #4 08 Lut 2011 20:04
    Rariusz
    Specjalista Automatyk

    Witam

    A co to za urządzenie ?

    Pozdrawiam

    0
  • #5 08 Lut 2011 20:10
    Camillo2000
    Poziom 9  

    Jest to cyfrowe zabezpieczenie silnika MiniMuz SR. Urządzenie proste ale jednak nie do końca.

    0
  • #6 08 Lut 2011 20:30
    WOBI
    Poziom 19  

    dla ramki 0x03 0x05 0x00 0x01 0xFF 0x00 crc powinna być 0xDC 0x18

    wyliczona z tego ciągu jest 03 05 00 01 FF 00 = 18DC ale w crc wysyłasz pierwszy bajt LSB więc

    cała ramka wysyłasz tak 03 05 00 01 FF 00 DC 18

    ale nie podałeś adresu (pierwszy bajt) więc jeśli chces pomocy to postaraj się pisać szczegóły.

    0
  • #7 08 Lut 2011 23:36
    jestam
    Specjalista Automatyk

    Czym jest ten "koncentrator" o którym piszesz w pierwszym poście?
    Jaki jest adres urządzenia? Czy zgadają się parametry transmisji?

    Do testów dobrze użyć programu takiego jak http://www.modbus.pl/MTester.htm

    0
  • #8 08 Lut 2011 23:55
    Samuraj
    Poziom 35  

    Jak ta ramka ma działać jak odpowiedz jest w drugim poście.

    Cytat:

    Nie podałeś jaki jest adres urządzenia. Załóżmy 3

    Od tego trzeba zacząć a potem sprawdzać dalsze bajty ramki.

    0
  • #9 09 Lut 2011 09:29
    Camillo2000
    Poziom 9  

    Adres urządzenia 2. Do podłączenia z PC używam konwertera RS 232/485 oraz programu SuperMon serial.

    0
  • #10 09 Lut 2011 09:45
    jestam
    Specjalista Automatyk

    Kolego, Ty chyba bardzo nie chcesz uzyskać pomocy. Twoje pytanie to nie

    Cytat:
    Moje pytanie to jak powinna wyglądać ramka na podstawie poniższych danych:


    tylko raczej "nie działa mi i nie wiem co dalej". Moja szklana kula się zacięła, nie wiem jak innych kolegów.

    Co to znaczy "Bity nadawane przez koncentrator:" ? Może być tak opisał od początku do końca, co łączysz z czym, jakie rozkazy chcesz wysłać i dlaczego, gdzie są one podane w dokumentacji i wstawił jakieś linki do dokumentacji urządzeń. Wtedy będzie można spróbować sprawdzić czy robisz coś źle. Skąd my mamy niby wiedzieć, czy to co podałeś w pierwszym poście jest choć poprawnym poleceniem dla MiniMuza? Googlać za dokumentacją za kolegę nie będę.

    0
  • #11 09 Lut 2011 11:14
    Camillo2000
    Poziom 9  

    A więc mając na PC zainstalowany program np. modbus master(ja używam SuperMon) chciałbym podłączyć się do urządzenia slave w moim przypadku jest to moduł minimuz (poprzez konwerter RS232/485).Do slave-a chcę wysyłać rozkazy sterujące wyjściami. Poniżej zamieszczam opis protokołu transmisji dla minimuz.

    0
  • #12 09 Lut 2011 11:27
    jestam
    Specjalista Automatyk

    Czyli "koncentrator" to w tym przypadku PC z programem.

    Podałeś adres urządzenia = 2

    ramka do Muz (hex): 02 05 00 01 FF 00 DD C9

    Muz powinien załączyć K1 na 1s i odpowiedzieć ramką potwierdzenia, jeśli zgadzają się parametry transmisji (1 bit startu, 8 bitów danych, 1 bit stopu. Prędkość transmisji - 9600 bitów/s) i poprawnie działa konwerter i kabel.

    Polecam też program z linku, który podałem - wielokrotnie sprawdzony w podobnych sytuacjach. Ustaw funkcję 5 (zapis bitu) podaj adres, wartość i wyślij ramkę.

    0
  • #13 09 Lut 2011 13:19
    Camillo2000
    Poziom 9  

    Udało się wysłać ramkę jednak odpowiedź Muz-a jest następująca:02 85 01 73 50

    0
  • #14 09 Lut 2011 13:47
    WOBI
    Poziom 19  

    Brak funkcji, albo nie masz w tym sterowniku tego wyjścia K1 albo nie wysłałeś komendy reset.

    02 05 00 0A FF 00 51 35

    Ale bardziej stawiam że nie wysłałeś poleceń i nie masz skonfigurowanego tego sterownika, nie wpisałeś nastaw do niego, a ma ich trochę.

    0
  • #15 09 Lut 2011 14:07
    Camillo2000
    Poziom 9  

    Wyjście K1 na pewno jest bo to ono steruje stycznikiem. Próbowałem drugim programem i zwraca taką samą ramkę.A jeśli chodzi o ustawienia to w Muz-ie jedyne co mogę ustawiać to tylko adres.To jest proste urządzenie i nie ma wielu możliwości.

    0
  • #16 10 Lut 2011 12:32
    WOBI
    Poziom 19  

    Niestety nie piszesz prawdy, ten sterownik ma nastawy i musisz je wprowadzic, np. prądy przy których ma nastapic wyłączenie silnika i inne a jest ich dużo wystarczy poczytać instrukcję.

    na stronie producenta wyraznie jest napisane:

    Cytat:

    Cyfrowe zabezpieczenie silników niskiego napięcia miniMUZ-SR. Przekaźnik miniMUZ-SR przeznaczony jest do ochrony silników niskiego napięcia przed skutkami zwarć międzyfazowych, przeciążeń, asymetrii, pracy silnika niedociążonego oraz od nadmiernej temperatury silnika. Dobór takiego zestawu zabezpieczeń powoduje, że urządzenia kompleksowo zabezpieczenia silnik minimalizując możliwość uszkodzenia lub awarii silnika. Urządzenia posiada również dwa styki przełączne swobodnie programowalne przez użytkownika. Przekaźnik miniMUZ-SR wyposażony jest w duży czytelny wyświetlacz LCD, 5 diód sygnalizujących działanie zabezpieczenia oraz 5-cio przyciskową klawiaturę.


    i co najważniejsze w tym zdaniu:

    Cytat:
    Urządzenia posiada również dwa styki przełączne swobodnie programowalne przez użytkownika. Przekaźnik miniMUZ-SR wyposażony jest w duży czytelny wyświetlacz LCD, 5 diód sygnalizujących działanie zabezpieczenia oraz 5-cio przyciskową klawiaturę.


    co oznacza że klawiatura i wyświetlacz służy do wprowadzenia nastaw parametrów i wyraźnie jest napisane "dwa styki przełączne swobodnie programowalne przez użytkownika" i w dukumentacji pisze że najpierw trzeba zaprogramowac sposób działania K1 i K2.

    więc nie szukaj błędów w ModBusie.
    Zwracana ramka wyraźnie mówi 01 czyli "zła funkcja" co oznacza że nie masz zaprogramowanej tej funkcji więc jest błąd.

    0
  • #17 10 Lut 2011 20:50
    Camillo2000
    Poziom 9  

    Problem w tym, że moje urządzenie jest w wersji bez wyświetlacza(są tylko przyciski) posiadam do niego programator ale z jego pomocą mogę tylko uaktywnić funkcje zabezpieczeniowe i nadać urządzeniu adres. W menu programatora nie ma czegoś takiego jak konfiguracja wyjść.

    0
  • #18 11 Lut 2011 19:37
    WOBI
    Poziom 19  

    Sądzę że masz okrojona wersje sterownika skoro nie masz wyświetlacza i nie ma tej funkcji. Jak sam piszesz że to jest prosta wersja.

    Zwracana ramka wyraźnie mówi (kod błędu =01) czyli "zła funkcja" co oznacza że nie masz zaprogramowanej tej funkcji. Tak odpowiada ten sterownik.

    0
  • #19 11 Lut 2011 22:03
    Camillo2000
    Poziom 9  

    Tak wersja jest na pewno uboższa niż standardowa, ale modbus jest bo urządzenie to do niedawna pracowało w sieci i za pomocą SCADA odczytywano wartości prądów a także załączano i wyłączano napęd.

    0