Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 11 lip 2025, o 15:46


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 17 lip 2018, o 22:56 
    Offline
    Użytkownik

    Dołączył(a): 06 mar 2018
    Posty: 26
    Pomógł: 0

    Witam.

    1. Wykorzystuję w swoim projekcie program regulatora PID, który sobie napisałem.
    Problemem moim jest zjawisko Windupu całkowania i pytanie jak i kiedy zerować całkę błędu, żeby nie było to ciągle całkowane bo błąd osiąga wtedy duża wartość i się nawija czyli zjawisko windup.

    2. I drugie pytanie czy w regulatorze trzeba wykorzystywać jakieś odmierzanie czasu? Czy tak napisana funkcja jest wystarczająca?
    3. I zastanawia mnie jak dobrać dobrze współczynniki wzmocnienia regulatora wiem, że sa różne metody zieglera nicholsa itd, ale nie za bardzo wiem jak je ruszyć w rzeczywistości.

    Regulator reguluje kąt załączenia triaka i steruje grzałką. Wszystko działa, ale widzę, że windup się ukazuje bo jak wyreguluje temperaturę to po pewnym czasie, chwili pomalutku sobie rośnie temperatura ponad zadaną więc błąd ciągle się całkuje



    Ostatnio edytowano 13 sie 2018, o 09:02 przez Pixelxx, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 lip 2018, o 07:15 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    rozumiem że te zmienne float liczysz na AVR?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 lip 2018, o 08:23 
    Offline
    Użytkownik

    Dołączył(a): 08 mar 2015
    Posty: 60
    Pomógł: 5

    1. Nie zerujesz tylko zatrzymujesz. Musisz ograniczyć sobie wyjście i obliczyć wartość którą odejmiesz od całki. Wystarczy wpisać w google image "antiwindup" i będziesz wiedział o co chodzi. W układzie występuje dodatkowe sprzężenie zwrotne.

    2. Nie, ale musisz to robić cyklicznie, czyli w jakimś przerwaniu, bo inaczej nie będzie działało.

    3. Tutaj to temat rzeka, ale najpierw wyłącz całkę i różniczkowanie i dobierz tylko część proporcjonalną. Następnie całka a na koniec różniczka, która nie wiele tutaj wniesie bo obiekt jest elementem inercyjnym drugiego rzędu, czyli wolno zmienny.

    _________________
    Http://anonimg3.comxa.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 lip 2018, o 13:22 
    Offline
    Użytkownik

    Dołączył(a): 28 wrz 2016
    Posty: 215
    Pomógł: 14

    Przyczyna takiego działania jest fakt, że nie możesz wysterować grzałki bardziej niż 100%, mimo iż regulator wylicza większe wysterowanie. Ma to szczególnie miejsce przy nagrzewaniu.
    Na szybko można zaproponować rozwiązanie polegające na wyłączeniu członu całkującego na czas nagrzewania (gdy błąd jest duży). Przykładowo, jeżeli regulator ma utrzymać temperaturę np. 100st, to do np. 80st grzeje na 100% a powyżej działa PID.

    AD2 Odmierzanie czasu jest konieczne, tzn. należy załączać PID w jednakowych odstępach czasu. Wynika to z tego, że stałe czasowe całkowania i różniczkowania są wielokrotnościami okresu działania PIDa. Obrazowo mówiąc, jeżeli dwukrotnie zwiększysz okres PID, przy niezmiennych nastawach, to całka będzie narastać dwukrotnie wolniej. Nie ma specjalnego sensu zbyt częste wywoływanie PID'a, musi byc to uzależnione od stałych czasowych obiektu (grzałki).

    J
    Pixelxx napisał(a):
    bo obiekt jest elementem inercyjnym drugiego rzędu, czyli wolno zmienny.
    Nie do końca, bo obiekt drugiego rzędu, to taki, który ma dwie stałe czasowe. W przypadku grzałki to opóźnienie i inercja. Z reguły opóźnienie jest małe i się je pomija.

    _________________
    de gustibus non est disputandum



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 lip 2018, o 04:18 
    Offline
    Użytkownik

    Dołączył(a): 27 lis 2012
    Posty: 291
    Pomógł: 6

    Patrz https://iautomatyka.pl/kurs-regulacji-p ... -cz-34-34/
    Rozdz. 34.6
    Główne wnioski
    Jak walczyć z czasem martwym?
    Czas martwy To wprowadza do systemu opóźnienie które jest oczywiście zjawiskiem niekorzystnym. Bo czy chciałbyś prowadzić samochód, w którym kierownicą skręcisz w lewo, a koła zareagują dopiero po To=1 sek? Obecnie regulatory wykonane są w technice mikroprocesorowej. Dlatego gdy regulator stwierdzi, że pomimo wzrastającego od składowej całkującej sygnału sterującego, sygnał wyjściowy nie wzrasta , to wyłącza on składową całkującą. Czyli w stanie nasycenia z regulatora PID robi się regulator PD.
    Jest to przykład regulatora o zmiennej strukturze. To przełączenie może wystąpić np. od wejścia wzmacniacza mocy w stan nasycenia, a to jest łatwe wykrycia przez regulator mikroprocesorowy.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 lip 2018, o 08:17 
    Offline
    Użytkownik

    Dołączył(a): 06 mar 2018
    Posty: 26
    Pomógł: 0

    Rozumiem już trochę lepiej to. Na chwilę obecną dodałem do regulatora zależność od czasu i wygląda to tak:
    Wszystko piszę w języku C na uC Atmega32 bo nie wspomniałem wcześniej.
    Dodałem przerwanie co jedną milisekunde, i w pętli głównej do zmiennej ,,now" przypisuje milisekundy które przenoszę do funkcji regulatora PID, którego kod zamieściłem poniżej i czy jest on poprawny waszym zdaniem, więc wychodzi, ze regulator uruchamiam co 200ms. Myślę, że jest to wystarczający czas. Kodu do zjawiska antiwindup nie dodałem bo jeszcze nie wiem jak to zapisać (rozumiem teoretycznie).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO