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

发布于:2022-08-06 ⋅ 阅读:(878) ⋅ 点赞:(0)

SIMetrix/SIMPLIS电路仿真软件

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

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

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

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

表达式赋值的方法和步骤

1. 设计原理图

设计要仿真的原理图,原理图中的元件值用大括号{ }中的符号表示,这些符号可以是字母、数字,也可以是数学表达式。如下图中的电容C2用{CT}表示,电感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'

因此仿真前需对这些符合和表达式进行赋值。我们采用命令 .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

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
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到