LTSpice-Automatisierung

Ich habe einen batteriebetriebenen Aufwärtswandler und versuche, den maximalen Abfall der Eingangsspannung (Batterie) unter verschiedenen Lastbedingungen mit hoher Stromaufnahme (unterschiedliche Arbeitszyklen / Periodizitäten) zusätzlich zu mehreren Batterietypen (verschiedene Spannungen / Innenwiderstände). Da ich eine so (relativ) große Betriebszeit simuliere, werden die Simulationsdateien ziemlich umfangreich, ganz zu schweigen davon, dass sie eine Weile dauern. Ich möchte LTSpice automatisieren, damit ich Komponentenwerte programmatisch ändern und Simulationen erneut ausführen und Daten erfassen kann (Werte von Dingen wie Spannung oder Strom). Ich weiß das:

  • WAV-Dateien können zur Eingabe/Ausgabe von Daten aus dem Programm verwendet werden
  • Das Programm kann von der Kommandozeile ausgeführt werden

Bisher scheint meine beste Option eine Kombination dieser beiden Optionen zusammen mit meinem eigenen Code / Skript auf eine Weise zu verwenden, die meine Ziele erreicht, aber ich frage mich nur, ob es bereits einen besseren Weg gibt.

Hat jemand LTSpice automatisiert oder weiß, ob eine Art Automatisierungs-API dafür geschrieben wurde (entweder vom Hersteller oder von Drittanbietern)?

Idealerweise hätte ich gerne einen Solver, bei dem ich ihm die gewünschten Parameter gegeben und verschiedene Komponentenwerte ausprobiert habe, bis er die "optimale" Lösung für meine Einschränkungen gefunden hat.

Was hat Ihr Linear FAE gesagt? Ich würde sie zuerst fragen.
Kennen Sie die Befehle .STEP und .PARAM? Ich bin mir nicht sicher, ob es genau das erreichen würde, was Sie wollen, aber ich werde eine Antwort mit ein paar Beispielen posten, wenn Sie interessiert sind.
@OliGlaser - Ich weiß, dass sie existieren, bin mir aber nicht ganz sicher, wie ich sie in dieser Situation verwenden soll. Wenn Sie ein Beispiel haben, wäre das großartig.
@Joel B - okay, ich habe eine Antwort mit ein paar Beispielen hinzugefügt.
Muss es LT Spice sein? Ich glaube, das Herz von SPICE ist ein Befehlszeilentool.
Diese Frage scheint nicht zum Thema zu gehören, da es nicht um elektronisches Design geht.
@LeonHeller auf WELCHEM Planeten ist SPICE kein Teil des Designs?
Sie werden feststellen, dass Monte-Carlo-Optionen perfekt dafür geeignet sind. Sie können verschiedene Parameter schmooen und auch die Variationen anzeigen. LT-Spice kann dies deaktiviert haben, da SPICE dies nativ unterstützt. Beginnen Sie dort
Leider muss es für mich LT-SPICE sein. Vielen Dank für den Monte-Carlo-Vorschlag @placeholder

Antworten (5)

Das mehrmalige Ausführen einer Simulation und das Ändern mehrerer Komponentenwerte ist etwas aufwändiger, als nur einen zu ändern (was nicht so schlimm ist).

Hier ist das Konzept zum Ändern eines Werts:

  • Fügen Sie eine .param-Anweisung mit dem SPICE-Anweisungssymbol ganz rechts hinzu, z. B. für einen Widerstandswert.param X=R
  • Um es zu verwenden, würden Sie {x} in den Widerstandswert eingeben und dann z. B. .step param X 100 500 50den Wert zwischen 100 und 500 in Schritten von 50 erhöhen.

Beispiel:

Schritt Beispiel

Ergebnis:

Graph

Für mehrere Werte war die einzige Möglichkeit, die ich zum Arbeiten gefunden habe, die Verwendung einer Liste von Werten für X und die Verwendung der Tabellenanweisung. Dies lässt sich wahrscheinlich am besten anhand eines Beispiels erklären (das Lesen der Hilfe zu den verwendeten Befehlen wird hier wahrscheinlich hilfreich sein). Beachten Sie jedoch, dass die Tabellenbefehlssyntax in der Form table(index, x1, y1, x2, y2, .... xn, yn) vorliegt, index als Eingabe nimmt und einen interpolierten Wert für x=index basierend auf dem angegebenen x zurückgibt ,y Paare.

In einer meiner Simulationen musste ich 12 Simulationen durchführen, während ich 3 verschiedene Komponentenwerte änderte, hier sind die Befehle:

.step param X list 1 2 3 4 5 6 7 8 9 10 11 12
.param Rin1 = table(X, 1, 1,1p, 2, 1p, 3, 1p, 4, 4478, 5, 4080, 6, 3400, 7, 2200, 8, 1p, 9, 1p, 10, 1p, 11, 1p, 12, 1p)
.param Rin2 = table(X, 1, 4997, 2, 4997, 3, 4997, 4, 499, 5, 897, 6, 1577, 7, 2777,  8, 4997, 9, 4997, 10, 4997, 11, 4997, 12, 4997)
.param Tval = table(X, 1, 56, 2, 56, 3, 27, 4, 1G, 5, 1G, 6, 1G, 7, 1G, 8, 1G, 9, 330, 10, 330, 11, 120, 12, 120)
.param Kval = table(X, 1, 316, 2, 147, 3, 147, 4, 6340, 5, 6340, 6, 6340, 7, 6340, 8, 6340, 9, 6340, 10, 825, 11, 825, 12, 316)

Ergebnis:

Beispiel gewinnen

Hoffentlich kommen Sie auf die Idee, Sie könnten vielleicht ein Skript erstellen, das die erforderlichen SPICE-Befehle erzeugt, wenn Sie Ihre gewünschten Werte eingeben. Oder erstellen Sie einfach eine Vorlage (z. B. habe ich das Obige einfach kopiert und in ein paar verschiedene Simulationen eingefügt und die Werte geändert)

Wenn das obige nicht das tut, was Sie wollen, dann schauen Sie sich vielleicht etwas wie Multisim von NI an (ich denke, es hat einige Batch-Simulationsoptionen, obwohl ich nicht sicher bin, wie nützlich sie sind). Es kann auch hilfreich sein, nach LTSPice zu fragen Forum und schaue, ob jemand einen besseren Weg kennt, Dinge zu tun.

Das ist nicht so sauber, wie ich es gerne hätte, aber für freie Software kann ich nur dankbar sein, dass sie mir einen Knochen zugeworfen haben. Danke für die Demonstration dieser Technik. Das bringt mich definitiv näher an das, was ich suche.
Danke, das hat mir geholfen, meine Simulation herauszufinden. Jetzt muss ich herausfinden, wie ich eine Legende in die Handlung einfügen kann, damit ich sagen kann, welche Simulation welche ist.

Ich denke, es ist tatsächlich möglich, LTSpice über die Befehlszeile auszuführen und eine vorübergehende Simulation auszuführen:

Unter Windows:

cd <wherever LTSpice is installed on your computer>
scad3.exe -Run -b MyCircuit.asc

Unter Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc
Dies ist ein ausgezeichneter Fund! Ich bin jetzt am Brainstorming, wie ich dies für automatisiertes Design verwenden kann.
@JoelB: Ja, dafür benutze ich es auch. Leider gibt es ein paar Mängel: 1) Anders als in der GUI läuft der Solver Single-Threaded, ist also langsamer 2) Du hast keinen "Fortschrittsbericht" wie in der GUI

LTSpice kann im Batch-Modus mit dem -bBefehlszeilenschalter ausgeführt werden.

Aus der LTSpice-Hilfedatei:

-b: Im Stapelmodus ausführen. ZB "scad3.exe -b deck.cir" belässt die Daten in der Datei deck.raw

Wie die .raw-Ausgabe zu lesen und zu interpretieren ist, bleibt dem Leser als Übung überlassen.

Beachten Sie auch unter den Befehlszeilenschaltern:

-ascii: ASCII-.raw-Dateien verwenden. Beeinträchtigt die Programmleistung ernsthaft.

Wie genau führe ich es aber aus? Also im Kommandozeilenmodus. Ich bin normalerweise kein Windows-Benutzer und habe keine Ahnung, wie man das auf einem Windows-Rechner macht.
So bin ich noch nie gefahren. Sie müssen es selbst ausprobieren. Sie können entweder ein Befehlsfenster ('cmd.exe' im Startmenü) öffnen oder es in einer beliebigen Sprache ausführen, die Sie verwenden, um Ihre Tests zu sequenzieren.
Wenn Sie Matlab verwenden, haben sie ein Skript zum Konvertieren von .raw-Dateien mathworks.com/matlabcentral/fileexchange/…

Hast du schon bei " LTSpice Queue Manager " nachgesehen? ( Der Link leitet zu meiner eigenen Website weiter, wo Sie die Software herunterladen können, aber ich bin nicht ihr Autor, der das Programm ursprünglich in einem Forum geteilt hat, das heute geschlossen ist. Das Teilen über meine Website ist eine Möglichkeit, es wiederzubeleben ).

Dieses Tool hat mir in der Vergangenheit sehr geholfen. Sie können viele Simulationsdateien vorbereiten und sie in einer Warteschlange ausführen.

LTSpice-Warteschlangenmanager

Warteschlangen sind keine Automatisierung.
Wenn die Automatisierung, die Sie benötigen, Warteschlangen ist, ist sie es auf jeden Fall! Dies behebt das Problem von OP direkt.
Wenn dies eine Closed-Source-Software ist, die Sie nicht geschrieben haben, würde ich erwarten, dass Benutzer verständlicherweise misstrauisch sind, sie auszuführen.

Wenn es nur LT Spice sein muss und man an der GUI nicht vorbei kommt würde ich das Skriptprogramm AutoIt empfehlen. Ich habe es verwendet, um einige kritische Windows-Anwendungen zu automatisieren, denen active-x-DDE-COM.dll-whatever fehlte. Sie können es so einrichten, dass es auf Dateien wartet, Windows-Schaltflächen, Menüelemente drückt, Programme mit Argumenten aufruft usw.

Schauen Sie sich an:

http://www.autoitscript.com/site/

http://www.autoitscript.com/forum/

Ich würde mich für Winbatch entscheiden, wenn Sie für ein Skriptprogramm bezahlen möchten.