Làm thế nào để âm mưu hiện tại trong ngspice?


11

Tôi muốn vẽ ra hiện tại và sức mạnh trong ngspice. Trong trường hợp điện áp, ví dụ, nếu tôi muốn vẽ điện áp ở nút 1 tôi sẽ sử dụng:

plot v(1)

Vấn đề là, khi tôi thử i (1), vectơ không được nhận ra. Ai đó có thể cung cấp một vài ví dụ về cách làm điều này?


Câu trả lời:


8

Oli đã đưa ra một câu trả lời đúng nhưng I (Element_name) là một phần mở rộng chỉ được thêm vào các phiên bản SPICE thương mại.

Trong ngspice (dựa trên Berkeley Spice 3), bạn chỉ có thể vẽ dòng điện qua các nguồn điện áp (độc lập). Đây là những dòng điện duy nhất xuất hiện trong các phương trình mạch SPICE hoạt động từ đó.

Trong một phiên Spice tương tác hoặc từ một khối đặc biệt trong kịch bản (xem thêm câu hỏi này ), bạn có thể sử dụng biểu thức như (v(1)-v(2))/1kkhi hiện nay là thông qua một điện trở 1kΩ giữa các nút 1 và 2. Đối với các yếu tố phản ứng (như một tụ 1μF) cái gì đó như (v(1) - v(2))/(2*pi*frequency*1u)nên cũng làm việc.


Giải pháp thứ hai của tôi (có biểu thức) không nên rất khó áp dụng. Bạn có thể thấy trong hướng dẫn nếu ngspice có một số cách để lấy giá trị và thậm chí có thể là tên nút của một thành phần. Tôi biết chắc chắn rằng có các vectơ giả với các tham số mô hình.
jpc

6

Tôi chưa sử dụng ngspice (tôi sử dụng LTSpice, nhưng từ những gì tôi hiểu khá rõ, tất cả các SPICE đều dựa trên cú pháp Berkeley gốc và hoạt động tương tự), nhưng thông thường bạn vẽ dòng điện qua một thành phần hoặc ví dụ như cơ sở của bóng bán dẫn, thay vì so với tại một nút, theo luật đầu tiên của Kirchoff (tổng dòng điện gặp nhau tại một điểm bằng không)

EDIT - như jpc đã chỉ ra, đối với ngspice (và có lẽ hầu hết các biến thể phi thương mại / đầu tiên khác) hơi khác nhau, vì bạn chỉ có thể vẽ dòng điện qua nguồn điện áp. Vì vậy, người ta sẽ phải thêm một nguồn 0V trong phần mạch quan tâm và vẽ dòng điện qua đây. Tôi đã thêm một ví dụ dưới đây.

Vì vậy, nếu bạn có một mạch đơn giản bao gồm một điện trở (R1) với nguồn điện áp (V1) trên nó (tôi không phải là một chuyên gia trong danh sách mạng, vì vậy hãy lấy ví dụ thô):

V1 1 0 5

1 0 1000

(1, 0 là các nút, 5 (V) và 1000 (Ohms) là các giá trị tương ứng)

Bạn có thể vẽ dòng điện với I (R1) hoặc I (V1), không phải I (1). Tuy nhiên, bạn có thể vẽ V (1) cho điện áp.

Phiên bản NGSPICE (đã được kiểm tra và xác nhận)

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

Lưu ý rằng Vdummy nối tiếp với điện trở, vì vậy cùng một dòng điện phải chạy qua nó. Vì vậy, để vẽ sơ đồ hiện tại cho R1, chúng ta viết I (Vdummy). Đối với một mạch phức tạp hơn, chúng tôi chỉ cần đảm bảo rằng các điều kiện tương tự được áp dụng.

Đây là một ví dụ "thực" từ LTspice:

ĐƯỜNG DÂY

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

HÌNH ẢNH CIRCUIT

Mạch cũ

LỰA CHỌN

(Lưu ý rằng không có I (n001), I (n002), v.v.)

Tùy chọn lô


1
Như jpc vừa nhận xét, nó xuất hiện với ngspice, bạn chỉ có thể vẽ dòng điện qua các nguồn điện áp. Tôi vừa tải xuống ngspice và xác nhận điều này, có thể đặt i (Vx), nhưng không phải i (Rx), v.v. Vì vậy, tôi đoán bạn cần thêm nguồn 0V vào bất kỳ nhánh nào trong mạch của bạn mà bạn muốn vẽ dòng điện qua (nói nó được gọi là Vx) và đặt cốt truyện i (Vx).
Oli Glaser

@OliGlaser: Trên thực tế, hầu hết các nhánh SPICE thương mại đều dựa trên cơ sở mã SPICE2 (trong Fortran) trong khi ngspice (và các phiên bản mã nguồn mở / phần mềm miễn phí khác) dựa trên cách viết lại ngôn ngữ C mới hơn (!) Được gọi là SPICE3. Tôi tin rằng bồi thẩm đoàn vẫn chưa biết ai tốt hơn. :)
jpc

4

Bạn có thể vẽ các dòng điện, nhưng bạn cần biết dòng điện nào bạn muốn biết trước khi chạy mô phỏng.

ví dụ: Nếu bạn có một diode D1 và bạn muốn vẽ dòng điện qua nó, bạn có thể:

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

Thông tin chi tiết có ở trang 519 (Chương 31) của hướng dẫn sử dụng ngspice tại http://ngspice.sourceforge.net/docs/ngspice-manual.pdf


3

Trong trường hợp quét điện áp DC trên một thành phần, bạn có thể vẽ dòng điện nhánh. Bằng cách tải các netlist sau

.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 và chỉ huy

dc vin -10 5 0.001
plot -vin#branch

bạn sẽ có thể có được một sơ đồ dòng điện trên diode d1.


2

đối với âm mưu hiện tại, thêm nguồn điện áp bằng 0 trong nhánh đó và gõ nhánh vlabel # trong thiết bị đầu cuối.


3
Điều này không thêm gì mà các câu trả lời khác chưa nói, và quá hữu ích cho chính nó.
Dave Tweed

2

Kể từ NGSpice 27 R2017, đặt dòng mã này:

.options savecurrents

Tiết kiệm các dòng, có thể được gọi thông qua cho @R1[i], @D1[id]vv

plot @R1[i] vs v(1)

Tìm kiếm tùy chọn này trong Hướng dẫn NGSpice .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.