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

problem z obliczeniem regulacji temperatury PID

20 Lis 2007 09:14 3661 18
  • Poziom 19  
    Witam kolegów

    proszę o poradę jak wyliczyć/wyznaczyc opóźnienie reakcji obiektu (tau)
    we wzorze PID są np. dane Ti=2.4 * tau (stała czasowa całkowania) i Td=0.4*tau (stała czasowa róźniczkowania) ,ale nie wiem w jaki sposób to "tau" wyliczyć czy jest to czas w którym temperatura pomieszczenia zmieni się o jakąś wartość temperatury ? jesli tak to o jaką wartość ma się zmienić ? czy źle myślę

    Bogusław
  • Relpol przekaźniki
  • Poziom 10  
    A regulator jest cyfrowy czy analogowy? Ja znam następujący sposób oblicznai podstawowych nadstaw Zieglera Nicholsa
    Kp=0.6*Km gdzie Km jest wzmocnienie przy którym układ znajduje się na granicy stabilności
    Ti=pi/"omega pi" gdzie wspomniana "omega pi" to omega przy której układ zmienia się w fazie o 180 stopni
    Td=Ti/4(ale tego ostatniego nie jestem pewien)
    Niestety w powyższy sposób możesz obliczyć tylko jeśli znasz transmitancję obiektu. Jeśli nie znasz to pozostaje Tobie dobierać doświadczalnie. Także w sumie to nie wiem czy pomogłem
  • Poziom 19  
    regulator jest cyfrowy, właśnie o to chodzi żeby nie dobierać doświadczalnie tylko zeby sam wyliczył według pobranych temperatur i czasów, czyli jakiś wzór ,widzę że jakos to robią ale nie wiem jak.
    Jeszcze jedno pytanie a jaki to jest stan "na granicy stabilbności" ? czyli jak osiągnie temperaturę zadaną czy jak ?
    B.
  • Relpol przekaźniki
  • Poziom 10  
    A zna może Kolega transmitancję obiektu? Bo z tego co mówił mój wykładowca z układów regulacji automatycznej to bez znajomości transmitancji pozostaje jedynie doświadczalnie.

    Dodano po 9 [minuty]:

    Myślę że na granicę stabilności najlepszy będzie przykład. Ja robię regulator dla silnika krokowego. W moim przypadku granica stabilności to taki moment w którym silnik pomimo zadanego kroku i kierunku obrotu nie rusza z miejsca tylko wychyla się na przemian w prawo i lewo. Czyli granica stabilności to taki moment w którym układ przestaje zachowywać się w swój normalny sposób
  • Poziom 23  
    A nie prościej zebrać próbki przy jakimś tam sterowaniu (zmianami wartości zadanej temperatury) następnie obliczyć model - chociażby ARX,MA,AR,ARMA,BJ albo jakikolwiek inny ? Później przejść z postaci dyskretnej na postać ciągłą. Oczywiście mówię tylko i wyłącznie o reg PID - pomiar przed reg i za , a nie z obiektem - chyba że to niemożliwe.

    Następnie zasymulować go w Matlabie i odczytać co dzieje się przy skokowej zmianie uchybu (temp - temp_zadana).
    Ti = 2.4 * tau - a Ti to czas zdwojenia po którym wartość części całkującej i części proporcjonalnej osiąga wartość kr*e (e - uchyb - skok np z 29 oC na 30 oC) - część różniczkującą na razie pomijam (nawet nie jest podane czy jest to część różniczkująca idealna czy rzeczywista)

    Mając Ti obliczysz tau. Co to Td to liczy się tak samo (2*kr) tylko ze dla e narastającego liniowo (więcej info u wujka google)

    Na szybko bazgroły - wybacz inżynierski program Paint nie pozwala na bajeczną grafikę w 2 min.
  • Poziom 19  
    Oczywiście że lepiej zebrać probki i tak właśnie chcę zrobić, ale obliczenie z próbek musi się wykonać w procesorze a nie w matlabie (którego zresztą nie używam i nie znam :) ) ja w zasadzie wyszystko już wiem jak to wyliczyć nie znam tylko "tau" bo to trzeba wyliczyć z pobranych próbek i właśnie nie wiem w jaki sposób.
    Co to za parametr "kr" ? bo nie spotkałem się z takim (czy to jest Kp czyli wzmocnienie regulatora?) , kolego terminator piszesz trochę jak profesor ,więc nie wszystko jest zrozumiałe dla mnie ,nie jestem tak bardzo zaawansowany.
    Głownie chodzi mi o to jak wyliczyć tau z pobranych temperatur w jakimś przedziale czasowym, ale nie wiem jaki to ma być przedział czasowy i o ile ma się zmienić temperatura w tym czasie, to ma być sterownik ogrzewania podłogowego w pokoju, które w zasadzie jest sterowane tylko załącz wyłącz a nie płynnie ,więc nawet nie wiem czy PID jest tutaj potrzebny (a nawet możliwy) , ale jakoś trzeba wyliczyć wcześniejsze wyłączenie ogrzewania żeby nie przegrzewać pokoju i wcześnejsze załączenie żeby nie ochłodzić, mam konepcję żeby wartość z PID zamienić (przeliczyć) na czas sterowania przekaźnikiem.
  • Poziom 23  
    Tak kr to wzmocnienie regulatora.
    Wydaje mi się że w Twoim problemie występuje jedynie opóźnienie transportowe + inercja .
    Obrazowo: włączenie przekaźnika spowoduje że nagrzewanie płynu wzrasta inercyjnie (moje przybliżenie) a następnie po pewnym dopiero czasie zostaje przetransportowane (zaczyna być ciepło)
    Ogólnie model tego obiektu to: K(s) = k*e^(-sTo) / (1+sT) ,ewentualnie inercja II rz.
    Jak obliczyć tau hmmm ... ja bym polecał takie coś - odłączyć PID'a, zebrać próbki z wejścia (sterowanie - np włączyć z 0 na 1 przekaźnik , odczekać jakiś czas żeby sie nagrzało, następnie wyłączyć przekaźnik) i odczytywać wyjście (temp) np co 10s,30s - to już eksperymentalnie. Mając dane o obiekcie wiemy jak się będzie zachowywał - obliczmy wcześniej jego model przybliżony. Następnie za pomocą zidentyfikowanego modelu dopieramy parametry PID'a za pomocą jakichkolwiek nastaw - ZN albo QDR.

    Jeśli chcesz to zrobić na chłopski rozum i dokładność nie jest Ci aż nadto potrzebna to robimy tak: wyłączasz wszystko - temp w pokoju ustabilizowana, ogrzewanie podłogowe wyłączone i płyn w niej ma temp pokojową. Włączamy przekaźnik na 1 i czekamy aż zacznie być ciepło przy podłodze. To jest mniej więcej Twój czas opóźnienia.
    Nie mówię że podane przeze mnie w/w metody są dokładne i poprawne w 100% ale zawsze można spróbować.
  • Poziom 19  
    tak ten ostatni przykład jest raczej właściwy ,tylko o ile ma się ta temperatura podnieść, bo że jest ciepła podłoga to za mało, poza tym czujnik jest wysoko nie przy podłodze więc trochę to potrwa, a mam do obsługi całe mieszkanie 5 pokoi i każdy musi się obliczać osobno. czy można przyjąć że ma się podnieść np. o 1 stopień ? czy to nie jest jakaś wzięta z kosmosu wartość przy której dalszej obliczenia nie wyjdą ? widziałem ostatnio taki program napisany w C (właśnie do podłogowego, ale elektrycznego z PWM na triaku ) i tam wszystkie te wartości są wyliczane w krótkim czasie w pętli ,ale nie do końca rozumiem tą procedurę ,jak chcesz to podeślę ci na priv ten listing, może jesteś w stanie wyciągnąć esencję z tego ? (listing też jest dla mnie niezrozumiały w miejscu gdzie oblicza tau (reszta jest dość prosta))
  • Poziom 23  
    A może zrobić tak:
    włączasz przekaźnik na 1 , czekasz aż temp podniesie się o 1 stopień (najlepiej żeby to był dokładny termometr i miejsce jak najmniej zależne od zakłóceń - np z dala od łazienki itp , SUGERUJE UMIEŚCIĆ GO w środku ciężkości pokoju) , gdy temp się podniesie to wyłączasz przekaźnik (masz już pierwszy czas - t1) .Zapewne po wyłączeniu przekaźnika temp sie podniesie bo szybkość rozchodzenia się temperatury jest wolniejsza od nagrzewania, następnie czekasz aż temperatura osiągnie maksymalną wartość (wtedy notujesz czas t2) i zacznie spadać (tego dokładnie nie wyliczysz bo ten max może trwać przez np 30sek albo 10 min)

    Odejmując t2 (max osiągnięta wartość) - t1 to w przybliżeniu tau czyli czas wzrostu temp bez sterowania ( opóźnienie transportowe ).
    To tau to jest zgrubnie oszacowane ponieważ na jego wartość wpływa pojemność pokoju,temp w pokoju i wiele innych. Pewnie dla każdego z tych 5 pomieszczeń będzie trzeba obliczać to tau. Nie wiem jak to zrobisz w PID (pewnie 5 różnych pętli) i jak on jest zrobiony - na uC czy moze orginalny sterownik PLC.

    Ogólnie obiekt (pokój) jest bardzo inercyjny (z dużą stałą czasową) oraz posiadający opóźnienie.
    Miłego eksperymentowania.
  • Poziom 19  
    spróbuję tak zrobić, co do programu to mam już to w miarę wymyślone, jedynie muszę go napisać i przetestować czy to będzie tak działać. Myślę że zrobię jakiś układ eksperymentalny w postaci puszki ogrzewanej lutownicą załączaną przekaźnikiem i czujnik w środku , bo czekać na takie długie czasy jak pokój to pisałbym ten program miesiąc, jak coś będę wiedział to napiszę.
  • Poziom 23  
    No tak testy na lutownicy będą przebiegały szybciej ale to będzie w ogóle inny obiekt i całkiem inny czas tau.Sprowadzi sie do tego ze zmontujesz lutownice i puszkę, poobliczasz czas, ustawisz wszystko cacy w PID i nie będzie to działać w pokoju.

    Chciałbym zasugerować że i tak będziesz musiał sterować przekaźnikiem jak PWM tylko że nie będzie to jakby widoczne dla Ciebie - Ciebie interesuje tylko włącz i wyłącz ( w określonym horyzoncie czasu) bo nie ustawiasz czasu wypełnienia (a to właśnie jest sterowanie PWM).

    Zastanawiam się czy nie zrobić układu nadążnego (śledzącego).
    Np: w pokoju jest 18st a chcesz 22st. Reg. włącza grzanie i im bliżej tej wartości zadanej tym przekaźnik ma mniejsze wypełnienie w czasie (niestety sprowadza sie to do PWM którego Ty nie chcesz).Tzn dla różnicy temp > 5 grzanie będzie włączone cały czas, dla mniejszych np przyjmując Tpwm =1s , wypełnienie odpowiednio 80%,50%,30%,0%

    To będzie niejako reg PI, nie powinieneś dostać tak dużych przeregulowań temp ( temp w pokoju > temp zdanej) jak w poprzednim rozwiązaniu.
    Będzie Cię tylko interesował jakie wypełnienie dla poszczególnych różnic temperatur (zadana - pokój).
  • Poziom 19  
    ja właśnie chcę przeliczyć wynik z PID na takie pseudo PWM dla przekaźnika, założyłem sobie że przykładowo grzanie 1min to 100% wypełnienia i każdy krótszy szas to jakiś procent tego czasu, ten czas dobiorę doświadczalnie bo może będą to zmiany za szybkie może 5min ,zobaczę. Co do puszki z lutownicą to chcę tylko sprawdzić czy ukad zachowuje się tak jak powinien ,czyli czy stabilizuje temperaturę, oczywiście dla pokoju będzie inne strojenie.
  • Poziom 14  
    Witam.
    Jedna z metod ( prosta ale niestety czasochłonna )

    1. Zostawiasz tylko reg. P i zwiększasz wzmocnienie aż pojawią się oscylacje o stałej amplitudzie ( granica stabilności ), zanotuj wzmocnienie Kkr i okres oscylacji Tosc.
    2. dobierasz K = 0.6 Kkr, Ti= Tosc /2, Td = Tosc /8.
  • Poziom 19  
    tutaj w zasadzie nie ma regulacji wzmocnienia ,bo jest albo 0 albo max, w związku z przekaźnikiem ,
    mógłbym pośrednio przeliczyć czas sterowania przekaźnikiem na wzmocnienie ,ale nie wiem czy czekanie na osiągniecie oscylacji nie trwałoby to wieki... na razie nie mam czasu robic doświadczeń, chyba dopiero po świętach.
  • Poziom 19  
    ruszam z tematem po przerwie
    zrobiłem układ prototypowy w postaci puszki zgrzałką i przekaźnikiem, przekaźnik steruję sygnałem PWM o okresie 4s (na początek doświadczeń) w tym okresie wynik PID 0-100 % jest przeliczany na czas załączenia/wyłączenia przekaźnika .
    Pierwsze doświadczenie zrobiłem metodą "odpowiedzi skokowej" :
    po załączeniu grzałki czekałem aż temperatura w obiekcie ruszy z miejsca to jest czas TAU, następnie czekam aż temperatura osiągnie wartość zadaną to jest czas Tz i na tym koniec pomiarów, wyszło że czas TAU=100s a Tz=70 sekund , temperatura początkowa to 33,3 stopnia ,temperatura do której czekam żeby wyznaczyć TAU to 33,5 stopnia ,temperatura zadana to 35 stopni. Niestety z podanych danych w żaden sposób nie wychodzą wartości Kp Kd Ki żeby działały we wzorze PID według sposobów jakie znalazłem czyli:
    P=Kp*błąd
    I=Ki*suma_błędów
    D= Kd*różnica_ostatnich_błędów
    PID=P+I+D
    doradźcie jak wyliczyć te stałe Kp,Ki Kd bo teraz liczę w ten sposób :
    Kp= 1.1 * vmax* TAU gdzie vmax=delta temperatur/delta czasu = (35-33.5)/(70) co daje Kp=1.87 i to jeszcze jest wynik względny chociaż chyba niewłaściwy bo podczas samej regulacji P temperatura nie jest osiągana, osiągana jest dopiero gdy Kp=4 (przy tym Kp dochodzi dopiero do oscylacji 1.5 stopnia powyżej i 1.5 poniżej Tzadanej).
    Problem pojawia sie dopiero jak wyznaczam Ki=2.5*TAU i Kd=0.4*TAU co daje Ki=250 i Kd=40 ,teraz jak podstawię te warości do wzoru PID to wynik jest w tysiącach ,więc jest kosmicznie przeregulowany. W czym jest problem ?? mam wrażenie że ta częstotliwość PWM ma też jakieś znaczenie bo trwa 4s żeby nie zajechać przekaźnika, co może opóźniać obliczenia,w niektórych wzorach widziałem że czas próbkowania jest umieszczony we wzorze na PID, czyli u mnie ten czas próbkowania wynosi 4sekundy.
    nie zdążyłem jeszcze zrobić doświadczeń z metodą podanę przez Rooberta (metoda oscylacji) ,na razie proszę o sugestie w tej metodzie bo jest prosta i szybka .
  • Poziom 19  
    dobra, już zadziałało znalazłem lepszy wzór na PID który uwzględnia czas próbkowania
  • Poziom 11  
    Witaj, dopiero teraz trafiłem na temat. Czy mógłbyś się podzielić znalezionym wzorem? Mam obecnie bardzo podobny problem i nie potrafię sobie z nim poradzić.