12.07.2015 Views

Sterowanie przegubem obrotowym z wykorzystaniem sprzężenia

Sterowanie przegubem obrotowym z wykorzystaniem sprzężenia

Sterowanie przegubem obrotowym z wykorzystaniem sprzężenia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• K p — wzmocnienie części proporcjonalnej,• K i — wzmocnienie części całkującej,• K d — wzmocnienie części różniczkującej.Regulator PID zastosowany w siłowniku działa zgodnie z algorytmem opisanym równaniem(25). Chcąc uzyskać rzeczywiste wartości wzmocnienia wykorzystując liczby stałoprzecinkowe,każdy z parametrów K p , K i , K d zdefiniowano przez dwie wielkości: k i Skala k , w następującysposób:K =k(26)gdzie:• k ∈ [16384, 32768],• Skala k ∈ [1, 30]2 Skala kParametry regulatora zawarte są w strukturze MJ sPIDparams, której definicja wygląda następująco:typedef struct{Word16 ProportionalGain;Word16 ProportionalGainScale;Word16 IntegralGain;Word16 IntegralGainScale;Word16 DerivativeGain;Word16 DerivativeGainScale;Word16 PositivePIDLimit;Word16 NegativePIDLimit;Word32 PositiveIntegralLimit;Word32 NegativeIntegralLimit;Word32 IntegralPortionK_1;Word16 InputErrorK_1;} MJ_sPIDparams;Prototyp funkcji realizującej algorytm PID wygląda następująco:/*k_p*//*Skala_kp*//*k_i*//*Skala_ki*//*k_d*//*Skala_kd*//*górne ograniczenie wyjścia regulatora*//*dolne ograniczenie wyjścia regulatora*//*górne ograniczenie części całkującej*//*dolne ograniczenie części całkującej*//*wartość sumy w k-1 kroku*//*wartość błądu w k-1 kroku*/Word16 MC1_controllerPIDtype1(Word16, Word16, MJ_sPIDparams*);Funkcja MC1 controllerPIDtype1 zwraca wartość wyjściową regulatora u(i) wyliczoną na podstawiewartości zadanej (parametr 1), wartości mierzonej (parametr 2) oraz parametrów regulatora(parametr 3). Wartość wyjściowa regulatora u(i) ∈ [ PositivePIDLimit, NegativePIDLimit ] .Wartość ograniczenia części całkującej wylicza się w następujący sposób:P ositiveP IDLimit ∗ 2IntegralGainScale+1P ositiveIntegralLimit = (27)IntegralGainNegativeP IDLimit ∗ 2IntegralGainScale+1NegativeIntegralLimit = (28)IntegralGainChcąc przywrócić warunki początkowe, przy każdorazowym uruchomieniu regulatora należywyzerować elementy IntegralPortionK 1 oraz InputErrorK 1.41

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!