您可以使用SPICE转换助手将SPICE组件转换为Simscape™等同物。这种转换通常是自动的。但是,由于SPICE是一种丰富的语言,不进行一些手动干预并不总是能够执行完整的转换。
按照以下步骤将SPICE子电路转换为等效Simscape组件。
使用subcircuit2ssc
从Spice NetList文件生成Simscape语言组件文件的功能。您可以使用可选的subcircuit1,...,subcircuitn
指定要转换的子电路的输入参数。
对生成的Simscape组件文件进行任何必要的手动转换。要识别所需的手动转换,请检查生成的Simscape组件文件开头的注释。您可以使用可选的un金宝appsupportedCommands
输出参数生成结构体
数组,列出每个子电路不支持的SPICE金宝app命令。
使用以下命令构建库SSC_BUILD.
或者使用Simscape组件块。
有许多不同的SPICE模拟器具有语法和语法解释中的变化。转换助理使用与Cadence相同的语法®如果存在这种差异,则遵循PSpice。
SPICE转换助手支持以下命令:金宝app
.FUNC
——可重用函数
.PARAM
- 可定义的参数
得閒
-可重用组件参数集
.SUBCKT
- Subcircuit.
. lib
-指令从外部网络列表包括模型
. inc
-包含外部网络列表内容的指令
转换助理实现.FUNC
使用Simscape函数的Spice命令。这些功能放在一个名为的包上限+
,在那里subcircuit_name
_simscape_functions.subcircuit_name
被转换的子电路的名称。
指定得閒
电阻、电容和电感的语法,如
.MODELres(r= ) .MODEL cap(c= ) .MODEL ind(l= )
R.
那C
,L.
值是组件声明中指定的值的缩放因子。此行为符合PSpice,但在所有模拟器中并不一致。
转换助理不会自动转换使用指定的初始条件.IC
声明。但是,您可以使用语法为电容器和电感指定初始条件ic =
.此外,您可以手动转换任何.IC
语句来自生成的Simscape组件文件。
因为转换助理的目的是帮助将Spice Subcircuit转换为Simscape块,仿真命令,例如.TRAN
,将被忽略。
转换助手支持这些数字SPICE后缀:金宝app
后缀 | 的名字 | 规模 |
---|---|---|
T. |
拉 | 1 e12汽油 |
G |
Giga | 1E9. |
梅格 |
大型 | 1E6. |
K. |
公斤 | 1E3 |
M. |
毫 | 1 e - 3 |
密尔 |
-- | 25.4 e-6 |
你 |
微 | 1 e-6 |
N. |
纳米 | 1 e-9 |
P. |
微微 | 1 e-12 |
F |
毫微微 | 1 e15汽油 |
转换助理支持Spice和Simscape中使用的这金宝app些基本数学函数。这些基本的数学函数可能不连续或平滑,可以在模拟过程中引起数值问题。要解决这些问题,这些功能可能需要平滑。
这subcircuit2ssc
函数在转换SPICE子电路时自动开启平滑参数。要禁用平滑选项,在生成的Simscape组件块的块掩码中,设置指定函数平滑参数参数没有
.
的名字 | 香料函数 | Simscape函数 |
---|---|---|
绝对值 | ABS. |
simscape.function.abs(x,zc) |
最小的元素 | 最小值 |
simscape.function.minm (x, y, n,ε) |
最大的元素 | 马克斯 |
simscape.function.maxm (x, y, n,ε) |
签名功能 | 胡志明市 |
simscape.function.sign (x,佐) |
的名字 | 香料函数 | Simscape函数 |
---|---|---|
正弦 | 罪 |
罪 |
反正弦 | 印度历的7月 |
simscape.function.asinm (x,警告) |
双曲正弦 | sinh |
simscape.function.sinhm (x, maxAbsX警告) |
余弦 | 因为 |
因为 |
反余弦函数 | 这些“可信赖医疗组织” |
simscape.function.acosm (x,警告) |
双曲余弦 | cosh |
simscape.function.coshm (x, maxAbsX警告) |
切 | 棕褐色 |
simscape.function.tanm (x,国旗,ε,x0,警告) |
逆切 | : |
: |
四象限逆切 | 量化 |
量化 |
双曲正切 | 双曲正切 |
双曲正切 |
的名字 | 香料函数 | Simscape函数 |
---|---|---|
力量 | x * * y 那压水式反应堆(x, y) ,或pwr (x, y) |
simscape.function.powerRational (x, y,国旗,ε,警告) |
指数 | 经验值 |
simscape.function.expm (x, xl、xh警告) |
自然对数 | ln 或日志 |
simscape.function.logm (x, x0,警告) |
基础10对数 | log10 |
simscape.function.log10m(x,x0,warn) |
平方根 | √6 |
simscape.function.sqrtm (x,国旗,ε,警告) |
转换助理进行解释日志()
作为自然对数而不是基于基础10对数。并非所有香料模拟器都在这方面是一致的,因此确保这种解释与您的香料模型一致。
此外,转换助手还支持以下SPICE和Simscape函数:金宝app
的名字 | 香料函数 | Simscape函数 |
---|---|---|
如果条件 | 如果 |
如果别的 |
饱和 | 限制 |
simscape.function.limitm (x, a、b、n,ε) |
电流装置 | 一世 |
一世 |
电压设备 | V. |
V. |
阶跃函数 | stp |
如果x>0,则1 else 0 end |
导数(见限制的) | 滴滴涕 |
der |
表格 | 表格 |
simscape.tablelookup ((x1, x2,……xn) (y1, y2,…yn), x,插值=线性外推法=最近的) |
simscape.function.hyp (x,ε)
-功能与正输出这个函数总是输出一个正值。使用这个函数可以防止被零除法之类的问题。ε
决定了过渡的平滑度,是hyp函数的绝对误差
.X
=0
当
,此功能的输出趋于X
>ε
X
.
simscape.function.abs(x,zc)
——绝对的函数这个函数返回输入参数的绝对值,X
.
您可以通过指定输入参数来启用或禁用零交叉佐
要么真正的
或假
.
simscape.function.expm (x, xl、xh警告)
——指数函数这个函数返回的指数X
那exp (x)
,当X
范围之间xl
和xl
.否则,它使用线性外推与梯度匹配的边界。
使用此函数可避免与exp (x)
对于很小或很大的输入参数。
simscape.function.coshm (x, maxAbsX警告)
- 双曲余弦功能这个函数返回的双曲余弦值X
那cosh (x)
,当X
范围之间-maxabsx.
和maxAbsX
.否则,它使用线性外推与梯度匹配的边界。
使用此函数可避免与cosh (x)
对于较大的负或正输入参数。
simscape.function.sinhm (x, maxAbsX警告)
-双曲正弦函数这个函数返回的是的双曲正弦X
那sinh (x)
,当X
范围之间-maxabsx.
和maxAbsX
.否则,它使用线性外推与梯度匹配的边界。
使用此函数可避免与sinh (x)
对于较大的负或正输入参数。
simscape.function.acosm (x,警告)
-反余弦函数这个函数返回的是的反余弦值X
那这些“可信赖医疗组织”(x)
,因为1≤x≤1
那0.
为x > 1
, π代表x < 1
.这样可以防止对无效输入范围的小数字入侵这些“可信赖医疗组织”(x)
.
simscape.function.asinm (x,警告)
-反正弦函数这个函数返回的反正弦值X
那正如(x)
,因为1≤x≤1
那0.
为x > 1
, π代表x < 1
.这样可以防止对无效输入范围的小数字入侵正如(x)
.
simscape.function.limitm (x, a、b、n,ε)
——限制函数此功能返回X
之间的有限xl
和xh
.输入参数,N.
,设置平滑函数的顺序。
论点ε
确定了转换的开始,并且是函数的绝对误差时X等于任意一个xl
或xh
.
simscape.function.logm (x, x0,警告)
- 自然对数函数此功能返回自然对数X
那日志(x)
,当X
大于x0
.否则,它使用线性外推与梯度匹配的边界。
的值时使用此函数X
达到接近0.
在模拟。集x0
之间的0.
和1
.
simscape.function.log10m(x,x0,warn)
-以10为底的对数函数这个函数返回以10为底的对数X
那log10 (x)
,当X
大于x0
.否则,它使用线性外推与梯度匹配的边界。
的值时使用此函数X
达到接近0.
在模拟。集x0
之间的0.
和1
.
simscape.function.maxm (x, y, n,ε)
——最大的功能这个函数返回之间最大的参数X
和y
.输入参数,N.
,设置平滑函数的顺序。
论点ε
确定了转换的开始,并且是函数的绝对误差时X等于任意一个y
.
simscape.function.minm (x, y, n,ε)
——最小函数这个函数返回之间最小的参数X
和y
.输入参数,N.
,设置平滑函数的顺序。
论点ε
确定了转换的开始,并且是函数的绝对误差时X等于y
.
simscape.function.powerRational (x, y,国旗,ε,警告)
——幂函数幂函数x ^ y
,在那里y
是理性的,带保护的是消极的X
.
如果国旗
参数是0.
,函数返回x ^ y
为
和X
≥0- ( - x)^ y
为
.如果X
< 0国旗
参数是1
将幂函数应用于simscape.function.hyp (x,ε)
.
SPICE转换助手转换压水式反应堆(x, y)
香料函数simscape.function.powerRational (x, y, 1,0,警告)
SPICE转换助手转换pwr (x, y)
香料函数simscape.function.powerRational (x, y, 0, 0,警告)
simscape.function.sign (x,佐)
——符号函数这个函数返回输入参数的signum,X
.
您可以通过指定输入参数来启用或禁用零交叉佐
要么真正的
或假
.
simscape.function.sqrtm (x,国旗,ε,警告)
-平方根函数带输入参数保护的平方根函数。
如果国旗
参数是0.
,此函数返回sqrt (x)
积极X
和-√(- x)
为负X
.如果国旗
参数是1
,将平方根函数应用于simscape.function.hyp (x,ε)
.
simscape.function.tanm (x,国旗,ε,x0,警告)
——正切函数带输入保护的正切函数。
如果国旗
参数是0.
,这个函数返回正切值X
那谭(x)
,当X
等于2π
或-π/ 2
.这ε
参数决定在这些点上过渡的平滑性。
如果国旗
参数是1
,这个函数返回正切值X
那谭(x)
,当X
范围之间x0
和x0
.否则,它使用线性外推与梯度匹配的边界。
1 / epsilon.
输出参数的最大允许值是多少y
.
转换助手识别这些SPICE符号:
+
在一行的开头表示从上一行继续行
*
在一行的开头表示整行都是注释
;
在一行中表示内联注释的开始
本节中SPICE命令的表示法遵循以下规则:
<参数>
指命令行中的必需项
<参数> *
指一个或多次发生的命令行中所需的项目
(论点)
指命令行中的可选项
(论点)*
指命令行中出现零次或多次的可选项
此列表显示了全套支持的Spice组件,以及他们支持的Spice 金宝appNetList符号。您只能指定得閒
参数与SPICE默认值不同。
独立电压源
V <名称> < +节点> < - >节点(DC) <价值> V <名称> < +节点> < - >节点exp (< v1 > < v2 > < td1 > < tc1 > < td2 > < tc2 >) V <名称> < +节点> < - >节点脉冲(< v1 > < v2 > < td > < tr > < tf > < pw > < / >) V <名称> < +节点> < - >节点pwl (< < tj > < vj > > *) V <名称> < +节点> < - >节点sffm (< voff > < vampl > < fc > < mod > <调频>)V <名称> < +节点> < - >节点罪(< voff > < vampl > <频率> < td > < df >)
独立电流源
i<+ node> < - node> [dc] i <+ node> < - node> exp( )I <+节点> < - node>脉冲( )i <+ node> < - node> pwl(<< tj> > *)i <+节点> < - node> sffm( )i <+ node> <- 节点> SIN( ) 电流控制电压源
H <名称> < +节点> < -节点> <电压源名称> <增加> H <名称> < +节点> < - >节点值={<表达式>}H <名称> < +节点> < - >节点聚(< >价值)<电压源名称> * <系数> * H <名称> < +节点> < - >节点表{<表达式>}= < <输入值>,<输出值> > * H <名称> < +节点> < -节点> <电压源名称>表= < <输入值>,<输出值> > *压控电压源
E<+ node> <- node> <+ control node> <- node> E <+ node> <- node> VALUE={ } E <+ node> <- node b> POLY(< VALUE >) <<+ control node> <- control node>>* * E <+ node> <- node> TABLE { }=< ,<输出值> >* E <+节点> <-节点> <+控制节点> <-控制节点> TABLE=< <输入值>,<输出值> >* 电流控制电流源
F <名称> < +节点> < -节点> <电压源名称> <增加> F <名称> < +节点> < - >节点值={<表达式>}F <名称> < +节点> < - >节点聚(< >价值)<电压源名称> * <系数> * F <名称> < +节点> < - >节点表{<表达式>}= < <输入值>,<输出值> > * F <名称> < +节点> < -节点> <电压源名称>表= < <输入值>,<输出值> > *压控电流源
G<+ node> <- node> <+ control node> <- node> G <+ node> <- node> VALUE={ } G <+ node> <- node b> POLY(< VALUE >) <<+ control node> <- control node>>* * G <+ node> <- node> TABLE { }=< ,<输出值> >* G <+节点> <-节点> <+控制节点> <-控制节点> TABLE=< <输入值>,<输出值> >* 行为源(<表达式>不需要出现在大括号{}中)
B<+ node> <- node> V= B <+ node> <- node> I= 无源设备
电阻器
R<+ node> <- node> [model name] .MODEL res(R = ) 电容器
C<+ node> <- node> [model name] [IC= ] .MODEL cap(C= ) 电感器
l<+ node> < - node> [型号名称] [ic = ] .model ind(l = ) 电感耦合
K<感应器名称> <感应器名称>* 开关
压控开关
s<+ node> < - node> <+控制节点> < - 控制节点> <型号名称> .model <型号名称> sw(ron = ,roff = ,vt = ,vh = ) 电流控制开关
w<+ node> < - node> <电压源名称> <型号名称> .model <型号名> csw(ron = ,roff = ,它= ,ih = <价值>) 半导体器件
二极管
d<+ node> < - node> <型号名称> [区域] .model <型号名称> d(is = ,rs = ,n = ,cjo = ,vj = ,+ m = ,fc = ,tt = ,revbrk = ,bv = ,ibv = ,+ xti = ,例如= <值>) 双极结晶体管(BJT)
NPN型
Q[substrate node] .MODEL npn(bf= , br= , cjc= , cjs= , +eg= , fc= , ikf= , ikr= , irb= , is= , isc= , +ise= , itf= , mjc= , mje= , mjs= , nc= ,)= > <值,+ nf = > <价值,nr = > <价值,rb = > <价值,遏制= > <价值,rc = > <价值,re = > <价值,tf = > <值,+ tr = > <价值,vaf = > <价值,var = > <价值,vjc = > <价值,vje = > <价值,vj = > <价值,vtf = > <值,+ xcjc = > <价值,xtb = > <价值,xtf = > <价值,xti = < >价值) PNP型
Q[substrate node] .MODEL pnp(bf= , br= , cjc= , cce = , cjs= , +eg= , fc= , ikf= , ikr= , irb= , is= , isc= , +ise= , itf= , mjc= , mje= , mjs= , nc= ,)= > <值,+ nf = > <价值,nr = > <价值,rb = > <价值,遏制= > <价值,rc = > <价值,re = > <价值,tf = > <值,+ tr = > <价值,vaf = > <价值,var = > <价值,vjc = > <价值,vje = > <价值,vj = > <价值,vtf = > <值,+ xcjc = > <价值,xtb = > <价值,xtf = > <价值,xti = < >价值) 结场效应晶体管(JFET)
n沟道
[area] .MODELnjf(beta= , cgd= , cgs= , fc= , is= , +lambda= , m= , n= , rd= , rs= , vto= , xti= ) p沟道
[area] .MODELpjf(beta= , cgd= , cgs= , fc= , is= , +lambda= , m= , n= , rd= , rs= , vto= , xti= ) 金属氧化物半导体场效应晶体管
N-Channel(仅支持1级和3级)金宝app
Mp通道(仅支持1级和3级)金宝app
m<漏极节点> <门节点> <源节点> <批量节点> <型号名称> + [l = ] [w = ] [ad = ] [AS = ] [pd = ] [ps = ] [nrd = ] + [nrs = ] [m = ] .model <型号名称> PMOS(CBD = , cbs= , cgbo= , cgdo= , +cgso= , cj= , cjsw= , delta= , eta= , fc= , +gamma= , is= , js= , kappa= , kp= , lambda= , +ld= , level= , mj= , mjsw= , n= , neff= , nfs= , +nss= , nsub= , nrd= , nrs= , pb= , phi= , rd= , +rs= , rsh= , theta= , tox= , tpg= , ucrit= , +uexp= , uo= , vmax= , vto= , xj= ) 子系统
亚韵序列
X[node]* [PARAMS: < = >*] 执行手工转换
生成Simscape组件文件后,检查每个文件头,以查看有关不受支持的SPICE命令的消息。金宝app例如,转换助手不支持实现电阻的温度系数:金宝app
R1 p n 1k TC=0.01,-0.002生成的Simscape组件文件包含所有支持的转换,以及这个头文件,它标识了用于手动转换的电阻的温度系数:金宝app
要完成转换,请修改Simscape组件文件以实现丢失的组件。有关执行手动转换和此特定方案的更多信息,请参阅component test % test %从SPICE网络列表中自动生成的组件(11- 12 -2018 09:34:57)。用户应该手动执行以下SPICE命令,以实现一个完整的实现subcircuit2ssc
.寄生的价值观
对于无源器件,如电容器和电感,要在生成的Simscape组件文件中引入寄生值,设置指定寄生毒性值参数是的.的值电容寄生串联电阻或电感寄生并联电导参数。
限制
网表必须以PSpice格式书写,并且语法正确。转换助手不检查正确的PSpice语法。
仅支持PSPICE NetList语言的子集。金宝app但是,在相应的Sims金宝appcape组件文件的顶部识别不支持的PSPICE命令,以促进手动转换。
要将生成的Simscape组件构建到Simscape块中,参数值必须符合Simscape约束。例如,基本电容器的电容和基本电感的电感必须是非零。
转换助手不支持使用派生的SPICE函数,金宝app
滴滴涕
,在函数调用中。另请参阅
相关的话题