Wie zeichnet man Strom in ngspice?

Ich möchte den Strom und die Leistung in ngspice darstellen. Wenn ich zum Beispiel im Fall von Spannung die Spannung am Knoten 1 darstellen wollte, würde ich verwenden:

plot v(1)

Das Problem ist, wenn ich i(1) versuche, wird der Vektor nicht erkannt. Könnte jemand ein paar Beispiele geben, wie man das macht?

Antworten (6)

Oli hat eine richtige Antwort gegeben, aber das I(element_name) ist eine Erweiterung, die nur den kommerziellen SPICE-Versionen hinzugefügt wurde.

In ngspice (das auf Berkeley Spice 3 basiert) können Sie nur Ströme durch (unabhängige) Spannungsquellen darstellen. Dies sind die einzigen Ströme, die in den Schaltungsgleichungen vorkommen, mit denen SPICE arbeitet.

In einer interaktiven Spice-Sitzung oder aus einem speziellen Block im Skript (siehe auch diese Frage ) können Sie Ausdrücke verwenden, wie (v(1)-v(2))/1kwenn der Strom durch einen 1kΩ-Widerstand zwischen den Knoten 1 und 2 fließt. Für reaktive Elemente (wie einen 1μF-Kondensator) sollte so etwas (v(1) - v(2))/(2*pi*frequency*1u)sein auch Arbeit.

Meine zweite Lösung (mit Ausdrücken) sollte nicht sehr schwierig anzuwenden sein. Sie können im Handbuch sehen, ob ngspice eine Möglichkeit hat, den Wert und vielleicht sogar die Knotennamen einer Komponente zu erhalten. Ich weiß mit Sicherheit, dass es Dummy-Vektoren mit Modellparametern gibt.

Ich habe ngspice nicht verwendet (ich verwende LTSpice, aber soweit ich weiß, basieren so ziemlich alle SPICEs auf der ursprünglichen Berkeley-Syntax und funktionieren ähnlich), aber normalerweise zeichnen Sie den Strom eher durch eine Komponente oder z. B. in die Basis eines Transistors als an einem Knoten nach dem ersten Kirchoffschen Gesetz (die Summe der Ströme, die sich an einem Punkt treffen, ist Null)

BEARBEITEN - Wie jpc betonte, sind die Dinge für ngspice (und wahrscheinlich die meisten anderen nicht kommerziellen / frühen Varianten) etwas anders, da Sie Ströme nur durch eine Spannungsquelle zeichnen können. Man müsste also eine 0-V-Quelle im Zweig des interessierenden Stromkreises hinzufügen und den Strom durch diese grafisch darstellen. Ich habe unten ein Beispiel hinzugefügt.

Wenn Sie also eine einfache Schaltung haben, die aus einem Widerstand (R1) mit einer Spannungsquelle (V1) darüber besteht (ich bin kein Experte für die Netzliste, nehmen Sie also ein grobes Beispiel):

V1 1 0 5

R1 1 0 1000

(1, 0 sind die Knoten, 5 (V) und 1000 (Ohm) sind die jeweiligen Werte)

Sie können den Strom entweder mit I (R1) oder mit I (V1) darstellen, nicht mit I (1). Sie könnten jedoch V(1) für die Spannung darstellen.

NGSPICE-Version (getestet und bestätigt)

V1 1 0 5
R1 1 2 1000 V Dummy 2 0 0

Beachten Sie, dass Vdummy mit dem Widerstand in Reihe geschaltet ist, sodass derselbe Strom durch ihn fließen muss. Um also den Strom für R1 darzustellen, schreiben wir I(Vdummy). Für eine komplexere Schaltung stellen wir nur sicher, dass die gleichen Bedingungen gelten.

Hier ist ein "echtes" Beispiel von LTspice:

NETZLISTE

V1 V+ 0 24 Rser=0
V2 SIG 0 SINE(-1.4563 1m 1000 0 0 0 0) AC 2 Rser=0
V3 V- 0 -24
Q1 N001 N002 N003 0 2N2222
R1 V+ N001 1f
R2 N003 V- 2K7
C2 N004 N003 100µF
R3 N004 0 3K9
R4 N002 0 22K
C1 N002 SIG 100µF

BILD DER SCHALTKREISE

Schaltung Bsp

PLOT-OPTIONEN

(Beachten Sie, dass es kein I(n001), I(n002) usw. gibt)

Plot-Optionen

Wie jpc gerade kommentierte, scheint es, dass Sie mit ngspice nur Ströme durch Spannungsquellen darstellen können. Ich habe gerade ngspice heruntergeladen und bestätigt, dass es möglich ist, i (Vx) zu setzen, aber nicht i (Rx) usw. Ich denke, Sie müssen eine 0-V-Quelle in jedem Zweig Ihrer Schaltung hinzufügen, durch den Sie den Strom darstellen möchten (sagen wir, es heißt Vx) und setze Plot i(Vx).
@OliGlaser: Tatsächlich basieren die meisten kommerziellen SPICE-Forks auf der SPICE2-Codebasis (in Fortran), während ngspice (und andere Open-Source-/Freeware-Versionen) auf der neueren (!) Umschreibung der C-Sprache basieren, die SPICE3 genannt wurde. Ich glaube, die Jury ist immer noch aus, welches besser ist. :)

Sie können Strömungen darstellen, aber Sie müssen wissen, über welche Strömungen Sie wissen möchten, bevor Sie Ihre Simulation ausführen.

zB Wenn Sie eine Diode D1 hätten und den Strom durch sie aufzeichnen wollten, könnten Sie:

.save @d1[id]
.tran <slice> <end>
.plot tran @d1[id]

Weitere Informationen finden Sie auf Seite 519 (Kapitel 31) des ngspice-Handbuchs unter http://ngspice.sourceforge.net/docs/ngspice-manual.pdf

Wenn Gleichspannung über eine einzelne Komponente hinweggefegt wird, können Sie den Abzweigstrom grafisch darstellen. Durch Laden der folgenden Netzliste

.MODEL DI1N4004 D (IS=76.9n RS=42.0m  BV=4 IBV=5.00u CJO=39.8p
+M=0.333 N=1.45 TT=4.32u)

D1 1 0 DI1N4004
Vin 1 0 dc 12 ac 0

zu ngspice und kommandieren

dc vin -10 5 0.001
plot -vin#branch

Sie sollten in der Lage sein, ein Diagramm des Stroms über die Diode d1 zu erhalten.

Seit NGSpice 27 R2017 platzieren Sie diese Codezeile:

.options savecurrents

Speichert die Ströme, die für @R1[i], @D1[id], usw. durchgerufen werden können.

plot @R1[i] vs v(1)

Suchen Sie nach dieser Option im NGSpice-Handbuch .

Fügen Sie für die Stromdarstellung eine Nullspannungsquelle in diesem Zweig hinzu und geben Sie vlabel#branch in das Terminal ein.

Dies fügt nichts hinzu, was die anderen Antworten nicht bereits gesagt haben, und ist zu knapp, um für sich genommen nützlich zu sein.