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?
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))/1k
wenn 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.
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
PLOT-OPTIONEN
(Beachten Sie, dass es kein I(n001), I(n002) usw. gibt)
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.
Endolith
i(1)
ist immer 0.