Forum: PC-Programmierung NGspice: Einfaches Programmieren möglich?


von Michael H. (overthere)


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

von Michael H. (overthere)


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.

von Christian B. (casandro)


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.

von Michael H. (overthere)


Lesenswert?

Mmh, diese Lösung ist nicht praktikabel, da es zuviele Änderungen sind.

Gibt es ein Programm, wie Spice, das z.B. *.so (Shared Objects) oder 
anderes implementieren kann?

von Christian B. (casandro)


Lesenswert?

Die Frage ist es, ob das so viel einfacher ist. Du kannst natürlich 
keinfach Spice patchen. Der Quellcode ist ja verfügbar.

von Michael H. (overthere)


Lesenswert?

Update: Ich habe gerade nochwas recherchiert: eiSpice scheint solche 
Models zu erlauben. Muss mich noch einlesen.

von Helmut S. (helmuts)


Lesenswert?

Für Matlab/Simulink nach PPSICE gibt es wohl so ein Interface.
Das wird wohl für den Hausgebrauch zu teuer sein, aber für ein 
Ausbildungsinstitut ist es vielleicht doch erschwinglich.

von Yalu X. (yalu) (Moderator)


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.

von Daniel (root) (Gast)


Lesenswert?


von Johnny B. (johnnyb)


Lesenswert?

Wieso immer so kompliziert...
Nim doch einfach Visual Studio .NET, Delphi oder Qt um das rasch zu 
programmieren. Datein einlesen/ausgeben, grafische Darstellungen etc. 
sind sehr schnell gemacht damit.

von Michael H. (overthere)


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

von Holger Vogt (Gast)


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

von Daniel (Gast)


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 :-/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.