Avatar billede akilleuz Nybegynder
16. maj 2015 - 14:46 Der er 6 kommentarer

Simple Laplace Funktion

Hej,

Jeg leder lidt efter vejledning i at implementere en S-funktion in c++.

Et simpelt eksempel vil vaere:

H(s) = ((Gain1*s+Gain2)/s)


Haaber nogen kan hjaelpe lidt i den rigtige retning.

/Thomas
Avatar billede arne_v Ekspert
16. maj 2015 - 17:37 #1
double H(double s, double gain1, double gain2)
{
    return (gain1 * s + gain2) / 2;
}

??
Avatar billede akilleuz Nybegynder
17. maj 2015 - 02:06 #2
Hej Arne,

Jeg har nok ikke udtrykt mig helt korrekt. Ovenstående er en laplace overfringsfunktion. For at den kan implementeres i c eller andet diskret tids domæne mener jeg at proceduren ville være:

Konvertere s Ved hjælp af z-transform og så til difference equation?

Jeg har brug for lidt hjælp til st komme igang med den rette procedure, alt for mange pr siden jeg sidst har leget med det i praksis :)

/Thomas
Avatar billede arne_v Ekspert
17. maj 2015 - 04:02 #3
Jeg er ikke helt sikker paa at jeg forstaar problemet.

Har du problemer med at opsaette de rigtige matematisk formler?

Eller har du problemer med at oversaette disse til C/C++?
Avatar billede akilleuz Nybegynder
17. maj 2015 - 08:03 #4
Foerste problem jeg har er at forstaa hvordan jeg matematisk  kommer fra s-domaenet til z-domaenet.

Jeg kan godt bruge MATLAB til at konvertere men det kniber med at huske hvordan man f.eks. goer i haanden for bedre forstaaelse.

f.eks.:

Gain1 = 35;
Gain2 = 7914.812;
s = tf('s');
num = [D_Shaft K_Shaft];
den = [1 0];

H = tf(num,den)
Zfunc = c2d(H,0.001)

det giver foelgende:

H =

  35 s + 7915
  -----------
      s

Continuous-time transfer function.


Zfunc =

  35 z - 27.09
  ------------
    z - 1

Sample time: 0.001 seconds
Discrete-time transfer function.

1.) Foerst vil jeg gerne kunne lave denne beregning i haanden og forstaa det.
2.) Konvertere z-domaenet til difference ligninger.
3.) Implementere i Code

Jeg skulle dog mene jeg har styr paa selve implementering i code det er mere at komme frem til selve ligningen der skal implementeres.

Haaber det giver lidt bedre mening.
Avatar billede akilleuz Nybegynder
17. maj 2015 - 08:06 #5
tatefejl - se rettelse:

Gain1 = 35;
Gain2 = 7914.812;
s = tf('s');
num = [Gain1 Gain2];
Avatar billede arne_v Ekspert
25. maj 2015 - 03:40 #6
Det giver mening, men mine matematik kundskaber raekker ikke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester