You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpice中PieceWiseLinearVoltageSource的正确使用及NameError报错解决求助

PySpice中PieceWiseLinearVoltageSource的正确使用及NameError报错解决求助

你好!看起来你遇到的问题主要分两部分:PieceWiseLinearVoltageSource的导入问题,以及组件调用和电路搭建的细节问题,我来一步步帮你解决:

一、先解决NameError: name 'PieceWiseLinearVoltageSource' is not defined报错

这个报错的核心原因是你没有正确导入这个电压源类——它并不是Circuit对象的内置方法,需要从PySpice的对应模块中单独导入。根据PySpice的版本,你可以尝试以下两种导入方式:

# 方式一(较新版本常用)
from PySpice.Spice.Component import PieceWiseLinearVoltageSource

# 方式二(旧版本可能需要)
from PySpice.Spice.NgSpice.Shared import PieceWiseLinearVoltageSource

如果第一种导入失败,就换第二种试试;如果还是不行,建议更新PySpice到最新稳定版:pip install --upgrade PySpice

二、正确调用PieceWiseLinearVoltageSource

你之前的调用方式有误,官方示例里是把circuit作为第一个参数传入,而不是直接用circuit.PieceWiseLinearVoltageSource()(因为它不是Circuit的成员方法)。正确的调用格式如下:

PieceWiseLinearVoltageSource(
    circuit,          # 你的电路对象
    'pwl_source',     # 给这个电源起个名字(随便取,唯一就行)
    'in',             # 电源正极连接的节点
    circuit.gnd,      # 电源负极连接的节点(这里用电路的接地端)
    values=[(0, 0), (10@u_ms, 0), (11@u_ms, 5@u_V), (20@u_ms, 5@u_V)]
)

三、修正你电路代码里的其他小问题

你的代码里还有两个影响运行的细节问题:

  • 变量out没有定义,需要把它改成字符串形式的节点名(比如'out');
  • 电路节点要保持一致:你之前的PWL电源接的是'1'节点,但电阻接的是'in'节点,这里要统一,避免节点不连通。

完整可运行示例代码

把以上修正整合后,完整的代码应该是这样的:

from PySpice.Spice.Circuit import Circuit
from PySpice.Unit import u_ms, u_V, u_Ω, u_nF
# 导入PWL电压源
from PySpice.Spice.Component import PieceWiseLinearVoltageSource

# 创建电路实例
circuit = Circuit('Complete Circuit Diagram')

# 添加分段线性电压源
PieceWiseLinearVoltageSource(
    circuit,
    'pwl1',
    'in',          # 正极接'in'节点
    circuit.gnd,   # 负极接地
    values=[(0, 0), (10@u_ms, 0), (11@u_ms, 5@u_V), (20@u_ms, 5@u_V)]
)

# 添加电阻和电容,节点名称保持一致
circuit.R('Sh1', 'in', 'out', 10000@u_Ω)
circuit.C(1, 'in', circuit.gnd, 10@u_nF)

# 执行瞬态仿真(示例)
simulator = circuit.simulator(temperature=25, nominal_temperature=25)
# 仿真时间步长0.1ms,总时长30ms(覆盖电源的所有变化阶段)
analysis = simulator.transient(step_time=0.1@u_ms, end_time=30@u_ms)

# 可以查看仿真结果,比如打印'in'节点的电压
print("节点'in'的电压变化:")
print(analysis['in'])

额外提示

  • 如果你需要可视化仿真结果,可以搭配Matplotlib来绘制电压曲线;
  • values参数里的每个元组是(时间, 电压),确保时间和电压的单位统一(你用@u_ms、@u_V的方式是正确的)。

备注:内容来源于stack exchange,提问作者RM1500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 11:28:08