Elektronika, Programowanie, Obrabiarki CNC i inne dziwne rzeczy

Projekty które rzadko zostają ukończone

Symulator regulatora PID

Krótki opis:

Najprymitywniejszy na świecie symulator regulatora PID. Parametry do ustawienia do Kp,Ki,Kd oraz maksymalny poziom sygnału wyjściowego. Jeden suwak służy do zadawania pozycji, drugi pokazuje pozycję rzeczywistą oraz umożliwia wprowadzenie odchyłki. Wykres odświeża się co 25ms.

pid

Symulator stworzony został w darmowym środowisku Lazaru. Składa się z 1 pliku exe, nie zapisuje żadnych danych w rejestrze ani zewnętrznych plikach.

Plik uruchomieniowy do pobrania:

Kod funkcji liczącej PID:

function regulator_PID(x: TPIDState): TPIDState;
var e,de,I,Tp :Double;
begin
     Tp := 1;

     e := x.x0 - x.mes_x;
     I := x.ki * Tp * (e+x.eminus1) / 2+x.Iminus1;
     de := (e - x.eminus1)/Tp;
     x.eminus1 := e;
     x.y := x.kp * e + x.kd * de + I;
     if ((x.y > x.y_max) OR (x.y < x.y_min)) then
     begin
     if(x.y > x.y_max) then
       begin
        x.y := x.y_max;
       end
       else if(x.y < -x.y_max) then
       begin
        x.y := -x.y_max;
       end;
     end
       else
     begin
       x.Iminus1 := I;
     end;
     result := x;
end;

Struktura TPIDState:

type TPIDState = record
     x0,mes_x,Iminus1,eminus1,y,ki,kp,kd :Double;
     y_min, y_max :Integer;
     mes_channel: Byte;
end;

gdzie:

  • x0 – wielkość zadana
  • Iminus1 – wartość całki z poprzedniego kroku
  • eminus1 – wartość uchybu z poprzedniego kroku
  • ki – wzmocnienie członu całkującego; odwrotność stałej zdwojenia
  • kp – wzmocnienie członu proporcjonalnego
  • kd – wzmocnienie członu różniczkującego
  • y – wartość na wyjściu
  • Tp – okres próbkowania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *