Risposte:
Oli ha dato una risposta corretta ma I (element_name) è un'estensione aggiunta solo alle versioni SPICE commerciali.
In ngspice (che si basa su Berkeley Spice 3) puoi tracciare le correnti solo attraverso fonti di tensione (indipendenti). Queste sono le uniche correnti che compaiono nelle equazioni del circuito da cui funziona SPICE.
In una sessione Spice interattiva o da un blocco speciale nello script (vedi anche questa domanda ) puoi usare espressioni come (v(1)-v(2))/1k
quando la corrente è attraverso un resistore da 1kΩ tra i nodi 1 e 2. Per gli elementi reattivi (come un condensatore da 1μF) qualcosa come (v(1) - v(2))/(2*pi*frequency*1u)
dovrebbe funziona anche.
Non ho usato ngspice (io uso LTSpice, ma da quello che capisco praticamente tutti gli SPICE si basano sulla sintassi originale di Berkeley e funzionano in modo simile), ma di solito si traccia la corrente attraverso un componente o nella base di un transistor, ad esempio che in un nodo, secondo la prima legge di Kirchoff (la somma delle correnti che si incontrano in un punto è zero)
EDIT - come sottolineato da jpc, per ngspice (e probabilmente la maggior parte delle altre varianti non commerciali / prime) le cose sono leggermente diverse, poiché puoi tracciare le correnti solo attraverso una sorgente di tensione. Quindi si dovrebbe aggiungere una sorgente 0V nella parte del circuito di interesse e tracciare la corrente attraverso questo. Ho aggiunto un esempio di seguito.
Quindi se hai un semplice circuito costituito da un resistore (R1) con una sorgente di tensione (V1) attraverso di esso (non sono un esperto della netlist, quindi prendi un esempio approssimativo):
V1 1 0 5
R1 1 0 1000
(1, 0 sono i nodi, 5 (V) e 1000 (Ohm) sono i rispettivi valori)
Puoi tracciare la corrente con I (R1) o I (V1), non I (1). È possibile tuttavia tracciare V (1) per la tensione.
Versione NGSPICE (testata e confermata)
V1 1 0 5
R1 1 2 1000 Vdummy 2 0 0
Si noti che Vdummy è in serie con il resistore, quindi la stessa corrente deve fluire attraverso di esso. Quindi per tracciare la corrente per R1 scriviamo I (Vdummy). Per un circuito più complesso ci assicuriamo solo che si applichino le stesse condizioni.
Ecco un esempio "reale" di 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
FOTO DEL CIRCUITO
OPZIONI DI TRAMA
(Notare che non c'è I (n001), I (n002), ecc.)
È possibile tracciare le correnti, ma è necessario sapere quali correnti si desidera conoscere prima di eseguire la simulazione.
ad esempio, se avessi un diodo D1 e volessi tracciare la corrente attraverso di esso, potresti:
.save @d1[id]
.tran <slice> <end>
.plot tran @d1[id]
Maggiori informazioni sono a pagina 519 (capitolo 31) del manuale di ngspice all'indirizzo http://ngspice.sourceforge.net/docs/ngspice-manual.pdf
In caso di scambio di tensione CC su un singolo componente, è possibile tracciare la corrente di ramo. Caricando la seguente netlist
.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
a ngspice e al comando
dc vin -10 5 0.001
plot -vin#branch
dovresti essere in grado di ottenere un diagramma di trama della corrente attraverso il diodo d1.
per la stampa corrente aggiungere la sorgente di tensione zero in quel ramo e digitare il ramo vlabel # nel terminale.
Da NGSpice 27 R2017, inserendo questa riga di codice:
.options savecurrents
Salva le correnti, che possono essere chiamate tramite per @R1[i]
, @D1[id]
ecc
plot @R1[i] vs v(1)
Cerca questa opzione nel Manuale di NGSpice .
i(1)
è sempre 0.