Introduction to MathScript

Control Engineering
MathScript
Hans-­‐Petter Halvorsen, M.Sc.
Reguleringsteknikk
Tilstandsrom-­‐
modeller
Differensial
-­‐likninger
Laplace
K = Forsterkning
T=Tidskonstant
1.orden med tidsforsinkelse
Blokk-­‐
diagrammer
Tidsplanet
1.orden
Transfer-­‐
funksjoner
Sprang-­‐
respons
S-­‐p lanet
Serie, Parallel, Feedback
2.orden
Dataverktøy
MathScript
Analyse/Design
LabVIEW
Stabilitets-­‐
Det komplekse plan
analyse
1. Systemets poler
Realisering/
Implementering
2. Frekvensrespons
Bodediagram
Det komplekse p lan
Diskretisering
Reguleringssystem
Asymptotisk stabilt system
Air Heater
Tidsplanet
Ustabilt system
Marginalt stabilt system
Asymptotisk stabilt system
Marginalt stabilt system
Ustabilt system
Verktøy
LabVIEW
PC
Byggverk
Reguleringssystem
MathScript
Frekvensrespons
Stabilitetsanalyse
Diskretisering
Tilstandsrommodeller
Byggeklosser
Transferfunksjoner
Differensiallikninger
MathScript
MathScript er en del av LabVIEW!
MathScript IDE:
Transferfunksjoner -­‐ MathScript
MathScript kode:
% Transfer Function
num = [2, 3];
den = [1, 4, 3];
H = tf(num, den)
MathScript kode:
% Transfer Function
num = [4];
den = [2, 1];
H = tf(num, den)
% Step Response
step(H)
Prøv disse eksemplene!
% Step Response
step(H)
U=1 -­‐> Enhetssprang
Prøv disse – Hva blir resultatet da??
Blokkdiagrammer -­‐ MathScript
Serie:
MathScript kode:
…
H = series(h1,h2)
Eksempel:
Tilbakekobling:
Parallell:
MathScript kode:
…
H = parallel(h1,h2)
MathScript kode:
…
H = feedback(h1,h2)
num=[1];
den=[1, 1];
H1= tf(num, den);
num=[1];
den=[1, 1, 1];
H2 = tf(num, den);
H = series(H1,H2)
Prøv dette!
Matematikk i MathScript
Matematiske uttrykk:
Likninger:
y(x) = 2x + 4
y(3) = ?
Vektorer:
x = 3;
y = 2*x
+ 4;
Matriser:
Prøv disse eksemplene!
x = [4, 3, 5]
A = [0, 1; -2, -3]
y = 1:10
C = [-1, 2, 0; 4, 10, -2; 1, 0, 6]
Matriser i MathScript
Eksempel:
Eksempel:
Hva blir følgende?
Hva blir følgende?
Prøv disse eksemplene!
Prøv evt. andre m atriseoperasjoner, som rang, determinant, inverse, osv
Plotting i MathScript
intervall på x aksen
x = 0:5;
Eksempel:
y(t) = 2x + 4
y = 2*x
+ 4;
plot(x,y)
Nyttige MathScript funksjoner ifm plotting:
Prøv dette!
xlabel
grid
title
axis
ylabel
text
Prøv disse ifm eksempelet over!
Hvordan blir plottet da?
Hvordan virker disse?
Skriv help <funksjonsnavn> i Command window
Hvordan får man en annen farge på kurven?
Eller en annen linjetype?
MathScript Part II
(Neste time)
Nå: Begynn på/jobb videre med “Exercise 2: Basic MathScript”
Temaer i Part II:
• Egendefinerte funksjoner
• Løkker og betingelser
• Tips & Triks
• m.m.
Egendefinerte Funksjoner i MathScript
Egendefinerte Funksjoner i MathScript -­‐ Eksempel
Vi ønsker å lage en funksjon som konverterer temperaturen fra grader Celsius til grader Fahrenhet
Lage selve funksjonen:
Kjøring/bruk/uttesting av funksjonen:
Funksjonsnavn
Argument
Returverdi
function Tf = fahrenheit(Tc)
Tc = 23;
Tf = fahrenheit(Tc)
Tf = (9/5)*Tc + 32;
Returverdi
Funksjonens innhold, som kan bestå av en eller flere linjer med MathScript-­‐kode
Dette kan enten gjøres fra Command window eller Script window
Prøv dette!
Funksjonen må lagres som “fahrenheit.m” på harddisken
Hva blir Tf ??
Løkker og betingelser i MathScript
Prøv med forskjellige verdier på x
if betingelse:
x=3
if x > 2
sin(x)
else
cos(x)
end
for løkke:
x = [1, 4, 6, 8, 9];
N = length(x);
sum = 0;
for i = 1:N
sum= sum+ x(i)
end
Hva blir resultatet?
Prøv disse eksemplene!
Det finnes mange andre varianter også (tilsvarende som i C#) – men if og for er de mest brukte!
Kommentarer:
Tips & Triks
% Dette er en kommentar
x=2; % Kommentar2
y=3*x %Kommentar3
Ikke bruk mellomrom (space) i filnavn eller navn på funksjoner!
Dette gjør koden mer lesbar!!
Bruk piltaster (Pil opp og Pil Ned) for å bla i tidligere brukte kommandoer i Command Window
Desimaltegn: Bruk punktum – ikke komma! Dvs. y=3.2 – ikke y=3,2
Ja:
Bruk engelske navn på variable, funksjoner, filer, m.m. Dette er vanlig praksis i programmering!
Bruk alltid variable -­‐ ikke sett inn tall direkte i uttrykkene
Funksjoner:
• Kun en funksjon i hver fil!
• Filnavnet (.m) og navnet på funksjonen må være det samme!
a=2;
b=4;
y=a+b
Nei:
y=2+4
Inkluder disse 3 i toppen av alle script:
clear
clc
close all
…
Tips & Triks
En grei regel: En oppgave – en fil, dvs. ikke putt alle oppgavene i en fil!!
x = 2;
y = 2;
z = 3*x^2 + sqrt(x^2 + y^2)+ exp(log(x))
Bruk hjelp for å finne ut mer om de funksjonene du skal bruke. For å få hjelp om tf funksjonen skriver du følgende i Command window:
help tf
Matematiske uttrykk: Bruk følgende i MathScript:
Mye brukte Funksjoner i MathScript (ifm reguleringsteknikk)
Oppsummering
Transferfunksjoner og Tilstandsrommodeller
clear
clc
tf
ss
Manipulering av transferfunksjoner
series parallel
feedback conv
Simulering/plotting:
step lsim
plot
grid title xlabel ylabel
Stabiltetsanalyse
poles
pzgraph
Vi lærer mer om disse etterhvert
Frekvensrespons
bode
margin
Hvordan bruke disse funksjonene? help <funksjonsnavn> i Command window
Hans-­‐Petter Halvorsen, M.Sc.
Telemark University College
Faculty of Technology
Department of Electrical Engineering, Information Technology and Cybernetics
E-­‐mail: hans.p.halvorsen@hit.no
Blog: http://home.hit.no/~hansha/
17