如何在 LTSpiceIV 中使用具有两个以上参数的 .step 参数

电器工程 香料
2022-01-11 21:35:01

我需要用不同的电阻值(通常称为 R1 和 R2)进行三个瞬态仿真。我的意思是这样的:

  • 辛。1:R1 = 1 k\$\Omega\$,R2 = 10 k\$\Omega\$
  • 辛。2:R1 = 1 M\$\Omega\$,R2 = 10 M\$\Omega\$
  • 辛。3:R1 = 1 k\$\Omega\$,R2 = 1 M\$\Omega\$

如果只有一个电阻的电阻会发生变化,那么我只需将其电阻设置为“{r1}”(我使用小写字母使其成为与 R1 不同的变量/参数)并使用如下命令:

.step param r1 list 1k 1meg 1k

但是,由于我必须每次更改两个参数(一起)两次,我在这里读到(至少在 LTSpiceIV 上)我的问题的解决方法可能是使用这样的东西:

.step param X list 1 2 3

.param r1 = table(X, 1k, 1meg, 1k)

.param r2 = table(X, 10k, 1meg, 10meg)

在进行模拟时,我收到以下警告:

WARNING: Can´t resolve .param r2 = table(X, 10k, 1meg, 10meg)
Select OK to continue the simulation with the default model or Cancel to quit now.

这同样适用于 r1。

出于某种原因,如果我在表格中添加一个额外的元素,模拟不会“中断”。在这种情况下,模拟时间太长,每次都推进得更慢,因为它永远不会结束。我尝试将 X 设置为 0 1 2 而不是 1 2 3,但这也不起作用。

以下是一些图片:

电路+命令

错误信息

您的帮助将不胜感激。

4个回答

在 LTSpice 中,table 命令确实创建了一种字典,您必须在其中指定键值对。然后,您的案例的正确指令将是:

.step param Rx list 1 2 3
.param R1 table(Rx,1,1k,2,1Meg,3,1k)
.param R2 table(Rx,1,10k,2,1Meg,3,10Meg)

并将电阻的值分别设置为{R1}{R2}

如果您想获得附近的电阻值,您也可以输入(而不是值,当右键单击它时)

R=table(Rx,1,10k,2,1Meg,3,10Meg)

进入电阻值字段。这对所有类型的组件都以相同的方式工作,并使用外部脚本创建 .asc 文件,它可以用作缺少蒙特卡罗功能的 LTspices 的拐杖。

一个参数sweep/step可以通过表达式控制多个分量值。

您正在步进的控制变量可以是相位角或时间延迟或您在一个或多个公式/表达式中输入的类似变量,以获得要在设计中作为 {parameter} 应用的结果组件值或参数

如果您想保持关系或控制设计的某些间接物理属性(如电流或滤波器属性),这很有用。

在“op”命令编辑器中,您可以输入如下内容:

.STEP param Imax 0.1 0.3 0.1 
.PARAM Uin= 5
.PARAM R = (Uin-0.84954605)/Imax

它以 0.1 的步长将 Imax 从 0.1 步进到 0.3,并使用参数 Imax、Uin、一些假设的二极管压降 0.85.. 计算电阻值 R。

可以使用 {R} 表示法在组件值中引用 PARAM R。请注意,Uin 可以用作电压源或类似设备中的 {Uin}。

对于“op”编辑器窗口中的多行,使用 CTRL+M 将所有参数保留在同一个文本框中。

这适用于我的电路

.step 参数列表 2 3 4

.param Rf=table(n,1,1.3k,2,1.1k,3,1.2k,4,1k)

.param Cf=table(n,1,54p,1,64p,2,64pF,4,64pF)

因此 Rf 获取当前索引的值(在 .step 指令中定义)因此值表以索引标识符(此处为 n)开始,然后跟随对索引 value 。如果我不使用表中的索引,我会得到与第一篇文章中相同的错误

阅读 LTspice表函数后找到了工作解决方案

经过一番折腾,我发现这个问题有两个方面需要探索。首先,需要指定您希望改变的参数。

例如,如果您的 LTSpice 原理图中有一个电阻器 R5,则 Control-Right 单击该组件以拉出“组件属性”对话框。您可能已经给它一个值,例如 1k0。您需要用您的参数代号替换它;把它放在 {} 括号内,例如 {R5} 然后保存。

为了清楚起见,我使用 {R5} 是为了方便和理解。它可能是 {Pickle1},它仍然可以工作。

现在,当您开始编写脚本时,LT spice 知道您在说什么。

现在您可以开始使用 Spice Directive 对话框(右上角的.op 图标)并输入您的脚本。例如:

.step param Rx 1 5000 100
.param R5=Rx
.param R6=Rx
.op

在此示例中,我想修改两个电阻器(R5 和 R6),以便我可以看到调节器的输出,假设我将值从 1 欧姆更改为 5000 欧姆超过 100 步。我已经调用了参数 Rx:第一行定义了我想要采取的步骤,如上所述。

.step param Rx 1 5000 100

现在我想采用该参数并将其应用于我的组件。我已经在两个组件上完成了组件属性对话框的技巧。请记住,R5 与参数代号有关。如果我使用 {Pickle} 那么该行将显示为:

.param Pickle=Rx

上面脚本中接下来的两行告诉 LTSpice R5 和 R6 的参数应该遵循指定为 Rx 的步骤。

.param R5=Rx
.param R6=Rx

最后是 .op 命令驱动操作。

最终结果是我的电路,除了这两个值处于固定状态之外,现在已经完成,并且在我试图达到的示例中,我可以看到对调节输出的影响。

上面详述的列表示例是实现所需最终结果的另一种方式,但看起来有些评论是因为,就像我的情况一样,不理解你不能在不执行的情况下使用组件指示符{} 事物。LTSpice 不知道你在说什么,直到你做了那一点。

希望解释对其他人有所帮助,这样他们就不会花费三个小时试图弄清楚为什么从这里的示例中提取的代码可能不起作用。