Odpowiedzi:
Oli podał poprawną odpowiedź, ale I (nazwa_elementu) jest rozszerzeniem dodanym tylko do komercyjnych wersji SPICE.
W ngspice (opartym na Berkeley Spice 3) można wykreślać prądy tylko przez (niezależne) źródła napięcia. Są to jedyne prądy, które pojawiają się w równaniach obwodu, z których działa SPICE.
W interaktywnej sesji Spice lub ze specjalnego bloku w skrypcie (patrz także to pytanie ) możesz użyć wyrażeń, takich jak (v(1)-v(2))/1k
gdy prąd przepływa przez rezystor 1kΩ między węzłami 1 i 2. W przypadku elementów reaktywnych (takich jak kondensator 1 μF) coś takiego (v(1) - v(2))/(2*pi*frequency*1u)
powinno być też działa.
Nie używałem ngspice (używam LTSpice, ale z tego, co rozumiem, prawie wszystkie SPICE są oparte na oryginalnej składni Berkeleya i działają podobnie), ale zwykle wykreślasz prąd przez komponent lub np. Podstawę tranzystora, raczej niż w węźle, zgodnie z pierwszym prawem Kirchoffa (suma prądów spotykających się w punkcie wynosi zero)
EDYCJA - jak wskazał jpc, dla ngspice (i prawdopodobnie większości innych niekomercyjnych / wczesnych wariantów) rzeczy są nieco inne, ponieważ można wykreślić prądy tylko przez źródło napięcia. Trzeba więc dodać źródło 0V w odnodze interesującego obwodu i przez to wykreślić prąd. Poniżej dodałem przykład.
Więc jeśli masz prosty obwód składający się z rezystora (R1) ze źródłem napięcia (V1) na nim (nie jestem ekspertem na liście sieci, weź jako przykład):
V1 1 0 5
R1 1 0 1000
(1, 0 to węzły, 5 (V) i 1000 (Ohm) to odpowiednie wartości)
Możesz albo narysować prąd za pomocą I (R1), albo I (V1), a nie I (1). Można jednak wykreślić napięcie V (1).
Wersja NGSPICE (przetestowana i potwierdzona)
V1 1 0 5
R1 1 2 1000 Vdummy 2 0 0
Zauważ, że Vdummy jest w szeregu z rezystorem, więc ten sam prąd musi przez niego przepływać. Aby wykreślić prąd dla R1, piszemy I (Vdummy). W przypadku bardziej złożonego obwodu upewniamy się, że obowiązują te same warunki.
Oto „prawdziwy” przykład LTspice:
NETLIST
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
OBRAZ OBWODU
OPCJE DZIAŁANIA
(Uwaga: nie ma I (n001), I (n002) itp.)
Możesz wykreślić prądy, ale przed uruchomieniem symulacji musisz wiedzieć, jakie prądy chcesz poznać.
np. jeśli masz diodę D1 i chcesz narysować przez nią prąd, możesz:
.save @d1[id]
.tran <slice> <end>
.plot tran @d1[id]
Więcej informacji znajduje się na stronie 519 (rozdział 31) podręcznika ngspice pod adresem http://ngspice.sourceforge.net/docs/ngspice-manual.pdf
W przypadku zamiany napięcia stałego na jeden element można wykreślić prąd rozgałęzienia. Ładując następującą listę sieci
.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
do przyprawy i dowodzenia
dc vin -10 5 0.001
plot -vin#branch
powinieneś być w stanie uzyskać wykres prądu na diodzie d1.
do wykresu prądu dodaj źródło napięcia zerowego w tej gałęzi i wpisz gałąź vlabel # w terminalu.
Od NGSpice 27 R2017 umieszczenie tego wiersza kodu:
.options savecurrents
Zapisuje prądy, które mogą być wywoływane przez o @R1[i]
, @D1[id]
itp
plot @R1[i] vs v(1)
Poszukaj tej opcji w Podręczniku NGSpice .
i(1)
wynosi zawsze 0.