• SIMetrix 8.30 电路仿真软件用表达式为元器件值赋值的方法


    SIMetrix/SIMPLIS电路仿真软件

    SIMetrix/SIMPLIS为一款结合速度与精度的模拟电路仿真软件,SIMetrix基于SPICE模型,可精确仿真瞬态;而SIMPLIS则是对器件进行分段线性建模,将一个完整的系统定义成完整的线性电路拓扑循环序列,因此可获得很高的速度。

    表达式为元器件值赋值的优点

    用SIMetrix/SIMPLIS仿真软件进行电路仿真时经常需要多次修改元器件参数的值,而且很多元件的参数之间具有关联性,一些元件的参数值依赖于其他元件的参数值。这样每次修改都需要用计算器重新进行计算,十分麻烦。

    其实可以将元件的值写成表达式,用这些表达式表示元件之间的关联性,并在仿真前将基本元件进行赋值,本文讲述了实现用表达式进行元件参数赋值的方法和步骤。

    表达式赋值的方法和步骤

    1. 设计原理图

    设计要仿真的原理图,原理图中的元件值用大括号{ }中的符号表示,这些符号可以是字母、数字,也可以是数学表达式。如下图中的电容C2用{CT}表示。而对于电感L2, L3, L4, 他们的参数值依赖于参数LT、 LR、k,例如,电感 L2 用表达式 {LT-ksqrt(LTLR)} 表示其依赖关系。
    要仿真的原理图
    由于这些符号、表达式并不是元器件真正的值,仿真时会出错:

    *** ERROR *** Instance 'R4', parameter 'resistance': Cannot evaluate expression 'R_load'
    Unknown parameter 'R_load'
    
    *** ERROR *** Instance 'R3', parameter 'resistance': Cannot evaluate expression 'RR'
    Unknown parameter 'RR'
    
    *** ERROR *** Instance 'R2', parameter 'resistance': Cannot evaluate expression 'RT'
    Unknown parameter 'RT'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    因此仿真前需对这些符合和表达式进行赋值。我们采用命令 .PARAM在命令行中进行赋值。

    2. 打开命令行窗口

    Simulate->Open/Close Command(F11)Window F11打开命令行窗口
    打开命令行窗口

    3. 在命令行窗口为元器件值赋值

    .PARAM CT 	109p
    .PARAM RT	1
    .PARAM LT	4.9u
    .PARAM LR	2.25u
    .PARAM RR	2
    .PARAM CR	220p
    .PARAM R_load	25 
    .PARAM k 0.1
    .simulator DEFAULT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4. 仿真

    Simulator – Choose Analysis – AC进入下图页面,设置扫描频率

    在这里插入图片描述
    选择Enable multi-step 点击Define… 进入下一页面

    在这里插入图片描述
    在Parameters name 中输入R_load,设置从5-25欧姆中的5个值,对应不同的曲线

    点击Simulator–Run Schematic, 得到如下仿真结果的波形图
    在这里插入图片描述

    5. 观察自动生成的design.net文件

    打开自动生成的design.net文件,发现通过命令设置的元件参数的语句被自动生成到该文件中。如下代码中的最后8行

    *#SIMETRIX
    V1 V1_P 0 AC 1 0
    R2 R2_P C2_P {RT}
    R3 R3_P L3_N {RR}
    R4 C3_P 0 {R_load}
    L2 R2_P L2_N {LT-k*sqrt(LT*LR)}   
    L3 L2_N L3_N {LR-k*sqrt(LT*LR)}   
    X$H2 H2_P 0 V1_P H2_CN H2$TP_CCVS params: gain=1 pinnames: P N CP CN
    .subckt H2$TP_CCVS 1 2 3 4
    H1 1 2 V1 {gain} 
    V1 3 4
    .ends
    L4 L2_N 0 {k*sqrt(LT*LR)}   
    C2 C2_P H2_CN {CT}   
    C3 C3_P R3_P {CR}   
    .KEEP V1_P H2_P
    .GRAPH "mag(:V1_P/:H2_P)" Curvelabel="Gain" nowarn=true yunit="V/V" complete=True analysis="ac" ylog=lin xlog=auto  ydelta=20 persistence=-1 colourname=Probe2_bode_color     axisname=bodemag  order=1    userid=Probe2$GAIN. MeasureSpec="Gain\sCrossover\sFrequency\s(dB\sPlot)|0|0|0|0!Gain\sMargin\s(dB\sPlot)|0|0|0|0"
    .post_process probe_measure Probe2$GAIN. Gain\sCrossover\sFrequency\s(dB\sPlot)|0|0|0|0!Gain\sMargin\s(dB\sPlot)|0|0|0|0
    .GRAPH "ph(:V1_P/:H2_P)" Curvelabel="Phase" nowarn=true yunit="degrees" complete=True analysis="ac" ylog=lin xlog=auto  ydelta=45 persistence=-1 colourname=Probe2_bode_color   axistype=grid  axisname=bodephase  order=0    userid=Probe2$PHASE. MeasureSpec="Phase\sMargin\s(Phase\sPlot)|0|0|0|0"
    .post_process probe_measure Probe2$PHASE. Phase\sMargin\s(Phase\sPlot)|0|0|0|0
    .tran 1m
    .ac lin 1k 5500000 8500000 Sweep single param=R_load lin 5 5 25
    .PARAM CT 	109p
    .PARAM RT	1
    .PARAM LT	4.9u
    .PARAM LR	2.25u
    .PARAM RR	2
    .PARAM CR	220p
    .PARAM R_load	25 
    .PARAM k 0.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    LeetCode——最大子数组和(中等)
    day2:算法之美|打开算法之门与算法复杂性
    Java- Object根父类
    【论文速读】Scene Text Telescope: Text-Focused Scene Image Super-Resolution
    【AIGC】图片生成的原理与应用
    Angular核心-父子间组件传递数据-重难点
    Elasticsearch:painless script 语法基础和实战
    重生之我是一名程序员 33
    SpringBoot整合Spring Security【超详细教程】
    VisualAssistX无法加载,加载问题异常解决
  • 原文地址:https://blog.csdn.net/johnboat/article/details/126190509