Zum Hauptinhalt springen

Differentiation und Integration

Infinitesimalrechnung (Calculus)

Differenzieren "derive"

Die Funktion derive() leitet den zeitlichen Signalverlauf x(t)x(t) nach der Zeit ab.

y=ddtx(t)y = \frac{d}{dt}x(t)

Die physikalische Einheit des Ergebnisses ist gegenüber der Eingangsfunktion um eine Zeitdimension reduziert: [y]=[x]s[y] = \frac{[x]}{\rm{s}}.

info

Diese Funktion wird bereitgestellt, wenn das System um äquidistante Signalverläufe erweitert wird und damit ein wenigstens linear interpolierbarer Signaverlauf ermöglich wird.

hinweis

Da der smartCORE in der Regel nicht äquidistante Signalwerte nur in einen Kanal schreibt, wenn sich der Wert geändert hat, ist der Wert zwischen zwei expliziten Stützpunkten immer als Konstant anzunehmen und es fehlt die Information für das letzte, reale Abtastintervall. Zwischen den Stützstellen gilt immer der linksseitige Signalwert (Halteglied 0ter Ordnung). Es ergibt sich ein treppenförmiger Signalverlauf.

Die Anwendung der Differentiation auf nicht äquidistante Signale mit treppenförmigem Verlauf ist Sinn frei. Das Ergebnis wärte entweder 00 oder ±\pm \infty

Integrieren "integrate"

Die Funktion integrate() liefert das Zeitintegral über der Eingangsfunktion x

y=0tx(τ)dτy = \int_0^tx(\tau)d\tau

Da x(τ)x(\tau) immer zu nicht äquidistanten Zeitpunkten t0,t1,t2,...tnt_0, t_1, t_2, ... t_n einzelne Stützstellen liefert, zwischen denen jeweils der linksseitige Funktionswert als konstant angenommen wird, lässt sich das Integral auch als Summe schreiben:

y=n=0N1x(tn)(tn+1tn)y = \sum_{n=0}^{N-1}x(t_n)(t_{n+1}-t_n)

Die physikalische Einheit des Ergebnisses ist um eine Zeitdimension erweitert: [y]=[x]s[y] = [x] \cdot \rm{s}.

hinweis

Für äquidistante Signale ist zukünftige eine Trapez-Integration vorgesehen.

I1 = integrate(y);
I2 = integrate(y, reset);
I3 = integrate(y, reset, preset);
// Optionale Konfiguration für alle Varianten
Ix = integrate(..., { start: <dbl>
, preset: <dbl>
, lower: off|<dbl>
, upper: off|<dbl>
, storage: <str>
});

Falls über den optionalen Parameter reset ein true geliefert wird, wird das Integral auf den mit preset (als Parameter oder Eigenschaft, default 0.0) fest gelegten Wert zurückgestellt und gehalten. Unmittelbar vor der Rückstellung wird ein weiteres Sample eingefügt, mit dem der letzte bis dahin angefallene Integralwert ausgegeben wird ("true peak").

EigenschaftWertBeschreibung
start<dbl>Erster Startwert für das Integral beim Starten des Math Moduls
preset<dbl>Fester Wert für die Rückstellung des Integrals über den reset Parameter
loweroff/<dbl>Begrenzt den Integralwert nach unten, falls aktiviert. Dies wird z.B. für die Implementierung von Reglerstrukturen oder Modellen benötigt, bei denen der Integrationsvorgang durch eine physikalische Grenze limitiert ist.
upperoff/<dbl>Begrenzt den Integralwert nach oben, falls aktiviert. Dies wird z.B. für die Implementierung von Reglerstrukturen oder Modellen benötigt, bei denen der Integrationsvorgang durch eine physikalische Grenze limitiert ist.
storage<str>Name eines persistenten Speichers für den internen Integralwert. Damit wird nach einem Neustart des Systems die Integration am letzten gespeicherten Wert fortgesetzt.
Der Inhalt dieses Speichers ist  an keiner anderen Stelle im smartCORE nutzbar.

Beispiel:

Im Beispiel 1a wird die Funktion integrate() zur Berechnung der elektrischen Energie aus Strom- und Spannungszeitverläufen verwendet.

Im Beispiel 10 wird die Funktion integrate() zur Messung von Zeiten verwendet.

Summieren "sumup"

Die Funktion sumup() liefert die Summe über Einzelwerte des Eingangssignals x zu den Zeiten einer positiven Flanke auf dem trigger Parameter

y=n=0N1x(tn)mittn=time(posedge(trigger))y = \sum_{n=0}^{N-1}x(t_n)\quad\rm{mit}\quad t_n=time(posedge(trigger))
S1 = sumup(x, trigger);
S2 = sumup(x, trigger, reset);
// Optionale Konfiguration für alle Varianten
Sx = sumup(... , { storage: <str>
});

Falls über den optionalen Parameter reset ein true geliefert wird, wird die Summe 0.0 zurückgestellt und gehalten.

EigenschaftWertBeschreibung
storage<str>Name eines persistenten Speichers für den internen Summenwert. Damit wird nach einem Neustart des Systems die Summe am letzten gespeicherten Wert fortgesetzt.
Der Inhalt dieses Speichers ist  an keiner anderen Stelle im smartCORE nutzbar.