Howto Kleine Einführung in benutzerdefinierte Funktionen (.func) für Anfänger – damit es nicht func-kt, sondern func-ktioniert!

RudiS

Absoluter Profi
Member
Landesflagge
Neben der Messanweisung “.measure” ist wohl die Möglichkeit, benutzerdefinierte Funktionen zu
erstellen, eine von den Anweisungen, die von Anfängern eher gemieden wird. Und das mit gutem
Grund, denn ihre wichtigste Anwendung betrifft die sogenannten “behavioural sources”, die B-Quellen.
Sehr schwierig! Aber um die soll es hier und jetzt nicht gehen!

Denn es können in Schaltungen auch Bauteilwerte als Parameter über Funktionen definiert werden, das
ist oft ganz praktisch, wenn es um die wiederholte Anwendung geht. Für einen Profi ist ökonomisches
Arbeiten eine Notwendigkeit, aber auch der Amateur sollte seine Zeit nicht unnötig verplempern.

Wenn man z.B. ein oder gar mehrere Filter entwirft, muss man der Filterfrequenz entsprechend nach
bestimmten Formeln die Bauteilwerte berechnen. Wer Schaltungen mit FETs entwirft, muss viele
FET-spezifische Formeln benutzen, auch hier kann man sich mit Funktionen zumindest Tipparbeit
ersparen.

Im folgenden soll an ganz einfachen RC-Filtern gezeigt werden, wie man solche Parameterfunktionen
eingibt, anwendet und für wiederholten Gebrauch speichert. Alle notwendigen Dateien nebst einer
ausführlichen Erläuterung befinden sich im Archiv.

⚡RudiS⚡
 

Anhänge

  • 00c__Func - Schema.png
    00c__Func - Schema.png
    19,3 KB · Aufrufe: 21
  • 01__Func - HP-LP-BP_Plot.png
    01__Func - HP-LP-BP_Plot.png
    13,9 KB · Aufrufe: 17
  • Kl. Einführung in benutzerdefinierte Funktionen.pdf
    154,1 KB · Aufrufe: 22
  • Intro-func.zip
    284,2 KB · Aufrufe: 6
Hallo RudiS

diese Erläuterungen finde ich ausgesprochen hilfreich. In der Tat, die Nutzung solcher Möglickeiten habe ich bislang tunlichst vermieden, da für den gelegentlichen Anwender viel zu kryptisch. Die Möglichkeiten in Ltspice scheinen schier unerschöpflich, gut das es Nutzer wie dich gibt, die ihr Wissen auch teilen mögen.

Vielen Dank für diese Hilfen.

Gruß
Hencobike
 
Hallo Hencobike,

es freut mich, wenn es Dir hilft. Und danke auch für die Rückmeldung und die warmen Worte.

Viele Grüsse,
RudiS
 
Hallo,

kann ich den auch zeitabhängige Funktionen definieren?

.param T=10n Ts=5n V1=1.92
.func out4(t,T,Ts,V1) {V1*(exp(-t/Ts)-exp(-t/T))}

Und wie bekomme ich die dann als weiteres Trace in meinem Diagramm dargestellt?

Gruß Andreas
 
Hallo Andreas,

Grundsätzlich kann man alles, was sich parameterisieren und messen lässt, in Funktionen verwenden.
Im Schaltplan definierte Funktionen kann man bei Parametern und in Messanweisungen benutzen, aber nicht im Waveform viewer.
Beispiel:
.param t_temp=-kelvin+20 ; 20° Celsius
.param ck=boltz cq=echarge
.func getVT(t_temp[imath]) {ck*t_temp[/imath]/cq}
.param current_VT = getVT(t_temp)
.meas now_VT param getVT(t_temp)

Ausdruck der LOG-Datei:
Circuit: * C:\users\zo17-adm\Desktop\Verknüpfung mit 01__Simulations\10__BJT\00__BJT_IC.asc
Direct Newton iteration for .op point succeeded.

now_vt: getvt(t_temp)=0.0252609

Date: Wed Dec 17 00:26:07 2025

Total elapsed time: 0.230 seconds.

Um im Plotfenster eine Kurve darzustellen, muss man die Funktion in eine bestimmte Datei "plot.defs" eintragen, z.B. wie folgt:

* File: C:\users\zo17-adm\Documents\LTspiceXVII\plot.defs
* Define parameters and functions that you which to be able to use in
* data plots in this file with .param and .func statements.
.param Vt=25.8m
.func dispIC(Is[imath], Vbe[/imath]) {Is[imath]*exp(Vbe[/imath]/Vt)} ;vereinfachte Shockley-Gleichung f. Kollectorstrom

Als Variablennamen benutze ich sinngebende Namen mit angehängtem $-Zeichen (was aber die Boardsoftware nicht mag und nicht darstellt).
Unten ein Screenshot mit vorstehender Funktion.

Hoffentlich funktioniert es mit dieser knappen Antwort.

Gruss RudiS
 

Anhänge

  • plotdefs-demo.png
    plotdefs-demo.png
    10,9 KB · Aufrufe: 6
  • plotdefs.png
    plotdefs.png
    4,2 KB · Aufrufe: 5
Zuletzt bearbeitet:
Hallo RudiS,

ich musste erst etwas basteln, bevor es geklappt hat.
Nach jeder Änderung von plot.defs musste ich LTspice neu starten.
Der Faktor V1 der Funktion brauchte die Maßeinheit [V], sonst bekommt das Diagramm eine 3te y-Skala.
Eigentlich braucht es noch ein if, damit für time < td die Amplitude Null ist.

* File: C:\Users\ABel\Documents\LTspice\plot.defs
*
* Define parameters and functions for use in data plots
* in this file with .param and .func statements.
.param T=10n Ts=5n V1=3.2V td=1n
.func plotout(time,td,T,Ts,V1) {V1*(exp(-(time-td)/Ts)-exp(-(time-td)/T))}

Dank und Gruß Andreas
 

Anhänge

  • Diagramm_plotout.jpg
    Diagramm_plotout.jpg
    62,5 KB · Aufrufe: 1
Tut mir leid, ich vergass das zu erwähnen: plot.defs wird beim Start von LTspice geladen,
wenn man darin etwas ändert, muss man wohl oder übel LTspice schliessen und erneut starten.
Freut mich, wenn ich helfen konnte.
Hinweis: wie erreicht man die Datei "plot.defs"? -- Es gibt zwei Möglichkeiten aus LTspice heraus,
für beide muss das Plotfenster aktiv sein:
- Rechtsklick im Plotfenster / View / Plot Defs File
- Menubar / Plot Settings / Edit Plot Defs File

RudiS
 

Ähnliche Themen

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 0)

Zurück
Oben