SCEPTRE:非线性电路仿真
SCEPTRE 是一款自动电路分析程序,能够确定电气网络和动态系统的初始条件、瞬态响应、频率响应和稳态响应。它被认为是工程师的通用工具,可用于辅助各种电路的设计和分析。感兴趣的问题以易于学习的自由格式、面向工程师的语言进行描述。基本网络元件集包括线性和非线性电阻器、电容器、电感器、电压源和电流源以及互感。
此外,SCEPTRE 具有“定义参数”模式,允许其求解状态方程,这些方程可以编写来描述非电气系统。这一卓越的特性允许用户将电气网络与微分方程系统耦合,从而提供了极大的通用性,尤其适用于机电一体化等跨学科问题。
如果感兴趣的问题无法通过内置函数描述,用户可以通过 FORTRAN 程序将其问题描述为最终手段。该程序使用状态变量法。其他亮点包括模型库、具有自动变化网络量的重运行、扩展直流选项(灵敏度、最坏情况、蒙特卡罗、优化)以及用于精确快速求解甚至“刚性”问题的多个积分例程。
为了让初学者了解适应简单但实际的问题所需的输入数据,请考虑图 1 中达林顿对的电路原理图。图 2 显示了电路的 SCEPTRE 版本,其中假设晶体管等效电路 2N706A 已在之前的某个时间存储在模型库中。

图 1. 达林顿对的原理图

图 2. 达林顿对的 SCEPTRE 形式
问题是在标称条件下以及在第一级晶体管的电流增益降低到不同程度后,确定 R3 和 R4 两端的输出电压以及该电路的功率要求。定义参数将用于计算功耗 (PEC, PEIN)。重运行功能适应了降级的 alpha 版本 (P1T1) 所需的额外运行。SCEPTRE 输入如清单 1 所示。
本节介绍电路的准备工作以及电路描述语言的基础知识,以便更好地理解示例。
电路准备
假设用户想要分析电路,应考虑以下步骤
绘制一个等效电路,该电路包含电阻器、电容器、电感器、互感、电压源、电流源或包含这些元件的模型。所有这些元件可以是线性的或非线性的。
为每个节点分配一个任意的字母数字名称。
为电路中的每个元件指定一个唯一的名称,其中第一个字符根据表 1 对元件进行分类。
选择一组一致的参数单位。SCEPTRE 不对元件值假定任何单位集。它直接对用户提供的数字进行操作。出于数值原因,用户应选择一组单位,使解中预期的电压和电流响应尽可能接近于 1。一组一致的单位是同时满足以下方程的单位:U = I R, t = R C = L/R。
在每个无源电路元件中选择一个任意的电流方向,指示每个电流源和电压源中正电流方向。
SCEPTRE 语句在主要标题和副标题下输入。使用的最重要的标题如下
MODEL DESCRIPTION CIRCUIT DESCRIPTION ELEMENTS DEFINED PARAMETERS OUTPUTS FUNCTIONS RERUN DESCRIPTION END
实际问题在主要标题 电路描述 下描述。对于模型的临时定义或永久存储,相应的输入数据放在标题 模型描述 下。重运行描述 标题始终在每次执行重运行功能时使用。对主网络的任何更改都必须出现在此标题下。
电路的网络拓扑必须在副标题 元件 下以通用形式编写
element, fromnode - tonode = value
在互感的情况下
M..., Lname1 - Lname2 = value
值 可以是数字、定义的参数、对表的引用、使用任何固有 FORTRAN 函数的数学表达式、对语句函数的引用或用户定义的 FORTRAN 函数。
受控源(E...、J...)可能取决于任何电路量(线性相关源)。主要用于半导体器件的分析,电流源可能取决于二极管表或内置二极管方程(主要相关电流源),甚至可能取决于其他主要相关电流源(次要相关电流源)。通过这种方式,仿真以经济有效的方式进行。SCEPTRE 确定电路计算的正确顺序,以避免通常由这些非线性引入的计算延迟。受控源将在交流分析中运行,而无需修改。
对于蒙特卡罗、最坏情况和优化计算,电阻器和源可以由边界提供。
数学表达式以两种方式输入。直接方式具有通用形式
X name (mathematical_definition)
当处理仅由单个引用使用的方程时,首选这种方式。对于多个目的使用数学序列,方程形式
Q name (par1, par2, ... ) = ( ... )
是更有效的方式。它充当语句函数,必须在副标题 函数 下输入。
相同的副标题包含表条目。数据以点对形式输入,独立变量按代数递增顺序排列。为了生成阶跃函数,允许提供两个连续的独立变量值,这两个值相等但具有不同的因变量值。
对元件电压和元件电流的引用分别通过在元件名称前加上字符 V 和 I 来完成。这些引用可以用作副标题 输出、表达式、方程、表和定义参数下的输出变量。SCEPTRE 最强大的功能之一是副标题 定义参数 下的用户定义参数。通用形式为
P name = value
其中 value 表示之前提到的可能条目。如果用户指定时间导数
DP name = value
SCEPTRE 计算积分
P name = ò DP name dt
这允许求解不需要耦合到任何网络量的联立微分方程。通过规范替换,可以评估任意阶次的传递函数。因此,副标题 元件 不是强制性的。对于交流分析,定义的参数可以是复数值。
可以在副标题 运行控制 下输入各种运行控制,并用于在很大程度上控制仿真。
仿真
仿真分两个阶段进行。在第一阶段,SCEPTRE 分析输入数据,如果输入语句没有错误,则生成解决网络方程的相应 FORTRAN 子例程。在第二阶段,这些子例程与 SCEPTRE 库中的模块以及最终与用户定义的例程一起编译和链接。最后,要执行的二进制文件仅包含实际问题所需的模块。此外,工作缓冲区也相应地调整大小。
在执行期间,监视实际仿真时间(或交流分析中的频率)以及请求的输出量(无图形),但可以抑制以显着加快仿真速度。结果写入直接访问文件。
提供了一个名为 NGP 的后处理器,它可以读取直接访问文件,并使用户能够选择请求的量。然后,NGP 调用 GNUPLOT 进行最终的图形表示。
尽管表面上看起来很复杂,但要充分利用 SCEPTRE,只需要一个文本编辑器以及两个系统命令来启动仿真和后处理。
程序组织
作者的意图是尽可能保持 SCEPTRE 的组织简单,同时又不失其功能。用于控制所有操作流程的 SCEPTRE 和 NGP 的 shell 脚本保持简单,允许用户根据自己的要求修改它们。NGP 附带源代码。因此,可以将 NGP 适配到 GNUPLOT 以外的图形软件。此外,在每个时间或频率步长之后调用的监视接口例程也以源代码形式提供,并且可以修改以用于在线图形。
要求和可用性
现在可用的 SCEPTRE 版本可以在任何 Linux 内核下运行。它需要 FORTRAN 编译器和 GNUPLOT。不需要 X11 窗口系统。SCEPTRE 的二进制文件,包括库、NGP(源代码)、辅助例程(源代码)、英文和德文文档以及一组示例,可在 ftp://novilux.fh-friedberg.de/pub/sceptre_linux 获取。该存档还包含合适的 GNUPLOT 版本和 FORTRAN 编译器。
SCEPTRE 最初由 IBM Federal Systems Division, Owego, New York 为空军武器实验室, Kirtland AFB, New Mexico 于 1966 年开发(参见参考资料 1-5)。开发工作于 1972 年由 GTE Sylvania, Waltham, Mass. 承担。该程序可以从 AFWL 获取,用于某些大型机。
SCEPTRE 的典型应用是包含半导体器件的电路。这些器件的等效电路具有任何所需的复杂性(参见参考资料 5-8)。
为了展示 SCEPTRE 应用的广泛性,我将展示来自不同领域的两个示例。其他示例包含在文件 ftp://ftp.linuxjournal.com/pub/lj/listings/issue63/3008.tgz 的列表中。
1. 高压脉冲发生器
当最初并联充电的电容器借助火花隙串联连接时,会产生大幅度电压脉冲。图 3 说明了这种 Marx 冲击发生器。为了测试高压设备,例如电力变压器,产生的脉冲形状必须满足某些要求(上升时间和击穿时间)。形状主要受电阻器 RE 和 RD 的影响。为了节省计算时间,第一级和第二级中的电容器 CS 最初通过 初始条件 充电至 EH 的电压(使 EH 变得多余)。
由于各级是相同的,因此使用 模型描述,并且每一级都包含在 电路描述 中的简单语句中。为了避免主电路中元件名称的歧义,SCEPTRE 将模型名称指定为组件名称的后缀(此处为 S1 和 S2)。为了简单起见,火花被恒定电阻 RF 取代,但可以应用任何其他非线性函数。对于此示例,选择的单位集为 kV、A、k 欧姆、nF、mH 和 mus。电容器 CB 上的电压称为 VCB,如图 4 所示。SCEPTRE 输入如清单 2 所示。

图 4. 输出电压 VCB
2. 旋转系统
图 5 显示了一个具有两个自由度的旋转系统。两个轴承,其极惯性矩分别为 J_1 和 J_2,粘性摩擦分别为 c_1 和 c_2,通过弹簧常数 k 的轴耦合。驱动扭矩 M 施加到左轴承。期望找到轴承的角速度 omega_1 和 omega_2 以及轴上的扭矩 M_w。
一种方法是直接推导出机械关系,该关系产生以下微分方程(参见参考资料 3)

使用替换

这组方程可以直接在 定义参数 下输入。
解决此问题的另一种方法是将非电气系统转换为其电气模拟,如图 5 所示。此问题的相应机械和电气模拟如表 2 所示。
清单 3 显示了同时独立地解决这两种方法的 SCEPTRE 输入。引入了定义的参数 PERAB3 以监视等效量 PX3 和 VC1 之间的绝对误差。这些量的时间函数如图 6 所示。在整个仿真过程中,绝对误差 PERAB3 保持小于 1.5E-15。

图 6. 输出电压 VC1 和轴力矩 PX3
从示例中可以看出,SCEPTRE 能够解决广泛应用领域中的问题,并且不限于电气工程。它生成解决方案,而无需用户进行任何实际编程或编写方程。定义的参数模式提供了最大的通用性。避免任何编程开销,要解决的问题仅受用户的聪明才智和经验的限制。
