NGspice: Einfaches Programmieren möglich?

OP #2342903
Lesenswert?
• ▲
▼
Hallo,
ich frage mich ob es möglich ist einfache Programme in Spice zu 
implementieren. Um was gehts? Also, ich möchte einen Regler simulieren, 
der in Abhängigkeit vom Feedback-Wert eine gewissen Duty ausgibt. Ich 
würde gerne NGSpice verwenden.
Gibt es die möglichkeit sowas zu implementieren? Hat jemand ein paar 
Stichwörter/Tutorials für mich?
Grüße
Michael
OP #2342912
Lesenswert?
• ▲
▼
Kurzer nachtrag damit meine Fragestellung etwas klarer wird:
Ein Programm, dass ich schreiben würde sähe soaus
Ausgang=0V für t<4 und Ausgang=5V für 4<t<5, also immer die 
Ausgangswerte spezifizieren, in Abhängigkeit von Feedbackwert. Mal ein 
ganz banales beispiel:
if (feedback<4V) then
Ausgang=0V
else
Ausgang=5V
endif
Im Prinzip ein komparator, das ist jetzt aber nur mal als Beispiel 
gedacht, damit klar wird was ich meine.
#2342950
Lesenswert?
• ▲
▼
Hmm, was Du machen kannst ist folgendes:

Spice nimmt eine Textdatei entgehen, und kann die Ergebnisse als 
Textdatei ausspucken.

1. Schreibe ein Programm, welches die Netzliste ausgibt, die Du 
möchtest. Das ist ja nur Text. Dieses Programm ließt, falls vorhanden, 
die Ausgabedatei der Simulation, und passt die Schaltung (bzw. die 
PWL-Quellen) entsprechend an.

2. Die Ausgabe Deines Programmes schickst du Durch Spice.

3. Die Ausgabe von Spice schickst Du wieder durch Dein Programm. Das 
machst Du so lange, bis sich nichts mehr relevant ändert.

Als Programmiersprache kannst Du jede Sprache verwenden. Ich würde 
Pascal verwenden weil ich das mag, aber im Prinzip ist das egal, mit 
Perl oder AWK oder sonst was geht das genau so.
Moderator #2343971
Lesenswert?
• ▲
▼
Evtl. löst schon eine B-Quelle dein Problem. Damit kann man nichtlineare
Spannungs- und Stromabhängigkeiten definieren. Es gibt auch den von C
bekannten ?:-Operator, mit dem Fallunterscheidungen realisiert werden
können. Mit PWL lassen sich stückweise lineare Funktionen definieren.
Damit kann man zwar nicht alles "programmieren", aber vieles.

Bei LTspice ist die Auswahl an vordefinierten Funktionen für die B-Quel-
len noch größer als in Ngspice. So gibt es u.a. auch Funktionen für In-
tegration und Differentiation, so dass bspw. ein PID-Regler ganz leicht
mit einer einzlenen B-Quelle realisiert werden kann. Bei Ngspice muss
man dafür mit zusätzlichen Kondensatoren, Spannungs- und Stromquellen
arbeiten, aber gehen tut es auch.
OP #2347071
Lesenswert?
• ▲
▼
Mmmh, also es existiert eine Simulation in C mit den ganzen Gleichungen, 
aber hier geht die Wartbarkeit gegen Null. D.h. überlegt man sich ein 
anderes verfahren, heist das, git "new branch" und loslegen. Aber ich 
würde den Code niemanden in die Hand drücken.
Vorteil: Verdammt schnell.
Nachteil: Wenig wartbar, und zu grobes Modell.

Modelica hört sich ja eigentlich gut an - gibt es da ein Tool wie 
LT-Spice, nur dass aus Schaltbildern automatisch Gleichungen aufstellt? 
Wenn ja, Name?

Grüße
Michael
Gast #2366652
Lesenswert?
• ▲
▼
Hallo,

ngspice bietet tatsächlich mehrere Möglichkeiten der Programmierung, 
alle auch im aktuellen Manual (http://ngspice.sourceforge.net/docs.html) 
angesprochen:

Wie Yalu sagt, die B-Quelle (Manual Kap. 5, siehe auch das dortige 
Beispiel).

Wenn man komplexere Modelle braucht (und mehr Einarbeitungsaufwand nicht 
scheut), bietet sich ein Code-Modell der XSPICE-Option an, das ein in C 
programmiertes Modell in ngspice integriert (Manual Kap. 12 für 
mitgelieferte Beispiele, Kap. 24 - 28, insbesondere 27 für eigene 
Modelle). Die im Quellcode vorliegenden Beispiele sind dabei ein guter 
Startpunkt. Code-Modelle werde als so-file (oder dll) während der 
Laufzeit hinzugeladen.

Dann gibt es die ngspice scripting language, ein einfaches 
Programmiersystem, dass die Bearbeitung von Simulationsergebissen in 
einer .control - Sektion der Eingabedatei erlaubt (Manual Kap. 17). 
Simulationsergebnisse, intern als Vektoren gespeichert, lassen sich 
bearbeiten, und als Eingabedaten für weitere Simulationen nutzen.  F. 
Schmidt hat damit einen ganzen Optimierer gemacht (Manual Kap 22, 
Beispiel kann als 
http://ngspice.sourceforge.net/optimizers/ngspice-optimizer.7z 
heruntergeladen werden).

Schließlich kann man ngspice aus anderen Programmen aufrufen und 
kontrollieren. Der ASCO-Optimierer ist hierfür ein Beispiel (Kap. 22, 
Quellcode bei http://ngspice.sourceforge.net/optimizers/asco-dist.7z). 
Schnittstellen sind Ein- und Ausgabedateien auf der Festplatte. Andere 
Beispiele gibt es im Manual (z.B. tclspice. Kap. 19, Phyton Kap. 22.4).

Gruß

Holger
Gast #2367029
Lesenswert?
• ▲
▼
Michael H. schrieb:
> Modelica hört sich ja eigentlich gut an - gibt es da ein Tool wie
> LT-Spice, nur dass aus Schaltbildern automatisch Gleichungen aufstellt?
> Wenn ja, Name?

*) dymola (eher modelica code editier-freundlich)
simulationx (eher klick-freundlich)
scilab/scicos (liegt wenig erfahrung meinerseits vor)

openmodelica (soweit ich weiss kein graphishes interface)


*) würde ich nehmen wenn ich es mir leisten könnte :-/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren