ungelöst ".step" über nummerierte Subcircuits meldet "Invalid .stepped circuit!"

wjr

Aktiver Benutzer
Member
Landesflagge
Was ich machen möchte:
In einer OP-Amp-Schaltung (PID, z.B.) den OP-Amp-Typ über die `.step` Direktive wechseln.

Inspiratiion:
LTspice stepping build-In Opamp models

Was klappt:
Ich kann mit `.param`einen OP-Amp auswählen und damit die Simulation laufen lassen.
Meine Mechanik, über einen Parameter den richtigen `.subckt` und die lib auszuwählen, funktioniert also.
Ich habe auch `.step` über "normale" numerische Bauteilwerte laufen lassen, um allfällige Leichtsinnsfehler auszugrenzen.

Was ich hoffentlich richtig verstanden habe:
  1. `.param` können nur numerisch übergeben werden und dürfen keine Buchstaben o.ä. enthalten
  2. eigentlcih sollte `.step` nichts anderes machen als verschiedene `.param` nacheinander durchzuspielen
  3. Wenn ein `.model`oder ein `.subckt` einen rein numerischen Namen haben, kann man die auch über `{PARAM}` ansprechen
  4. es gibt eine Anleitung nach dem Muster `.model 795 ako ADI795`, die funktioniert aber nicht bei OP-Amps, weil die nicht über `.model`, sondern über `.subckt` definiert sind
  5. das Prinzip ist aber das selbe: ich brauche `.subckt` mit numerischer Bezeichnung, damit ich den über einen `{PARAM}` auswählen kann.

Ich habe nicht - wie dort angegeben - die kompletten Libs umkopiert und editiert, sondern mit eine "wrapper-Lib" mit folgendem Inhalt erstellt:

Code:
Bitte, Anmelden oder Registrieren Code-Inhalt anzeigen!
Meine Netlist sieht im abgestrippten Beispiel so aus:

Code:
Bitte, Anmelden oder Registrieren Code-Inhalt anzeigen!
Der error-log:

Code:
Bitte, Anmelden oder Registrieren Code-Inhalt anzeigen!
Wenn ich statt dessen die `.step` auskommentiere und statt dessen einen der `.param` einkommentiere, dann funktioniert es.
Ich bekomme die gleichen `Ignoring empty pin`-Meldungenm aber nicht den `Fatal Error` am Ende.
Leichtsinnsfehler?
Denkfehler?
Irgend eine undokumentierte Kleinigkeit übersehen?
Oder haben die bei LT dieses "nette Feature" absichtlich deaktiviert? Ich fürchte fast so was....
 

spicer

Administrator
Teammitglied
Administrator
Moderator
Landesflagge
Im original Link steht:
.step param ADX list 712, 795, ......
Kann es sein, dass da die Kommata fehlen?
Das sähe dann so aus:
.step param MY_OPAMP list 32401, 32402
 

wjr

Aktiver Benutzer
Member
Landesflagge
Habs grad mit den Kommata ausprobiert.
Macht keinen Unterschied, selbe Meldung.
Hab's auch bei einem einfachen `.step` über einen Kapazitätswert probiert.
Macht da auch keinen Unterschied.

Das Model-stepping hab ich jetzt übrigens auch in der offiziell inoffiziellen Doku gefunden:

Ich krieg' erst langsam ein Gefühl, wie spice intern tickt.
Wenn ich das richtig verstanden habe, dann wird ein `.subckt` beim "Expandieren" der netlist aufgelöst.
Und ein `.model` geht als parametrierbarer quasi atomistischer Bestandteil in die große Solver-Matrix?

Insofern wäre es nachvollziehbar, wenn es beim `.subckt` nicht geht, bowohl es beim `.model` geht.
Aber der original Link behauptet ja, er hätt' es hin gekriegt.

Kann das von der LTSpice-Version abhängen?
Daß die "früher" bei jedem `.step` die Netlist neu ausgewertet haben, und das "jetzt" nur einmal machen?

Ich hab "LTspice XVII(x64) (17.0.21.0) Dec 15 2020"
Ah, stimmt, das aktualisiert sich von selber.
Läuft unter wine auf debian, aber daran kanns ja kaum liegen?
 

spicer

Administrator
Teammitglied
Administrator
Moderator
Landesflagge
Kann das von der LTSpice-Version abhängen?
Daß die "früher" bei jedem `.step` die Netlist neu ausgewertet haben, und das "jetzt" nur einmal machen?

Läuft unter wine auf debian, aber daran kanns ja kaum liegen?
Weiss ich leider auch nicht.

Bei mir läuft LTspice auch unter Wine. Ich denke, das spielt keine Rolle.
Kannst ja mal in einer Virtualbox probieren.
Wichtig ist, dass die lib's usw im gleichen Verzeichnis sind wie der Schaltplan.
 

wjr

Aktiver Benutzer
Member
Landesflagge
Ich glaub ich hab die Antwort gefunden, wenn auch nicht die Lösung:
"All parameter substitution evaluation is done before the simulation begins."

Wobei jetzt noch raus zu kriegen wäre ob .step innerhalb einer "simulation" läuft (was ich vermute) oder bei jedem step neu aufgesetzt wird.

Wenn ich eine normale .step-Simulation laufen lasse, und mir die expandierte netlist zeigen lasse, dann wird die nur einmal ermittelt.
 

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 1)

Wer hat diesen Thread gelesen

Oben