Forum: Analoge Elektronik und Schaltungstechnik Anzeige von gerechneten Werten in LTspice


von Flash (Gast)


Lesenswert?

N'Abend.

Folgende Direktiven stehen auf dem Plan:

.param U_soll = 19
.param I_max = 4.5
.param R4 = 80600
.param R5 = 20000
.param R_last = U_soll / I_max
.param R_fb1 = (U_soll / 0.8 - 1) * 1000
.param U_rng = 9.4 / (R4 + R5) * R5
.param U_sense_max = 0.173 * U_rng - 0.026
.param R_sense = U_sense_max / (1.3 * I_max)

Der Plan funktioniert auch, die Ergebnisse der Schaltung basierend auf 
den v.g. Berechnungen sind soweit korrekt. Mit Hilfe einer externen 
Berechnung käme ich auch zu den Werten - aber warum zweimal rechnen?

Die Methode mit "View -> SPICE Error Log", wie im Forum schon mehrfach 
beschrieben greift nicht. Gibt es in LTspice IV Änderungen gegenüber 
früheren Versionen?

von Helmut S. (helmuts)


Lesenswert?

Ich verstehe deine Frage nicht ganz.
Wenn du die Werte von berechneten Bauteileparametern, die in der 
Schaltung verwendet werden, ablesen willst, dann kannst du die im 
expanded listing  sehen, wenn diese Option im Control Panel gesetzt ist.

Control Panel -> Operation  x Generate Expanded Listing

Dann die Simulation laufen lassen. Wenn die durch ist,
Vew -> SPICE error Log

Dort sieht man dann die berechneten Bauteilewerte in der Netzliste.

Wenn du nur Berechnungen sehen willst, dann .MEASURE Kommandos in den 
Schaltplan einfügen.

.meas Usense_max_ param Usense_max

Das Ergebnis ist dann auch in dem Error Logfile.

von Flash (Gast)


Angehängte Dateien:

Lesenswert?

Helmut S. schrieb:

> Control Panel -> Operation  x Generate Expanded Listing

Ich nehme an, dass du eine Windows Version verwendest, die Max Version 
scheint da eine andere Implementierung zu haben.

Bei mir:
a) rechte Maus-Taste -> Submenu -> View -> SPICE Netlist -> darauf folgt 
das Fenster mit der Datei.net
b) Cursor in das Fenster setzen -> Maus-Taste -> Generate Expanded 
Listing -> es erfolgt die Ausgabe der Fehlermeldung "Trouble expanding 
netlist."

Die Sache mit den "meas"-Direktiven muss ich mir mal zu Gemüte führen.

von Flash (Gast)


Lesenswert?

Hallo.
Meine Direktiven habe ich um den folgenden Eintrag ergänzt:

.meas U_sense_max param U_sense_max

Im Logfile steht dann:

Measurement "u_sense_max" FAIL'ed

Ich bin mir aber noch nicht im klaren, was die o.g. Zeile bedeuten bzw. 
bewirken soll. Mal sehen, vllt finde ich eine Erklärung hierzu.

von Helmut S. (helmuts)


Lesenswert?

Mach mal den Namen etwas anders.

.meas U_sense_max_ param U_sense_max

Alternative

.meas U_sense_max555 param U_sense_max

: Bearbeitet durch User
von Flash (Gast)


Lesenswert?

Hallo.

Ich habe gerade beim Mac noch'n versteckten Knopf für "Generate Expanded 
listing" gefunden. Jetzt stehen die gerechneten Bauteilwerte im Log-File 
- das ist ja schon mal was. :-))


Die meas-Directive habe ich geändert, aber der lauf dauert etwa 15 
Minuten. Mal sehen was später drin steht.

von Flash (Gast)


Lesenswert?

Hallo.

Also. das Eintragen der gerechneten Bauteilwerte in die durch "Generate 
Expanded Listing" erweiterte Log-Datei funktioniert. Aber die 
Erweiterungs-Option muss vor dem Öffnen der Logdatei gesetzt sein.

Das Eintragen von Werten in die Log-Datei bei der Verwendung der 
"meas"-Directive funktioniert nur, wenn der Ausgabenamen einen 
Unterschied zum Parameternamen aufweist.

.meas U_sense_max param U_sense_max       <<-- das funktioniert nicht.
.meas U_sense_max_Wert param U_sense_max  <<-- so ist es ok

Ich habe beide Varianten getestet.

von Helmut S. (helmuts)


Lesenswert?

Danke für die Bestätigung. Das gleiche Verhalten hatte ich in Windows 
vor einiger Zeit festgestellt.

: Bearbeitet durch User
von Flash (Gast)


Lesenswert?

Hallo.

Jetzt wollte ich es noch einmal ganz genau wissen.

Die Directiven habe ich wie folgt im Schema eingetragen.

.meas x1 param R_fb1
.meas x2 param U_rng
.meas x3 param R_sense
.meas x4 param U_sense_max

Nach Ablauf der Analyse habe ich dann die folgende Darstellung im 
Log-File gefunden:

x1: r_fb1=22750
x2: u_rng=1.86879
x3: r_sense=0.0508205
x4: u_sense_max=0.2973

Die meas-Directive kann aber noch viel mehr. Es lohnt sich auf jeden 
Fall, das Internet zu plündern. Dabei habe ich diesen Link gefunden:
https://rze-falbala.rz.e-technik.fh-kiel.de/komiue/LTSpice-Anleitung/LTspiceIV(Mai2010).pdf
Aus dem Inhalt der Kurzanleitung lassen sich einige gute Hinweise 
entnehmen.

von Flash (Gast)


Lesenswert?

Hallo.

Eine kleine Beobachtung als Nachtrag zu den MEAS-Kommandos.

Ich will ja nicht knauserig sein, was LTspice mit den Nachkommstellen so 
macht, im allgemeinen reichen mir, wenn nötig, 2 höchsten 3 
Nachkommstellen. Aber es ist schon lustig, was LTspice da macht. Schauen 
wir mal nach, wie das so abläuft.

.param R_sense = U_sense_max / (1.3 * I_max)

R_sense ist aber kein einfacher Bauteilwert, sondern stellt den 
Widerstandswert von 2 parallel geschalteten Widerständen dar. Im Schema 
habe ich tatsächlich 2 Widerstände verwendet, obwohl für die Simulation 
einer gereicht hätte. Also habe ich den Bauteilwert für R22 und R23 im 
Schema wie folgt zugewiesen

{R_sense * 2}

Das funktioniert auch prächtig, wie ich in der Log-Datei nachlesen kann.

r22 n013 0 0.101641093609284
r23 n013 0 0.101641093609284

Also, aus R_sense werden die Werte für R22 und R23 mit 15 (in Worten 
fünfzehn) Nachkommastellen berechnet, woraus man schließen kann, dass 
der Wert von R_sense schon ebenfalls mindestens 15 Nachkommastellen 
aufweisen muss. Doch schauen wir weiter.

Nach Abschluss der TRAN-Analyse werden die MEAS-Kommandos abgearbeitet, 
speziell dieses

.meas x3 param R_sense

wobei die Variable R_sense verwendet wird, bei der bekanntlich ein Wert 
mit mindestens 15 Nachkommastellen vorliegen muss. Aber in der Log-Datei 
findet sich folgende Darstellung

x3: r_sense=0.0508205

Ich meine, woher weiß LTspice, dass ich mit 15 Nachkommastellen ohnehin 
nix am Hut habe? Denn bei dieser Wertausgabe werden von ehemals 15 
Nachkommastellen doch glatt 8 Nachkommastellen unterschlagen, wobei die 
7 verbliebenen eh noch zuviel sind, eine Wertausgabe von 0.051 wäre doch 
mich allemal ausreichend.

von globul (Gast)


Lesenswert?

Flash schrieb:
> Ich meine, woher weiß LTspice, dass ich mit 15 Nachkommastellen ohnehin
> nix am Hut habe?
Ich vermute, LTspice gibt den Wert so aus, wie er bei der Lösung der 
Gleichung - d.h. die Abweichung zwischen zwei Iterationen unterschreitet 
die gesetzten Grenzen - anfällt.

> eine Wertausgabe von 0.051 wäre doch mich allemal ausreichend.
Eigentlich gäbe es dafür die Option measdgt - es funktioniert aber nur, 
wenn man sie größer als den Defaultwert von 6 setzt.
1
    --- Expanded Netlist ---
2
r1 nc_01 0 0.333333333333333 
3
.op
4
.opt measdgt=3 list
5
.end
6
x1: r1=0.333333
7
8
    --- Expanded Netlist ---
9
r1 nc_01 0 0.333333333333333 
10
.op
11
.opt measdgt=8 list
12
.end
13
x1: r1=0.33333333

Bleibt also nur das händische formatieren mit round(*).
1
.opt measdgt=8 List
2
.param r1=1/3
3
.op
4
.meas x1 param round(r1*1k)/1k
5
6
x1: round(r1*1k)/1k=0.333

(*) 
http://ltwiki.org/index.php5?title=Undocumented_LTspice#Format_and_Layout

von Helmut S. (helmuts)


Lesenswert?

> eine Wertausgabe von 0.051 wäre doch mich allemal ausreichend.
Eigentlich gäbe es dafür die Option measdgt - es funktioniert aber nur,
wenn man sie größer als den Defaultwert von 6 setzt.

Normalerweise beschweren sich ja die Leute, daß sie zu wenig Stellen 
hinter dem Komma haben. :-)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Wobei eh die Frage ist, mit welchem Gleitkommaformat LTspice intern 
arbeitet. Wenn es nur die 32Bit-Version ist, dann wären die Mantisse 
23Bit. Das sind also etwas mehr als 6 Stellen im Dezimalsystem. Davon 
abziehen müßte man noch das numerische Rauschen und Sättigungseffekte 
durch z.B. krumme Kennlinien. Also 4 Stellen Genauigkeit würde ich mal 
sagen. Was völlig reicht. Früher gabs Rechenschieber und damit wurden 
Kriege gewonnen oder verloren.

: Bearbeitet durch User
von Flash (Gast)


Lesenswert?

Helmut S. schrieb:
> Normalerweise beschweren sich ja die Leute, daß sie zu wenig Stellen
> hinter dem Komma haben. :-)

Ich beschwer' mich ja auch nicht. Ich find's halt nur lustig - rein 
oberflächlich betrachtet.

Der Einsatz eines errechneten Parameters in der weiteren Simulation 
sollte schließlich mit der höchsten Genauigkeit erfolgen, schlechter 
wird's eh von selbst - soweit ist das Verhalten von LTspice sogar sehr 
löblich.

Im übrigen ist das Verrechnen von gaaanz großen Werten mit gaaanz 
kleinen Werten in der früheren 8-bit-Zeit auf dem PC schon ein großes 
Risiko gewesen, für ganz extreme Genauigkeiten gab's die schwerfällige 
BCD-Arithmetik. Aber bei 64 Bit sollte das heute kein Problem mehr sein.

globul schrieb:
> Ich vermute, LTspice gibt den Wert so aus, wie er bei der Lösung der
> Gleichung - d.h. die Abweichung zwischen zwei Iterationen unterschreitet
> die gesetzten Grenzen - anfällt.

Nee, an der Stelle war keine Iteration im Spiel, zugrunde lag eine 
lineare Gleichung x = y / (a * b). Meine Fragestellung war auch nicht 
wirklich ernst gemeint. LTspice hatte den Wert schon einmal berechnet 
und an zwei verschiedenen Stellen mit unterschiedlicher Anzahl von 
Nachkommastellen ausgegeben - das liegt wohl eher in der Laune des 
Programmierers, als er die Ausgabe unter MEAS codiert hatte.

von Flash (Gast)


Lesenswert?

Hallo.

Das habe ich gerade gefunden:

LTspice verwendet grundsätzlich das Gleitkommaformat mit 11-bit-Exponent 
und 52-bit-Mantisse. Siehe hier:

http://ltwiki.org/index.php5?title=Undocumented_LTspice#Numerical_Accuracy.2FDynamic_Range

von globul (Gast)


Lesenswert?

Abdul K. schrieb:
> Wobei eh die Frage ist, mit welchem Gleitkommaformat LTspice intern
> arbeitet.
[link zu ltwiki entfernt - da war Flash schneller]

Interessant wäre zu wissen, wie das dann mit dem Alternate Solver 
funktioniert. Aus der Hilfe: "Typically the alternate solver will 
simulate at half the speed of the normal solver but with one thousand 
times more internal accuracy."

Gut, der Matrix-Compiler kann einiges optimieren - aber abgesehen von 
ein paar Brosamen in 
http://cds.linear.com/docs/en/lt-journal/LTJournal-V24N4-01-df-SPICEDifferentiation-MikeEngelhardt.pdf
(wurde hier schon mal diskutiert), hab ich noch nichts genaueres dazu 
gefunden.

von Flash (Gast)


Lesenswert?

globul schrieb:
> Gut, der Matrix-Compiler kann einiges optimieren - aber abgesehen von
> ein paar Brosamen in
> 
http://cds.linear.com/docs/en/lt-journal/LTJournal-V24N4-01-df-SPICEDifferentiation-MikeEngelhardt.pdf
> (wurde hier schon mal diskutiert), hab ich noch nichts genaueres dazu
> gefunden.

Nun habe ich gerade mal gelernt, den Namen von LTspice korrekt schreiben 
zu können. Gut. Und dass der olle Newton (wo ist eigentlich der Kollege 
Raphson gebleiben?) bei LTspice mit an Bord ist, konnte ich heute in 
einem Logfile nachlesen. Mit Newton-Iterationen habe ich schon so manche 
kommerzielle Schlacht gewonnen.

Und da es mich bis jetzt außer etwas Zeit letztlich auch kein Geld 
gekostet hat, hatte ich eh nie die Absicht, zu meckern. Nach der Lektüre 
des oben verlinkten Artikels wächst mein Vertrauen in LTspice ungemein. 
Bisher hatte sich das Gefälle so dargestellt: Berkley's Pspice oben und 
LTspice darunter. Diese Ansicht muss ich wohl revidieren. Obwohl, es 
gibt ein paar Mängelpunkte, die sind aber auch Mac-spezifisch und haben 
mit dem eigentlichen Kern von LTspice nichts zu tun. Ich denke die paar 
Probleme werden dann mit der zeit auch noch gelöst werden.

von M. K. (sylaina)


Lesenswert?

Flash schrieb:
> Berkley's Pspice oben und
> LTspice darunter.

Pspice ist aber nicht von Berkley sondern von OrCad (inzwischen gehört 
es zu Cadence…hab schon ewig nicht mehr nach PSpice geschaut). Aus 
Berkeley kommt nur der Unterbau, auf den quasi alle Simulatoren 
aufbauen: Spice 3F5. ;)

von Helmut S. (helmuts)


Lesenswert?

> Interessant wäre zu wissen, wie das dann mit dem Alternate Solver
funktioniert. Aus der Hilfe: "Typically the alternate solver will
simulate at half the speed of the normal solver but with one thousand
times more internal accuracy."

Wie wäre es mit "x86 Extended Precision Format"

https://en.wikipedia.org/wiki/Extended_precision

von globul (Gast)


Lesenswert?

Helmut S. schrieb:
> Wie wäre es mit "x86 Extended Precision Format"
Klingt einleuchtend - ich seh schon, manchmal denke ich zu kompliziert 
;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.