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
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.
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.
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?
Die Frage ist es, ob das so viel einfacher ist. Du kannst natürlich keinfach Spice patchen. Der Quellcode ist ja verfügbar.
Update: Ich habe gerade nochwas recherchiert: eiSpice scheint solche Models zu erlauben. Muss mich noch einlesen.
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.
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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.