将SPICE Netlist转换为Simscape块
您可以使用SPICE转换助手将SPICE组件转换为Simscape™等价物。通常这种转换是自动的。但是,由于SPICE是一种丰富的语言,因此不可能在没有人工干预的情况下执行完整的转换。
要将SPICE子电路转换为等效的Simscape组件,请遵循以下步骤。
使用
subcircuit2ssc
函数从SPICE网列表文件生成Simscape语言组件文件。你可以使用可选选项subcircuit1,…,subcircuitN
输入参数以指定要转换的子电路。对生成的Simscape组件文件进行任何必要的手动转换。要识别所需的手动转换,请检查生成的Simscape组件文件开头的注释。你可以使用可选选项
un金宝appsupportedCommands
参数来生成一个结构体
数组,列出每个子电路不支持的SPICE金宝app命令。使用以下命令构建库
ssc_build
或者在模型中添加单独的组件Simscape组件块。
有许多不同的SPICE模拟器,它们在语法和语法解释方面都有所不同。转换助手使用与Cadence相同的语法®如果存在此类差异,则遵循PSpice。
命令
SPICE转换助手支持以下命令:金宝app
.FUNC
-可重复使用功能.PARAM
-可定义参数得閒
—可重用组件参数设置.SUBCKT
——分支电路. lib
-从外部网列表中包含模型的指令. inc
-指令包括外部网列表的内容
转换助手实现.FUNC
使用Simscape函数的SPICE命令。这些函数被放置在名为+
,在那里subcircuit_name
_simscape_functionssubcircuit_name
正在转换的子电路的名称。
指定得閒
电阻器、电容器和电感器的语法,如
.MODEL <型号名称> res(r=<值>).MODEL <型号名称> cap(c=<值>).MODEL <型号名称> ind(l=<值>)
r
,c
,l
值是组件声明中指定值的缩放因子。此行为符合PSpice,但在所有模拟器中并不一致。
属性指定的初始条件,转换助手不会自动转换.IC
声明。但是,可以使用语法为电容器和电感器指定初始条件IC = <值>
.此外,您可以手动转换任何.IC
生成的Simscape组件文件中的语句。
因为转换助手的目的是帮助将SPICE子电路转换为Simscape块、模拟命令等.TRAN
,都被忽略。
数字后缀
转换助手支持这些数字SPICE后缀:金宝app
后缀 | 的名字 | 规模 |
---|---|---|
T |
拉 | 1 e12汽油 |
G |
Giga | 1 e9 |
梅格 |
大型 | 1 e6 |
K |
公斤 | 1 e3 |
米 |
毫 | 1 e - 3 |
密尔 |
-- | 25.4 e-6 |
U |
微 | 1 e-6 |
N |
纳米 | 1 e-9 |
P |
皮科 | 1 e-12 |
F |
毫微微 | 1 e15汽油 |
数学函数
转换助手支持SPICE和Simscape中使用的这金宝app些基本数学函数。这些基本的数学函数可能不是连续的或平滑的,并可能在模拟过程中引起数值问题。为了解决这些问题,这些函数可能需要平滑。
的subcircuit2ssc
函数在转换SPICE子电路时自动开启平滑参数。要禁用平滑选项,在生成的Simscape组件块的块掩码内,设置指定函数平滑参数参数没有
.
小学数学
的名字 | 香料函数 | Simscape函数 |
---|---|---|
绝对值 | 腹肌 |
simscape.function.abs (x,佐) |
最小的元素 | 最小值 |
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,警告) |
八进制数数对数 | log10 |
simscape.function.log10m (x, x0,警告) |
平方根 | √6 |
simscape.function.sqrtm (x,国旗,ε,警告) |
转换助手进行解释日志()
是自然对数,而不是以10为底的对数。并非所有SPICE模拟器在这方面都是一致的,因此请确保此解释与您的SPICE模型一致。
其他
此外,转换助手还支持以下SPICE和Simscape函数:金宝app
的名字 | 香料函数 | Simscape函数 |
---|---|---|
如果条件 | 如果 |
如果其他 |
饱和 | 限制 |
simscape.function.limitm (x, a、b、n,ε) |
电流通过装置 | 我 |
我 |
跨设备电压 | v |
v |
阶跃函数 | stp |
如果x>0, 1否则0结束 |
导数(见限制) | 滴滴涕 |
der |
表格 | 表格 |
simscape.tablelookup ((x1, x2,……xn) (y1, y2,…yn), x,插值=线性外推法=最近的) |
Simscape函数列表
simscape.function.hyp (x,ε)
-功能与正输出
这个函数总是输出一个正值。使用此函数可以防止出现除零等问题。ε
决定过渡的平滑度,是hyp函数时的绝对误差
.x
= 0
当
时,该函数的输出趋向于x
>ε
x
.
simscape.function.abs (x,佐)
-绝对函数
这个函数返回输入参数的绝对值,x
.
您可以通过指定输入参数启用或禁用过零佐
要么真正的
或假
.
simscape.function.expm (x, xl、xh警告)
-指数函数
这个函数返回的是的指数x
,exp (x)
,当x
范围之间xl
而且xh
.否则,它使用边界处梯度匹配的线性外推。
使用此函数可以避免与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,警告)
—以10为基数的对数函数
这个函数返回以10为底的对数x
,log10 (x)
,当x
大于x0
.否则,它使用边界处梯度匹配的线性外推。
的值时使用此函数x
接近0
在模拟。集x0
之间的0
而且1
.
simscape.function.maxm (x, y, n,ε)
-最大功能
该函数返回between的最大参数x
而且y
.输入参数,n
,设置平滑函数的顺序。
论点ε
决定转换的开始,是函数的绝对误差x等于y
.
simscape.function.minm (x, y, n,ε)
-最小函数
这个函数返回between的最小参数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)
SPICE函数simscape.function.powerRational (x, y, 1,0,警告)
SPICE转换助手转换pwr (x, y)
SPICE函数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
,这个函数返回的是tanx
,谭(x)
,当x
等于2π
或-π/ 2
.的ε
参数决定了在这些点上转换的平滑性。
如果国旗
参数是1
,这个函数返回的是tanx
,谭(x)
,当x
范围之间x0
而且x0
.否则,它使用边界处梯度匹配的线性外推。
1 /ε
输出参数允许的最大值是多少y
.
符号
转换助手识别这些SPICE符号:
+
在一行的开头表示从上一行开始的行*
在一行的开头表示整行都是注释;
在一行内表示内联注释的开始
组件
本节中SPICE命令的符号遵循以下规则:
<参数>
指命令行中的必填项<参数> *
指命令行中出现一次或多次的必需项(论点)
命令行中的可选项(论点)*
指命令行中出现0次或多次的可选项
该列表显示了受支持的完整SPICE组件集,以及它们所支持的SPI金宝appCE网列表符号。只能指定得閒
与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 >)
独立电流源
我<名称> < +节点> < - >节点(DC)价值> <我<名称> < +节点> < - >节点exp (< i1 > < i2 > < td1 > < tc1 > < td2 > < tc2 >)我<名称> < +节点> < - >节点脉冲(< i1 > < i2 > < td > < tr > < tf > < pw > < / >)我<名称> < +节点> < - >节点pwl (< < tj > < ij > > *)我<名称> < +节点> < - >节点sffm (< ioff > < iampl > < fc > < mod > <调频>)我<名称> < +节点> < - >节点罪(< ioff > < iampl > <频率> < td > < df >)
电流控制电压源
H<名称> <+节点> <-节点> <电压源名称> <增益> H<名称> <+节点> <-节点> VALUE={<表达式>}H<名称> <+节点> <-节点> POLY(<值>)<电压源名称>* <系数>* H<名称> <+节点> <-节点> TABLE{<表达式>}=<输入值>,<输出值> >* H<名称> <+节点> <-节点> <电压源名称> TABLE=<输入值>,<输出值> >*
电压控制电压源
E<名称> <+节点> <-节点> <+控制节点> <-控制节点> <增益> E<名称> <+节点> <-节点> VALUE={<表达式>}E<名称> <+节点> <-节点>* <系数>* E<名称> <+节点> <-节点>* E<名称> <+节点> <-节点> <+控制节点> <-控制节点> TABLE=< <输入值>,<输出值>>*
电流控制电流源
F<名称> <+节点> <-节点> <电压源名称> <增益> F<名称> <+节点> <-节点> VALUE={<表达式>}F<名称> <+节点> <-节点> POLY(<值>)<电压源名称>* <系数>* F<名称> <+节点> <-节点> TABLE{<表达式>}=<输入值>,<输出值> >* F<名称> <+节点> <-节点> <电压源名称> TABLE=<输入值>,<输出值> >*
电压控制电流源
G<名称> <+节点> <-节点> <+控制节点> <-控制节点> <增益> G<名称> <+节点> <-节点> VALUE={<表达式>}G<名称> <+节点> <-节点>* <系数>* G<名称> <+节点> <-节点>* G<名称> <+节点> <-节点> <+控制节点> <-控制节点> TABLE=< <输入值>,<输出值>>*
行为源(<表达式>不需要出现在大括号{}中)
B<名称> <+节点> <-节点> V=<表达式> B<名称> <+节点> <-节点> I=<表达式>
无源设备
电阻器
R
<+ node> <- node>[型号名称] .MODEL <型号名称> res(R = ) 电容器
C
<+ node> <- node>[型号名称] [IC= ] .MODEL <型号名称> cap(C= ) 电感器
L
<+ node> <- node>[型号名称] [IC= ] .MODEL <型号名称> ind(L = ) 电感耦合
K<名称> <电感器名称> <电感器名称>* <值>
开关
压控开关
S<名称> <+节点> <-节点> <+控制节点> <-控制节点> <型号名称> .MODEL <型号名称> sw(ron=<值>,roff=<值>,vt=<值>,vh=<值>)
电流控制开关
W<名称> <+节点> <-节点> <电压源名称> <型号名称> .MODEL <型号名称> csw(ron=<值>,roff=<值>,it=<值>,ih=<值>)
半导体器件
二极管
D <名称> < +节点> < -节点> <模型名称>(地区)得<模型名称> D (rs = = <价值>,<价值>,n = > <价值,cjo = > <价值,vj = > <值,+ m = > <价值,fc = > <价值,tt = > <价值,revbrk = > <价值,bv = > <价值,ibv = > <值,+ xti = > <价值,如= < >价值)
双极结晶体管(BJT)
NPN型
Q<名称> <集电节点> <基电节点> <发射器节点>[基片节点]<型号名称> <区域> .MODEL <型号名称> npn(bf=<值>,br=<值>,cjc=<值>,cje=<值>,cjs=<值>,+eg=<值>,fc=<值>,ikf=<值>,ikr=<值>,irb=<值>,is=<值>,isc=<值>,+ise=<值>,itf=<值>,mjc=<值>,nc=<值>,ne=<值>,+nf=<值>,nr=<值>,rb=<值>,rbm=<值>,rc=<值>,re=<值>,var=<值>,vjc=<值>,vje = > <价值,vj = > <价值,vtf = > <值,+ xcjc = > <价值,xtb = > <价值,xtf = > <价值,xti = < >价值)
PNP型
Q<名称> <集电节点> <基电节点> <发射器节点>[基片节点]<型号名称> <区域> .MODEL <型号名称> pnp(bf=<值>,br=<值>,cjc=<值>,cje=<值>,cjs=<值>,+eg=<值>,ikf=<值>,ikr=<值>,irb=<值>,is=<值>,isc=<值>,+ise=<值>,itf=<值>,mjc=<值>,nc=<值>,ne=<值>,+nf=<值>,nr=<值>,rb=<值>,rbm=<值>,+tr=<值>,vaf=<值>,var=<值>,vjc=<值>,vje = > <价值,vj = > <价值,vtf = > <值,+ xcjc = > <价值,xtb = > <价值,xtf = > <价值,xti = < >价值)
结场效应晶体管(JFET)
n沟道
J<名称> <排放节点> <门节点> <源节点> <型号名称> [area] .MODEL <型号名称> njf(beta=<值>,cgd=<值>,cgs=<值>,fc=<值>,is=<值>,+lambda=<值>,m=<值>,rd=<值>,rs=<值>,vto=<值>,xti=<值>)
p沟道
J<名称> <漏节点> <门节点> <源节点> <型号名称> [area] .MODEL <型号名称> pjf(beta=<值>,cgd=<值>,cgs=<值>,fc=<值>,is=<值>,+lambda=<值>,m=<值>,rd=<值>,rs=<值>,vto=<值>,xti=<值>)
金属氧化物半导体场效应晶体管
n通道(只支持level-1和level-3)金宝app
M <名称> <排水节点> <门节点> <源节点> <大部分节点> <模型名称> + [L = < >价值][W = < >价值][广告= < >价值],[因为]= > <价值[PD = < >价值][PS = < >价值][”= > <价值]+ [NRS = < >价值][M = < >价值]得<模型名称> nmos (cbd = > <价值,哥伦比亚广播公司(cbs) = > <价值,cgbo = > <价值,cgdo = > <值,+ cgso = > <价值,cj = > <价值,cjsw = > <价值,δ= > <价值,η= > <价值,fc = > <值,+γ= > <价值,是= > <价值,js = > <价值,kappa = > <价值,kp = > <价值,λ= > <值,+ ld = > <价值,水平= > <价值,乔丹= > <价值,mjsw = > <价值,n = > <价值,内夫= > <价值,nfs = > <值,+ nss = > <价值,nsub = > <价值,”= > <价值,nrs = > <价值,pb = > <价值,φ= > <价值,rd = > <值,+ rs = > <价值,rsh = > <价值,θ= > <价值,托克斯= > <价值,tpg = > <价值,ucrit = > <值,+单边= > <价值,uo = > <价值,vmax = > <价值,vto = > <价值,xj = < >价值)
p通道(只支持level-1和level-3)金宝app
M <名称> <排水节点> <门节点> <源节点> <大部分节点> <模型名称> + [L = < >价值][W = < >价值][广告= < >价值],[因为]= > <价值[PD = < >价值][PS = < >价值][”= > <价值]+ [NRS = < >价值][M = < >价值]得<模型名称> pmo (cbd = > <价值,哥伦比亚广播公司(cbs) = > <价值,cgbo = > <价值,cgdo = > <值,+ cgso = > <价值,cj = > <价值,cjsw = > <价值,δ= > <价值,η= > <价值,fc = > <值,+γ= > <价值,是= > <价值,js = > <价值,kappa = > <价值,kp = > <价值,λ= > <值,+ ld = > <价值,水平= > <价值,乔丹= > <价值,mjsw = > <价值,n = > <价值,内夫= > <价值,nfs = > <值,+ nss = > <价值,nsub = > <价值,”= > <价值,nrs = > <价值,pb = > <价值,φ= > <价值,rd = > <值,+ rs = > <价值,rsh = > <价值,θ= > <价值,托克斯= > <价值,tpg = > <价值,ucrit = > <值,+单边= > <价值,uo = > <价值,vmax = > <价值,vto = > <价值,xj = < >价值)
子系统
分支电路
X
[node]* <子电路名称> [PARAMS: < = >*]
手动转换
在生成Simscape组件文件之后,检查每个文件头,寻找有关不受支持的SPICE命令的消息。金宝app例如,转换助手不支持电阻温度系数的实现:金宝app
R1 p n 1k TC=0.01,-0.002
生成的Simscape组件文件包含所有支持的转换,以及这个头,它标识了用于手动转换的电阻的温度系数:金宝app
component test % test %从SPICE网列表自动生成的组件(11-12-2018 09:34:57)。用户应该手动实现以下SPICE命令,以便%实现完整的实现:% R1: tc 0.01 -0.002
subcircuit2ssc
.
寄生的价值观
对于电容器和电感器等无源器件,要在生成的Simscape组件文件中引入寄生值,请设置指定寄生值参数是的.的值电容寄生串联电阻或电感寄生并联电导参数。
限制
网络列表必须是PSpice格式,并且语法正确。转换助手不会检查正确的PSpice语法。
只支持PSpice网络列表语言的一个子集。金宝app但是,在相应的Sims金宝appcape组件文件的顶部标识了不受支持的PSpice命令,以方便手动转换。
要将生成的Simscape组件构建到Simscape块中,参数值必须符合Simscape约束。例如,基本电容器的电容和基本电感的电感必须非零。
转换助手不支持使用SPICE函数的导数,金宝app
滴滴涕
,在函数调用中。