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
lambdatuning.m ( 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.