Automação LTSpice

15

Eu tenho um conversor de impulso alimentado por bateria e estou tentando medir a queda máxima de tensão de entrada (bateria) sob várias condições de carga de altas correntes de consumo (diferentes ciclos de trabalho / periodicidades), além de vários tipos de bateria (várias tensões / resistências internas). Como estou simulando uma quantidade de tempo operacional (relativamente) grande, os arquivos de simulação estão ficando bastante substanciais, sem mencionar que demoram um pouco. Gostaria de automatizar o LTSpice para poder alterar os valores dos componentes de forma programática e executar novamente as simulações e capturar dados (valores de coisas como tensão ou corrente). Eu sei disso:

  • Os arquivos WAV podem ser usados ​​para entrada / saída de dados do programa
  • O programa pode ser executado a partir da linha de comando

Até agora, minha melhor opção parece usar uma combinação dessas duas opções, juntamente com meu próprio código / script, de maneira a atingir meus objetivos, mas eu me pergunto se já existe uma maneira melhor.

Alguém automatizou o LTSpice ou sabe se existe algum tipo de API de automação escrita para ele (pelo fabricante ou por terceiros)?

Idealmente, eu gostaria de ter um solucionador, de modo que eu fornecesse os parâmetros desejados e tentei vários valores de componentes até encontrar a solução "ideal" para minhas restrições.

Joel B
fonte
O que o seu FAE Linear disse? Eu perguntaria a eles primeiro.
Brian Carlton
1
Você conhece os comandos .STEP e .PARAM? Não tenho certeza se conseguiria exatamente o que você deseja, mas postarei uma resposta com alguns exemplos, se você estiver interessado.
precisa
1
Esta questão parece estar fora de tópico, porque não se trata de design eletrônico.
Leon Heller
12
@LeonHeller em que planeta o SPICE não faz parte do design?
placeholder
1
Você verá que as opções de Monte Carlo são perfeitamente adequadas para isso. Você pode Schmoo parâmetros diferentes e também pode exibir as variações. LT-Spice PODE ter desabilitado isso pelo SPICE suporta isso nativamente. Comece por aí
espaço reservado

Respostas:

15

Executar uma simulação várias vezes e alterar vários valores de componentes é um pouco mais complicado do que apenas alterar um (o que não é tão ruim)

Aqui está o conceito para alterar um valor:

  • Adicione uma instrução .param usando o ícone da diretiva SPICE na extrema direita, por exemplo, para um valor de resistência .param X=R
  • Para usá-lo, você deve inserir {x} no valor do resistor e incluir, por exemplo, .step param X 100 500 50para escalar o valor entre 100 e 500 em incrementos de 50.

Exemplo:

Exemplo de etapa

Resultado:

Gráfico

Para vários valores, a única maneira que encontrei para trabalhar foi usando uma lista de valores para X e usando a instrução table. Provavelmente, isso é melhor explicado com um exemplo (ler a ajuda dos comandos usados ​​provavelmente será útil aqui). Mas observe que a sintaxe do comando da tabela está na tabela de formulários (índice, x1, y1, x2, y2, .... xn, yn), recebe o índice como entrada e retorna um valor interpolado para x = index com base no x fornecido , y pares.

Em uma das minhas simulações, eu precisava realizar 12 simulações enquanto alterava 3 valores de componentes diferentes, eis os 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:

Exemplo de ganho

Espero que você entenda a idéia, talvez você possa produzir um script que produza os comandos necessários do SPICE ao preencher os valores desejados. Ou apenas crie um modelo (por exemplo, eu apenas copiei e colei o acima em algumas simulações diferentes e alterei os valores)

Se o que foi dito acima não faz o que você deseja, talvez veja algo como o multisim da NI (acho que ele tem algumas opções de simulação em lote, embora não tenha certeza da utilidade delas ). Também pode ser útil perguntar no LTSPice fórum e veja se alguém conhece uma maneira melhor de fazer as coisas.

Oli Glaser
fonte
3
Isso não é tão limpo quanto eu gostaria que fosse, mas, para o software livre, só posso agradecer que eles me jogaram um osso. Obrigado por demonstrar esta técnica. Definitivamente, isso me aproximará do que estou procurando.
Joel B
1
Obrigado, isso me ajudou a descobrir minha simulação. Agora eu tenho que descobrir como colocar uma legenda no enredo para saber qual simulação é qual.
8

Eu acho que é realmente possível executar o LTSpice a partir da linha de comando e executar uma simulação transitória:

No windoze:

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

No Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc
blondiepassesby
fonte
1
Esta é uma excelente descoberta! Agora estou debatendo como posso usar isso para design automatizado.
Joel B
1
@ JoelB: sim, também é para isso que eu o uso. Há, infelizmente, algumas deficiências: 1) Ao contrário do GUI, o solver corre single-threaded, por isso é mais lento 2) Você não tem qualquer "relatório de progresso", como na GUI
blondiepassesby
3

O LTSpice pode ser executado no modo de lote com a -bopção de linha de comando.

No arquivo de ajuda do LTSpice:

-b: executa no modo em lote. Por exemplo, "scad3.exe -b deck.cir" deixará os dados no arquivo deck.raw

Como ler e interpretar a saída .raw é deixado como um exercício para o leitor.

Observe também, entre as opções da linha de comando:

-ascii: use arquivos .raw ASCII. Degrada seriamente o desempenho do programa.

O fóton
fonte
Como exatamente eu o executo? No modo de linha de comando que é. Normalmente, eu não sou usuário de Windows e não tenho idéia de como fazer isso em uma máquina Windows.
Tropical_Peach
1
Eu nunca corri dessa maneira. Você terá que experimentar por si mesmo. Você pode abrir uma janela de comando ('cmd.exe' no menu Iniciar) ou executá-la em qualquer idioma que esteja usando para sequenciar seus testes.
O fóton
Se o seu usando Matlab, eles têm um script para converter arquivos .RAW mathworks.com/matlabcentral/fileexchange/...
Tensão Pico
3

Você já conferiu o " LTSpice Queue Manager "? ( O link é redirecionado para o meu próprio site, onde você pode baixar o software, mas eu não sou o autor, que originalmente compartilhou o programa em um fórum fechado hoje. Compartilhá-lo no meu site é uma maneira de revivê-lo ).

Esta ferramenta foi de grande ajuda para mim no passado. Você pode preparar muitos arquivos de simulação e executá-los em uma fila.

Gerenciador de filas LTSpice

justinmassiot
fonte
Fila não é automação.
Harry Svensson
1
Se a automação de que você precisa está na fila, certamente é! Isso aborda o problema do OP diretamente.
Daniel
1
Se este é um software de código fechado que você não escreveu, eu esperaria que os usuários ficassem compreensivelmente desconfiados de executá-lo.
Dave Tweed
1

Se for necessário apenas o LT Spice e você não conseguir passar pela GUI, eu recomendaria o programa de script AutoIt. Eu o usei para automatizar alguns aplicativos críticos do Windows que estavam sem o active-x-DDE-COM.dll. Você pode configurá-lo para aguardar arquivos, apertar botões do Windows, itens de menu, chamar programas com argumentos, etc.

Dê uma olhada em:

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

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

Eu iria para o Winbatch se você quiser pagar por um programa de script.

Dejvid_no1
fonte