Як побудувати струм в ngspice?


11

Я хочу викласти струм і потужність в ngspice. Наприклад, у випадку напруги, якщо я хотів побудувати графік напруги у вузлі 1, я би використав:

plot v(1)

Проблема полягає в тому, що коли я намагаюся i (1), вектор не розпізнається. Чи може хтось надати кілька прикладів, як це зробити?


Відповіді:


8

Олі дав правильну відповідь, але I (element_name) є розширенням, доданим лише до комерційних версій SPICE.

У ngspice (який заснований на Berkeley Spice 3) ви можете будувати струми тільки через (незалежні) джерела напруги. Це єдині струми, які з'являються в рівняннях схеми, з яких працює SPICE.

В інтерактивному сеансі Spice або зі спеціального блоку в сценарії (див. Також це питання ) ви можете використовувати вирази, наприклад, (v(1)-v(2))/1kколи струм проходить через резистор 1kΩ між вузлами 1 і 2. Для реактивних елементів (наприклад, конденсатор 1µF) щось подібне (v(1) - v(2))/(2*pi*frequency*1u)повинно також працюють.


Моє друге рішення (з виразами) не має бути дуже складним у застосуванні. Ви можете побачити в посібнику, якщо ngspice має якийсь спосіб отримати значення і, можливо, навіть імена вузлів компонента. Я точно знаю, що існують фіктивні вектори з модельними параметрами.
jpc

6

Я не використовував ngspice (я використовую LTSpice, але з того, що я дуже розумію, всі СПІСИ засновані на оригінальному синтаксисі Берклі, і працюють аналогічно), але зазвичай ви плануєте струм через компонент або, наприклад, на базі транзистора, а не ніж у вузлі, згідно з першим законом Кірхофа (сума струмів, що зустрічаються в точці дорівнює нулю)

EDIT - як вказував jpc, для ngspice (і, мабуть, більшості інших комерційних / ранніх варіантів) речі дещо відрізняються, оскільки ви можете побудувати струми лише через джерело напруги. Таким чином, потрібно було б додати джерело 0В в нозі схеми, що цікавить, і побудувати струм через це. Я додав приклад нижче.

Отже, якщо у вас є проста схема, що складається з резистора (R1) з джерелом напруги (V1) через нього (я не є експертом у мережі, тому візьміть як приблизний приклад):

V1 1 0 5

R1 1 0 1000

(1, 0 - це вузли, 5 (V) і 1000 (Ом) - відповідні значення)

Ви можете або побудувати графік струму з I (R1), або I (V1), а не I (1). Однак ви можете побудувати графік V (1) для напруги.

Версія NGSPICE (протестована та підтверджена)

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

Зверніть увагу, що Vdummy знаходиться в серії з резистором, тому через нього повинен протікати той же струм. Отже, для побудови струму для R1 пишемо I (Vdummy). Для більш складної схеми ми просто впевнені, що застосовуються ті самі умови.

Ось "справжній" приклад від LTspice:

НЕТЛІСТ

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

КАРТИНА СТРАНИЦІ

Вихідна схема

ВАРІАНТИ СТОЛІ

(Зверніть увагу, що немає I (n001), I (n002) тощо)

Параметри сюжету


1
Як тільки прокоментував jpc, з'являється, що з ngspice ви можете побудувати струми лише через джерела напруги. Я тільки що завантажив ngspice і підтвердив це, можна поставити i (Vx), але не я (Rx) і т. Д. Тож я думаю, вам потрібно додати джерело 0В у будь-яку частину схеми, яку ви хочете побудувати через (скажімо, це називається Vx) і поставити сюжет i (Vx).
Олі Глазер

@OliGlaser: Насправді більшість комерційних вилок SPICE базуються на кодовій базі SPICE2 (у Fortran), тоді як ngspice (та інші версії з відкритим кодом / безкоштовними версіями) базуються на більш новій (!) Переписаній мові C, яку називали SPICE3. Я вважаю, що присяжне все ще вирішує, на кого краще. :)
jpc

4

Ви можете побудувати графіки струмів, але вам потрібно знати, про які струми ви хочете знати, перш ніж запускати моделювання.

Наприклад, якщо у вас був діод D1 і ви хотіли побудувати струм через нього, ви можете:

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

Додаткову інформацію можна знайти на сторінці 519 (глава 31) посібника з ngspice за адресою http://ngspice.sourceforge.net/docs/ngspice-manual.pdf


3

У разі швидкості напруги постійного струму через один компонент, ви можете побудувати струм гілки. Завантаживши наступний список нетто

.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

ngspice та командування

dc vin -10 5 0.001
plot -vin#branch

ви повинні мати змогу отримати схему струму через діод d1.


2

для поточного побудови графіку додайте нульове джерело напруги в цій гілці і введіть власну # гілку в терміналі.


3
Це нічого не додає, що інші відповіді вже не сказали, і є надто лаконічним, щоб бути корисним самостійно.
Дейв Твід

2

Починаючи з NGSpice 27 R2017, розміщуючи цей рядок коду:

.options savecurrents

Зберігає струми, які можуть бути викликані через для @R1[i], @D1[id]і т.д.

plot @R1[i] vs v(1)

Шукайте цю опцію в Посібнику з NGSpice .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.