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.

[Rozwiązano] S71200 - SEW poprawne nastawy PID

02 Gru 2018 12:44 495 11
  • Poziom 14  
    S71200 - SEW poprawne nastawy PID
    Ostatnio zmontowałem stanowisko szkoleniowe S71200 + Falownik SEW sterowany po profinecie. Napisałem program i zrobiłem wizualizację przemieszczającej się jednostki
    S71200 - SEW poprawne nastawy PID
    "Jednostka" może przemieszczać się pomiędzy pozycjami 0-10, pomiędzy każdą jednostką jest 5050 podzielonych już przez odpowiednią wartość impulsów z enkodera. Jak widać na powyższym obrazku przy dojechaniu na pozycję 2 mamy 10330 impulsów, a powinno być 10100. Zmodyfikowałem program, żeby 300 impulsów przed pozycją docelową zmienił prędkość na mniejszą, ale tez to nie dużo dało.
    Pomyślałem, żeby spróbować użyć PID, z którym nie miałem wcześniej styczności i niestety sugerując się tym o czym wyczytałem, wyskakują mi błędy, dlatego chciałbym poprosić o pomoc w koniguracji PID
    S71200 - SEW poprawne nastawy PID
    Setpoint to pozycja docelowa
    input to pozycja z enkodera
    S71200 - SEW poprawne nastawy PID
    Output to wyjście, czyli podejrzewam prędkość zadawana na falownik. Tu właśnie zastanawiam się jaka to będzie wartość, którą później przeskaluję na prędkość falownika (na razie cały czas to 0)
    S71200 - SEW poprawne nastawy PID

    Poniżej już się zastanawiam, czy 50050.0 to nie za dużo bo taką wartość ma pozycja 10.
    S71200 - SEW poprawne nastawy PID
    Czy ktoś z kolegów mógłby mnie naprowadzić czy dalsze dane też powinienem parametryzować, czy może powinienem zmniejszyć (skalując) odczyt enkodera. Blok PID jest w OB30 wywoływany co 1ms
  • Pomocny post

    Specjalista Automatyk
    Jeśli ma to być tylko przejazd z pozycji do pozycji, to można się pobawić PID, ale równie skuteczne będzie hamowanie po rampie. Wystarczy prosta funkcja y = ax + b. Tzn. jedziesz do zadanej z jakąś prędkością, a w jakiejśtam odległości zaczynasz prędkość wyliczać w funkcji odległości od zadanego punktu.
    Pytanie czy Twój silnik ma hamulec? Jeśli ma to z małej prędkości spokojnie powinieneś móc się zatrzymać dokładnie.
    Zerknij też czy Twój falownik ma możliwość skorzystania z wbudowanych funkcji pozycjonowania IPOS.
  • Poziom 14  
    Faktycznie, dzięki, nie pomyślałem o takim rozwiązaniu. Jednak nie do końca wiem jak użyć funkcji y=ax+b. Domyślam się tylko, że y to prędkość, a b to różnica w odległości. Czym są "a" oraz "x".
    Wiedząc, że moja prędkość dojazdowa wynosi 1500, i w odległości "300 impulsów" do celu jeszcze tyle powinna mieć, to używając proporcji i po skróceniu wzór na prędkość wyszedł mi jak poniżej:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Czy można to jeszcze jakoś uprościć?

    Dodano po 47 [sekundy]:

    Silnik nie ma hamulca

    Dodano po 34 [minuty]:

    Aha, czyli a bedzie współczynnikiem hamowania, już przetestowałem, działa świetnie. Dziękuję, ale tak dla własnej nauki, mógłby mi ktoś jednak pomóc w rozgryzieniu PID dla mojego przypadku?
  • Pomocny post
    Poziom 24  
    PID to raczej nie do tego przedziału. Może zrobić przerwanie cykliczne i tam sprawdzać ile obrotów brakuje do pozycji.
  • Pomocny post

    Specjalista Automatyk
    PID przyjmuje REAL na wejściu, więc zakres będzie w porządku. Ewentualnie możesz normalizować na odległość w np.: milimetrach, w zależności jaka jest wymagana dokładność.
    Spróbuj zmniejszyć częstotliwość wywołania regulatora. Myślę, że 100 ms będzie dobrze na początek.
    Jaki masz portal, bo ze zdjęć widać, że jakaś stara wersja PID? Chyba, że z biblioteki wyjąłeś taki?
    Jak wpiszesz podstawowe wartości to otwórz okno Commisioning z podmenu Technology objects i wykonaj Pretuning. Dobierze Ci jakieś wyjściowe parametry regulacji, a potem można się bawić do woli.
    W tym samym oknie zobaczysz też w jakim trybie pracuje regulator oraz jaki ma aktualny błąd.
  • Pomocny post
    Poziom 24  
    Ale regulator nie zachowa działania na. Np. silnik ma dojechać do 1000 impulsów i jak dojedzie do 1030 to dopiero to doreguluje do 1000 czyli cofnie wirnik. Nie tak się zachowa regulator w tym przypadku? Ja miałem kiedyś tak z krokowym.
  • Pomocny post

    Specjalista Automatyk
    Wszystko zależy od dobranych parametrów. Jak będzie miał przeregulowanie to tak się stanie.
    Dodatkowo, zakres regulacji nie musi być pełny, tzn. nie trzeba mu podawać pozycji docelowej bezwzględnej, a można jedynie różnicę o jaką się ma przesunąć.
  • Pomocny post
    Poziom 24  
    Bardzo proszę autora o wniosek jak poradził z problemem. Jeśli kolega chce tak żeby zawsze silnik dojeżdżał do pozycji tyle ile trzeba BEZ ZATRZYMANIA, czyli dojechał 1010 to zatrzymaj sprawdź i dojedź 20 jeszcze to chyba PID się tutaj nie nada ale nie chcę się wymądrzać dlatego będę śledził temat.Silnik nie ma hamulca ale falownik funkcję hamowania ma I tak jak MARKOS można wesprzeć się hamulcem. Myślę że falownik ma hamowanie dynamiczne wtedy myślę że zatrzyma się dokładnie.
    Cytat:

    Dodatkowo, zakres regulacji nie musi być pełny, tzn. nie trzeba mu podawać pozycji docelowej bezwzględnej, a można jedynie różnicę o jaką się ma przesunąć.

    W Setpoint? Przesunać z?
  • Poziom 14  
    Jutro mam wolne, także na pewno zrobię testy. Niestety jak do tej pory moje próby nic nie dały. Pomyślałem, że zrobię to na zasadzie wejścia analogowego jako setpoint:
    S71200 - SEW poprawne nastawy PID
    Ze względu, na nie do końca idealną skalę z potencjometru (IW64 ma wartość od 22 do 24976) w NORM_X niestandardowe wartości. Ponadto przy tuningu wymagana jest niezmienna wartość SETPOINT, a potencjometr wchłania zakłócenia (wartość IW64 delikatnie się zmienia), dlatego zapis do SETPOINT tylko przy wysokim stanie na I0.7.
    Teraz wartości pozycji aktualnej:
    S71200 - SEW poprawne nastawy PID
    Enkoder daje 600 impulsów na obrót. Ustaliłem, że będzie możliwość uzyskania 4 obrotów.
    S71200 - SEW poprawne nastawy PID
    Czyli tak to na razie wygląda. Proszę o informacje co powinienem ustawić w parametrach falownika. Jak na razie prędkość minimalną mam ustawioną na 0. Czy rampy hamowania równiez powinny być ustawione na 0? i czy do tej pory jeszcze bez parametryzacji PID uważacie że jest ok?

    Dodano po 8 [minuty]:

    S71200 - SEW poprawne nastawy PID S71200 - SEW poprawne nastawy PID
    S71200 - SEW poprawne nastawy PID
    S71200 - SEW poprawne nastawy PID
    Czy takie nastawy PID są poprawne, czy na ich podstawie mogę już rozpocząć tuning?

    Dodano po 15 [minuty]:

    Ale numer, chyba działa! Dajcie mi Panowie jeszcze trochę czasu na testy, nagram filmik jak to się zachowuje

    Dodano po 59 [minuty]:


    Powyższy film pokazuje zachowanie się "serva" przy przy maksymalnym wyjściu PID równym 100. Ta wartość dla powyższego przypadku pomnożona x3, co daje nam maksymalną wartość 300 dla prędkości falownika. Wartość ta przesyłana jest do QW258. Zauważyłem, że ta liczba dzielona jest przez 5, co daje na falowniku prędkość 60R/min

    Tutaj z kolei mnożnik ustawiłem na x5 (Vmax = 500) i widać niestety, że zaczynają się oscylacje. W takiej chwili silnik szybko się nagrzewa. Przy nagrzanym silniku gdy powróciłem do Vmax=300, również miałem oscylacje. Hmm,
    Czy warto jeszcze popróbować z nastawą parametrów?
    Czy w regulatorze PID istnieje coś takiego jak margines błędu (jak wspomniany brak konieczności użycia docelowej wartości bezwzględnej), co mogłoby wyeliminować oscylacje?
    Przyszedł mi do głowy pomysł, czy nie mógł bym tego używać na zasadzie, że załącz PID gdy utraci pozycję o margines błędu i jak do niego dojedzie ponownie to wyłączy PID
    Świetne doświadczenie, gdybym miał silnik z hamulcem to chyba mogłoby to już służyć jako prawdziwy ala servo-napęd
  • Poziom 14  
    Dzisiaj poświęciłem tematowi znacznie więcej czasu i jednak z całą pewnością na podstawie doświadczeń mogę powiedzieć, że odpowiednio "ZTUNINGOWANE" PID sprawdza się bardzo dobrze:

    Zauważyłem, że tuning PID przeprowadzony dla danej prędkości wyjściowej, sprawdza się bardzo dobrze w praktyce, ale tylko dla właśnie tej konkretnej prędkości, którą ustawiłem na wyjściu podczas tuningu.
    Po przeprowadzeniu tuningu i próbach zmiany skalowania prędkości na większą, następowały oscylacje
    Z drugiej strony, przy próbie skalowania prędkości na mniejszą, ruch nie był płynny i falownik wchodził w błąd
    Zmniejszyłem też nieco czułość kąta obrotu. W tej chwili po obróbce matematycznej enkoder przekazuje 50 impulsów na obrót.
    Nie jest może idealnie, ponieważ "servo" robi jednak ruch korygujący, ale na prawdę według mnie fajnie to wygląda. Czy można już po tuningu, wejść w same nastawy P, I, D i popróbować je pozmieniać dla testów?

  • Specjalista Automatyk
    madiz08 napisał:
    Czy można już po tuningu, wejść w same nastawy P, I, D i popróbować je pozmieniać dla testów?
    Nawet czasami trzeba ;) Musisz otworzyć parametry PID, a po wejściu online i zaznaczeniu Enable manual input, można je zmieniać.
  • Poziom 14  
    Podsumowując, zastosowałem się do zaleceń kolegi Markos80. Zwiększyłem ilość impulsów na obrót do 200/R oraz zwiększyłem czas wywołań przerwań cyklicznych PID (co 10ms). Po auto-tuningu i delikatnych korektach parametrów wszystko działa na prawdę płynnie. Silnik trzyma pozycję z siłą prądu 1.1A, ponieważ taki ustawiłem dla obrotów silnika. W moim przypadku jest to trochę minusem ponieważ bez chłodzenia zewnętrznego (a bez obrotów wiatrak się nie kręci), silnik dosyć szybko się nagrzewa. Aby temu zapobiec wprowadziłem warunek, że jeżeli pozycja docelowa będzie utrzymana przez 1s, to wyłączy sygnał startu dla falownika (symulując załączenie hamulca którego nie mam).
    Tak prawdę mówiąc to blok PID w s7-1200 jest dalej dla mnie czymś magicznym, ale łatwość, prostota i efekty jego użycia są po prostu niesamowite :)