Automatización de LTSpice


15

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

  • Los archivos WAV se pueden usar para ingresar / sacar datos del programa
  • El programa se puede ejecutar desde la línea de comando

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

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

Idealmente, me gustaría tener un solucionador, de modo que le diera los parámetros deseados y probara varios valores de componentes hasta que encontrara la solución "óptima" para mis limitaciones.


¿Qué dijo tu FAE lineal? Les preguntaría primero.
Brian Carlton el

1
¿Conoces los comandos .STEP y .PARAM? No estoy seguro de si lograría exactamente lo que desea, pero publicaré una respuesta con un par de ejemplos si está interesado.
Oli Glaser

1
Esta pregunta parece estar fuera de tema porque no se trata de diseño electrónico.
Leon Heller

12
@LeonHeller en ¿QUÉ planeta es SPICE que no forma parte del diseño?
marcador de posición

1
Encontrarás que las opciones de Monte Carlo se adaptan perfectamente a esto. Puede Schmoo diferentes parámetros y también puede mostrar las variaciones. LT-Spice PUEDE haber deshabilitado esto por SPICE de forma nativa. Comience allí
marcador de posición

Respuestas:


15

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

Aquí está el concepto para cambiar un valor:

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

Ejemplo:

Paso Ejemplo

Resultado:

Grafico

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 (leer la ayuda para los comandos utilizados probablemente será útil aquí). Pero tenga en cuenta que la sintaxis del comando de tabla está en la tabla de formulario (índice, x1, y1, x2, y2, .... xn, yn), toma el índice como entrada y devuelve un valor interpolado para x = índice basado en el x proporcionado , y pares.

En una de mis simulaciones, necesitaba realizar 12 simulaciones mientras cambiaba 3 valores de componentes diferentes, estos son 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:

Ejemplo de ganancia

Esperemos que tenga la idea, tal vez pueda producir un script que produzca los comandos SPICE necesarios cuando complete los valores deseados. O simplemente cree una plantilla (por ejemplo, simplemente copié y pegué lo anterior en algunas simulaciones diferentes y cambié los valores)

Si lo anterior no hace lo que quiere, entonces quizás mire algo como el multisim de NI (creo que tiene algunas opciones de simulación por lotes, aunque no estoy seguro de cuán útiles sean). También puede ser útil preguntar en el LTSPice foro y ver si alguien sabe de una mejor manera de hacer las cosas.


3
Esto no es tan limpio como me gustaría, pero para el software libre, solo puedo estar agradecido de que me arrojaron un hueso. Gracias por demostrar esta técnica. Esto definitivamente me acercará a lo que estoy buscando.
Joel B

1
Gracias, esto me ayudó a descubrir mi simulación. Ahora tengo que descubrir cómo poner una leyenda en la trama para poder decir qué simulación es cuál.

8

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

En ventanas:

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

1
Este es un excelente hallazgo! Ahora estoy pensando cómo puedo usar esto para el diseño automatizado.
Joel B

1
@JoelB: sí, para eso también lo uso. Desafortunadamente, existen algunas deficiencias: 1) A diferencia de la GUI, el solucionador funciona con un solo subproceso, por lo que es más lento 2) No tiene ningún "informe de progreso" como en la GUI
blondiepasses antes del

3

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

Del archivo de ayuda de LTSpice:

-b: Ejecutar en modo por lotes. Por ejemplo, "scad3.exe -b deck.cir" dejará los datos en el archivo deck.raw

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

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

-ascii: utilice archivos ASCII .raw. Degrada gravemente el rendimiento del programa.


Sin embargo, ¿cómo lo ejecuto exactamente? En modo de línea de comando que es. Normalmente no soy un usuario de Windows y no tengo idea de cómo hacer esto en una máquina con Windows.
Tropical_Peach

1
Nunca lo he hecho así. Tendrás que probarlo por ti mismo. Puede abrir una ventana de comandos ('cmd.exe' en el menú Inicio) o ejecutarla desde cualquier idioma que esté utilizando para secuenciar sus pruebas.
The Photon

Si usa matlab, tienen un script para convertir archivos .raw mathworks.com/matlabcentral/fileexchange/…
Voltage Spike

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

Esta herramienta me ha sido de mucha ayuda en el pasado. Puede preparar muchos archivos de simulación y ejecutarlos en forma de cola.

Gestor de colas LTSpice


Hacer cola no es automatización.
Harry Svensson

1
Si la automatización que necesita es hacer cola, ¡ciertamente lo es! Esto aborda el problema de OP directamente.
Daniel

1
Si este es un software de código cerrado que usted no escribió, esperaría que los usuarios sean comprensiblemente recelosos de ejecutarlo.
Dave Tweed

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, presionar botones de ventanas, elementos de menú, llamar a programas con argumentos, etc.

Mira esto:

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

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

Me gustaría ir a Winbatch si quieres pagar por un programa de script.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.