Ich muss jeweils drei transiente Simulationen mit unterschiedlichen Werten bestimmter Widerstände (praktisch R1 und R2 genannt) durchführen. Was ich genau vorhabe ist folgendes:
Wenn es nur einen Widerstand gäbe, dessen Widerstand zu variieren wäre, dann würde ich seinen Widerstand einfach auf "{r1}" setzen (ich verwende Kleinbuchstaben, um ihn zu einer anderen Variablen/einem anderen Parameter als R1 zu machen) und einen Befehl verwenden wie:
.step param r1 list 1k 1meg 1k
Da ich jedoch zwei Parameter (zusammen) jeweils zweimal ändern muss, habe ich hier gelesen , dass (zumindest auf LTSpiceIV) eine Problemumgehung für mein Problem so aussehen könnte:
.step param X list 1 2 3
.param r1 = table(X, 1k, 1meg, 1k)
.param r2 = table(X, 10k, 1meg, 10meg)
Beim Durchführen der Simulation erhalte ich die folgenden Warnungen:
WARNING: Can´t resolve .param r2 = table(X, 10k, 1meg, 10meg)
Select OK to continue the simulation with the default model or Cancel to quit now.
Gleiches gilt für r1.
Aus irgendeinem Grund "bricht" die Simulation nicht, wenn ich der Tabelle ein zusätzliches Element hinzufüge. In diesem Fall dauert die Simulation zu lange und schreitet jedes Mal langsamer voran, da sie nie enden würde. Ich habe versucht, X auf 0 1 2 statt 1 2 3 zu setzen, aber das funktioniert auch nicht.
Hier sind einige Bilder:
Ihre Hilfe wäre sehr willkommen.
In LTSpice erstellt der Tabellenbefehl wirklich eine Art Wörterbuch, in dem Sie Schlüssel-Wert-Paare angeben müssen. Die richtige Direktive für Ihren Fall wäre dann:
.step param Rx list 1 2 3
.param R1 table(Rx,1,1k,2,1Meg,3,1k)
.param R2 table(Rx,1,10k,2,1Meg,3,10Meg)
und stellen Sie den Wert der Widerstände auf {R1}
bzw. {R2}
ein.
Wenn Sie die Werte eines Widerstands in der Nähe haben möchten, können Sie auch eingeben (statt Wert, wenn Sie mit der rechten Maustaste darauf klicken)
R=table(Rx,1,10k,2,1Meg,3,10Meg)
in das Widerstandswertfeld. Dies funktioniert für alle Arten von Komponenten auf die gleiche Weise und mit einem externen Skript zum Erstellen von .asc-Dateien kann es als Krücke für LTspices verwendet werden, dem die Monte-Carlo-Funktionalität fehlt.
Ein Parameter-Sweep/Step kann mehrere Komponentenwerte durch Ausdrücke steuern.
Ihre Steuervariable, die Sie steppen, könnte ein Phasenwinkel oder eine Zeitverzögerung oder ähnliches sein, die Sie in eine oder mehrere Formeln/Ausdrücke eingeben, um resultierende Komponentenwerte oder Parameter zu erhalten, die im Design als {Parameter} angewendet werden sollen.
Dies ist nützlich, wenn Sie eine Beziehung beibehalten oder eine indirekte physikalische Eigenschaft des Designs wie eine Strom- oder Filtereigenschaft steuern möchten.
Im "op"-Befehlseditor können Sie etwa Folgendes eingeben:
.STEP param Imax 0.1 0.3 0.1
.PARAM Uin= 5
.PARAM R = (Uin-0.84954605)/Imax
Es erhöht Imax in Schritten von 0,1 von 0,1 auf 0,3 und berechnet einen Widerstandswert R unter Verwendung der Parameter Imax, Uin, eines angenommenen Spannungsabfalls von 0,85 ... einer Diode.
Auf PARAM R kann in einem Komponentenwert unter Verwendung der {R}-Notation verwiesen werden. Beachten Sie, dass Uin als {Uin} in einer Spannungsquelle oder ähnlichem usw. verwendet werden könnte.
Verwenden Sie für mehrere Zeilen im Editorfenster "op" STRG + M, um alle Parameter im selben Textfeld zu behalten.
Dies funktioniert für meine Schaltung
.step param n liste 2 3 4
.param Rf=Tabelle(n,1,1,3k,2,1,1k,3,1,2k,4,1k)
.param Cf=Tabelle(n,1,54p,1,64p,2,64pF,4,64pF)
Rf erhält also den Wert des aktuellen Index (definiert in der .step-Direktive). Die Tabelle der Werte beginnt also mit der Indexkennung (hier n) und folgt dann dem Paar index, value . Wenn ich den Index in den Tabellen nicht verwende, bekomme ich den gleichen Fehler wie im ersten Beitrag angegeben
Die Arbeitslösung wurde nach dem Lesen der LTspice-Tabellenfunktion gefunden
Nach langem Herumprügeln fand ich, dass es zwei Aspekte dieses Problems gibt, die untersucht werden müssen. Zuerst muss der zu variierende Parameter bestimmt werden.
Wenn Sie beispielsweise einen Widerstand R5 in Ihrem LTSpice-Schaltplan haben, klicken Sie mit der rechten Maustaste auf die Komponente, um das Dialogfeld „Komponentenattribute“ aufzurufen. Wahrscheinlich haben Sie ihm bereits einen Wert gegeben, zB 1k0. Sie müssen dies durch Ihren Parameterbezeichner ersetzen; Setzen Sie das in {} Klammern, zB {R5}, dann Speichern.
Um klar zu sein, ich habe {R5} für meine Bequemlichkeit und mein Verständnis verwendet. Es könnte {Pickle1} sein und es würde immer noch funktionieren.
Jetzt weiß LT spice, wovon Sie sprechen, wenn Sie mit dem Schreiben Ihrer Skripte beginnen.
Jetzt können Sie mit der Verwendung des Spice-Directive-Dialogfelds (.op-Symbol oben rechts) beginnen und Ihr Skript eingeben. Z.B:
.step param Rx 1 5000 100
.param R5=Rx
.param R6=Rx
.op
In diesem Beispiel möchte ich zwei Widerstände (R5 und R6) modifizieren, damit ich den Ausgang meiner Regler sehen kann, vorausgesetzt, ich ändere die Werte von 1 Ohm auf 5000 Ohm über 100 Schritte. Ich habe den Parameter Rx genannt: Die 1. Zeile definiert die Schritte, die ich wie oben beschrieben ausführen möchte.
.step param Rx 1 5000 100
Jetzt möchte ich diesen Parameter nehmen und auf meine Komponenten anwenden. Ich habe den Trick mit dem Dialogfeld "Komponentenattribute" bereits für beide Komponenten durchgeführt. Denken Sie daran, dass sich R5 auf den Parameterbezeichner bezieht. Wenn ich {Pickle} verwendet hätte, würde die Zeile lauten:
.param Pickle=Rx
Die nächsten beiden Zeilen im obigen Skript teilen LTSpice mit, dass die Parameter für R5 und R6 den als Rx bezeichneten Schritten folgen sollten.
.param R5=Rx
.param R6=Rx
Schließlich steuert der Befehl .op die Operation.
Das Endergebnis ist, dass meine Schaltung, die sich außer diesen beiden Werten in einem festen Zustand befindet, jetzt vollständig ist und ich in dem Beispiel, zu dem ich gelangen wollte, die Auswirkung auf den geregelten Ausgang sehen kann.
Die oben beschriebenen Listenbeispiele sind eine andere Möglichkeit, das erforderliche Endergebnis zu erzielen, aber es sieht so aus, als ob einige der Kommentare darauf zurückzuführen sind, dass, wie bei mir, nicht verstanden wurde, dass Sie die Komponentenbezeichner nicht verwenden können, ohne dies zu tun {} Sache. LTSpice weiß nicht, wovon Sie sprechen, bis Sie das tun.
Ich hoffe, diese Erklärung hilft jemand anderem, damit sie nicht drei Stunden damit verbringen, herauszufinden, warum der aus den Beispielen hier entnommene Code möglicherweise nicht funktioniert.
ACD
ACD
sebascarra
sebascarra
ACD
sebascarra
AKR