Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Identyfikacja interfejsu.

atom1477 28 Dec 2021 20:09 384 2
SterControl
  • #1
    atom1477
    Level 43  
    Mam sterownik ze starej maszyny CNC.
    I jest tam używany jakiś dziwny interfejs.
    I nie udaje mi się go zidentyfikować.
    Interfejs jest różnicowy jak RS485 (leci przez parę różnicową).
    Ale ma składową stałą równą 0, i jest izolowany zwykłymi transformatorkami.
    Prędkość to 1.25 albo 2.5 Mbaud (zależnie jak liczyć, ale o tym dalej).
    Nie ma żadnego osobnego układu scalonego od transmisji.
    Za transformatorkiem są tylko elementy RC, i sygnał idzie wprost na procesor.
    Tyle że procesor to dziwoląg:
    https://html.alldatasheet.com/html-pdf/166961/TOSHIBA/TMPN3150B1AF/1519/5/TMPN3150B1AF.html
    Procesor obsługuje wiele formatów transmisji, ale nie byli łaskawi napisać jakich.
    Drivery i odbiorniki linii ma wbudowane w środku. Więc nie da się dojść jaki to jest interfejs.
    Można identyfikować wyłącznie po parametrach sygnału.
    Odebrałem przykładową ramkę.
    Zaczyna się długim przebiegiem o stałej częstotliwości (jest to o wiele dłuższe niż widać na oscyloskopie):
    Identyfikacja interfejsu.
    A potem zaczyna się transmisja.
    Wygląda to jak sygnał zakodowany różnicowym kodem Manchester.
    Te szybciej zmieniające się bity mają 2.5 Mbaud. Ale licząc że to jest kod Manchester, to wychodzi baudrate 1.25 Mbaud.
    Zarejestrowałem całość do pliku, i wygląda tak:
    Spoiler:
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    0
    1
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    0
    1
    1
    0
    0
    1
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    1
    0
    0
    1
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    0
    1
    1
    0
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    0
    1
    1
    0
    1
    0
    0
    1
    0
    1
    1
    0
    0
    1
    1
    0
    1
    0
    1
    0
    0
    1
    0
    1
    1
    0
    1
    0
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1
    0


    Zdekodowałem to różnicowym kodem Manchester, i wyszło coś takiego (pominąłem długi ciąg jedynek na początku, i zostawiłem z niego tylko 8 jedynek):
    Spoiler:
    1
    1
    1
    1
    1
    1
    1
    1
    1
    0
    0
    0
    0
    0
    0
    0
    0
    1
    0
    0
    0
    0
    1
    0
    0
    1
    0
    0
    0
    0
    0
    0
    0
    1
    1
    0
    0
    0
    0
    1
    0
    1
    0
    0
    0
    0
    0
    0
    0
    1
    1
    0
    0
    0
    0
    0
    0
    1
    0
    0
    1
    0
    0
    1
    1
    1
    0
    0
    0
    0
    1
    0
    1
    1
    1
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    1
    0
    1
    0
    0
    0
    0
    0
    0
    0
    0
    1
    1
    1
    0
    0
    0
    0
    0
    0
    0
    1
    0
    1
    0
    1
    1
    1
    0
    0
    1
    0
    1
    0
    0

    1
    1
    1

    No ale nie wiem co dalej.
    Spodziewałem się że będzie to jakiś UART. Bo on jest używany w praktycznie wszystkich interfejsach. RS485, MODBUS, itp.
    Ale tu nie widzę podziału na znaki o jednorodnej długości (nie ma bitów startu czy stopu na powtarzalnych pozycjach).
    Zdekodowany ciąg ma 114 bitów długości (od pierwszego zera po ciągu jedynek, do ostatniego znaku przed końcowymi jedynkami, czyli to zaznaczone na niebiesko).
    Nijak się to nie dzieli na znaki o jednakowej długości.
    No więc nie wiem co to może być. Myślałem że może Profibus DP, ale on na warstwie fizycznej korzysta z RS485, czyli chyba z UARTa i przez to nie zapewnia kodowania Manchester. Manchester jest w Profibus PA, ale na baudrate 31.25 kbaud. Czyli też nie.
    Ma ktoś jakiś pomysł co to może być?
  • SterControl
  • #3
    atom1477
    Level 43  
    Trafiłem na to LongWorks, ale wyczytałem że to może mieć wiele realizacji fizycznych.
    Albo że to w ogóle nie jest cały intefejs, a tylko jakaś wysoka warstwa pakowana do innego istniejącego interfejsu.
    https://webstore.ansi.org/standards/cea/cea8522014ansi
    Quote:
    CEA-852 does not replace existing device communications protocols, but instead allows those protocols to use the internet as a communications medium.

    Teraz widzę że to się dzieli na 2 części.
    Samodzielny LongWorks, i LongWorks tunelowany. To co podałeś (CEA-852) to ten tunelowany.
    A u mnie jest zwykły.
    Ale na wikipedii piszą:
    Quote:
    Technologia podwójnej warstwy fizycznej sygnału, „swobodna topologia” przewodów skręcanych i zdolność przesyłu sygnału za pomocą linii zasilających, są zwykle zawarte w każdym ze standardów stworzonych wokół technologii LonWorks. Warstwa dwuprzewodowa działa z szybkością 78 kbit / s przy użyciu kodowania różnicowego Manchester, podczas gdy linia zasilająca osiąga 5,4 lub 3,6 kbit / s, w zależności od częstotliwości[3].

    Ponadto platforma LonWorks wykorzystuje powiązany standard tunelowania protokołu internetowego (IP) – ISO/IEC 14908-4[4] (ANSI/CEA-852)[5] – używany przez wielu producentów[6] w celu łączenia urządzeń we wcześniej wdrożonych i nowych sieciach opartych na platformie LonWorks z aplikacjami obsługującymi protokół IP lub narzędziami do zdalnego zarządzania siecią.

    U mnie jest po skrętce bez żadnego IP, czyli ta wersja bez tunelowania, ale prędkość jest o wiele większa. Może po prostu rozszerzyli standard.

    EDIT.
    Znalazłem trochę szczegółów. Widać że prędkość transmisjo 1.25 Mbps jest jedną ze standardowych.
    Mnie interesuje tylko warstwa 2 (Link Layer).
    Jak ktoś chce poczytać to moim zdaniem najciekawsze są takie 2 materiały:
    http://www.euee.agh.edu.pl/materialy/mod8/Technologia_LonWorks.pdf
    http://www.stitcs.com/cn/lonworks/LonTalk%20Protocol%20Seminar.pdf