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):
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:
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):
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ć?
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):

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
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
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ć?