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

codesys+ enkoder absolutny

09 Lip 2009 07:52 2785 8
  • Poziom 10  
    Hej,
    Mam do zrealizowania aplikacje codesys + enkoder absolutny LIKA Ax58c CB. rozdzielczość enkodera 16 bitów, jednoobrotowy. Enkoder ma pracować z codesysem po CANopen. Mam mierzyc przesuniecie elementow na odcinku okolo 1 metra. Mam już pliki eds ale nie wiem jak to dalej ugryźć. Moze ktoś ma jakiś pomysł?

    Pozdrawiam
  • Poziom 11  
    Witam

    Pliki ESD to informacja o dostępnych danych do zapisu/odczytu z urządzenia w sieci CAN

    Należy teraz ten plik zaimportować do "hardware configuration" i tutaj pytanie na jakim to ma działać sterowniku?

    Pozdrawiam.
  • Poziom 10  
    Hej,

    Moze trochę nieprecyzyjnie się wyraziłem. Z importowaniem plików eds to ''PLC Configuration'' nie ma żadnego problemu. Chodzi mi o to jak wyglądałby przykładowy program w dowolnym języku na odczytywanie pozycji z enkodera i dzięki temu pozycjonowanie elementów. Mam 3 zmienne position value tylko nie wiem ,która użyć i czy właśnie je. Nie mam jeszcze enkodera i dlatego nie mogę tego sprawdzić. Sterownik jest firmy Stange pewnie nie wielu z Was o nich słyszało. Samo codesys v 2.3 jest bardzo podobny do tego co wykorzystują w Beckhoffie lub Moellerze rożni się tylko bibliotekami.
  • Poziom 11  
    W manualu wyczytałem, że pozycję wysyła w 4 bajtach (bajt 0 - najmniej znaczący, bajt 3 najbardziej znaczący).

    Można to poskładać do kupy i stosować jako UDINT (32 bitowy unsigned integer), a więc jest to aktualna pozycja.

    Można ustawić rozdzielczość enkodera, kierunek w jakim ma zliczać itd.
    Domyślnie używa rozdzielczości sprzętowej. Nie doczytałem się ile ona wynosi ale z rejestrów 6501-00 i 6502-00 można odczytać fizyczną rozdzielczość na obrót, oraz ilość maks. liczbę obrotów jaką można liczyć (wg fizycznej rozdzielczości).

    W 6001-00 oraz 6002-00 możesz wpisać własne ustawienia.

    (Przykład z pdf) potrzeba enkoder z rozdzielczością 4096 punktów na obrót, enkoder posiada rozdzielczość fizyczną 2048, a więc ustawiamy bit 2 w rejestrze 6000 (włączenie skalowania), wpisujemy
    6001-00 = 4096
    Obliczamy maksymalną "fizyczną rozdzielczość" = 6501-00 * 6502-00, powiedzmy, że = 16777216 (dane z przykładu z pdf)
    na tej podstawie możemy obliczyć zakres pomiarowy:
    6002-00 = 16777216 * 2048/4096 = 8388608

    Czyli jeden obrót zmiana wartości o 4096, zakres pomiarowy od 0 do 8388608.

    I tyle.
  • Poziom 10  
    Hej,

    Aha czyli mogę wykorzystać PDO1 jeśli będę wykorzystywał transmisje asynchroniczna lub PDO2 albo PDO3 jeśli transmisje synchroniczna. Nazywam zmienna jak chce i wtedy ja obrabiam.
    A jak sygnalizować ( rejestrować) ,ze enkoder wykonał pełny obrót? Przez porowanie go do wartości , która napisałeś?
    Jak policzyć,ze jeśli enkoder obrócił się raz na przykład to jakiej drodze przemieszczenia ładunku to odpowiada. Jak to wyliczyć?
  • Poziom 11  
    Możesz zrobić z tą informacją co chcesz, zależy od aplikacji, urządzenia.

    Na pewno przydałaby się konwersja wartości do np. jednostek SI.

    Nie wiem co potrzebujesz. Możesz podawać położenie np. stopnie (pozycja = 360st/2048), długość jeśli jest to aktuator liniowy (np. skok = 5mm, 1 obrót = przesuw 5mm), prędkość obrotową, kątową itd.
  • Poziom 10  
    Chodzi mi o obliczenie długości przebytej drogi w zależności od 1 obrotu przy powyższych założeniach. Nie będzie ta aktuator tylko zwykły silnik asynchroniczny. Pozycjonowanie nie musi być aż tak dokładne do mm może być do centymetrów , to nie jest istotne dla mnie na tym etapie. Chodzi mi raczej o idee i złapanie jak to się obrabia.

    Pozdrawiam
  • Poziom 11  
    Wcześniej nie miałem czasu więc dopiero teraz odpisuję.

    Na początek nie trzeba zmieniać ustawień domyślnych.

    Jeśli masz obliczoną drogę d jaka zostaje przebyta przy 1 obrocie, posiadasz informację z enkodera, że 1 obrót to zmiana licznika o 2048 w górę lub w dół (obrót w lewo lub w prawo).

    To pozycję można wyliczyć w następującysposób (w liczbach rzeczywistych):
    pozycja = d * odczyt_z_eknodera/2048
    powyższy wzór jest prawidłowy przy założeniu, że pozycja startowa = 0,

    Dokładność odczytu wynosi d/2048, czyli jeśli d=10cm to możesz mierzyć odległość z dokładnością ok. 50um.

    Należy uważać na skrajne wartości, bo możliwe, że enkoder po przejściu przez 0 może przeskoczyć na maksymalną wartość.