LTSpice Automation

15

Ich habe einen batteriebetriebenen Hochsetzsteller und versuche, den maximalen Spannungsabfall der Eingangsspannung (Batterie) unter verschiedenen Lastbedingungen mit hohem Stromverbrauch (verschiedene Arbeitszyklen / Periodizitäten) zu messen, 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 programmgesteuert ändern und Simulationen und Daten (Werte von Dingen wie Spannung oder Strom) erneut ausführen kann. Ich weiß das:

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

Bisher scheint meine beste Option eine Kombination dieser beiden Optionen zusammen mit meinem eigenen Code / Skript zu verwenden, um meine Ziele zu erreichen, aber ich frage mich nur, ob es da draußen schon einen besseren Weg gibt.

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

Im Idealfall hätte ich gerne einen Löser, so dass ich ihm die gewünschten Parameter gab und er verschiedene Komponentenwerte ausprobierte, bis er die "optimale" Lösung für meine Einschränkungen fand.

Joel B
quelle
Was hat Ihre lineare FE gesagt? Ich würde sie zuerst fragen.
Brian Carlton
1
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.
Oli Glaser
1
Diese Frage scheint nicht zum Thema zu gehören, da es sich nicht um elektronisches Design handelt.
Leon Heller
12
@LeonHeller auf WELCHEM Planeten gehört SPICE nicht zum Design?
Platzhalter
1
Sie werden feststellen, dass Monte Carlo-Optionen perfekt dafür geeignet sind. Sie können verschiedene Parameter schmoo und es können auch die Variationen angezeigt werden. LT-Spice KANN dies deaktiviert haben, da SPICE dies nativ unterstützt. Beginnen Sie dort
Platzhalter

Antworten:

15

Eine Simulation mehrmals auszuführen und mehrere Komponentenwerte zu ändern, ist ein bisschen komplizierter als nur eine zu ändern (was nicht so schlimm ist).

Hier ist das Konzept zum Ändern eines Wertes:

  • Fügen Sie mit dem SPICE-Direktivensymbol ganz rechts eine .param-Anweisung 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 schrittweise eingeben .

Beispiel:

Schritt Beispiel

Ergebnis:

Graph

Bei mehreren Werten war die einzige Möglichkeit, die ich gefunden habe, die Verwendung einer Werteliste für X und die Verwendung der table-Anweisung. Dies wird wahrscheinlich am besten anhand eines Beispiels erklärt (das Lesen der Hilfe zu den verwendeten Befehlen wird wahrscheinlich hier hilfreich sein). Beachten Sie jedoch, dass die Tabellenbefehlssyntax in der Formtabelle (index, x1, y1, x2, y2, .... xn, yn) vorliegt, index als Eingabe verwendet und einen interpolierten Wert für x = index basierend auf dem bereitgestellten x zurückgibt y Paare.

In einer meiner Simulationen musste ich 12 Simulationen durchführen und dabei 3 verschiedene Komponentenwerte ändern. 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 haben Sie die Idee, dass Sie vielleicht ein Skript erstellen könnten, das die erforderlichen SPICE-Befehle erzeugt, wenn Sie die gewünschten Werte eingeben. Oder erstellen Sie einfach eine Vorlage (z. B. habe ich die obigen Informationen kopiert und in verschiedene Simulationen eingefügt und die Werte geändert).

Wenn das oben Genannte nicht das macht, was Sie wollen, dann schauen Sie sich vielleicht etwas wie NIs Multisim an (ich denke, es hat einige Batch-Simulationsoptionen, obwohl ich nicht sicher bin, wie nützlich sie sind). Es kann auch hilfreich sein, nach dem LTSPice zu fragen Forum und sehen, ob jemand eine bessere Möglichkeit kennt, Dinge zu tun.

Oli Glaser
quelle
3
Dies 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 geworfen haben. Vielen Dank, dass Sie diese Technik demonstriert haben. Dies wird mich definitiv näher an das bringen, wonach ich suche.
Joel B
1
Vielen Dank, das hat mir geholfen, meine Simulation herauszufinden. Jetzt muss ich herausfinden, wie ich eine Legende auf den Plot setzen kann, damit ich erkennen kann, welche Simulation welche ist.
8

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

Auf windoze:

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
blondiepassesby
quelle
1
Dies ist ein ausgezeichneter Fund! Ich überlege mir jetzt, wie ich das für das automatisierte Design nutzen kann.
Joel B
1
@ JoelB: ja, dafür benutze ich es auch. Es gibt leider einige Mängel: 1) Anders als in der GUI, der Solver läuft Single-Thread, so dass es langsamer ist 2) Sie haben keinen „Fortschrittsbericht“ wie in der GUI
blondiepassesby
3

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

Aus der LTSpice-Hilfedatei:

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

Das Lesen und Interpretieren der .raw-Ausgabe ist eine Übung für den Leser.

Beachten Sie auch unter den Befehlszeilenoptionen:

-ascii: Verwenden Sie ASCII-.raw-Dateien. Verschlechtert die Programmleistung erheblich.

Das Photon
quelle
Wie genau führe ich es aber aus? Im Kommandozeilenmodus ist das. Ich bin normalerweise kein Windows-Benutzer und habe keine Ahnung, wie das auf einem Windows-Computer gemacht werden soll.
Tropical_Peach
1
Ich habe es noch nie so gemacht. Sie müssen es selbst ausprobieren. Sie können entweder ein Befehlsfenster ('cmd.exe' im Startmenü) öffnen oder es in der Sprache ausführen, in der Sie Ihre Tests durchführen.
Das Photon
Wenn Sie matlab verwenden, verfügen sie über ein Skript zum Konvertieren von .raw-Dateien. Mathworks.com/matlabcentral/fileexchange/…
Voltage Spike
3

Haben Sie schon bei " LTSpice Queue Manager " nachgesehen ? ( Der Link leitet zu meiner eigenen Website weiter, auf der Sie die Software herunterladen können. Ich bin jedoch nicht der Autor, der das Programm ursprünglich in einem heute geschlossenen Forum geteilt hat. Durch das Teilen über meine Website kann es wiederbelebt werden. )

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

LTSpice-Warteschlangenmanager

JustinMassiot
quelle
Queuing ist keine Automatisierung.
Harry Svensson
1
Wenn sich die gewünschte Automatisierung in der Warteschlange befindet, ist dies zweifellos der Fall! Hiermit wird das Problem von OP direkt behoben.
Daniel
1
Wenn es sich um Closed-Source-Software handelt, die Sie nicht geschrieben haben, würde ich davon ausgehen, dass Benutzer verständlicherweise misstrauisch sind, wenn sie ausgeführt werden.
Dave Tweed
1

Wenn es nur LT Spice sein muss und Sie nicht über die GUI kommen, würde ich das Skriptprogramm AutoIt empfehlen. Ich habe es verwendet, um einige wichtige Windows-Anwendungen zu automatisieren, denen die Datei active-x-DDE-COM.dll-whatever fehlte. Sie können es so einstellen, dass es auf Dateien wartet, Windows-Schaltflächen drückt, Menüs aufruft, 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.

Dejvid_no1
quelle