LTSpice Automation


15

Ho un convertitore boost alimentato a batteria e sto cercando di misurare la caduta massima di tensione in ingresso (batteria) in varie condizioni di carico di assorbimenti di corrente elevata (diversi cicli di lavoro / periodicità) oltre a diversi tipi di batterie (varie tensioni / resistenze interne). Dal momento che sto simulando un tempo (relativamente) così grande di tempo operativo, i file di simulazione stanno diventando piuttosto sostanziali, per non parlare del fatto che impiegano un po 'di tempo. Vorrei automatizzare LTSpice in modo da poter modificare i valori dei componenti in modo programmatico, rieseguire simulazioni e acquisire dati (valori di cose come tensione o corrente). Lo so:

  • I file WAV possono essere utilizzati per immettere / emettere dati dal programma
  • Il programma può essere eseguito dalla riga di comando

Finora la mia migliore opzione sembra usare una combinazione di queste due opzioni insieme al mio codice / script in un modo che raggiunga i miei obiettivi, ma mi chiedo solo se c'è già un modo migliore là fuori.

Qualcuno ha automatizzato LTSpice o sa se esiste qualche tipo di API di automazione scritta per esso (o dal produttore o da terze parti)?

Idealmente, vorrei avere un risolutore, in modo tale da fornirgli i parametri desiderati e provare vari valori dei componenti fino a trovare la soluzione "ottimale" ai miei vincoli.


Cosa ha detto la tua FAE lineare? Glielo chiederei prima.
Brian Carlton,

1
Conosci i comandi .STEP e .PARAM? Non sono sicuro che raggiungerebbe esattamente quello che vuoi, ma posterò una risposta con un paio di esempi se sei interessato.
Oli Glaser,

1
Questa domanda sembra fuori tema perché non si tratta di progettazione elettronica.
Leon Heller,

12
@LeonHeller su QUALE pianeta SPICE non fa parte del design?
segnaposto

1
Scoprirai che le opzioni Monte Carlo sono perfettamente adatte a questo. Puoi Schmoo parametri diversi e puoi anche visualizzare le variazioni. LT-Spice PUO 'averlo disabilitato da SPICE lo supporta nativamente. Inizia da lì
segnaposto

Risposte:


15

L'esecuzione di una simulazione più volte e la modifica di più valori dei componenti è un po 'più complicata rispetto alla semplice modifica di uno (che non è poi così male)

Ecco il concetto per cambiare un valore:

  • Aggiungi un'istruzione .param usando l'icona della direttiva SPICE all'estrema destra, ad es. Per un valore di resistenza .param X=R
  • Per usarlo, inserisci {x} nel valore della resistenza, quindi includi ad es. .step param X 100 500 50Per aumentare il valore tra 100 e 500 con incrementi di 50.

Esempio:

Esempio di passaggio

Risultato:

Grafico

Per più valori, l'unico modo in cui ho scoperto di funzionare era usare un elenco di valori per X e usare l'istruzione table. Questo è probabilmente meglio spiegato con un esempio (la lettura della guida per i comandi utilizzati sarà probabilmente utile qui). Si noti tuttavia che la sintassi del comando table è nella tabella dei moduli (indice, x1, y1, x2, y2, .... xn, yn), accetta l'indice come input e restituisce un valore interpolato per x = indice basato sulla x fornita , y coppie.

In una delle mie simulazioni ho dovuto eseguire 12 simulazioni cambiando 3 diversi valori dei componenti, ecco i comandi:

.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)

Risultato:

Ottieni un esempio

Spero che tu abbia l'idea, potresti forse produrre uno script che produca i comandi SPICE necessari quando inserisci i valori desiderati. O semplicemente creare un modello (ad esempio, ho appena copiato e incollato quanto sopra in alcune simulazioni diverse e modificato i valori)

Se quanto sopra non fa quello che vuoi, forse guarda qualcosa come il multisim di NI (penso che abbia alcune opzioni di simulazione batch, anche se non sono sicuro di quanto siano utili) Potrebbe anche essere utile chiedere su LTSPice forum e vedere se qualcuno conosce un modo migliore di fare le cose.


3
Questo non è così pulito come vorrei che fosse, ma per il software libero, posso solo essere grato che mi abbiano lanciato un osso. Grazie per aver dimostrato questa tecnica. Questo mi porterà sicuramente più vicino a ciò che sto cercando.
Gioele B,

1
Grazie, questo mi ha aiutato a capire la mia simulazione. Ora devo capire come mettere una legenda sulla trama in modo da poter dire quale simulazione è quale.

8

Penso che sia effettivamente possibile eseguire LTSpice dalla riga di comando e far eseguire una simulazione temporanea:

Su windoze:

cd <wherever LTSpice is installed on your computer>
scad3.exe -Run -b MyCircuit.asc

Su Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc

1
Questa è una scoperta eccellente! Ora sto facendo un brainstorming su come posso usarlo per la progettazione automatizzata.
Gioele B

1
@JoelB: sì, è anche quello per cui lo uso. Sfortunatamente ci sono alcune carenze: 1) A differenza della GUI, il solutore funziona a thread singolo, quindi è più lento 2) Non hai alcun "rapporto sui progressi" come nella GUI
blondiepasses del

3

LTSpice può essere eseguito in modalità batch con l'opzione della -briga di comando.

Dal file della Guida di LTSpice:

-b: Esegui in modalità batch. Ad esempio "scad3.exe -b deck.cir" lascerà i dati nel file deck.raw

Come leggere e interpretare l'output .raw viene lasciato come un esercizio per il lettore.

Inoltre, tra le opzioni della riga di comando:

-ascii: usa i file .raw ASCII. Degrada seriamente le prestazioni del programma.


Ma come lo eseguo esattamente? In modalità riga di comando che è. Di solito non sono un utente Windows e non ho idea di come farlo su una macchina Windows.
Tropical_Peach,

1
Non l'ho mai fatto così. Dovrai provarlo tu stesso. Puoi aprire una finestra di comando ('cmd.exe' nel menu Start) o eseguirla da qualsiasi lingua tu stia usando per mettere in sequenza i tuoi test.
The Photon,

Se usi matlab, hanno uno script per convertire i file .raw mathworks.com/matlabcentral/fileexchange/…
Voltage Spike

3

Hai già verificato in " LTSpice Queue Manager "? ( Il link reindirizza al mio sito Web dove è possibile scaricare il software ma non sono il suo autore, che originariamente ha condiviso il programma su un forum oggi chiuso. Condividerlo tramite il mio sito Web è un modo per ripristinarlo ).

Questo strumento mi è stato di grande aiuto in passato. È possibile preparare molti file di simulazione ed eseguirli in una coda.

Gestore code LTSpice


Accodamento non è automazione.
Harry Svensson,

1
Se l'automazione di cui hai bisogno è in coda, sicuramente lo è! Questo risolve direttamente il problema di OP.
Daniel

1
Se questo è un software a sorgente chiuso che non hai scritto, mi aspetterei che gli utenti siano comprensibilmente sospettosi di eseguirlo.
Dave Tweed

1

Se deve essere LT Spice e non riesci a superare la GUI, consiglierei il programma di script AutoIt. L'ho usato per automatizzare alcune applicazioni critiche di Windows che mancavano di active-x-DDE-COM.dll. Puoi impostarlo per attendere file, premere pulsanti di Windows, elementi di menu, chiamare programmi con argomenti, ecc.

Dai un'occhiata a:

http://www.autoitscript.com/site/

http://www.autoitscript.com/forum/

Vorrei andare su Winbatch se si desidera pagare per un programma di script.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.