Saturation -Block in Simulink mitkero0001/tricks/satself2.pdf · In Simulink-gerechter Schreibweise...

2

Click here to load reader

Transcript of Saturation -Block in Simulink mitkero0001/tricks/satself2.pdf · In Simulink-gerechter Schreibweise...

Page 1: Saturation -Block in Simulink mitkero0001/tricks/satself2.pdf · In Simulink-gerechter Schreibweise steht der Inhalt dieser Formel im Fnc1-Blocks der nachfolgenden Simulink-Schaltung

Prof. Dr. R. Kessler, FH-Karlsruhe, Sensorsystemtechnik, http://www.home.fh-karlsruhe.de/~kero0001, Seite 1/2

„Saturation“-Block in Simulink mit extern zugeführten variablen Begrenzungen,

auch mit Tephys Bekanntlich hat Simulink einen Block „saturation“ (in der Biblothek nonlinear). Die Begrenzungen sind dabei als Konstanten vorgegeben und können nicht während des Simulations-Vorgangs geändert werden. Dieser Text realisiert ein Saturation-Glied, dessen Begrenzungen während des Simulations-Vorgangs geändert werden können. Um dies Saturation- Glied mit extern zugeführten Begrenzungen zu „erfinden“, wird von der “verbalen“ Formulierung ausgegangen: (mit x = Eingang, y = Ausgang, os= obere Grenze, us = untere Grenze) (if x > os then y=os) OR ( if x < us then y = us) OR (( if (x <= os) AND (x >= us)) then y = x) In Simulink-gerechter Schreibweise steht der Inhalt dieser Formel im Fnc1-Blocks der nachfolgenden Simulink-Schaltung satself2.mdl. Erläuterungen: In Matlab (und damit auch innerhalb der Fcn-Blöcke von Simulink) liefern die Vergleichsoperationen >, <, >= , <= den Zahlenwert 1 (eins), falls der Vergleich „wahr“ ist. Sie liefern den Zahlenwert 0 (null), falls der Vergleich „falsch“ ist. Der Multiplexer Mux nummeriert den oberen Eingang mit 1 (also u[1]= os ), den unteren mit 3 (also u[3]= us). Innerhalb des FCN-Blocks wird auf den Eingang i mittels u[i] zugegriffen. Dadurch ist die Formel im Block Fcn1 entstanden: ( u[2] > u[1] )*u[1] + ( u[2]< u[3] )*u[3] + ( u[2] <= u[1] ) * (u[2] >= u[3] ) u[2] Die Addition entspricht dem logischen OR, die Multiplikation entspricht dem logischen UND. In Tephys würde es heißen: y= os * ja(x-os) + us * ja(us-x) + x * nein(x-os) * nein(us-x). Hinweis: y=ja(x): if x > 0 then y= 1 else y= 0; y=nein(x): if x <= 0 then y= 1 else y= 0. In Tephys kann man aber auch direkt begr verwenden: y= begr (x, os, us)

R. Kessler Datei satself2.mdl

Saturation mit extern zugeführten Begrenzungen os und us

figure(1); plot(t, x, ':' , t,ysat, t,yself, t,os, t,us); grid on ;

x

os

usyself

ysat

t

To Workspace

SaturationGrenzen 0.5, -0.5

Mux

u*sqrt(u)/5

Fcn3

- u/5

Fcn2

(u[2]>u[1])*u[1] +( u[2]< u[3] )*u[3]+(u[2]<=u[1])*(u[2]>=u[3] ) *u[2]

Fcn1

sin(2*pi*1*u)

Fcn

Page 2: Saturation -Block in Simulink mitkero0001/tricks/satself2.pdf · In Simulink-gerechter Schreibweise steht der Inhalt dieser Formel im Fnc1-Blocks der nachfolgenden Simulink-Schaltung

Prof. Dr. R. Kessler, FH-Karlsruhe, Sensorsystemtechnik, http://www.home.fh-karlsruhe.de/~kero0001, Seite 2/2

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1

-0.5

0

0.5

1

1.5

2

2.5

figure(1); plot( t, x, t,ysat, t,yself, t,os, t,us); grid on ;

x ysat yself

os

us ysat

Realisieren mit Tephys: ------------------- SATSELF1.TXT -------------- 1¦ t = t+dt 2¦ os = t*sqrt(t)/5 { os = oberer Grenze} 3¦ us = -t/5 { us = untere Grenze } 4¦ x = sin(2*pi*1*t) { x= Eingang in den Begrenzer } 5¦ y = os*ja(x-os)+us*ja(us-x)+x*nein(x-os)*nein(us-x) { y= Ausgang aus Begrenzer, formuliert analog zu obigem Simulink-Modell } 6¦ y2 = begr(x,os,us) { y2 = Ausgang aus Begrenzer mit Tephys- Begrenzer-Funktion begr} 7¦ ysat = begr(x,0.5,-0.5) { ysat = Ausgang aus Begrenzer konstanten Begrenzungen 0.5, -0.5}