eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Modbus, mierzenie odstępu między znakami i paczkami
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2014-04-06 22:30:24
    Temat: Modbus, mierzenie odstępu między znakami i paczkami
    Od: "Robbo" <n...@g...com>

    Witam uprzejmie,

    Tworzę bibliotekę Modbus/RTU w języku C, łącze szeregowe, slave, która
    będzie działać na mikrokontrolerze ATmega. Korzystam ze sprzętowego USART-a
    w ATmega. Zgodnie ze standardem Modbus dla łącza szeregowego, odstęp między
    znakami w pojedynczej paczce nie może być większy niż 1,5 *
    czas_przesyłania_pojedynczego_znaku. Natomiast odstęp między paczkami
    powinien być większy niż 3,5 * czas_przesyłania_pojedynczego_znaku. Jest to
    pokazane na stronie nr 13 tego dokumentu:
    http://modbus.org/docs/Modbus_over_serial_line_V1_02
    .pdf
    Żeby dokonywać pomiarów zgodnie z tym, jako pokazano to w standardzie,
    powinienem wiedzieć, kiedy kończy się transmisja znaku i kiedy zaczyna się
    transmisja kolejnego znaku. Ponieważ korzystam ze sprzętowego USART-a i
    przerwania SIG_UART_RECV, to wiem tylko, kiedy kończy się transmisja znaku.
    Wstępnie postanowiłem korzystać z SIG_UART_RECV (informacja w momencie
    zakończenia przesyłania znaku) i mierzyć czas między znakami jako 2,5 *
    czas_przesyłania_pojedynczego_znaku oraz czas między paczkami jako 4,5 *
    czas_przesyłania_pojedynczego_znaku. Chciałem zapytać, czy takie podejście
    do tematu będzie prawidłowe?

    Przygotowałem ilustrację graficzną:
    http://s11.postimg.org/43qi83etf/Modbus.png

    Pozdrawiam,
    Robbo


  • 2. Data: 2014-04-07 09:40:52
    Temat: Re: Modbus, mierzenie odstępu między znakami i paczkami
    Od: John Smith <d...@b...pl>

    On 06-04-2014 22:30, Robbo wrote:
    > Witam uprzejmie,
    >
    > Tworzę bibliotekę Modbus/RTU w języku C, łącze szeregowe, slave, która
    > będzie działać na mikrokontrolerze ATmega. Korzystam ze sprzętowego
    > USART-a w ATmega. Zgodnie ze standardem Modbus dla łącza szeregowego,
    > odstęp między znakami w pojedynczej paczce nie może być większy niż 1,5
    > * czas_przesyłania_pojedynczego_znaku. Natomiast odstęp między paczkami
    > powinien być większy niż 3,5 * czas_przesyłania_pojedynczego_znaku. Jest
    > to pokazane na stronie nr 13 tego dokumentu:
    > http://modbus.org/docs/Modbus_over_serial_line_V1_02
    .pdf
    > Żeby dokonywać pomiarów zgodnie z tym, jako pokazano to w standardzie,
    > powinienem wiedzieć, kiedy kończy się transmisja znaku i kiedy zaczyna
    > się transmisja kolejnego znaku. Ponieważ korzystam ze sprzętowego
    > USART-a i przerwania SIG_UART_RECV, to wiem tylko, kiedy kończy się
    > transmisja znaku. Wstępnie postanowiłem korzystać z SIG_UART_RECV
    > (informacja w momencie zakończenia przesyłania znaku) i mierzyć czas
    > między znakami jako 2,5 * czas_przesyłania_pojedynczego_znaku oraz czas
    > między paczkami jako 4,5 * czas_przesyłania_pojedynczego_znaku. Chciałem
    > zapytać, czy takie podejście do tematu będzie prawidłowe?
    >
    > Przygotowałem ilustrację graficzną:
    > http://s11.postimg.org/43qi83etf/Modbus.png

    Jeżeli chcesz być pewny zależności czasowych, to pomiar robisz
    oscyloskopem albo analizatorem cyfrowym.
    Mikrokontrolery mogą mieć bufory sprzętowe i zmienić zależności czasowe
    między wysyłanymi znakami.
    K.



  • 3. Data: 2014-04-07 09:56:15
    Temat: Re: Modbus, mierzenie odstępu między znakami i paczkami
    Od: pytajacy <r...@p...fm>

    Zobacz tutaj:
    http://freemodbus.berlios.de/

    pytajacy


  • 4. Data: 2014-04-07 14:53:37
    Temat: Re: Modbus, mierzenie odstepu miedzy znakami i paczkami
    Od: "Robbo" <n...@g...com>

    Nie mam pewnosci, ale we Freemodbus wyglada troche tak, jakby nie
    przejmowali sie odleglosciami miedzy znakami (1,5 * T), a jedynie
    odleglosciami miedzy ramkami (3,5 * T). Bazuja zdaje sie na SIG_UART_RECV
    tak, jak ja to chcialem zrobic. Przy czym takze wyglada na to, ze licza czas
    3,5 * T, a nie 4,5 * T jak to chyba powinno byc, gdy mamy pomiar tylko po
    przeslaniu znaku, a nie po przeslaniu znaku i na poczatku przesylania.

    Nie za bardzo rozumiem zadnie (plik mbrtu.c we Freemodbus), a moze jest ono
    istotne:
    "* The reload for t3.5 is 1.5 times this value and similary
    * for t3.5."

    Pozdrawiam,
    Robbo


  • 5. Data: 2014-04-07 18:16:05
    Temat: Re: Modbus, mierzenie odstępu między znakami i paczkami
    Od: "michal" <...@b...pl>


    Użytkownik "Robbo" <n...@g...com> napisał w wiadomości
    news:5341b961$0$2228$65785112@news.neostrada.pl...
    > Witam uprzejmie,
    >
    > Tworzę bibliotekę Modbus/RTU w języku C, łącze szeregowe, slave, która
    > będzie działać na mikrokontrolerze ATmega. Korzystam ze sprzętowego
    > USART-a w ATmega. Zgodnie ze standardem Modbus dla łącza szeregowego,
    > odstęp między znakami w pojedynczej paczce nie może być większy niż 1,5 *
    > czas_przesyłania_pojedynczego_znaku. Natomiast odstęp między paczkami
    > powinien być większy niż 3,5 * czas_przesyłania_pojedynczego_znaku. Jest
    > to pokazane na stronie nr 13 tego dokumentu:
    > http://modbus.org/docs/Modbus_over_serial_line_V1_02
    .pdf
    > Przygotowałem ilustrację graficzną:
    > http://s11.postimg.org/43qi83etf/Modbus.png
    >
    > Pozdrawiam,
    > Robbo

    czesc.
    w mojej opinii (niekoniecznie prawidlowej) najprosciej zrobić to za
    pomocą timera uruchamianego właśnie w obsłudze SIG_UART_RECEIVE
    uruchamiasz timer i kolejne przerwanie SIG_UART_RECEIVE kasuje timer
    a jak nie zdąży to w przerwaniu timera musisz ocenić czy błąd transmisji czy
    koniec ramki przy czym ja zrobiłbym tylko warunek na koniec ramki (by nie
    mieć
    kłopotów z tym że komuś uart/(program właściwie) w drugim urządzeniu nie
    wyrabia - gdy transmisja błędna to i tak wyjdzie za pomocą crc - format
    ramki jest dość sztywny) tym ze przeranie jest na końcu a nie na początku
    znaku
    przejmowałbym się najmniej, uart jak zacznie odbierać to musi odebrać do
    konca.
    pozdrawiam.
    michal






  • 6. Data: 2014-04-09 09:50:39
    Temat: Re: Modbus, mierzenie odst?pu mi?dzy znakami i paczkami
    Od: John Smith <d...@b...pl>


    > czesc.
    > w mojej opinii (niekoniecznie prawidlowej) najprosciej zrobiae to za
    > pomoc? timera uruchamianego w?a?nie w obs?udze SIG_UART_RECEIVE
    > uruchamiasz timer i kolejne przerwanie SIG_UART_RECEIVE kasuje timer

    To rozwiązanie nie uwzględnia buforowania sprzętowego w uC, obsługi
    przerwań, itp.
    K.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: