Ändern von Parameterwerten aus einer Wertelistendatei in SPICE

In meiner Schaltung gibt es einen Stromgenerator. Dieser Generator generiert Werte in Abhängigkeit von einem Parameter, den wir N genannt haben. Aber ich möchte Parameter als Variable verwenden. Wenn sich die Werte linear ändern, verwende ich die .step-Funktion. Aber meine Werte sind gaußverteilt und 10k unterschiedlicher Wert. Somit ist die .step-Funktion für mich nicht geeignet.

Meine Frage ist, könnte ich den N-Parameterwert aus einer .txt-Datei kontinuierlich als .step-Funktion ändern?

Jetzt verwende ich LTSpice. Sagen Sie mir, ob Sie eine nützliche SPICE-Anwendung kennen. Ich weiß, dass die Funktion PWL() die aktuellen Generatorwerte mit einer Datei ändert. Aber es gibt eine mathematische Formel in I2() und N-Parameter, die darin verwendet werden.

Möchten Sie Zufallsvariablen anwenden, die sich in einer bestimmten Gaußschen Verteilung verteilen? Wenn ja, ist das relativ einfach mit der zu generieren Gauß ( σ ) Funktion. Sie müssen keine Datei verwenden. Aber es kann dies immer noch als eine Art kontinuierliche Funktion behandeln. Hier bin ich mir also nicht sicher. Wenn Sie tatsächlich die spezifische Reihenfolge und die Werte Ihrer eigenen Gaußschen verteilten Werte benötigen, bin ich mir auch nicht sicher, wie. Der Parameter 'wavefile=' könnte nützlich sein, aber ich bezweifle es in diesem Fall. Vielleicht können Sie eine Reihe von Läufen von LTSpice von der Befehlszeile aus verwenden?
danke für die teilnahme jonk. Ich kenne keine Gauss-Funktion, die LTSpice hatte. Für grundlegende vielleicht nur Hilfe für mich. Leider werden meine Werte von einem anderen Skript generiert. Ich sammle die erstellte Werteliste.
Ich werde noch etwas nach 'wavefile=' suchen
Sehen Sie sich auch diesen Link von Linear an: linear.com/solutions/7852
Ich denke, das OP möchte, dass seine Werte während der Simulation variieren , ähnlich wie bei einer PWL-Quelle, jedoch mit einer Formel. In diesem Fall kann ich nur an eine (aktuelle) Verhaltensquelle denken, bi, oder bi2. Siehe Handbuch für die Verwendung: LTspice > Circuit Elements > B. Arbitrary behavioural ....
Eigentlich wollte ich die Werte des Generators nicht ändern. Ich konzentriere mich darauf, den Parameter als Variable zu manipulieren.
@agenel Egal wie oft ich lese, ich kann es nicht verstehen: "Werte ändern sich linear"? "kontinuierlich als .step"? "Ändere N-Parameter von out.txt"? "mathematische formel in I2()"? Es tut mir leid, aber könnten Sie jemanden fragen, den Sie kennen und der ein besseres Englisch hat, um es für Sie zu übersetzen? Ich für meinen Teil kann nicht wirklich verstehen, welche Botschaft Sie zu vermitteln versuchen, es tut mir leid, aber vielleicht liegt es nur an mir.

Antworten (2)

Wenn ich das jetzt noch einmal lese, glaube ich zu verstehen, was OP will: eine benutzerdefinierte Zahlenfolge zu verwenden, die in einem .stepBefehl verwendet werden kann. Wenn dies der Fall ist, werde ich versuchen zu antworten.

Normalerweise wird für eine nichtlineare Zahlenfolge, die nicht logarithmisch ist, das Schlüsselwort listverwendet. Leider erlaubt es keine Auswertungen, dh die Werte müssen numerisch sein, {cos(1)}sonst {2*5}schlagen sie fehl. Die einzige Lösung wäre also, die Zahlen extern zu generieren, in einer einfachen Textdatei, als einzelne Zeile oder als verkettete Zeile (mit vor + jeder neuen Zeile) und hinzuzufügen:

.step param x list <sequence_of_numbers>

am Anfang. .incDiese Datei kann dann mit dem Befehl (oder ) zum Schaltplan hinzugefügt werden .include. Vergessen Sie nicht, dass LTspice XVII die Zahlen vor dem Start der Simulation in aufsteigender Reihenfolge sortiert. Das mag man mögen oder auch nicht, aber so ist es jetzt. Die einzige Möglichkeit, dies zu umgehen, ist die Verwendung von LTspice IV.

Um dies zu testen, sieht der Inhalt der Textdatei so aus:

.step param x list 7.254322142991044e-12 2.974321522582202e-10
+ 5.94864415973779e-9 7.733237831307738e-8 7.346575989515156e-7
+ 5.436466237528063e-6 3.261879742903331e-5 1.630939871486926e-4
+ 6.931494453849666e-4   0.02292014166076882 0.05730035415192529
+ 0.1278238669542985 0.2556477339086 0.4601659210354829 0.7477696216826623
+ 1.099661208356858 1.466214944475812 1.774891774891774 1.952380952380952

und das Schema gibt dies nach a .op:

prüfen

Die Zahlen sind eine Möchtegern-Gauß-Glockenform. Die Ausgabe sieht aus wie eine gerade Linie, aber die Verwendung von View > Mark Data Pointszeigt, dass die Verteilung nichtlinear ist. Bei Verwendung .tranwerden erwartungsgemäß unterschiedliche DC-Pegel angezeigt.

Sie haben hier einige Möglichkeiten, dies klingt jedoch nach einem XY-Problem.

Zunächst einmal dienen .step-Funktionen zum Ausführen verschiedener Simulationen.

Wenn Sie eine transiente Simulation mit Ihren eigenen benutzerdefinierten Werten für eine Quelle oder Last ausführen möchten, können Sie PWL- oder Wave-Dateien für die Eingabe in Quellen in LT Spice verwenden. (oder Sie können einfach die eingebaute PWL-Option verwenden, die mühsam wäre, Tausende von Werten einzugeben).

In der ersten Schaltung hat V1 einen Wavefile-Eingang, der net Res auf V1 setzt. Aus Gründen des Interesses habe ich einen Widerstand auf den Wert der Wave-Datei gesetzt, wodurch der R2-Widerstand für die Wave-Datei variabel wird.

V3 hat eine PWL-Dateieingabe.

I1 hat einen PWL-Fliegeingang.

Denken Sie daran, dass PWL beim Setzen von Punkten schwierig sein kann, Sie können nicht zwei Punkte gleichzeitig haben und PWL zieht einfach eine Linie zwischen Punkten.

Dies ist die einzige Möglichkeit, Werte in eine lt-Spice-Datei zu importieren.

Geben Sie hier die Bildbeschreibung ein

Sie können auch b-Quellen (entweder Strom oder Spannung) mit mathematischen Funktionen verwenden , die den Eingang der Quelle steuern.

Die nützlichsten Funktionen, wenn Sie versuchen, eine Rauschquelle zu erstellen, wären White, Random und Rand, mit denen Sie Quellen mit Gaußschen Eigenschaften in der Zeitdomäne und .trans-Simulation erstellen können.

Geben Sie hier die Bildbeschreibung ein