Till KTH:s startsida Till KTH:s startsida

Matlabscript - Lambdatuning

Automatisera beräkningarna

Vid laborationerna i reglerteknik använder vi MATLAB och Simulink. Samtidigt behöver vi ständigt under laborationerna räkna fram nya reglerparametrar - då oftast med teknikräknaren. 
Ett bra hjälpmedel är då att i stället göra beräkningarna med ett Matlabscript. Det går då mycket fortare att ta fram de nya värdena samtidigt som risken att räkna fel minskar.

Det är inte ett krav att förbereda laborationerna med att i förväg ha skrivit ett lämpligt Matlab-script, men detta är ett mycket bra tips! Specielt inför laboration 3:s många beräkningar av polplaceringar.

Script för Lambda-metoden

lambdatuning.m

m.gif lambdatuning.m   (  text.gif lambdatuning.txt  )

Här är ett exempel på hur ett Matlab-script, en m-fil, kan se ut. Programmet kan kanske ge hjälp att snabba upp beräkningarna av PI-regulatorns inställningar vid lab 2, men mest av allt är det avsett att visa hur ett script kan se ut. Den som är van att programmera med andra programspråk har nog inga större problem med att förstå hur man gör i Matlab.

% Lambda-metoden stegsvarstest
% ger inställningsvärden till PI-regulator
%
%   100% |----------____  Ys  Ks=Ys/steg
%        |         /
%        |        /
%    63% |-------/
%        |      /|         M=max{L,T}
%        |     / |
%        |    /  |         l=p*M    1<p stability )
%        |---|---|-----   
%         <-> L           K=T/(Ks(l+L))
%         <------> L+T     T=T_I
%               

help lambdatuning.m % skriver ut den inledande ASCII-grafiken

disp('Tryck på tangent för MENY ...'), pause
k=menu('Välj åtgärd','Mata in stegsvar (först)','Variera p');

if (k==1)
      disp('Mata in värden från stegsvarstest');
      steg = input('Stegändringens storlek: ');
      Ys0 = input('Utstorhetens startvärde (vid 0%): ');
      Yss = input('Utstorhetens slutvärde (vid 100%): ');
      Ks = (Yss-Ys0)/steg; % beräkna processens förstärkning
      L = input('Dödtiden L [s]: ');
      Ts = input('Tid till 63% av slutvärde L+T [s]: ');
      T=Ts-L;
      M=max(L,T);
      disp('Antag att p = 2 (snabbhet<-->stabilitet)');
      p=2;
      disp('Beräknade värden på K och T_I');
      l=p*M;
      K=T/(Ks*(l+L))  % skriv ut K
      T_I=T           % skriv ut T_I
 else
      disp('Ändra parametern p (1...p...3 snabbhet<-->stabilitet'); 
      p=input('Ange nytt p: ');
      if p<1
        p=1;
        disp('p ska som lägst vara 1');
      end  
      if p>3
        p=3;
      disp('p ska som högst vara 3');
      end
      p   % skriv ut p
      disp('Beräknade värden på K och T_I'),
      l=p*M;
      K=T/(Ks*(l+L))  % skriv ut K
      T_I=T           % skriv ut T_I
end

Man sparar scriptet som en textfil med filnamnstillägget  ".m"  i Matlabs arbetsmapp, och kör scriptet genom att ange filnamnet  lambdatuning. Har man glömt vad scriptet gör, eller hur det används, ger man kommandot  help lambdatuning. Matlab skriver då ut de inledande kommentarraderna. Kommentarer inleds i Matlab med %-tecknet. 
Detta script skriver ut en ASCII-grafikbild som "komihåg-hjälp". Inuti scriptet står  help lambdatuning  så på det sättet skrivs samma information också ut om man kör scriptet.

Om scriptfilen består av flera olika delar kan man låta användaren välja vilken del som ska köras med hjälp av Matlabs  menu()  kommando.

Med  disp('Välkommen')  utskriftskommandot "guidar" man användaren genom scriptet.

Med  U=input('Mata in spänningen U [V]: ')  inmatningskommandot hjälper man användaren att mata in rätt storheter.

Med vilkorsuttryck som  if elseif else  kan man kontrollera att de inmatade värdena är rimliga.

Om man undrar över någon Matlab-funktion skriver man  help  och funktionsnamnet i kommandofönstret och får då se exempel på användningen.

Lycka till!

William Sandqvist skapade sidan 16 december 2014

Lärare William Sandqvist ändrade rättigheterna 24 februari 2015

Kan därmed läsas av alla och ändras av alla inloggade användare.