LTSpice自动化


15

我有一个电池供电的升压转换器,除了几种电池类型(各种电压/内部电阻)。由于我正在模拟(相对)大量的运行时间,因此模拟文件变得相当可观,更不用说要花一些时间了。我想使LTSpice自动化,以便可以以编程方式更改组件值,并重新运行仿真并捕获数据(电压或电流之类的值)。我知道:

  • WAV文件可用于从程序输入/输出数据
  • 该程序可以从命令行运行

到目前为止,我最好的选择似乎是将两种选择与我自己的代码/脚本结合使用,以达到我的目标的方式,但是我只是想知道是否已经有更好的方法了。

有没有人使LTSpice自动化,或者是否知道有(为制造商还是由第三方)为其编写的任何自动化API?

理想情况下,我希望有一个求解器,以便为它提供所需的参数,并尝试各种组件值,直到找到满足约束条件的“最佳”解决方案为止。


您的线性FAE说了什么?我先问他们。
Brian Carlton

1
您知道.STEP和.PARAM命令吗?不知道它是否能完全达到您想要的效果,但是如果您有兴趣,我将提供一些示例的答案。
奥利·格拉泽

1
这个问题似乎离题,因为它与电子设计无关。
莱昂·海勒2014年

12
@LeonHeller在什么星球上SPICE不是设计的一部分?
占位符

1
您会发现Monte Carlo选项非常适合此操作。您可以Schmoo不同的参数,它也可以显示变化。LT-Spice可能已被SPICE禁用此功能,而本机支持此功能。从那里开始
占位符

Answers:


15

多次运行仿真并更改多个组件值比更改一个组件要复杂得多(这并不算太糟)

这是更改一个值的概念:

  • 使用最右边的SPICE指令图标添加.param语句,例如电阻值 .param X=R
  • 要使用它,您可以在电阻值中输入{x},然后包括例如.step param X 100 500 50以50的增量在100和500之间步进该值。

例:

步骤示例

结果:

图形

对于多个值,我发现起作用的唯一方法是使用X的值列表并使用table语句。最好用一个示例对此进行最好的解释(在这里阅读所用命令的帮助可能会有所帮助)。但是请注意,表命令语法的格式为table(index,x1,y1,x2,y2,.... xn,yn),将index作为输入,并根据提供的x返回x = index的插值,y对。

在我的模拟之一中,我需要执行12个模拟,同时更改3个不同的组件值,以下是命令:

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

结果:

增益示例

希望您能理解这个想法,也许可以生成一个脚本,当您填写所需的值时,该脚本将生成必要的SPICE命令。或者只是创建一个模板(例如,我刚刚将以上内容复制并粘贴到了几个不同的模拟中并更改了值)

如果你想要的东西上面没有做,那么也许看像NI的Multisim的(我认为它有一些批处理仿真选项,虽然我不知道他们是多么有用),这也可能是有用的问对了LTSpice论坛,看看是否有人知道做事的更好方法。


3
这不像我希望的那样干净,但是对于免费软件,我只能感谢他们把我扔了骨头。感谢您演示此技术。这肯定会使我更接近所需的内容。
Joel B

1
谢谢,这帮助我弄清楚了我的模拟。现在,我必须弄清楚如何在图例上放置图例,以便可以分辨出哪个模拟。

8

我认为实际上可以从命令行运行LTSpice并使其运行瞬态仿真:

在windoze上:

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

在Linux上:

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

1
这是一个很好的发现!我现在正在集思广益,我如何使用它进行自动化设计。
Joel B

1
@JoelB:是的,这也是我用的。不幸的是,有一些缺点:1)与GUI不同,求解器运行单线程,因此速度较慢2)您没有GUI中的任何“进度报告”
Blondiepassesby 2015年

3

LTSpice可以使用-b命令行开关以批处理模式运行。

从LTSpice帮助文件:

-b:以批处理模式运行。例如,“ scad3.exe -b deck.cir”会将数据保留在文件deck.raw中

如何阅读和解释.raw输出留给读者练习。

另请注意,在命令行开关中:

-ascii:使用ASCII .raw文件。严重降低程序性能。


但是我该如何运行呢?在命令行模式下。我通常不是Windows用户,也不知道如何在Windows计算机上执行此操作。
Tropical_Peach

1
我从来没有那样运行过。您必须自己尝试一下。您可以打开命令窗口(“开始”菜单上的“ cmd.exe”),也可以使用用于测试顺序的任何语言运行命令窗口。
Photon

如果您使用MATLAB,他们有一个脚本转换。RAW文件mathworks.com/matlabcentral/fileexchange/...
电压尖峰

3

您是否已经在“ LTSpice队列管理器 ”中进行了检查?(该链接重定向到我自己的网站,您可以在该网站上下载该软件,但我不是它的作者,他最初是在一个今天关闭的论坛上共享该程序的。通过我的网站共享它可以恢复它。)

过去,该工具对我有很大帮助。您可以准备许多模拟文件并以队列方式运行它们。

LTSpice队列管理器


排队不是自动化。
哈里·斯文森

1
如果您需要的自动化排队,那一定是!这直接解决了OP的问题。
丹尼尔(Daniel)

1
如果这是您未编写的开源软件,那么我希望用户对运行它持谨慎态度,这是可以理解的。
戴夫·特威德

1

如果只是LT Spice,而您又无法通过GUI,我建议您使用脚本程序AutoIt。我用它来自动化一些缺少active-x-DDE-COM.dll-的重要Windows应用程序。您可以将其设置为等待文件,按下Windows按钮,菜单项,带有参数的调用程序等。

看一下:

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

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

如果您想为脚本程序付费,我会选择Winbatch。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.