LTSpice Automation

11

Tengo un convertidor elevador alimentado por batería y estoy tratando de medir la caída máxima del voltaje de entrada (batería) en varias condiciones de carga de altas corrientes de corriente (diferentes ciclos de trabajo / periodicidades) además de varios tipos de batería ( varios voltajes / resistencias internas). Ya que estoy simulando una cantidad de tiempo operacional (relativamente) tan grande, los archivos de simulación se están volviendo bastante importantes, sin mencionar que toman un tiempo. Me gustaría automatizar LTSpice para poder cambiar programáticamente los valores de los componentes y volver a ejecutar simulaciones y capturar datos (valores de cosas como voltaje o corriente). Sé que:

  • Los archivos WAV se pueden usar para ingresar / enviar datos desde el programa
  • El programa se puede ejecutar desde la línea de comandos

Hasta ahora, mi mejor opción parece utilizar una combinación de estas dos opciones junto con mi propio código / script de una manera que cumple mis objetivos, pero me pregunto si ya hay una mejor manera de hacerlo.

  

¿Alguien ha automatizado LTSpice o saber si ha habido algún tipo de automatización?   ¿API escrito para ello (ya sea por el fabricante o por terceros)?

Idealmente, me gustaría tener un solucionador, de modo que le di los parámetros deseados y probé varios valores de componentes hasta que encontré la solución "óptima" para mis restricciones.

    
pregunta Joel B

5 respuestas

14

Ejecutar una simulación varias veces y cambiar varios valores de componentes es un poco más complicado que solo cambiar uno (lo que no es tan malo)

Aquí está el concepto para cambiar un valor:

  • Agrega una declaración .param usando el ícono de la directiva SPICE en el extremo derecho, por ejemplo. para un valor de resistencia .param X=R
  • Para usarlo, ingresarías {x} en el valor de la resistencia, luego incluirías, por ejemplo. .step param X 100 500 50 para pasar el valor entre 100 y 500 en incrementos de 50.

Ejemplo:

Resultado:

Para valores múltiples, la única forma en que encontré que funcionaba era usando una lista de valores para X y usando la declaración de la tabla. Probablemente, esto se explica mejor con un ejemplo (la lectura de la ayuda de los comandos utilizados probablemente sea útil aquí). Pero tenga en cuenta que la sintaxis del comando de la tabla está en la tabla de formularios (índice, x1, y1, x2, y2, .... xn, yn), toma el índice como entrada y devuelve un valor interpolado para x = índice basado en la x suministrada , y pares.

En una de mis simulaciones necesitaba realizar 12 simulaciones mientras cambiaba 3 valores de componentes diferentes, aquí están los comandos:

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

Resultado:

Esperamosquetengaslaidea,quizáspuedasproducirunscriptqueproduzcaloscomandosSPICEnecesarioscuandocompleteslosvaloresdeseados.Osimplementecreeunaplantilla(porejemplo,simplementecopiéypeguéloanteriorenunaspocassimulacionesdiferentesycambiélosvalores)

Siloanteriornohaceloquequieres,entoncesquizásmirealgocomoelmultisimdeNI(creoquetienealgunasopcionesdesimulaciónporlotes,aunquenoestoysegurodecuánútilessean)Tambiénpuedeserútilpreguntarenel foro LTSPice y ver si alguien sabe de una mejor manera de hacer las cosas. .

    
respondido por el Oli Glaser
6

Creo que en realidad es posible ejecutar LTSpice desde la línea de comandos y hacer que ejecute una simulación transitoria:

En windoze:

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

En Linux:

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

LTSpice se puede ejecutar en modo por lotes con el interruptor de línea de comando -b .

Desde el archivo de ayuda de LTSpice:

  

-b: Ejecutar en modo batch. P.ej. "scad3.exe -b deck.cir" dejará los datos en el archivo deck.raw

Cómo leer e interpretar la salida de .raw se deja como ejercicio para el lector.

También tenga en cuenta, entre los interruptores de línea de comando:

  

-ascii: Utiliza archivos ASCII .raw. Gravemente se degrada el rendimiento del programa.

    
respondido por el The Photon
3

¿Ya verificaste en " LTSpice Queue Manager "? ( El enlace redirige a mi propio sitio web donde puede descargar el software, pero no soy su autor, quien originalmente compartió el programa en un foro que hoy está cerrado. Compartirlo a través de mi sitio web es una forma de reactivarlo ).

Esta herramienta me ha ayudado mucho en el pasado. Puede preparar muchos archivos de simulación y ejecutarlos en una cola.

    
respondido por el justinmassiot
1

Si solo tiene que ser LT Spice y no puede pasar la GUI, recomendaría el programa de script AutoIt. Lo he usado para automatizar algunas aplicaciones críticas de Windows que carecían de active-x-DDE-COM.dll-lo que sea. Puede configurarlo para esperar archivos, botones de Windows, menuitems, programas de llamadas con argumentos, etc.

Echa un vistazo a:

enlace

enlace

Iría por Winbatch si quieres pagar por un programa de script.

    
respondido por el Dejvid_no1

Lea otras preguntas en las etiquetas