Elektroda.pl
Elektroda.pl
X
Elektroda.pl
e-miernikie-mierniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Rozkodowanie ramki RS485 Duży Panel LED

15 Mar 2010 22:20 3063 11
  • Poziom 10  
    Witajcie,

    Mój wujek kupił gdzieś w Austrii przyczepkę z panelem LED do prac drogowych jak na zdjęciu.
    Rozkodowanie ramki RS485 Duży Panel LED

    Składa się ona z 6 paneli LED. Każdy taki panel wewnątrz ma 7 modułów LED (7x5). Każdy taki moduł ma swój mikrokontroler i naklejkę z adresem (np. ADR30). Panele połączone są ze sobą i komunikują się po RS485 (max483). W przyczepce jest jeden panel, z którego dodatkowo wychodzą 3 przewody RS232 (tak sugeruje układ max232) oraz pokrętło 10 pozycyjne. W zależności od pozycji tego pokrętła wyświetlane są różne komunikaty. Problem jest taki, że są one po niemiecku (np. Achtung Stau ;) ).
    Niestety jest to sprzęt używany i od poprzedniego właściciela nie dostał ani dokumentacji, ani programu do zmiany tych komunikatów.

    Pytanie: W jaki sposób można je zmienić? Do programowania służy pewnie ten RS232, ale nie znając struktury programu ciężko będzie coś zrobić. Pomyślałem, że może uda mi się jakoś podłączyć to pod komputer (3 przewody do rs232: Rx, Tx i GND czy podłączenie jak na zdjęciu jest poprawne?) i w jakimś terminalu "podsłuchać" co się dzieje na linii jak zmieniam pozycję tego pokrętła. Zauważyłem, że jest jeden moduł master i reszta slave (naklejki na modułach). Pomocne mogą być też naklejki ADR28, ADR29, etc. Jeśli udałoby się sprawdzić co jest wysyłane na poszczególny moduł, którego adres jest naklejony to może dałoby się zrobić "własny" układ master, który wysyłałby nasz tekst. Jeśli na RS232 nic nie będzie się działo to podsłuchać tego RS485, bo to w końcu komunikacja pomiędzy poszczególnymi modułami. Czy to dobra droga? Ktoś ma jakiś pomysł? A może miał do czynienia z urządzeniami firmy Kahr Elektronik (nie odpisują na razie na maila). Rs485 jest po dwóch kabelkach i pytanie jak je podłączyć pod kompa?

    Podejrzewam, że każdy moduł będzie miał w pamięci listę znaków i format będzie:
    Bajt startu, adres, numer znaku do wyświetlenia, bajt stopu i tyle

    Rozkodowanie ramki RS485 Duży Panel LED Rozkodowanie ramki RS485 Duży Panel LED Rozkodowanie ramki RS485 Duży Panel LED
    Rozkodowanie ramki RS485 Duży Panel LED Rozkodowanie ramki RS485 Duży Panel LED
  • e-miernikie-mierniki
  • Poziom 12  
    No tablica fajna. Z tego co widzę to głównym mikrokontrolerem jest ATMega103, ale nie widzę żadnej pamięci EEPROM (przynajmniej nie jestem w stanie odczytać), więc pewnie teksty do wyświetlenia są zapisane w pamięci EEPROM ATMegi. Jedyne co narazie mogę podpowiedzieć to żeby zczytać zawartość EEPROM mikrokontrolera (oczywiście pod warunkiem że producent nie ustawił LockBitów). Potem to już należałoby użyć funkcji matematycznych do konwersji i znając zapisane treści można to rozkodować. Przynajmniej ja tak bym zrobił, bo po RS232 to ciężko nie znając standardu transmisji ani poleceń.
  • Specjalista - oświetlenie sceniczne
    Z PC bierzez RX i GND i badasz co sie dzieje na lini TX i RX twojego modułu.
    Podobnie z RS485, tyle że tu (w zależności od typu lini) TX i RX może iść na jednej parze i trudniej wywnioskować co z czego leci.

    Żeby nie żąglować scalakami zrobił bym zwykły kabel na RS232 i wpinał sie bezpośrednio w nogi procka (procków)

    Podsłuchiwać możesz nawet terminalem z łindołsa. Na początek zdało by sie wybadać jakie są ustawienia portu, przydał by się scyloskop.
  • e-miernikie-mierniki
  • Poziom 10  
    Witam po dłuższej przerwie,

    Zrobiłem jak zasugerował Coperfield. Miałem z tym mały problem, bo ISSProg, którego używałem odczytał mi same FFFFFF zarówno z flasha jak i EEPROMa, więc myślałem, że Atmega jest zablokowana (może tak jest? ). Pod wpływem chwili przyjrzałem się płytce i zacząłem pisać swój własny soft do tego ustrojstwa. Kiedy już opanowałem to trochę, tzn. zaczęły mi się wyświetlać odpowiednie litery na każdym module z osobna (bez komunikacji RS485). Robiłem to na modułach slave. Potem przyszła pora na MASTER i wtedy ISSProg wywalił błąd, wziałem Ponyproga, a ten normalnie odczytał flash i eeprom. Nigdy nie rozkodowywałem takiego czegoś i nie bardzo wiem jak się za to zabrać. W EEPROMie slave znalazłem jeden bajt odpowiedzialny za numer slave`a (np. nr 29=1D). W EEPROMIE mastera znalazłem za to sekwencje:
    krzaczki krzaczki text1 krzaczki krzaczki text2 krzaczki krzaczki text3 itd az do text9

    Te "text1" wyswietlaja sie w ponyprogu z prawej strony (master to atmega103, slave at90s2313).

    Mógłby ktoś się temu przyjrzeć i powiedzieć czy da się coś z tego wyciągnąć? Największy problem jest taki, że na tym wyświetlaczu co ja mam dla wszystkich ustawień pokrętła na wyświetlaczu nie wyświetla się prawie nic (czasem wskoczy napis 26.7 i 14.3 albo coś takiego). Pech chciał, że w domu mam jeden panel z tego niesprawdzonego wcześniej, a do reszty mam 50km i na razie się nie wybieram. W międzyczasie pisze sobie ten program, bo na upartego dostałe przyzwolenie na polutowanie "na sztywno" napisu, ale to już ostateczność. Na dzień dzisiejszy mogę sobie zaprogramować każdy moduł z osobna z określoną sekwencją napisów, ale jak wezmę 6 paneli x 7 modułów w każdym to jest trochę roboty z rozbieraniem i programowaniem. Pół biedy jeśli miałoby to być raz, ale jak za pół roku będzie chciał coś zmienić to powtórka z rozrywki. Pewnie można tego RS485 do tego celu wykorzystać, ale na razie to dla mnie wyższa szkoła jazdy.
  • Poziom 22  
    heh pierwszy raz słyszę o wyższosci pony shita nad ISP Progiem ale cóż wszystko sie może zdażyć ;-)

    krzaczki mogą być zakodowaną informacją o długości tekstu i/lub jego numerze. Jak rozumiem na tym zdjęciu na początku jest 6 "paneli 2x3 ? I o ile dobrze widze to w załączniku jest program a nie eeprom.

    Myślę, że spokojnei da radę zrobić do tego własnego mastera gdzie będziesz mógł sobie pakować własne komunikaty choćby z terminala przez jeden uart a drugim po 485 wysyłać do modułów po oryginalnym lub własnym protokole.
  • Poziom 10  
    Jest to tak:
    Przyczepka: 6 Paneli LED
    Każdy panel LED składa się z 7 modułów LED (Jeden moduł to 35 diod 5x7=jeden znak)
    Obrazowo:
    PRZYCZEPKA:
    [][][][][][][] [][][][][][][]
    [][][][][][][] [][][][][][][]
    [][][][][][][] [][][][][][][]

    PANEL: [][][][][][][]
    MODUŁ: [] i taki moduł to 5 kolumn x 7 rzedów diod

    Jeden z tych 42 modułów to master, a reszta to slave (są naklejki na każdej płytce z numerem)

    Mam nadzieje, ze teraz jasniej:)
  • Poziom 22  
    no juz zakumalem jak siębardziej w pierwszy post wczytałem ;-) Czyli każdy z 42 modułów ma osobny procesor i adres ?!? Rany ależ im się chciało rzeźbić, może chodziło o uniwersalność i możliwość dowolnego składania... no mniejszao to. Masz może plik z eepromem samym ? Przydałby sie jakiśzapis komunikacji po tym 485 bo prawdopodobnie program w masterze trzeba będzie zmienić (albo wpiąć własnego mastera) bo nawet jeżeli wyczaisz protokół 485 to nie bardzo wiadomo co się wysyła po RS232.
  • Poziom 10  
    W załączniku hex z eepromem mastera. Ja myślałem, że może udałoby się zrobić na teraz chociaż zmiane tego textu w EEPROMie mastera i potem ewentualna zmiana polegała by tylko na wyciagnieciu płytki mastera i odpowiednim jego zaprogramowaniu.
  • Poziom 22  
    a możesz mnie nakierować na ten tekst ? bo jak rozumiem już go w tym pliku zlokalizowałeś. Najlepiej jakbyś zamiścił także liste tych tekstó albo konkretne adresy końca i początku w tym pliku (skoro już je masz), żeby można siębyło skupić na "krzaczkach" Twoja propozycja w każdym razie brzmi rozsądnie. Temat mnie akurat dość ciekawi bo mam dużo do czynienia z różnymi tablicami.
  • Poziom 10  
    sprawa wygląda właśnie nieciekawie, bo ten świecący ze zdjęcia to drugi wyświetlacz zamontowany na przyczepce, a ja wziąłem wykręciłem panel z drugiego wyświetlacza, który był jeszcze osobno, ale tego niestety nie sprawdzałem. I nie ukrywam, że jest problem, bo okazało się, że na nim nie wyświetla się żaden tekst oprócz tych 26.7 i 14.3 i co ciekawe też nie zawsze. Może problem jest w tym, że działa tylko jeden panel z 6? W załączniku jest wydruk pdf, gdzie zlokalizowałem te "text1" (strona 129, od adresu 020000). Rozwiązania mam dwa:
    - pojechać po ten działający wyśw i z niego odczytać mastera, zeby miec jakis punkt zaczepienia z tymi krzaczkami
    - olać cały ten system i rozwinąć własny soft, bo sterowania jest w miare proste, 5 zatrzasków równoległych 74hc573, do tego ULN i sterowanie jest w każdą diodą z osobna, teraz robi się to trochę inaczej, ale projekt jest z przed 10 lat, do tego RS485 podpięty, więc w zasadzie na teraz problem jest z transmisją rs485, której wcześniej nie robiłem, każdemu modułowi nadać adres, przesłać 5 bajtów na każdy moduł i tak przez każdy z 42 modułów, kwestie czasów i odświeżania są pomijalne, bo text ustawia się raz i potem świeci pare godzin, także transmisja nie musi byc super szybka
  • Poziom 22  
    RS485 możesz zrobićw jedną stronębo w zasadzie po co Ci odpowiedź. Danych nie jest dużo i raczej sięnie przekłamią na takiej odległości przy małej prędkości więc poprostu wyslesz je na ślepo. Tak więc sprowadza sięto do zwyczajnej transmisji po UARCie w jedną stronę.

    Widać choćby po tej ATmedze103, że konstrukcja do najnowszych nie należy aczkolwiek jest przemyślana i pomyślana na sporą jasność skoro sterują każdą diodę z osobna jak przykazali bogowie elektroniki ;]

    Masz jakieś bliższe informacje o chociaż jednym z tych tekstów? np. jego długość a najlepiej treść. Cośwątpię, żeby teksty były zapisane w okolicy tych słów "Text1" itd. bo sporo tu zer. Możliwe, że zapisali je w formie ASCII z odjętymi znakami niedrukowalnymi czyli -32. Możnaby napisac na szybko programik, który odczyta ten plik i wypluje z siebie wersję z dodanym 32, a nóż pojawią się teksty.
  • Poziom 10  
    no właśnie z tymi zerami to nie wiadomo, bo teraz nie wyświetla się nic, zrobię tak, pojadę do wujka, pokaże mu ten mój migający text, żeby widział, że się coś w temacie dzieje, odpalę ten drugi wyświetlacz, zobaczę co się wyświetla, zgram tego mastera i wtedy coś więcej będzie wiadomo. Myślę, że w tym tyg uda mi się znaleźć czas żeby tam podjechać także na pewno się odezwę.

    co do jasności to zastosowanie jest ostrzegawcze (drogowe), więc musi być widoczne w każdych warunkach



    -----------------------------------------
    jest sukces:)

    Okazało się, że panel który miałem nie wyświetlał nic i był prawdopodobnie jako serwisowy (bez zaprogramowanych tekstów, więc wszelkie me wysiłki i próby rozkodowania były na marne). Po zgraniu eeproma z mastera z panelu wyświetlającego text trochę się wyjaśniło. Łatwo nie było, bo wszelkie próby dodawania/odejmowania i szukania znaków ASCII spełzły na niczym. Rozwiązanie było takie:

    Odszukałem w/w "text1" w EEPROMie i zapisałem sobie ciąg bajtów znajdujący się w jego rejonie, np:
    BF C0 C0 C0 BF
    Zapisałem sobie to binarnie:
    10111111 11000000 11000000 11000000 10111111
    Potem jeden pod drugim:
    10111111
    11000000
    11000000
    11000000
    10111111

    I teraz przyszło olśnienie: wziąłem gruby czarny marker, zaznaczyłem wszystkie jedynki i jak obróciłem kartkę przeciwnie do kierunku zegara, czyli w lewo (lub głowę obrócić w prawo;) ) to mym oczom ukazała się literka "U".
    Przepisując kolejne ciągi pojawiły się kolejne litery, a potem poszło już gładko, czyli Excel, kilka funkcji i powstał generator czcionek, a w zasadzie ciągu bajtów. Jeden cały text tworzy 210 bajtów (6x35), które są odpowiednim ciągiem kolumn w module. Każdy moduł jest 5x7, więc pierwszy bit jest ignorowany.

    Na tym etapie mogę podmieniać tekst w całym panelu, muszę jeszcze odszyfrować, gdzie zakodowano informację, że diody w trzecim rzędzie (panele 5-6) migają. Na tym etapie mam tam strzałki zrobione, bo chodzi o to, żeby się coś działa i dawało kierowcom do myślenia. Zatem jeśli gdzieś na śląsku, w rejonie powiatu cieszyńskiego zobaczycie na naszych polskich dziurawych drogach tablice ledową przy ekipie remontowej to może to być ta ze zdjęcia Wink
    Dzięki wielkie wszystkim za pomoc i wskazówki.