logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

freemodbus próby zapisu i odczytu rejestrow

maly_ZE 15 Maj 2011 13:41 2283 9
REKLAMA
  • #1 9507728
    maly_ZE
    Poziom 14  
    Witam;

    Chciałem zrobić komunikacja AVR->PC po MODBUSIE. Skompilowałem freemodbusa ze strony http://developer.berlios.de/project/showfiles.php?group_id=6120.
    Chciałem teraz odczytać zawartość rejestrów, ale wyskakuje mi jakis bład, tzn dokladnie po wcisnieciu read register pojawia mi sia takie okienko:
    freemodbus próby zapisu i odczytu rejestrow
    i teraz nie wiem czy rejest został dobrze odczytany czy nie.
    Przy próbie zapisu do jakiegos rejestru pojawia sie natomiast takie okno:
    freemodbus próby zapisu i odczytu rejestrow

    Zgodnie z definicja:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    mozna tylko odczytywac/zapisywac rejestry 1000...1003..

    Mógłby mi ktos pomoc i powiedziec w czym moze byc problem.
    Dodatm tylko ze pracuje na atmega32, w winavr, programator isp zgodny z stk200.
    Prosze o pomoc
  • REKLAMA
  • #2 9516473
    victoriii
    Poziom 19  
    0x83 to jest odpowiedź z błędem na funkcję 0x03. Następny bajt to kod błędu. Kod błędu 0x02 to, że czytasz z nieistniejącego adresu. I to się zgadza bo zadeklarowane masz rejestry wejściowe od 1000 a nie Holding. Powinno być:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Proponuję ściągnąć ze strony www.modbus-ida.org manual do Modbusa i doczytać jak to działa.
  • REKLAMA
  • #3 9522526
    maly_ZE
    Poziom 14  
    Niestety po zamiana definicji rejestrów z IMPUT na HOLDING, i oczywiście zmianie wszystkich ich wystąpień w kodzie programu, przy próbie odczytu pojawia się komunikat: "No message received"..
    Jakieś pomysły co teraz jest nie tak.??
  • REKLAMA
  • #4 9523684
    victoriii
    Poziom 19  
    A co jest wysyłane? Program kompiluje się bez błędów i warningów? Próbowałeś modbus testerem (www.modbus.pl)? I tutaj właśnie kłania się AVR i możliwość podglądania co się dzieje w środku procka :(. Ustawienia portu się zgadzają na jednym i na drugim? Na jakim procku to odpalasz?
  • #5 9523857
    clark1234
    Poziom 9  
    Po zmianie IMPUT na HOLDING przy próbie odczytu rejestrów pojawia sie taki kumunikat:
    freemodbus próby zapisu i odczytu rejestrow
    Podczas kompilacji nie ma żadnych warningow..
  • #6 9523918
    markosik20
    Poziom 33  
    Daj sobie spokój z tą biblioteką. Dużo prościej zaimplementować sobie własną obsługę MODBUS'a , zwłaszcza że standard jest otwarty i jest dostępna pełna jego dokumentacja.
  • #7 9524025
    clark1234
    Poziom 9  
    problem w tym ze nie wiem jak sie za to w ogole zabrac.. moze jakis przykłądowy kod by mi rozjasnil troche umysl:)
  • REKLAMA
  • #8 9529487
    victoriii
    Poziom 19  
    Biblioteka jest w porządku i działa. Jej wadą jest rozmiar. Pisząc własną implementację można to zmieścić w ok 2kB kodu.
  • #9 9531869
    Slawek_K
    Poziom 12  
    Witam,

    Temat ten już był poruszany. Proponuję zobaczyć ten wątek: https://www.elektroda.pl/rtvforum/topic1943783.html

    W tym przykładzie jest ustawiona tylko obsługa rejestrów typu Input Register. Aby odczytywać rejestry Holding Register należy w kodzie dopisać kilka linii. Poniżej przedstawiam modyfikację, którą ja wprowadziłem w pliku demo.c tego przykładu. Modyfikacja umożliwia odczyt i zapis rejestrów typu Holding Register. Należy zauważyć, że odczyt rejestrów rozpoczyna się od rejestru 1. Parametry transmisji: 9600, 8, N, 1. Adres Modbus: 1.

    pozdrawiam
    Sławek

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #10 9695120
    Konto nie istnieje
    Poziom 1  
REKLAMA