亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

SPICE 怪癖

“垃圾进,垃圾出。” ——匿名

SPICE 是一款非常可靠的软件,但它确实有一些需要一些时间来适应的小怪癖。我所说的“怪癖”是指要求用户以特定方式编写源文件,以便它能够正常工作而不会给出错误消息。

没有 意味着 SPICE 的任何类型的错误都会产生错误或误导性的结果:这将更恰当地称为“错误”。说到错误,SPICE 也有一些。

这些怪癖中的一些(或全部)可能是 SPICE 2g6 版所独有的,这是我广泛使用的唯一版本。它们可能已在以后的版本中修复。

好的开始

SPICE 要求源文件的开头不是电路描述“deck”中的第一个“card”。源文件中的第一个字符可以是换行、标题行或注释:必须有某些东西 在文件的第一个指定组件的行之前。

如果不是,SPICE将完全拒绝做分析,声称“deck”中存在严重错误(如节点连接不当)。

美好的结局

SPICE 要求 .end 源文件末尾的行不以换行符或回车符终止。换句话说,当你完成输入“.end ”你不应该点击[Enter] 键盘上的键。

文本编辑器上的光标应立即停在“.end”之后的“d”右侧 ”,不要再往前走了。不注意这个怪癖将导致“缺少 .end 卡片 ” 分析输出结束时的错误信息。

实际电路分析不受此错误影响,因此我通常会忽略该消息。但是,如果您希望获得“完美”的输出,则必须注意这种特质。

必须有一个节点0

您在编号电路节点方面有很大的自由度,但您必须 在您的网表中的某处有一个节点 0,以便 SPICE 工作。节点 0 是电路接地的默认节点,它是单个节点位置指定的所有电压的参考点。

当 SPICE 执行简单的直流分析时,输出将包含电路中所有非零节点的电压列表。所有这些电压读数的参考点(地)是节点 0。例如:

节点电压 节点电压 ( 1) 15.0000 ( 2) 0.6522 

在此分析中,节点 1 和地(节点 0)之间存在 15 伏的直流电压,节点 2 和地(节点 0)之间存在 0.6522 伏的直流电压。在这两种情况下,节点 0 相对于另一个节点的电压极性为负(换句话说,节点 1 和 2 都相对于节点 0 为正)。

避免开路

SPICE 无法处理任何类型的开路。例如,如果您的网表指定了一个带有开路电压源的电路,SPICE 将拒绝执行分析。

在将电压源“连接”到电压相关源(用于模拟运算放大器)的输入端时,会发现此类错误的一个主要示例。 SPICE 需要看到完整的电流路径,所以我通常会连接一个高值电阻(称之为 rbogus !) 跨电压源充当最小负载。

避免某些组件循环

SPICE 无法处理电路中某些组件的不间断循环,即电压源和电感器。以下循环将导致 SPICE 中止分析:

网表 l1 2 4 10m l2 2 4 50m l3 2 4 25m 

网表 v1 1 0 dc 12 l1 1 0 150m 

网表 c1 5 6 33u c2 6 7 47u 

SPICE 无法处理这些情况的原因源于它执行 DC 分析的方式:将所有电感器视为短路,将所有电容器视为开路。由于短路(0 Ω)和开路(无穷大电阻)包含或产生数学无穷大,计算机根本无法处理它们,因此如果出现任何这些情况,SPICE 将停止分析。

如何处理SPICE中的电感和电容

为了使这些元件配置为 SPICE 所接受,您必须在适当的位置插入适当值的电阻,从而消除相应的短路和开路。如果需要串联电阻,选择一个非常低的电阻值。

相反,如果需要并联电阻,则选择非常高的电阻值。例如:

要解决并联电感器问题,请在每个有问题的电感器上串联一个非常低值的电阻器。

原始网表 l1 2 4 10m l2 2 4 50m l3 2 4 25m 
固定网表 rbogus1 2 3 1e-12 rbogus2 2 5 1e-12 l1 3 4 10m l2 2 4 50m l3 5 4 25m 

与前面使用并联电感器的示例一样,重要的是使校正电阻器 (Rbogus) 的电阻非常低,以免对电路操作产生实质性影响。

要修复串联电容器电路,其中一个电容器必须有一个电阻分流器。 SPICE 需要一个直流电流路径到每个电容器进行分析。

原始网表 c1 5 6 33u c2 6 7 47u 
固定网表 c1 5 6 33u c2 6 7 47u rbogus 6 7 9e12 

9 Tera-ohms 的 Rbogus 值为 C1(和 C2 周围)提供了直流电流路径,而不会显着影响电路的运行。

电流测量

虽然在 SPICE 中电压的打印或绘图非常容易,但电流值的输出有点困难。通过声明适当的电路节点来指定电压测量。

例如,如果我们想知道引线连接在节点 4 和 7 之间的电容器两端的电压,我们可能会写出 .print 语句看起来像这样:

c1 4 7 22u .print ac v(4,7) 

但是,如果我们想让 SPICE 测量当前 通过那个电容器,它不会那么容易。 SPICE 中的电流必须与电压源相关,而不是任何任意组件。例如:

c1 4 7 22u vinput 6 4 ac 1 sin .print ac i(vinput) 

这个.print 卡指示 SPICE 打印通过电压源 Vinput 的电流,这恰好与通过节点 4 和 7 之间电容器的电流相同。但是如果我们的电路中没有这样的电压源作为电流测量的参考呢?

一种解决方案是在电路中插入一个分流电阻器并测量其两端的电压。在这种情况下,我选择了 1 Ω 的分流电阻值,以通过 C1 产生 1 伏/安培的电流:

c1 4 7 22u rshunt 6 4 1 .print ac v(6,4) 

然而,在我们的电路中插入一个足够大的额外电阻以降低预期电流范围内的有意义的电压可能会对事情产生不利影响。一个更好的 SPICE 解决方案是这样的,尽管在现实生活中人们永远不会寻求这样的电流测量解决方案:

c1 4 7 22u vbogus 6 4 dc 0 .print ac i(vbogus) 

插入零伏的“虚假”直流电压源根本不会影响电路运行,但它为 SPICE 提供了一个方便的地方进行电流测量。有趣的是,当我们要测量交流电流时,Vbogus 是直流电源并不重要!

SPICE 将输出交流电流读数的事实由“ac.print 中的规范 卡,仅此而已。还应该注意的是,SPICE 为电流测量分配极性的方式有点奇怪。以如下电路为例:

示例 v1 1 0 r1 1 2 5k r2 2 0 5k .dc v1 10 10 1 .print dc i(v1) .end 

总电压为 10 伏,总电阻为 10 kΩ,您可能希望 SPICE 告诉您将有 1 mA (1e-03) 的电流通过电压源 V1,但实际上,SPICE 将输出一个负值 1 毫安 (-1e-03)! SPICE 将直流电压源负端(法线方向)流出的电流视为电流的负值而不是电流的正值。

有时我会在像这样的直流电路中加入“虚假”电压源,只是为了让 SPICE 输出正极 当前值:

示例 v1 1 0 r1 1 2 5k r2 2 3 5k vbogus 3 0 dc 0 .dc v1 10 10 1 .print dc i(vbogus) .end 

注意 Vbogus 的位置,以便电路电流进入其正极(节点 3)并退出其负极(节点 0)。这种取向将确保电路电流的正输出值。

傅立叶分析

在对波形执行傅立叶(频域)分析时,我发现有必要使用 .print 打印或绘制波形 或 .plot 卡,分别。如果不打印或绘图,SPICE 会在分析过程中暂停片刻,然后在输出“初始瞬态解”后中止作业。

此外,在分析由“脉冲”产生的方波时 ” source 函数,你必须给波形一些有限的上升和下降时间,否则傅里叶分析结果会不正确。出于某种原因,具有零上升/下降时间的完美方波会产生显着的偶数 谐波根据 SPICE 的傅立叶分析选项计算,这不适用于实际方波。


工业技术

  1. 如何构建 Google 搜索自动完成
  2. SPICE 简介
  3. SPICE 的历史
  4. SPICE 编程基础
  5. 命令行界面
  6. 电路组件
  7. 实际注意事项 - 数字通信
  8. SPICE 中的半导体器件
  9. JFET 怪癖
  10. IGFET 怪癖
  11. 电路的计算机模拟
  12. 太阳能车道灯到 MSP430 无线传感器节点