logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak odczytywać wszystkie impulsy z enkodera 500 imp/obr przez port LPT?

krolikbest 14 Maj 2014 16:46 1995 8
REKLAMA
  • #1 13600596
    krolikbest
    Poziom 11  
    Posty: 103
    Ocena: 58
    Witam,

    czy ktoś z Was zajmował się odczytem impulsów z enkodera inkrementalnego poprzez port równoległy w komputerze PC?
    Z moich testów (moje oprogramowanie w Delphi) wynika, że nie jestem w stanie odczytywać wszystkich sygnałów wysyłanych przez enkoder.
    Dane w moim doświadczeniu:
    - enkoder inkrementalny 500 imp/obr
    - program w Delphi: timer na formatce, odczyt co 1ms. Częściej timerem się nie da.
    - syganały z enkodera w standardzie TTL, bezpośrednio wpięty w port LPT
    - port LPT to karta PCI, standard ECP/EPP
    - Windows XP SP3

    Odczytuję w zależności od prędkości kręcenia enkoderem - im wolniej tym więcej odczytuję, ale i tak tylko maksymalnie połowę impulsów.

    Pytanie: czy ktoś może to rozwiązał, żeby otrzymywać tyle impulsów ile enkoder ma fabrycznie na jeden obrót???

    Moje inne rozwiązanie to dedytkowany kontroler enkodera, gdzie odczytuje przebytą drogę zapisaną w kontrolerze po RS485 na PeCeta protokołem MODBUS. To działa, ale się uparłem na ten LPT :))

    Pozdrawiam,
  • REKLAMA
  • #2 13766033
    guzzzz
    Poziom 9  
    Posty: 31
    Ocena: 1
    Witaj krolikbest widzę, że jesteś dalej w temacie czy twój program potrafił by zamiast odczytywać enkoder wysyłać sygnał do urządzenia zamiast enkodera ? (zamiast enkodera wlutowane przewody z lpt)

    Był bym bardzo wdzięczny za pomoc. Otworzyłem temat ale nie wiele się dowiedziałem.
  • REKLAMA
  • #3 13767463
    Chris_W
    Poziom 39  
    Posty: 8443
    Pomógł: 382
    Ocena: 1040
    LPT jet dośc powolny jeśli chodzi o odczyt impulsów, sprawdza się przy przesyłaniu pakietów bajtowych - prawdopodobnie "przegapia" sporo z tych impulsów. Do tego jeśli aplikacja "nie wyrabia" to będzie kolejna porcja impulsów ominięta, prawdopodobnie korzystasz z API które wprowadza kolejne opóźnienia.
    Oparcie się na timerze (kontrolce odliczająej czas w delphi) jest bez sensu, już lepsze jest ciągłe czytanie portu poprzez tzw. (pooling) i liczenie ilości zboczy (a więc zmiana stanu 0->1 lub 1->0). Możesz poszukać jakiegoś nieoficjalnego "drivera" który będzie działał szybciej -musisz potestować.
  • #4 13774268
    guzzzz
    Poziom 9  
    Posty: 31
    Ocena: 1
    Sterowanie enkoderem we wzmacniaczu ktoś ma jakiś pomysł, schemat, program. Proszę o pomoc. Słyszałem o input.dll jako wtyczce do visual basic jednak schematu brak. Enkoder posiada trzy piny.
  • REKLAMA
  • #5 13791495
    krolikbest
    Poziom 11  
    Posty: 103
    Ocena: 58
    Po dłuższym zastanowieniu rozwiązanie odczytu enkodera bezpośrednio z portu LPT nie ma sensu. Lepiej zastosować jakieś urządzenie zewnętrzne odczytujące enkoder i potem po RS232 + protokół Modbus odczytywać stan (licznik) tego urządzenia.
    Temat zamykam.

    Dodano po 2 [minuty]:

    guzzzz napisał:
    Witaj krolikbest widzę, że jesteś dalej w temacie czy twój program potrafił by zamiast odczytywać enkoder wysyłać sygnał do urządzenia zamiast enkodera ? (zamiast enkodera wlutowane przewody z lpt)


    Czy chodzi Ci o możliwość wysłania danej (w postaci liczby) na port LPT?
  • REKLAMA
  • #6 13800563
    guzzzz
    Poziom 9  
    Posty: 31
    Ocena: 1
    Chodzi o zastąpienie enkodera pecetem. Wlutowanie w piny enkodera przewodów z pc i sterowanie urządzeniem z poziomu pc.

    Enkoder posiada 3 piny
  • #7 13802104
    krolikbest
    Poziom 11  
    Posty: 103
    Ocena: 58
    To chcesz ten enkoder zastąpić pc-tem czy połączyć enkoder z pc-tem?

    Jeżeli połączyć z pc-tem, to jak już pisałem po przetestowaniu, port LPT się do tego nie nadaje. Inne rozwiązanie o czym też już pisałem to zastosowanie szybkiego licznika, np. na kartach typu PCI, ePCI, lub samodzielnego połączonego z pc-tem za pomocą RS232 i odczytywanie stanu tego licznika za pomocą dedytkowanych dll-ek lub protokołem Modbus. Założenie jest takie, że licznik po pierwsze jest na tyle szybki, że poradzi sobie z odczytem enkodera i po drugie posiada obsługę Modbusa. W swoim programie musisz zrobić pętlę, w której będziesz sprawdzał co jakiś interwał czasowy stan tego licznika i w zależności od jego wartości obierzesz jakąś akcję.
    Ja rozwiązałem to szybkim licznikiem z obsługą protokołu Modbus. Pętla czasowa w moim programie co 10ms odpytuje odpowiednią komórkę rejestru tego licznika, gdzie znajduje się wartość ekoderowa, i w zależności od odczytanej wartości coś tam sobie ten program robi.
    Trochę przydługawe, ale mam nadzieję, że nieco rozjaśniłem sprawę.
  • #8 13818094
    guzzzz
    Poziom 9  
    Posty: 31
    Ocena: 1
    Niestety nie do końca ponieważ chodzi o tą pierwszą opcje czyli zastąpienie enkodera pctem.
    Ale napisałeś więcej niż "poziomowcy" z innych tematów

    Może masz jakiś pomysł żeby zrobić coś takiego o ile się nie myle to standard TTL

    model SW101 SIM026MD i na nogach 1 GND, 2 ENCB, 3 ENCA. Czyli rozumiem że jest to typowy enkoder.


    Dlaczego upieram sie przy LPT; 1 to prostota wykonania i obsługi; 2 to nie zależy mi na prędkości raczej na dokładności żeby "nie skakało" o większą ilość oczek

    I jeszcze jedno czy takie LPT mogło by obsłużyć jeszcze trzy przyciski obsługując enkoder
    pozdrawiam
  • #9 13885256
    krolikbest
    Poziom 11  
    Posty: 103
    Ocena: 58
    Sposób rozwiązania to szybki licznik+modbus+własne oprogramowanie.
    Temat tego wątku niniejszym zamykam.

    Pozdrawiam,

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na odczyt impulsów z enkodera inkrementalnego 500 imp/obr przez port LPT w komputerze PC, jednak napotyka problemy z utratą impulsów przy wyższych prędkościach obrotowych. W odpowiedziach zasugerowano, że port LPT jest zbyt wolny do efektywnego odczytu impulsów, a zamiast tego zaleca się użycie szybkiego licznika podłączonego przez RS232 z obsługą protokołu Modbus. Użytkownik rozważał również możliwość zastąpienia enkodera komputerem, co również napotkało trudności. Ostatecznie, rozwiązaniem uznanym za najbardziej efektywne jest zastosowanie zewnętrznego urządzenia do odczytu impulsów, które następnie komunikuje się z komputerem przez Modbus.
Wygenerowane przez model językowy.
REKLAMA