eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaKonwerter TCP/IP<->RS485
Ilość wypowiedzi w tym wątku: 29

  • 1. Data: 2019-12-28 00:32:17
    Temat: Konwerter TCP/IP<->RS485
    Od: heby <h...@p...onet.pl>

    Cześć.

    Sporo programów ma opcje komunikacji z RS485 przez TCP.

    Czy ktoś może mi powiedzieć jak to działa w praktyce?

    Wyobrażam sobie najtrywialniejszy przypadek, czyli przekierowanie
    strumienia TCP do portu RS485, wprost, bez żadnego analizowania bajtów
    (np. socat).

    Ale to ma wady:
    a) pakiety TCP mogą być pocięte i posklejane, bajty przychodzą z
    opóźnieniami, dziurami a RS485 ma ścisłe zależności czasowe
    b) nie wiadomo kiedy przełaczyć na odbiór, tam jest tylko bodaj 3.5
    znaku czasu na zmianę kierunku

    Czy to jest faktycznie tak realizowane czy też obudowuje się to w jakiś
    protokół wyższej warstwy budujący właściwe ramki?

    Po poczytaniu internetów mam wrażenie że to jest faktycznie tak
    prymitywnie realizowane. Ale może ktos mnie wyprowadziz błędu.


  • 2. Data: 2019-12-28 16:47:05
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sat, 28 Dec 2019 00:32:17 +0100, heby napisał(a):
    > Sporo programów ma opcje komunikacji z RS485 przez TCP.
    > Czy ktoś może mi powiedzieć jak to działa w praktyce?
    >
    > Wyobrażam sobie najtrywialniejszy przypadek, czyli przekierowanie
    > strumienia TCP do portu RS485, wprost, bez żadnego analizowania bajtów
    > (np. socat).
    >
    > Ale to ma wady:
    > a) pakiety TCP mogą być pocięte i posklejane, bajty przychodzą z
    > opóźnieniami, dziurami a RS485 ma ścisłe zależności czasow

    ethernet jest szybki, caly pakiet sie zmiesci w jednym znaku RS :-)

    > b) nie wiadomo kiedy przełaczyć na odbiór, tam jest tylko bodaj 3.5
    > znaku czasu na zmianę kierunku

    Skoro przychodzi pakietami, to naturalne wyslac caly pakiet.

    I chyba tylko jakies dlugie dane moga byc dziwnie podzielone,
    czy jesli rzeczywiscie przechodzi przez caly Internet.

    Ale ... widzialem na wifi dlugie opoznienia.

    J.


  • 3. Data: 2019-12-28 17:16:50
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: heby <h...@p...onet.pl>

    On 28/12/2019 16:47, J.F. wrote:
    > ethernet jest szybki, caly pakiet sie zmiesci w jednym znaku RS :-)

    Internet już nie.

    >> b) nie wiadomo kiedy przełaczyć na odbiór, tam jest tylko bodaj 3.5
    >> znaku czasu na zmianę kierunku
    > Skoro przychodzi pakietami, to naturalne wyslac caly pakiet.

    Przychodzi strumieniem. O nieznanych punkach krojenia, w dodatku
    niezależnych ani od nadawcy ani od odbiorcy. Nie wiadomo czy następny
    znak nie dochodzi bo to już koniec czy następny nie dochodzi bo porno ma
    QoS.

    > I chyba tylko jakies dlugie dane moga byc dziwnie podzielone,
    > czy jesli rzeczywiscie przechodzi przez caly Internet.
    > Ale ... widzialem na wifi dlugie opoznienia.

    Krojenie pakietów odbywa się nawet w domowym routerze do internetu.

    Albo to jest jeszcze jedna z tych skrajnie dziadowskich "technologii" w
    automatyce albo nie potrafie się doczytać jak to ma działać poprawnie.


  • 4. Data: 2019-12-28 19:47:27
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: Piotrek <p...@p...na.berdyczow.info>

    On 28-Dec-19 17:16, heby wrote:
    > Albo to jest jeszcze jedna z tych skrajnie dziadowskich "technologii" w
    > automatyce albo nie potrafie się doczytać jak to ma działać poprawnie.

    Pomysł z socat to faktycznie jest raczej cienki ale konkretnie dla
    modbus - bo zgaduję, że o to pytasz - są rozmaite wynalazki
    programistyczne (np. mbusd) albo sprzętowe (np.
    https://www.aliexpress.com/item/32934899607.html), które realizują
    konwersję protokołu modbus RTU <-> modbus TCP.

    IMHO działa. A konkretnie dla sportu odpaliłem serwer openhab "w
    internetach" i sterowałem nim oświetleniem domowym. Szału nie było ale
    światło dało się zapalić i zgasić bez jakiegoś dramatycznego lagu ;-)

    Piotrek


  • 5. Data: 2019-12-28 20:06:24
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: heby <h...@p...onet.pl>

    On 28/12/2019 19:47, Piotrek wrote:
    > Pomysł z socat to faktycznie jest raczej cienki

    Działa. Przy czym zawiera wszelkie problemy z protokołem TCP - a wiec
    nieoczekiwane przerwy. W LANie raczej działa bez problemu, w internecie
    po pietnastym przepakowaniu ramek już niekoniecznie.

    > ale konkretnie dla
    > modbus - bo zgaduję, że o to pytasz - są rozmaite wynalazki
    > programistyczne (np. mbusd)

    mbusd pełni rolę serwera i ma własny protokół (na ile własny a na ile
    standardowy przemysłowo?), najpewniej odporny na problemy czasowe tcp.

    > https://www.aliexpress.com/item/32934899607.html), które realizują
    > konwersję protokołu modbus RTU <-> modbus TCP.

    Dam radę zrobić na Pi.

    > IMHO działa. A konkretnie dla sportu odpaliłem serwer openhab "w
    > internetach" i sterowałem nim oświetleniem domowym. Szału nie było ale
    > światło dało się zapalić i zgasić bez jakiegoś dramatycznego lagu ;-)

    Ale tu nie o lagi chodzi, tylko o to że znacznikiem końca ramki modbus
    jest brak znaku. I tak pechowo może być że w tcp ten brak znaku w
    określonym czasie może przyjść randomicznie.


  • 6. Data: 2019-12-28 21:24:25
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: Mirek <m...@n...dev>

    On 28.12.2019 20:06, heby wrote:

    > Ale tu nie o lagi chodzi, tylko o to że znacznikiem końca ramki modbus
    > jest brak znaku. I tak pechowo może być że w tcp ten brak znaku w
    > określonym czasie może przyjść randomicznie.

    No to zbierasz ramkę po rs aż przyjdzie koniec ramki, po czym ją
    opakowujesz, przesyłasz po tcp. Po drugiej stronie odbierasz, sprawdzasz
    czy cała i wysyłasz po rs.
    Jak to sobie inaczej wyobrażasz?
    Nie wiem jak w modbus, ale nie wszystkie urządzenia gadające normalnie
    po rs485 dadzą się oszukać przejściówkami rs<>tcp, tcp<rs>, bo na
    przykład oczekują odpowiedzi _natychmiast_ po zakończeniu transmisji.
    Można to próbować obejść wysyłając lokalnie "powtórz" i następnie po
    powtórzonej ramce wysłać już odpowiedź, która w między czasie nadeszła.

    --
    Mirek.


  • 7. Data: 2019-12-28 21:37:47
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: heby <h...@p...onet.pl>

    On 28/12/2019 21:24, Mirek wrote:
    >> Ale tu nie o lagi chodzi, tylko o to że znacznikiem końca ramki modbus
    >> jest brak znaku. I tak pechowo może być że w tcp ten brak znaku w
    >> określonym czasie może przyjść randomicznie.
    > No to zbierasz ramkę po rs aż przyjdzie koniec ramki, po czym ją
    > opakowujesz, przesyłasz po tcp. Po drugiej stronie odbierasz, sprawdzasz
    > czy cała i wysyłasz po rs.
    > Jak to sobie inaczej wyobrażasz?

    Jeśli nie opakujesz ramki w jakiś protokół (ze znacznikami końca i
    początku) to nie da się tego osiągnąć bez jakiś problemów związanych ze
    strumieniową formą protokołu TCP. Nie wiadomo kiedy ramka się kończy i
    zaczyna następna, geniusze od modbusa uznali że przerwa w transmisji
    wystarcza a w TCP nie ma żadnej gwarancji że przerwa przyjdzie tam gdzie
    ją nadałeś z drugiej strony.

    Ja pytam o to bo są tylko dwie opcje:

    a) podobnie jak 99% populacji programistów, ludzie produkujący
    konwertery RS485<->TCP nie ogarniają problemów z TCP i działa im przypadkowo

    b) w przemyśle stosuje się jakieś protokoły opakowujace ramki modbus w
    strumieniu, ale nie mogę ich namierzyć (mbusd ma jakiś sposob, ale czy
    wyjatkowy czy standardowy?)

    > Nie wiem jak w modbus, ale nie wszystkie urządzenia gadające normalnie
    > po rs485 dadzą się oszukać przejściówkami rs<>tcp, tcp<rs>, bo na
    > przykład oczekują odpowiedzi _natychmiast_ po zakończeniu transmisji.
    > Można to próbować obejść wysyłając lokalnie "powtórz" i następnie po
    > powtórzonej ramce wysłać już odpowiedź, która w między czasie nadeszła.

    To jest jakiś inny problem, niezwiązany z moją wątpliwoscią co do TCP ;)


  • 8. Data: 2019-12-28 21:39:07
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sat, 28 Dec 2019 21:24:25 +0100, Mirek napisał(a):
    > On 28.12.2019 20:06, heby wrote:
    >> Ale tu nie o lagi chodzi, tylko o to że znacznikiem końca ramki modbus
    >> jest brak znaku. I tak pechowo może być że w tcp ten brak znaku w
    >> określonym czasie może przyjść randomicznie.
    >
    > No to zbierasz ramkę po rs aż przyjdzie koniec ramki, po czym ją
    > opakowujesz, przesyłasz po tcp. Po drugiej stronie odbierasz, sprawdzasz
    > czy cała i wysyłasz po rs.
    > Jak to sobie inaczej wyobrażasz?
    > Nie wiem jak w modbus, ale nie wszystkie urządzenia gadające normalnie
    > po rs485 dadzą się oszukać przejściówkami rs<>tcp, tcp<rs>, bo na
    > przykład oczekują odpowiedzi _natychmiast_ po zakończeniu transmisji.

    To "natychmiast" to chyba symbolicznie, bo kazdy system komputerow ma
    jakis tam czas reakcji.
    Chyba, ze sprzetowe urzadzenie ... ale przeciez trzeba jeszcze kirunek
    przelaczyc ...

    J.


  • 9. Data: 2019-12-29 15:15:37
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: jacek pozniak <j...@f...pl>

    heby wrote:

    > Cześć.
    >
    > Sporo programów ma opcje komunikacji z RS485 przez TCP.
    >
    > Czy ktoś może mi powiedzieć jak to działa w praktyce?
    >
    > Wyobrażam sobie najtrywialniejszy przypadek, czyli przekierowanie
    > strumienia TCP do portu RS485, wprost, bez żadnego analizowania bajtów
    > (np. socat).
    >
    > Ale to ma wady:
    > a) pakiety TCP mogą być pocięte i posklejane, bajty przychodzą z
    > opóźnieniami, dziurami a RS485 ma ścisłe zależności czasowe
    > b) nie wiadomo kiedy przełaczyć na odbiór, tam jest tylko bodaj 3.5
    > znaku czasu na zmianę kierunku
    >
    > Czy to jest faktycznie tak realizowane czy też obudowuje się to w jakiś
    > protokół wyższej warstwy budujący właściwe ramki?
    >
    > Po poczytaniu internetów mam wrażenie że to jest faktycznie tak
    > prymitywnie realizowane. Ale może ktos mnie wyprowadziz błędu.


    Konwertery nic ie dodają.
    W praktyce to działa; ramki modbus są któtsze niż ramki TCP i chyba nie są
    za bardzo, ze względów wydajnościowych, siekane na mniejsze kawałki.

    W ustawieniach takiego konwertera (o ile dobrze pamiętam) chyba jest tylko
    wartość przerwy po jakiej ma wysłać pakiet, który przyjdzie z hosta po r485.

    Ale istnieje jeszcze coś takiego jak ModbusTCP. I tam jest to w prosty
    sposób obudowywane ale już bez crc właściwej dla modbusa.

    jp



    --
    jp

    www.flowservice.pl
    www.flowsystem.pl


  • 10. Data: 2019-12-29 15:45:04
    Temat: Re: Konwerter TCP/IP<->RS485
    Od: heby <h...@p...onet.pl>

    On 29/12/2019 15:15, jacek pozniak wrote:
    > Konwertery nic ie dodają.
    > W praktyce to działa; ramki modbus są któtsze niż ramki TCP i chyba nie są
    > za bardzo, ze względów wydajnościowych, siekane na mniejsze kawałki.

    Niestety to działa w dwie strony:

    write(stream,"ala");
    write(stream,"foo");

    po drugiaj stronie może przyjść:

    "alafoo"

    "ala"
    "foo"

    albo "alaf" "oo" itd.

    Ponadto nie ma czegoś takiego jak ramka tcp na poziomie aplikacji ;)
    Jest strumień.

    > W ustawieniach takiego konwertera (o ile dobrze pamiętam) chyba jest tylko
    > wartość przerwy po jakiej ma wysłać pakiet, który przyjdzie z hosta po r485.

    Czyli niestety miałem racje że to nastepna żałosna technologia :(

strony : [ 1 ] . 2 . 3


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: