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.

Sterownik z plikiem hex + sterownik serwomotoru DC

Dolce 18 Feb 2012 23:43 3183 19
IGE-XAO
  • #1
    Dolce
    Level 22  
    Witam.
    Człowiek, który programował mi sterownik nie dokończył zadania - konstruowania programu sterownika urządzenia zewnętrznego (serwomotoru DC).
    Pokrótce napiszę o co chodzi: sterownik do którego pisany był program (z programowalnym procesorem i wyświetlaczem LCD 16x2), komunikuje się z układem sterującym pracą silnika (jest to układ elektroniczny sterownika PID dla serwomotoru DC) poprzez łącze RS232. Silnik napędza maszynę, ma zapewniać stałe parametry pracy pewnej maszyny. Dane dotyczące zmian w pracy maszyny są podawane z czujnika bezpośrednio do jednego z wejść programowanego sterownika. W zależności od wielkości odchyłki sterownik ma regulować szybkością zmiany obrotów i kierunku silnika. Ma to być układ nadążny, zmieniający parametry pracy silnika w sposób proporcjonalny i ciągły tak by zapewnić możliwie najstabilniejszą i najpłynniejszą prace maszyny.
    Obecny, niedokończony program jest zapisany w pliku hex.
    Otworzyłem plik za pomocą programu przeznaczonego do tego celu.
    W kolumnach pojawiają się cyfry i liczby. Mam pytania:
    1) czy jest jakiś program umożliwiający odczytanie na ekranie komputera zapisu pliku hex w formie czytelnej dla laika?
    Na wyświetlaczu sterownika widać obecnie napisy - np. na początku powitalny. Można również wchodzić do menu i zmieniać pewne dane oraz przeprowadzać regulacje pracy silnika za pomocą klawiatury sterownika.
    W jaki sposób sprawić, by zamiast cyfr i liter można było "odczytać" słownie z pliku hex słowa na komputerze?
    2) jakiego języka programu użyto do programowania?
    Będę wdzięczny za podpowiedzi.
    Pozdrawiam.
    Sterownik z plikiem hex + sterownik serwomotoru DC
  • IGE-XAO
  • Helpful post
    #2
    McMonster
    Level 32  
    Plik z rozszerzeniem hex nie jest przeznaczony do otwierania za pomocą hex editora.

    Nie da się zamienić pliku hex na jakąkolwiek formę nadającą się do odczytu dla nieinformatyka. Jest możliwe wyciągnięcie napisów, ale trzeba by najpierw przekonwertować plik na postać binarną i/lub zdeasemblować. Nie jest możliwe stwierdzenie, w jakim języku napisano program.

    Już lepiej poproś autora o dokończenie lub kod źródłowy.
  • #3
    Dolce
    Level 22  
    Dziękuję za odpowiedź.
    Niestety Pan, który pisał mi program zmarł w zeszłym tygodniu, nie dokończy już pracy. Jest mi bardzo przykro ze względu na to, że bardzo polubiłem tego człowieka. Budowę maszyny traktuję jako hobby. Ten Pan podpowiedział mi dużo dobrych pomysłów w zakresie największej przydatności oprogramowania sterownika, który ma sterować pracą maszyny. W zasadzie sam stworzył menu programu tak, by było możliwie "intuicyjne" a jednocześnie funkcjonalne i dające możliwość wykorzystania dodatkowych peryferiów maszyny.
    Chciałbym dokończyć pracę z konstruowaniem programu.
    Być może miałem że uda mi się otrzymać jakieś dodatkowe dane na temat programu od jego żony, na razie jest mi jednak niezręcznie pytać.
    W domu mam maszynę, złożony sterownik wraz z wszystkimi plikami hex, które były stopniowo rozbudowywane przy konstruowaniu programu. To samo miał w domu programista (z uproszczoną wersję maszyny, którą zresztą zrobił sobie sam do testowania kolejnych plików).
    Program sterownika maszyny pewnie nie jest dla wprawnego informatyka bardzo trudnym zadaniem a większość "zadań" programu jest już przemyślana i wykonana. Układ scalony wykorzystany w sterowniku : ATMEL, ATMEGA16, 16AU 0712J.
    Maszyna do której pisany by program to po prostu "dmuchawka" - rodzaj pompki, która ma dostarczać powietrze pod stałym ciśnieniem. Jej działanie jest w uproszczeniu następujące : silnik, poprzez śrubę kulową napędza miech (zamontowany stabilnie na prowadnicach), który rozciągając się daje na "wyjściu" podciśnienie a ściskając - nadciśnienie (podobnie "działa" akordeon tyle, że tam zamiast silnika jest ręka muzyka). Elementem, który podaje informacje do sterownika o aktualnym ciśnieniu w miechu (na podstawie którego jest wykonywana regulacja prędkości obrotowej silnika wpływającej bezpośrednio na zwiększanie lub zmniejszanie ciśnienia/nadciśnienia w wyniku szybszego lub wolniejszego przesuwu miecha) jest czujnik ciśnienia (dający na wyjściu zmiany napięciowe). Czujnik jest podłączany do jednego z wejść sterownika.
    Zakładając, że nie uda mi się trzymać kodu źródłowego to czy jest możliwe znalezienie kogoś, kto umiałby dokończyć tego typu pracę ? Gdzie taką osobę szukać ?
    Zależy mi na osobie, która będzie zainteresowana dokończeniem pracy w sposób rzetelny i która będzie miała "otwartą" głowę. W razie ewentualnych komplikacji w działaniu maszyny będzie można spokojnie z nią zastanowić się nad zmianami w programie. Działanie maszyny (a więc dojście/utrzymanie wymaganego, stałego ciśnienia) pomimo prostoty musi być szybkie i precyzyjne. Dobrze jeśli była by możliwość wykonywania korekty ustawień, czyli zmian w programie z poziomu menu sterownika. Chodzi nie tylko o możliwość zmian typu zadanie wymaganego ciśnienia ale też ustalanie szybkości ("modulacji" ) dojścia do ustawionego ciśnienia , np. po zmianie kierunku przesuwu miecha.
    Będę wdzięczny za wszelkie wiadomości.
    Pozdrawiam.
  • IGE-XAO
  • Helpful post
    #4
    McMonster
    Level 32  
    Dolce wrote:

    Zakładając, że nie uda mi się trzymać kodu źródłowego to czy jest możliwe znalezienie kogoś, kto umiałby dokończyć tego typu pracę ? Gdzie taką osobę szukać ?
    Zależy mi na osobie, która będzie zainteresowana dokończeniem pracy w sposób rzetelny i która będzie miała "otwartą" głowę. W razie ewentualnych komplikacji w działaniu maszyny będzie można spokojnie z nią zastanowić się nad zmianami w programie.


    Nie jest niemożliwe wykorzystanie istniejącego pliku hex i dokończenie programu, ale z przyczyn technicznych najprawdopodobniej o wiele prościej i szybciej będzie napisać program od początku. Gdzie szukać? Najlepiej na elektrodzie, tu jest w końcu wiele osób zajmujących się tym zawodowo i hobbystycznie.
  • #5
    Dolce
    Level 22  
    Dziękuję za wiadomość.
    A jeśli udało by się otrzymać kod źródłowy oraz informację na temat programu, w którym zostało utworzone oprogramowanie. Czy wówczas dalsza praca nad nim będzie sensowna ?
    Proszę mi napisać co jeszcze jest potrzebne, żeby wykorzystać wykonane dotąd oprogramowanie i na jego bazie dokończyć pracę.
    Pozdrawiam.
  • Helpful post
    #6
    McMonster
    Level 32  
    Wystarczy kod i schemat urządzenia.
  • #7
    Dolce
    Level 22  
    Dziękuję za wiadomość.
    To tylko się upewnię. Czyli posiadając plik źródłowy można będzie stosunkowo prosto (osobie zorientowanej oczywiście) dokończyć program ? Jak taki plik wygląda, to znaczy w jaki sposób najczęściej jest oznaczany ?
    Jak pisałem , nie jestem zorientowany w tego typu prawach a osoba, która ewentualnie zechce poszukać tego pliku w komputerze również.
    Jak taki plik znaleźć ? Czym się charakteryzuje ? To ważna dla mnie sprawa.
    Co do schematu urządzenia. Czy chodzi konkretnie o schemat sterownika z układem ATMEGA16 do którego wgrywa się plik hex ? Mam ten sterownik w domu ale nie posiadam do niego schematu. Być może uda się go uzyskać wraz z kodem źródłowym.
    Pozdrawiam.
  • Helpful post
    #8
    GienekS
    Level 32  
    Mogą to być pliki z rozszerzeniem:

    *.asm
    *.bas
    *.c *.h *.S

    to wszystko zależy od tego w jakim języku był pisany ten program.
  • Helpful post
    #9
    excray
    Level 40  
    McMonster wrote:
    Nie jest niemożliwe wykorzystanie istniejącego pliku hex i dokończenie programu

    Nie prawda. Plik hex to nic więcej jak skompilowany plik asm i avr studio bez problemu odtworzy kod. Oczywiście bez oryginalnych etykiet i komentarzy ale dla porządnego programisty to nie jest koniec świata.
    Kolego Dolce załącz na forum ten plik hex to zobaczymy co tam jest w środku i czy warto w ogóle to analizować czy lepiej napisać całkiem nowy program.
  • #10
    Dolce
    Level 22  
    Załączę trzy pliki ponumerowane kolejno 1, 2, 3. Po rozpakowaniu każdy zawiera dokument z opisem programu oraz plik hex. Pliki 1 i 2 to początek budowy programu natomiast plik 3 to ostatni plik, który otrzymałem. Mam wszystkie pliki, począwszy od początku budowy programu, zachowywałem je systematycznie na dysku. Jest również prawdopodobne, że otrzymam dane z komputera programisty.
    Proszę na razie o analizę i wiadomość czy da się na podstawie takich plików dokończyć prace z programem.
    Poniżej wklejam również zdjęcie poglądowe prototypu do eksperymentów. Jak widać jest tam sterownik z wyświetlaczem (oparty o procesor ATMEL, ATMEGA16, 16AU 0712J) do którego wgrywa się pliki hex i do którego podłącza się peryferia urządzenia (m.in. wyłączniki krańcowe, czujnik ciśnienia, serwomechanizm) oraz servokontroler silnika dc (servomotoru) do którego sterownik podaje impulsy TTL na wejście CL - sterowanie szybkością obrotową silnika oraz informację o kierunku obrotów silnika na - wejście DIR.
    Istota działania urządzenia jest następująca (w uproszczeniu) :
    Silnik napędza miech (podobny jak w akordeonie), który jest zamocowany na szynach z ruchomymi wózkami a napęd jest przekazywany poprzez śrubę trapezową. Zadaniem sterownika jest "proporcjonalna" regulacja prędkości obrotowej silnika (wpływająca na prędkość przesuwu miecha a więc wartość ciśnienia) na podstawie informacji z czujnika ciśnienia i mająca na celu utrzymanie zadanego ciśnienia w miechu. Pisząc "proporcjonalna regulacja" mam na myśli taki sposób regulacji, że im większe są odchyłki od zadanego ciśnienia, tym sterownik szybciej dąży do powrotu do tego ciśnienia (zwiększa mocniej obroty silnika/przesuw miecha).
    Pozdrawiam serdecznie.
    Sterownik z plikiem hex + sterownik serwomotoru DC
  • Helpful post
    #11
    tmf
    Moderator of Microcontroller designs
    Program wygląda jakby był napisany w BASCOMie, nie jestem pewien, ale nie jest to kod wygenerowany przez kompilator C, a na kod assemblerowy napisany przez człowieka też nie wygląda. Jak nie będziesz miał źródeł to najpewniej prościej jest napisać ten program od nowa. To ponad 4kB kodu assemblerowego, da się przez niego przegryźć i resztę dopisać, ale to by zajęło więcej czasu niż stworzenie tego kodu od podstaw.
    Swoją drogą przypomniał mi się żart rysunkowy widziany lata temu w czasopiśmie "Komputer" - na pogrzebie szef firmy pyta cichaczem żonę zmarłego - przepraszam, ale czy mąż nie wspominał coś o kodzie źródłowym?
  • #12
    Dolce
    Level 22  
    Mam dwa pytania.
    1) Pierwsze o kod źródłowy. Jak zaznaczyłem wcześniej, jestem niestety zupełnie nie zorientowany w sprawach dotyczących pisania programów. Czy taki kod jest jeden "podstawowy" ? To rodzaj "alfabetu" który tworzy programista na początku budowy oprogramowania ? Poszukam na ten temat wiadomości w googlach ale może tutaj otrzymam szybką i stosunkowo prostą odpowiedź. Chciałbym w możliwie prosty sposób poprosić o ten kod, a osoba która ewentualnie mi go będzie szukała jest jeszcze mniej zorientowana w tego typu sprawach niż ja.
    2) Jeśli uda mi się zdobyć kod, czy wówczas sprawa ukończenia programu, który już częściowo działa jest stosunkowo prosta ?

    Na razie będę starał się działać w kierunku dokończenia istniejącego programu, jeśli oczywiście uda się uzyskać kod, ponieważ program został opracowany na podstawie testów z urządzeniem, był pisany bardzo dobrze pod względem "metodycznym".
    Drugi powód jest mniej fachowy ale dla mnie ważny. Chciałbym dokończy program rozpoczęty przez zmarłego konstruktora ponieważ bardzo go lubiłem a poza tym ten człowiek mi imponował pomysłowością. W zasadzie to on zaproponował, że usprawni prace urządzenia poprzez zastąpienie regulacji "ręcznej" "automatyczną". Ja mam duży szacunek dla fachowców z dziedziny informatyki, elektroniki i mechaniki precyzyjnej. Niestety osobiście jestem z zawodu tylko muzykiem.
  • Helpful post
    #13
    tmf
    Moderator of Microcontroller designs
    ad 1. Kod źródłowy to tekst programu w języku w którym został napisany. Zazwyczaj jest bardziej zrozumiały, bo np. zmienne mają swoje nazwy, wywołania są hierarchiczne, a nie po prostu instrukcje skoku itd.
    ad 2. Będzie zdecydowanie łatwiejsza. Sądząc po długości kodu wynikowego w języku wyższego poziomu kod programu nie ma więcej niż kilkasetlinijek i przegryzienie się przez niego nie powinno zająć więcej niż 1-2 dni.
  • #14
    Dolce
    Level 22  
    Rozumiem.
    Poczekam na e-maila z plikami dot. programu od żony tego Pana, który programował. Dam znać, gdy coś ciekawego otrzymam. Jeśli ktoś z Was będzie mógł podjąć dalszą pracę nad dokończeniem programu (i będzie taka możliwość) to chętnie skorzystam z oferty. Oczywiście chcę zapłacić za pracę, jeśli tylko koszta takiej pracy będą dla mnie do zaakceptowania. Jak wspomniałem, zmarły programista traktował programowanie tego mojego urządzenia jako hobby i nie chciał za nią zasadniczo pieniędzy. To już jednak przeszłość a ja chciałbym dokończyć próby z moim urządzeniem zastępując regulacje wykonywane manualnie sterowaniem automatycznym.
    P.S. Jeszcze takie pytanie. Otworzyłem dzisiaj plik hex za pomocą PonyProgram. Po prawej stronie widać napisy, które wyświetlają się podczas przeglądania ustawień w menu sterowniku. W innych programach (edytorach hex) nie było można odczytać tych napisów. Dlaczego w PonyProgram jest taka możliwość ?
    Załączam plik z PonyProgram dla systemów Windows, którymi można otworzyć załączone poprzednio pliki hex i zobaczyć w okienku po prawej stronie programu napisy tekstowe w menu sterownika .
  • Helpful post
    #15
    tmf
    Moderator of Microcontroller designs
    Dlatego, że to jest plik w formacie IntelHEX, który ponyprog potrafi zinterpretować (podobnie jak AVR Studio). Natomiast dla zwykłej przeglądarki jest to po prostu plik tekstowy i nie jest ona w stanie zinterpretować jego zawartości. Napisy byś zobaczył pod zwykłą przeglądarką gdybyś przekonwertował plik hex na plik binarny.
  • #16
    Dolce
    Level 22  
    Ściągnąłem AVR Studio 5, ponoć można tym programem zmienić hex na program źródłowy. Chciałem spróbować z ciekawości. Nie wiem jednak jak to się robi. Może ktoś z Was może mi podpowiedzieć ?
    Pozdrawiam.
  • Helpful post
    #17
    tmf
    Moderator of Microcontroller designs
    Ściągnij AVR Studio 4, jest prostsze jak na twoje potrzeby. Potem po prostu otwierasz plik hex i powinieneś zobaczyć zdeasemblowany kod. Przy czym część tego kodu to dane, np. tekstowe, więc musisz uważać.
  • #18
    Dolce
    Level 22  
    Otrzymałem od żony zmarłego programisty plik źródłowy oraz dodatkowo plik ROM :
    Atmel FLASH contents file (.ROM)
    Do czego plik tego typu służy ?
    Pozdrawiam.
  • #19
    tmf
    Moderator of Microcontroller designs
    Najpewniej jest to obraz binarny pamięci FLASH mikrokontrolera. Nie wnosi nic ponad to co masz w Hex i w kodzie źródłowym. Jako, że masz kod źródłowy to problemu nie ma.
  • #20
    Dolce
    Level 22  
    Dziękuję wszystkim za pomoc.
    Pozdrawiam.