Konvergenzproblem bei LTspice

R

Ralf Bartling

Guest
Hallo NG,
ich bin auf ein Konvergenzproblem mit LTspice gestoßen.
Ich habe als Grundschaltung des "IEC61000-4-5 Surge Generator" aus der
yahoo group verwendet. Ziel war das Austesten von verschiedenen
Varistoren. Deren Modell stammt aus einer Bibliothek von EPCOS.

Leider kommt es dann zu Konvergenzproblemen, wenn der Varistor beginnt
zu leiten (Timestep too small). Auch ein Umschalten auf den Alternate
Solver konnte das Problem nicht beseitigen. Ich habe darauf hin
Kondensatoren parallel zum Varistor geschaltet und auch Induktivitäten
in Reihe, um die Strom- und Spannungsanstiege zu verlangsamen. Leider
auch ohne Erfolg.

Gibt es hier noch eine Möglichkeit, eine Konvergenz zu erreichen ?

Vielen Dank


Ralf Bartling



Schaltung:

Version 4
SHEET 1 1476 864
WIRE -304 256 -304 144
WIRE -304 352 -304 320
WIRE -272 144 -304 144
WIRE -176 144 -272 144
WIRE -160 352 -304 352
WIRE -160 352 -160 192
WIRE -112 224 -112 192
WIRE -112 352 -160 352
WIRE -112 352 -112 304
WIRE 80 496 80 464
WIRE 80 624 80 576
WIRE 80 640 80 624
WIRE 112 144 -96 144
WIRE 112 208 112 144
WIRE 112 352 -112 352
WIRE 112 352 112 288
WIRE 144 144 112 144
WIRE 224 464 80 464
WIRE 256 144 224 144
WIRE 384 144 336 144
WIRE 384 208 384 144
WIRE 384 352 112 352
WIRE 384 352 384 288
WIRE 480 352 384 352
WIRE 480 624 80 624
WIRE 480 624 480 352
WIRE 560 144 384 144
WIRE 560 176 560 144
WIRE 560 320 560 256
WIRE 560 464 304 464
WIRE 560 464 560 384
WIRE 672 464 560 464
WIRE 672 496 672 464
WIRE 672 624 480 624
WIRE 672 624 672 576
WIRE 864 464 672 464
WIRE 864 512 864 464
WIRE 864 624 672 624
WIRE 864 624 864 592
FLAG -272 144 charge
FLAG 80 640 0
SYMBOL res 240 128 R90
WINDOW 0 0 56 VBottom 0
WINDOW 3 32 56 VTop 0
SYMATTR InstName Rm
SYMATTR Value 1.2
SYMBOL res 96 304 M180
WINDOW 0 36 76 Left 0
WINDOW 3 36 40 Left 0
SYMATTR InstName Rs1
SYMATTR Value 6
SYMBOL res 400 304 R180
WINDOW 0 36 76 Left 0
WINDOW 3 36 40 Left 0
SYMATTR InstName Rs2
SYMATTR Value 25
SYMBOL ind 240 160 R270
WINDOW 0 32 56 VTop 0
WINDOW 3 5 56 VBottom 0
SYMATTR InstName Lr
SYMATTR Value 8ľ
SYMBOL cap -320 256 R0
SYMATTR InstName Cc
SYMATTR Value 12ľ
SYMBOL sw -192 144 R270
WINDOW 0 30 86 VRight 0
WINDOW 3 -15 88 VRight 0
SYMATTR InstName S1
SYMATTR Value MySwitch
SYMBOL bv -112 208 R0
WINDOW 0 32 75 Left 0
WINDOW 3 7 105 Left 0
SYMATTR InstName B1
SYMATTR Value V=if(time>{Tdelay},1,0)
SYMBOL res 848 496 R0
SYMATTR InstName Rload
SYMATTR Value 200
SYMBOL res 544 160 R0
SYMATTR InstName R2
SYMATTR Value {Rcouple}
SYMBOL cap 544 320 R0
SYMATTR InstName C1
SYMATTR Value {Ccouple}
SYMBOL voltage 80 480 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName Vac
SYMATTR Value SINE(0 325 50)
SYMBOL ind 208 480 R270
WINDOW 0 32 56 VTop 0
WINDOW 3 5 56 VBottom 0
WINDOW 39 -25 56 VBottom 0
SYMATTR InstName L1
SYMATTR Value 20mH
SYMATTR SpiceLine Rser=100m
SYMBOL Misc\\xvaristor 656 480 R0
SYMATTR InstName U1
SYMATTR Value S20K550
TEXT -216 376 Left 0 !.model MySwitch SW(Ron=10m Roff=10Meg Vt=0.5
Vh=0)
TEXT -976 472 Left 0 !.ic v(charge)={Vtest*1.13}
TEXT -976 280 Left 0
!.param\n+Vtest=4000\n+Rcouple=10\n+Ccouple=18u\n+Tdelay=5m
TEXT -976 112 Left 0 ;Parameters to specify:\n- Open circuit test
voltage\n- Coupling resistor (either 10 or 40 ohms)\n- Coupling
capacitor (0.5uF, 9uF, or 18uF)\n- Time delay at beginning of surge
(for phase shift)
TEXT -976 504 Left 0 !.tran 40m
TEXT -112 -32 Left 0 ;IEC 61000-4-5 Line Surge Generator
TEXT -80 40 Left 0 ;Basic surge waveform\n(IEC61000-4-5 figures 2 & 3)
TEXT 896 96 Right 0 ;Line-to-Line coupling network\n(IEC61000-4-5
figure 6)
TEXT 800 352 Left 0 ;System\n(replace 'Rload' with the \nsystem to be
tested)
TEXT -744 544 Left 0 !.include siov.lib
LINE Normal -496 448 -496 448
RECTANGLE Normal 432 400 -336 88 3
RECTANGLE Normal 528 416 704 160 3
RECTANGLE Normal 832 656 960 448 3

Modell des Varistors (aus siov.lib von EPCOS)

* "SIOV.LIB" Version 4.1 - 1. Nov. 1999
*
*
*
* Grundmodell:
* ===========*
..SUBCKT SIOV 1 2 PARAMS: T=1 C=1pF L=1nH B1=1 B2=1 B3=0 B4=0
R_SERIES 1 3 100u
L_SERIES 3 4 {L}
V_I_SENSE 4 5 0V
H_I_SENSE 6 0 V_I_SENSE 10k
R_I_SENSE 6 0 1G
E_VAR 5 2 VALUE={T*(
+ PWR(10,
+
B1+B2*(LOG10(LIMIT(V(6),1m,100G))-4)+B3*EXP(-LOG10(LIMIT(V(6),1m,100G))+4)+B4*EXP(LOG10(LIMIT(V(6),1m,100G))-4)
+ )
+ -PWR(10,
+
B1+B2*(LOG10(-LIMIT(V(6),-100G,-1m))-4)+B3*EXP(-LOG10(-LIMIT(V(6),-100G,-1m))+4)+B4*EXP(LOG10(-LIMIT(V(6),-100G,-1m))-4)
+ )
+ +LIMIT((V(6)*1k*V(7)),-V(7),V(7))
+ )}
C_PAR 4 2 {C}
E_SW 7 0 VALUE={PWR(10,(B1+B2*(-7)+B3*EXP(+7)+B4*EXP(-7)))}
R_SW 7 0 1G
..ENDS


Verwendete Varistoren:

* Typenmodell für S20K440 :
* -------------------------
..SUBCKT S20K440 1 2 PARAMS: TOL=0
X1 1 2 SIOV PARAMS: T={1+TOL/100} C=400pF L=13.0nH B1=2.9428275
B2=0.0260298 B3=-0.0005482 B4=0.0047768
..ENDS
*
*
* Typenmodell für S20K460 :
* -------------------------
..SUBCKT S20K460 1 2 PARAMS: TOL=0
X1 1 2 SIOV PARAMS: T={1+TOL/100} C=380pF L=13.0nH B1=2.9645747
B2=0.0260556 B3=-0.0005738 B4=0.0046503
..ENDS
*
*
* Typenmodell für S20K510 :
* -------------------------
..SUBCKT S20K510 1 2 PARAMS: TOL=0
X1 1 2 SIOV PARAMS: T={1+TOL/100} C=340pF L=13.0nH B1=3.0062556
B2=0.0273565 B3=-0.0005380 B4=0.0039692
..ENDS
*
*
* Typenmodell für S20K550 :
* -------------------------
..SUBCKT S20K550 1 2 PARAMS: TOL=0
X1 1 2 SIOV PARAMS: T={1+TOL/100} C=320pF L=13.0nH B1=3.0514418
B2=0.0266902 B3=-0.0006016 B4=0.0041101
..ENDS
 
"Ralf Bartling" <ralf_bartling@yahoo.de> schrieb im Newsbeitrag
news:1134204742.723254.43050@g47g2000cwa.googlegroups.com...
Hallo NG,
ich bin auf ein Konvergenzproblem mit LTspice gestoßen.
Ich habe als Grundschaltung des "IEC61000-4-5 Surge Generator" aus der
yahoo group verwendet. Ziel war das Austesten von verschiedenen
Varistoren. Deren Modell stammt aus einer Bibliothek von EPCOS.

Leider kommt es dann zu Konvergenzproblemen, wenn der Varistor beginnt
zu leiten (Timestep too small). Auch ein Umschalten auf den Alternate
Solver konnte das Problem nicht beseitigen. Ich habe darauf hin
Kondensatoren parallel zum Varistor geschaltet und auch Induktivitäten
in Reihe, um die Strom- und Spannungsanstiege zu verlangsamen. Leider
auch ohne Erfolg.
Gibt es hier noch eine Möglichkeit, eine Konvergenz zu erreichen ?
Vielen Dank
Ralf Bartling
Hallo Ralf,

Bei dieser Schaltung mußte ich etwas länger suchen.

Letzendlich habe ich es geschafft durch Setrzen eines
max. timestep und Erhöhung von reltol.

Zwei mögliche Kombinationen:
Zuvor aber bitte alle Settings im Control Panel zurücksetzen.
Control Panel SPICE->Reset to Default
Diese Zeilen als SPICE-Lines zum Schaltplan hinzufügen.

..options reltol=0.01
..tran 0 40m 0 .3u
..options plotwinsize=0

oder

..options reltol=0.003
..tran 0 40m 0 1u
..options plotwinsize=0

Die letzte Zeile ist nur zur Unterdrückung der Daten-
Komprimierung da dies zu unnötigen Artefakten in der
dargestellten Kurvenform führen kann.

Gruß
Helmut
 
Hallo Helmut,
vielen Dank für den Tip.
Diese Simulationsschaltung wird wahrscheinlich einigen Prototypen bei
uns das Leben retten.
Bislang waren die Versuche am Surgegenerator berüchtigt und auch
gefürchtet (es hat dann doch häufiger mal geknallt).


Ralf
 
Hallo Helmut,
ich arbeite seit längerem an einer Sache, die ich gerne auch noch mit
LTspice simulieren möchte. Da ich bislang noch keine Lösung gefunden
habe, bitte ich dich noch einmal um Rat.

Ich habe versucht mit LTspice einen diskontinuierlichen, mehrkanaligen
Hochsetzsteller zu simulieren. Ziel war es, die Verlustleistung in den
Leistungsschaltern, den Freilaufdioden und den Speicherdrosseln
abzuschätzen.

Leider ist es mit nicht gelungen, ein geeignetes Steuergesetz zum
Ansteuern der Leistungsschalter zu finden. Um das Problem zu
verdeutlichen hier zunächst einmal die Grundschaltung des Stellers.


Version 4
SHEET 1 880 680
WIRE -448 144 -448 48
WIRE -448 224 -448 144
WIRE -448 384 -448 304
WIRE -416 48 -448 48
WIRE -352 48 -416 48
WIRE -352 144 -448 144
WIRE -144 48 -272 48
WIRE -144 224 -144 48
WIRE -144 384 -144 304
WIRE -64 48 -144 48
WIRE -64 144 -272 144
WIRE 16 144 -64 144
WIRE 16 224 16 144
WIRE 16 384 16 304
WIRE 96 48 -64 48
WIRE 96 144 16 144
WIRE 208 48 160 48
WIRE 208 144 160 144
WIRE 208 144 208 48
WIRE 208 224 208 144
WIRE 208 384 208 304
FLAG -448 384 0
FLAG 16 384 0
FLAG 208 384 0
FLAG -144 384 0
FLAG -416 48 V_in
FLAG -64 48 V_2
FLAG -64 144 V_1
SYMBOL bv -448 208 R0
WINDOW 3 -343 -1 Left 0
SYMATTR Value V=325*abs(sin(2*pi*50*time))
SYMATTR InstName B1
SYMBOL ind -368 160 R270
WINDOW 0 32 56 VTop 0
WINDOW 3 5 56 VBottom 0
SYMATTR InstName L1
SYMATTR Value 150ľH
SYMBOL sw 16 208 R0
WINDOW 3 13 104 Left 0
SYMATTR Value SW_1
SYMATTR InstName S1
SYMBOL voltage 208 208 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 400
SYMBOL diode 96 160 R270
WINDOW 0 32 32 VTop 0
WINDOW 3 0 32 VBottom 0
SYMATTR InstName D1
SYMBOL sw -144 208 R0
WINDOW 3 9 107 Left 0
SYMATTR Value SW_2
SYMATTR InstName S2
SYMBOL ind -368 64 R270
WINDOW 0 32 56 VTop 0
WINDOW 3 5 56 VBottom 0
SYMATTR InstName L2
SYMATTR Value 150ľH
SYMBOL diode 96 64 R270
WINDOW 0 32 32 VTop 0
WINDOW 3 0 32 VBottom 0
SYMATTR InstName D2
TEXT -786 250 Left 0 !.tran 100m


Die Quelle B1 stellt eine gleichgerichtete Netzspannung dar (es sind
aber auch andere Spannungsformen denkbar), die Quelle V1 arbeitet als
Senke und modelliert die Lastseite. Dabei sollen die Schalter nach den
folgenden Gesetzmäßigkeiten gesteuert werden:

Jeder der Schalter bekommt zunächst eine konstante Einschaltzeit (T_on
genannt, Bereich 1ľs....10ľs). In dieser Zeit baut sich in L1,L2 ein
Strom linear auf (u=L*di/dt, also di=u*dt/L), dessen Spitzenwert vom
Augenblickswert von B1 abhängt. Dann werden die Schalter geöffnet und
die Drosseln treiben den Strom weiter über die Freilaufdioden in die
Senke V1. Da die Spannung V1 größer ist, wird der Strom in der
Drossel wieder abgebaut. Wenn der Strom in einer Drossel zu null
geworden ist, dann sollen die Schalter wieder mit dem konstanten T_on
angesteuert werden und ein neuer Zyklus beginnt. Dabei stellt sich in
den Drosseln ein dreieckförmiger Stromverlauf ein, dessen Frequenz um
ein vielfaches höher wie die Frequenz der netzseitigen
Eingangsspannung ist und dessen Amplitude vom Augenblickswert der
Eingangsspannung abhängt.

Nun kommt das eigentliche Problem:
Die beiden Leistungskanäle sollen mit einer Phasenverschiebung von
180° arbeiten, um den eingangsseitigen Stromrippel zu verkleinern. Da
aber bei einer variablen Eingangsspannung auch die Frequenz variabel
ist, muss das im Steuergesetz mit berücksichtigt werden.

Ich habe diese Schaltung real mit einem Microcontroller aufgebaut und
sie funktioniert.
Dabei wird die Einschaltzeit (T_on) der Schalter über Timer mit
Monoflopfunktion realisiert und der Stromnulldurchgang in der Drossel
L1 über eine separate Messwicklung erfasst.
Dieses Stromnulldurchgangssignal wird dann zweifach verwertet.
Zum einen wird damit wieder der Leistungsschalter SW_1 mit der Zeit
T_on angesteuert. Zum anderen wird das Signal vom Controller erfasst.
Da der Controller auch den Zeitpunkt des vorherigen Nulldurchganges
gespeichert hat, kann er nun einen Zündzeitpunkt für den zweiten
Kanal errechnen, der die Bedingung einer Phasenverschiebung von 180°
erfüllt. Damit wird dann das Monoflop für SW_2 getriggert.

Leider ist es mir nicht gelungen, diese Funktion in ein Steuergesetz
für LTspice zu formulieren. Möglicherweise ist es aber auch der
falsche Weg, den Algorithmus der Hardwarelösung direkt in die
Simulation umzusetzen.
Kann man in LTspice den Strom in den Drossel als Bedingung für z.B.
Monoflops verwenden ?
Dann könnte man zumindest für einen Kanal ein Steuergesetz
formulieren wie z.B. "if(i(L1)==0) --> Trigger des Monoflops"

Ich hoffe, ich konnte die Funktion ausreichend beschreiben. Ich kann
dir aber auch gerne einige Scopeplots zumailen, aus denen die Funktion
ersichtlich wird.


Vielen Dank

Ralf Bartling
 
Ralf Bartling wrote:
Kann man in LTspice den Strom in den Drossel als Bedingung für z.B.
Monoflops verwenden ?
Dann könnte man zumindest für einen Kanal ein Steuergesetz
formulieren wie z.B. "if(i(L1)==0) --> Trigger des Monoflops"
Versuchs doch mit einem Komparator.
Oder du rechnest den Arbeitspunkt manuell aus und Steuerst den Schalter
mit einer Pulsquelle (Voltage source: Pulse). Wenn du den Regler nicht
simulieren musst, ist das weitaus am schnellsten.

Gruss

Claudius
 
"Ralf Bartling" <ralf_bartling@yahoo.de> schrieb im Newsbeitrag
news:1134296158.393154.187000@g44g2000cwa.googlegroups.com...
Hallo Helmut,
ich arbeite seit längerem an einer Sache, die ich gerne auch noch mit
LTspice simulieren möchte. Da ich bislang noch keine Lösung gefunden
habe, bitte ich dich noch einmal um Rat.
Ich habe versucht mit LTspice einen diskontinuierlichen, mehrkanaligen
Hochsetzsteller zu simulieren. Ziel war es, die Verlustleistung in den
Leistungsschaltern, den Freilaufdioden und den Speicherdrosseln
abzuschätzen.
Leider ist es mit nicht gelungen, ein geeignetes Steuergesetz zum
Ansteuern der Leistungsschalter zu finden. Um das Problem zu
verdeutlichen hier zunächst einmal die Grundschaltung des Stellers.
Version 4
SHEET 1 880 680
WIRE -448 144 -448 48
...
Hallo Ralf,

dieser Schaltplan sieht aber noch ziemlich leer aus. :)

Die Quelle B1 stellt eine gleichgerichtete Netzspannung dar (es sind
aber auch andere Spannungsformen denkbar), die Quelle V1 arbeitet als
Senke und modelliert die Lastseite. Dabei sollen die Schalter nach den
folgenden Gesetzmäßigkeiten gesteuert werden:
Jeder der Schalter bekommt zunächst eine konstante Einschaltzeit (T_on
genannt, Bereich 1ľs....10ľs). In dieser Zeit baut sich in L1,L2 ein
Strom linear auf (u=L*di/dt, also di=u*dt/L), dessen Spitzenwert vom
Augenblickswert von B1 abhängt. Dann werden die Schalter geöffnet und
die Drosseln treiben den Strom weiter über die Freilaufdioden in die
Senke V1. Da die Spannung V1 größer ist, wird der Strom in der
Drossel wieder abgebaut. Wenn der Strom in einer Drossel zu null
geworden ist, dann sollen die Schalter wieder mit dem konstanten T_on
angesteuert werden und ein neuer Zyklus beginnt. Dabei stellt sich in
den Drosseln ein dreieckförmiger Stromverlauf ein, dessen Frequenz um
ein vielfaches höher wie die Frequenz der netzseitigen
Eingangsspannung ist und dessen Amplitude vom Augenblickswert der
Eingangsspannung abhängt.

Nun kommt das eigentliche Problem:
Die beiden Leistungskanäle sollen mit einer Phasenverschiebung von
180° arbeiten, um den eingangsseitigen Stromrippel zu verkleinern. Da
aber bei einer variablen Eingangsspannung auch die Frequenz variabel
ist, muss das im Steuergesetz mit berücksichtigt werden.
Ich habe diese Schaltung real mit einem Microcontroller aufgebaut und
sie funktioniert.
Dabei wird die Einschaltzeit (T_on) der Schalter über Timer mit
Monoflopfunktion realisiert und der Stromnulldurchgang in der Drossel
L1 über eine separate Messwicklung erfasst.
Man kann auch einen Kondensator auf eine bestimmte Spannung aufladen.
Die Ladezeit ist dann die Einschaltdauer. Den Kondensator muß man
natürlich immer wieder entladen.

Dieses Stromnulldurchgangssignal wird dann zweifach verwertet.
Zum einen wird damit wieder der Leistungsschalter SW_1 mit der Zeit
T_on angesteuert. Zum anderen wird das Signal vom Controller erfasst.
Da der Controller auch den Zeitpunkt des vorherigen Nulldurchganges
vgespeichert hat, kann er nun einen Zündzeitpunkt für den zweiten
Kanal errechnen, der die Bedingung einer Phasenverschiebung von 180°
erfüllt. Damit wird dann das Monoflop für SW_2 getriggert.
Die Periodendauer von Kanal-1 kann man auch mittels Stromquelle
und Kondensator messen. Zusätzlich braucht man ein Sample/Hold
um den Wert festzuhalten.

Leider ist es mir nicht gelungen, diese Funktion in ein Steuergesetz
für LTspice zu formulieren. Möglicherweise ist es aber auch der
falsche Weg, den Algorithmus der Hardwarelösung direkt in die
Simulation umzusetzen.
Jetzt braucht man noch eine weitere Stromquelle und nochmals
einen Kondensator um eine zur Periodendauer propoprtionale
Verzögerung zu erhalten.
Dazu gesellen sich dann noch eine "Ladung" Flipflops die richtig
angesteuert werden wollen.

Kann man in LTspice den Strom in den Drossel als Bedingung für z.B.
Monoflops verwenden ?
Dann könnte man zumindest für einen Kanal ein Steuergesetz
formulieren wie z.B. "if(i(L1)==0) --> Trigger des Monoflops"
Ja es geht auch I(L1) und I(D1). Ich bevorzuge allerdings eine
Spannungsquelle Vn mit 0V in Serie zur Spule. Man mißt dann I(Vn).
Das ist die klassische Methode in SPICE.

Ich hoffe, ich konnte die Funktion ausreichend beschreiben. Ich kann
dir aber auch gerne einige Scopeplots zumailen, aus denen die Funktion
ersichtlich wird.
Vielen Dank
Ralf Bartling
Ich habe die Schaltung verstanden!
Trotzdem würden mich die Scopeplots interessieren.
Schick sie mir doch mal. Die Dateigröße spielt dank DSL keine Rolle.

Die Aufgabe läßt sich mit LTspice lösen.
Die Lastquelle mit 400V und 0Ohm verwundert mich noch.

Gruß
Helmut
 

Welcome to EDABoard.com

Sponsor

Back
Top