Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Dynamiczna zmiana częstotliwości pracy sterownika silnika krokowego.

manron 06 Mar 2020 20:32 396 12
  • #1
    manron
    Level 9  
    Witam,
    Borykam się problemem dynamicznej zmiany prędkości silnika krokowego. Chodzi mi to aby regulując enkoderem dało się przyspieszać lub zwalniać silnikiem w zależności w którą stronę obrócę oś enkodera. Kiedyś jakimś cudem udało mi się to zrealizować natomiast teraz kiedy podchodzę do tematu ponownie wyłożyłem się. W załączniku program drabinkowy do WinProLaddera. Sterownik plc to Fatek. Bardzo bym prosił was o radę w którą stronę się udać w tym moim problemie.
  • Helpful post
    #2
    pafciowaw
    Automation specialist
    Jak masz wolno-zmienny enkoder (impulsator) to można podpiąć kanały A i B pod wejścia zwykłe.
    Program: jak jest A i narasta (zbocze) B to funkcja zwiększ rejestr (+1), a jak jest B i narasta (zbocze) A to zmniejsz (funkcja -1) rejestr szybkości krokowej.
    Można podłączyć pod szybki licznik (wtedy praca w przerwaniach) ale trzeba analizować: czy zawartość licznika się zwiększa czy zmniejsza i wprost proporcjonalnie zmieniać rejestr szybkości.
    ps. nie mogę otworzyć załącznika...
  • #3
    manron
    Level 9  
    Rzecz w tym, że używając funkcji hspso w winproloaderze po załączeniu pobiera aktualna wartość z enkodera i silnik pracuje ale w trakcie trwania programu regulując enkoderem wartości sie zmieniają tak jak tego oczekuje ale niestety silnik nie zmienia prędkości a podglądając rejestr aktualnej częstotliwości wyglada na to że pomimo zmiany wartości w rejestrze nie korzysta z niej dopóki nie uruchomię sterownika ponownie.
    Zalacznik spakowany jest winrarem i zawiera plik programu dla winproloadera
  • Helpful post
    #4
    pafciowaw
    Automation specialist
    W tabeli Servo Program Table pewnie masz tylko jedną linią działania (Motion Command Item) - gdyby umieścić drugą linię to prawdopodobnie wraz z przełączeniem między liniami pobierałoby nową wartość (skoro w podglądzie zmiana po enkoderze następuje).

    Dodano po 6 [minuty]:

    Mimo użycia winrara, 7-zip..nie mogę się dostać do pliku;
  • #5
    manron
    Level 9  
    Witam,
    Probowalem dawać po parę linii wykorzystując ten sam rejestr prędkości, w moim przypadku to R50. Niestety nie działało. Wieczorem usiądę do tego raz jeszcze i spróbuję dodać parę linii więcej używając dłuższych opóźnień pomiędzy nimi.
  • Helpful post
    #6
    pafciowaw
    Automation specialist
    Albo przerywać wykonywanie pracy 140.HSPS0 - tak by załadowywało się od początku (o ile taka "niestabilność" silnika jest do przyjęcia).
  • #7
    manron
    Level 9  
    Dziwna sprawa.. udało mi się znaleźć program, który działał na 100%. Teraz o dziwo nie działa i szczerze mówiąc nie mam bladego pojęcia dlaczego. Ciekawą rzeczą jest to, że sprawdzając rejestr systemowy odpowiadający za obecną częstotliwość impulsów w ogóle nie reaguje na jakiekolwiek zmiany a co lepsze przyjmuję jakąś wartość nie wiadomo nawet skąd. Program, który realizował mi funkcję zmiany prędkości silnika jest w załączniku. Dodam, że Rampa tam jest dodana na moje potrzeby.

    edit:
    Podglądając na to co się dzieje w sterowniku wygląda na to że dopóki funkcja hspso nie zostanie zresetowana nie udaje mi się zmieniać prędkości. Nie wiem co jest grane, działało kiedyś a teraz mnie robi w konia..
  • Helpful post
    #8
    jacur
    Level 32  
    Manual w języku polskim rozdział 11 Pozycjonowanie NC strona 11-10 (manual masz dostępny na stronie dystrybutora Fateka).
  • #9
    manron
    Level 9  
    Patrzę na tą stronę i nie do końca rozumie która informacja na niej zawarta jest w stanie rozwiązać mój problem... jedyne co już sam zaobserwowałem to żeby prędkość mogła się zmieniać to funkcja 140 musi mieć jakąś przerwę i w manualu też o tym pisze.
    Quote:

    gdy FUN140 dla Ps0~3 rozpocznie się, nastąpi natychmiastowe wysłanie impulsu wyjściowego;
    ponieważ program drabinkowy wykonywany jest sekwencyjnie, to nawet, gdy FUN140 dla Ps0~3
    została rozpoczęta przy tym samym skanie, to pomiędzy nimi musi być jakaś przerwa.
  • Helpful post
    #10
    jacur
    Level 32  
    To przeczytaj do końca strony :D
  • #11
    manron
    Level 9  
    Mówisz o tym ??
    Quote:
    Jeżeli wartość młodszego bajtu=5AH, to może być ona w każdej chwili zmieniona dynamicznie na
    częstotliwość wyjściową podczas transmisji szybkiego impulsu wyjściowego.
    Jeżeli wartość młodszego bajtu nie wynosi 5AH, to nie może być ona zmieniona dynamicznie na
    częstotliwość wyjściową podczas transmisji szybkiego impulsu wyjściowego.
    Domyślna wartość R4056 wynosi 0

    Tylko nie rozumiem tego 5AH ..
  • Helpful post
    #12
    jacur
    Level 32  
    Oki.

    to trzeba zacząć od podstaw,
    rozumiesz co to jest bajt, słowo,młodszy bajt starszy bajt zapis liczb szesnastkowych?
  • #13
    manron
    Level 9  
    Problem rozwiązany, nie wiem jak to się stało ale zmiana rejestru z R50 na R80 rozwiązała problem związany z dynamiczną zmianą prędkości. Szukałem i patrzyłem czy coś innego nie absorbuje rejestru R50 i nic nie znalazłem. W każdym bądź razie enkoder teraz bardzo ładnie steruje obrotami silnika. A taka ciekawostka na koniec. Zmieniałem z R50 na inne wyższe rejestry, które wiedziałem, że nie są używane np. R2800, R1500 i sytuacja była taka sama, natomiast R80 załatwił problem. Nie jestem w stanie racjonalnie tego wytłumaczyć.