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

Dobór nastaw kaskady reg. PI-PI funkvją fminsearch

Adikus777 06 Maj 2013 18:55 2190 9
  • #1 06 Maj 2013 18:55
    Adikus777
    Poziom 9  

    Witam,
    posiadam model matematyczny obiektu i do niego układ sterowania kasjkada reg. PI-PI. Układ ma 2 wejscia i 8 wyjsc, przy czym 4 sa pochodnymi. Jak wykorzystac funkcję fminsearch do doboru nastaw tych reulatorów? Posaiadam opis modelu w postaci macierzy stanu uzyskanego w wyniku linearyzacji.

    0 9
  • Pomocny post
    #2 07 Maj 2013 00:45
    Rariusz
    Specjalista Automatyk

    Witam,

    Po pierwsze pisz po Polsku.

    Po drugie. W przykładach na stronie http://www.mathworks.com/help/matlab/ref/fminsearch.html
    widać że do funkcji fminsearch należy przekazać jako parametr
    funkcję dla której chcemy znaleźć minimum.

    W Twoim przypadku należy w funkcji która zostanie przekazana jako
    parametr dodać polecenia odpowiedzialne za wykonanie odpowiedzi
    obiektu na skok jednostkowy. Następnie należy pobrać odpowiedź obiektu
    i policzyć kryterium jakościowe regulacji i to przekazać jako parametr
    zwrotny. Funkcja fminsearch będzie manipulowała parametrami
    P oraz I w celu znalezienie minimum.

    Robiłem już coś takiego i nie jest to skomplikowane. Poniżej
    przykładowe wywołanie z wykorzystaniem algorytmu genetycznego

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam,

    0
  • #3 08 Maj 2013 16:05
    Adikus777
    Poziom 9  

    Napisałem taki skrypt w m-file:

    function y=pid (x)
    assign ('base','k1',x(1)); assign ('base','k2',x(2));
    assign ('base','Ti2',x(3)); assign ('base','k3',x(4));
    assign ('base','k4',x(5)); assign ('base','Ti4',x(6));
    [t,xx,yy]=sim('pid.mdl',30); y=yy(end);

    i zmodyfikowalem schemat z sterowaniem: Dobór nastaw kaskady reg. PI-PI funkvją fminsearch

    Dobór ma być wg. kryterium Jise czy też Jiae. Może to jest proste, ale zawsze miałem problem z pisaniem progrramów jakich kolwiek. Pytanie czego jeszcze brakuje?

    0
  • Pomocny post
    #4 08 Maj 2013 17:29
    Rariusz
    Specjalista Automatyk

    Witam,

    W modelu są cztery regulatory z tego co widzę a parametrów do
    optymalizacji jest 6. Czy ilość jest prawidłowa?
    Na początek należy pobrać odpowiedź obiektu ale to już jest.
    Mając odpowiedź obiektu musimy policzyć kryterium.

    Cytat:
    kryterium Jise czy też Jiae


    Moim zdaniem ISE. Jest wzór na to. Należy policzyć sumę
    kwadratu błędu z uchybu i to będzie przekazane do zmiennej
    y. Następnie wykonać symulację.

    Pozdrawiam,

    0
  • #5 08 Maj 2013 18:16
    Adikus777
    Poziom 9  

    Tak parametrów jest 6 bo ma to być kaskada reg. PI-P.
    Dobrze, tylko czy układ ten jest prawidłowy do wyznaczania tych nastaw regulatora?

    0
  • #6 08 Maj 2013 18:25
    Rariusz
    Specjalista Automatyk

    Witam,

    Tego nie wiem, powinno działać. Trzeba wykonać
    symulację aby się o tym przekonać.

    Pozdrawiam,

    0
  • #7 11 Maj 2013 19:41
    Adikus777
    Poziom 9  

    Symulacja się nie odbywa. Wewnątrz reg. wpisałem poszczególne parametry: p1, Ti1, itd.
    Chciałbym się dowiedzieć gdzie wpisać tą funkcję kryterium Jise?
    I czy potrzebny jest jeszcze jeden dodatkowy m plik?

    0
  • Pomocny post
    #8 11 Maj 2013 19:59
    Rariusz
    Specjalista Automatyk

    Witam,

    Tu należy wpisać kryterium

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam,

    0
  • #9 17 Maj 2013 16:51
    Adikus777
    Poziom 9  

    Kryterium jest zrobione na schemacie w postaci bloków, symulacja działa, ale parametry, które otrzymalem są kompletnie nie odpowiednie.
    Teraz bawie się parametrami, które mają dawać jakąś wage do poszczególnych zmiennych. Do tego całka z uchybu jest bardzo duża czasem nawet 300. Czy można wprowadzić polecenie dzieki któremu te parametry beda sprawiac że całka bedzie mniejsza i jak ograniczyc prametry otrzymywane za pomoca funkcji fminsearch od 0, czyli żeby wzmocnienia były dodatnie? Prubowałem za pomocą kodu, czyli np.:
    a=0.1;
    a1=1;
    b=0.1;
    b1=10;
    k1=0.01 && k1>0;
    k2=10 && k2>0;
    ti2=0.265 && ti2>0;
    k3=0.02 && k3>0;
    k4=3 && k4>0;
    ti4=0.7 && ti4>0;
    x=[k1 k2 ti2 k3 k4 ti4];
    x>0
    y=fminsearch('pid1',x0)
    Ale nie poskutkowało.

    0
  • #10 17 Maj 2013 16:55
    Rariusz
    Specjalista Automatyk

    Witam,

    Należy wprowadzić ograniczenia w postaci dodatkowej funkcji
    i te ograniczenia przekazać do funkcji fminsearch.

    Pozdrawiam,

    0