Bagaimana cara plot saat ini di ngspice?

11

Saya ingin merencanakan arus dan daya di ngspice. Dalam kasus tegangan, misalnya, jika saya ingin merencanakan tegangan pada simpul 1 saya akan menggunakan:

plot v(1)

Masalahnya adalah, ketika saya mencoba i (1), vektor tidak dikenali. Bisakah seseorang memberikan beberapa contoh tentang bagaimana melakukan ini?

sj755
sumber
1
i(1)selalu 0.
endolit

Jawaban:

8

Oli memberikan jawaban yang benar tetapi I (element_name) adalah ekstensi yang ditambahkan hanya ke versi SPICE komersial.

Dalam ngspice (yang didasarkan pada Berkeley Spice 3), Anda hanya dapat memplot arus melalui sumber tegangan (independen). Ini adalah satu-satunya arus yang muncul dalam persamaan sirkuit tempat SPICE bekerja.

Dalam sesi Spice interaktif atau dari blok khusus dalam skrip (lihat juga pertanyaan ini ) Anda dapat menggunakan ekspresi seperti (v(1)-v(2))/1kketika arus melalui resistor 1kΩ antara node 1 dan 2. Untuk elemen reaktif (seperti kapasitor 1μF) sesuatu seperti (v(1) - v(2))/(2*pi*frequency*1u)harus juga bekerja.

jpc
sumber
Solusi kedua saya (dengan ekspresi) seharusnya tidak terlalu sulit untuk diterapkan. Anda dapat melihat di manual jika ngspice memiliki beberapa cara untuk mendapatkan nilai dan bahkan mungkin nama simpul suatu komponen. Saya tahu pasti bahwa ada vektor dummy dengan parameter model.
jpc
6

Saya belum pernah menggunakan ngspice (saya menggunakan LTSpice, tetapi dari apa yang saya mengerti hampir semua SPICE didasarkan pada sintaks Berkeley asli, dan bekerja dengan cara yang sama), tetapi biasanya Anda memplot arus melalui komponen atau ke dalam mis. Basis transistor, lebih tepatnya daripada pada simpul, menurut hukum pertama Kirchoff (jumlah arus yang bertemu pada suatu titik adalah nol)

EDIT - seperti yang ditunjukkan jpc, untuk ngspice (dan mungkin sebagian besar varian non-komersial / awal) hal-hal sedikit berbeda, karena Anda hanya dapat merencanakan arus melalui sumber tegangan. Jadi orang harus menambahkan sumber 0V di kaki rangkaian bunga, dan plot arus melalui ini. Saya telah menambahkan contoh di bawah ini.

Jadi jika Anda memiliki rangkaian sederhana yang terdiri dari resistor (R1) dengan sumber tegangan (V1) di atasnya (saya bukan ahli di netlist jadi ambil sebagai contoh kasar):

V1 1 0 5

R1 1 0 1000

(1, 0 adalah node, 5 (V) dan 1000 (Ohm) adalah nilai masing-masing)

Anda bisa merencanakan arus dengan I (R1), atau I (V1), bukan I (1). Namun Anda dapat merencanakan V (1) untuk tegangan.

Versi NGSPICE (diuji dan dikonfirmasi)

V1 1 0 5
R1 1 2 1000 Vdummy 2 0 0

Perhatikan bahwa Vdummy berseri dengan resistor, sehingga arus yang sama harus mengalir melaluinya. Jadi untuk plot saat ini untuk R1 kita menulis I (Vdummy). Untuk sirkuit yang lebih kompleks, kami hanya memastikan bahwa kondisi yang sama berlaku.

Berikut adalah contoh "nyata" dari 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

GAMBAR DARI RANGKAIAN

Sirkuit Kel

PILIHAN PLOT

(Perhatikan bahwa tidak ada I (n001), I (n002), dll)

Opsi Plot

Oli Glaser
sumber
1
Seperti jpc baru saja berkomentar, tampaknya dengan ngspice Anda hanya dapat merencanakan arus melalui sumber tegangan. Saya baru saja mengunduh ngspice dan mengkonfirmasi ini, adalah mungkin untuk menempatkan i (Vx), tetapi bukan i (Rx), dll. Jadi saya kira Anda perlu menambahkan sumber 0V di kaki apa pun dari rangkaian yang ingin Anda plot arus melalui (katakan itu disebut Vx) dan letakkan plot i (Vx).
Oli Glaser
@OliGlaser: Sebenarnya sebagian besar forklift SPICE komersial didasarkan pada basis kode SPICE2 (di Fortran) sementara ngspice (dan versi open source / freeware lainnya) didasarkan pada penulisan ulang bahasa C yang lebih baru (!) Yang disebut SPICE3. Saya percaya juri masih tahu mana yang lebih baik. :)
jpc
4

Anda dapat memplot arus, tetapi Anda perlu tahu arus apa yang ingin Anda ketahui sebelum menjalankan simulasi.

mis. Jika Anda memiliki dioda D1 dan Anda ingin memplot arus yang melaluinya, Anda dapat:

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

Informasi lebih lanjut ada di halaman 519 (Bab 31) dari manual ngspice di http://ngspice.sourceforge.net/docs/ngspice-manual.pdf

Nigel Williams
sumber
3

Dalam hal menyapu tegangan DC di satu komponen, Anda dapat merencanakan arus cabang. Dengan memuat netlist berikut

.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

untuk ngspice dan memerintah

dc vin -10 5 0.001
plot -vin#branch

Anda harus dapat memperoleh diagram alur arus di dioda d1.

gmph
sumber
2

untuk plot saat ini tambahkan sumber tegangan nol di cabang itu dan ketik cabang # vlabel di terminal.

Prashant
sumber
3
Ini tidak menambahkan apa pun yang jawaban lainnya belum katakan, dan terlalu singkat untuk berguna sendiri.
Dave Tweed
2

Sejak NGSpice 27 R2017, menempatkan baris kode ini:

.options savecurrents

Menyimpan arus, yang bisa disebut melalui untuk @R1[i], @D1[id], dll

plot @R1[i] vs v(1)

Cari opsi ini di Manual NGSpice .

Brethlosze
sumber