SaberMAST要点归纳_第1页
SaberMAST要点归纳_第2页
SaberMAST要点归纳_第3页
SaberMAST要点归纳_第4页
SaberMAST要点归纳_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MASTte mp late 是.sin oMASTte mp late的基本格式包括以下几个部分:MAST可以描述以下三类系统,每一类系统的模型写法各不相同。(1) 连续模拟系统(continuousanalogsystems)在仿真连续模拟系统时仿真器按照仿真时刻反复求解一系列代表仿真模型的微分方程。此类系统的每一个节点(node )都包括两个系统变量 (systemvariable) ,一个 across 量和一个 through量,通常每个量都与一个单位( unit ) 关联,在 cosmosscope中显示波形时可以显示相应单位。以电气模型为例,每一个节点都包括一个across量(电

2、压)和一个though 量(电流),单位分别是V和Ao连续模拟系统还包括液压系统和磁路系统。(2) 事件驱动系统(eventdrivensystems)此类系统的典型代表是数字逻辑系统,仿真器只有在事件发生时(如输入量发生变化)才计算并更新各个输出。此类系统的节点只 包含一个无单位量。(3) 数据流系统(dataflowsystems)此类模型的典型代表是控制系统,和连续模拟系统类似,可以按照时域或频域仿真,但是严格区分输入量和输出量,节点只包含一 个无单位量。2.MAST 基本概念2 . 1MASTtemplate基本形式是用MAST语言描述一个仿真模型的基本单位。MASTtemplate是

3、按照特定的语法编写的纯文本文件,后缀值得注意的是等号左边的各个名称不需要用逗号(,)分隔,而等号右边必须用逗号分隔各个参数。(1)te mpl ateheader-声明 tempi ate的名称(reference ),管脚(pin )和参数(argument ) 基本形式如下:=ARG1,ARG2,ARG3 temp lateTE MP LATE_NAME PIN1 PIN2 PIN3PIN DECLARATIONARG DECLARATION容易看出templateheader 由关键字template开始,后面紧跟template 的名称,再接下来是管脚(pin )的名称,然后是一个等号

4、(=),接下来是参数名、(2)templateheaderdeclaration-对pin和argument类型的进行声明MAST 的所有变量在使用前都必须声明其类型。第一行的模板参数声明以后是管脚的类型声明和参数类型声明。形式如下:PIN_TYPEPIN_NAMEARG_TYPEARG_NAME管脚( pin )的类型根据 template 的类型可以定义为 electrical (电气模型)、 input/output (控制系统模型)和 state (数字 系统模型)等。参数( argument )类型通常为无单位简单量number 。例 2-1 理想电流源templateisource

5、pm=iselectricalp,mnumberisequationsi(p->m)+=is对于参数较多较复杂的模型可以将参数分类,再将同一类的参数定义为一个结构(struct )(3)tem pl atebody-对模型的行为进行描述结构化 (structured) 的模型包含本地变量声明 (localvariabledeclaration)和若干个段 (section) ,各个段分别完成不同的任务。最重要的段是 equationssection,template在此段中对系统变量 (systemvariable) 赋值。对于电气模型,需要赋值变量是节点电流;对于控制系统,是输出量。电

6、气模型见例 2-1 。在连续模拟系统中 equationssection 的任务在于给出用于求解通过模型管脚节点的 through 量的表达式,对于电气模型而言, 即给出节点电流的表达式。仿真器利用给出的节点电流的表达式代入每个节点的 KCL 方程,从而最终求出节点电压,节点电压即 系统变量。对于电压源和电感则情况有所区别,此类模型的系统变量是电流而不是电压。例 2-1 中 i(p->m) 表示从节点 p 到节点 m 的电流。 由于电路网络中可能有多个模型并联在相同节点, 每个模型对节点电流的作用 应该是使其增加相应值,所以对其赋值应该用 += 。例 2-2 控制系统的加法器templa

7、teadderin1in2out=k inputin1in2 outputout numberk equations out=(in1+in2)*k对于事件驱动型的数字系统, templatebody 中描述输入输出关系的段不是 equationssection ,而是 when 语句(whenstatement) 。例 2-3 逻辑与门templateandin1in2out=td statelogic_4in1in2out numbertd=0 statelogic_4out_state when(event_on(in1)|event_on(in2) if(in1=l4_1)&(

8、in2=l4_1) out_state=l4_1 elseout_state=l4_0 if(driven(out)=out_state) schedule_event(time+td,out,out_state)其中 template 的管脚类型为 state ,数据类型是 logic_4 。 whenstatement 的语法为when(CONDITION)其中 CONDITION 通常用带有特定参数的 event_on() 函数特定信号发生变化的事件, 即当作为 event_on() 的参数的信号发生变 化时 CONDITION 为真,执行 when 后面的语句。对数字管脚信号的幅值必须

9、使用 schedule_event() 语句,这样才能将事件加入仿真器的事件队列, 从而是输出信号改变以后触发 下一级的模块。 schedule_event 的参数如下:schedule_event(TIME,STATE_NAME,VALUE)表示在指定时刻令指定名称的 state 变量变为给定的值。 time 是仿真器提供的系统变量,表示当前仿真时刻。在例 2-3 中参数 td 反映输出信号发生变化所需的延迟时间。 中间变量 out_state 用于与当前输出管脚状态比较, 从而在输入发生 变化后仅当输出也发生改变才触发事件。对本地局部变量的复制赋值直接用等号 (=). 。2.2MASTte

10、mplate 变量声明 在一个 template 中除了作为模型节点的 pin 变量和设置参数 argument 变量以外,通常还必须在 templatebody 中声明若干本 地变量。通常可以分为无单位局部变量、 var/ref 变量以及 val 变量。(1 )无单位局部变量-不与单位关联,不具有实际物理意义,仅在模型内部有效 无单位量通常用作输入参数的中间变量,只可在 parametersection 中赋值。通常声明为简单标量( scalar )类型 number 。除了 number 、enum 等标量类型,局部变量还可以声明为复合( composite )类型,如结构 (struct

11、) 、数组 (array) 等。例 2-4 可变电阻templatevar_rpm=r_max,ratio electricalp,mnumberr_max,rationumberrparametersif(ratio>1.0|ratio<=0)error( “ %,ratioisnotofthecorrectvalue.,instance()elser=r_max*ratio;equationsi(p->m)=(v(p)-v(m)/r(2) var和ref变量-在tem pl ate中声明的系统变量,在系统范围内有效var 变量通常作为 equationsection 中的

12、系统中间变量,用于作为 through 量(例如电流)不能直接由关系式表达的情况。 变量仅能在 eqationssection 中赋值。var考虑理想电压源的情况,流过电压源的电流由外电路决定,而与模型内部无关,电流无法用内部表达式给出,所以必须引入 变量。 var 变量的声明格式如下:varvarUNITVAR_NAME例 2-5 理想电压源templatevsourcepm=vselectricalp,mnumbervsvariivsequationsi(p->m)+=ivsivs:v(p)-v(m)=vs本例中 ivs 是 var 变量,单位是 i ,表示从节点 p 流向节点 m

13、的电流。 ivs:v(p)-v(m)=vs 从此式中无法确定 ivs ,所以仿真器在保证此式成立的情况下根据总体电路来确定表示 ivs 的值由随后的关系式确定。仅ivs例 2-6 线性电感templateinductorpm=indelectricalp,mnumberindvariilequationsi(p->m)+=ilil:v(p)-v(m)=d_by_dt(ind*il)本例中 il 表示电感电流, d_by_dt 表示对时间求导数。由于 MAST 的表达式不支持积分运算,因此电感电流与电压的关系必须表示为电压是电流的对时间的导数,所以无法显式给出电流的表达式,故将电流声明为v

14、ar 变量。参看例 2-1 理想电流源。对于数字系统,与 var 变量类似的是 state 变量。ref 变量也是系统变量, 在系统范围有效, 但是在一个 template 内部声明的 ref 变量表示在另一个 template 中声明的 var 变量。例 2-7 电流控制电压源templatecvtcipm=k refici electricalp,m numberk varii equations i(p->m)+=i i:v(p)-v(m)+=k*ci(3) val变量-本地有单位变量,仅在模型内部有效 val 变量通常用作计算模型内部参数的中间变量, 仅可在 valuessect

15、ion 赋值。运行时仿真器将 valuesection 和 equationsection 合并。同时 val 变量在仿真结束后可以用 exact 命令提取到 cosmosscope 中观察。例 2-8 线性电阻templaterespm=r electricalp,m numberp valppower valii valvv values v=v(p,m)i=v/rp=v*iequationsi(p->m)+=i本例中 i 、 v 和 p 都可以用 exact 命令提取并观察。2.3MAST 与 C 语言比较MAST 大部分语法形式与 C 语言相近,但也有很多区别如下:1)每一行代码

16、用回车换行,而不用分号(。当一行代码未写完就需要换行时必须用反斜线、与&、或| ,其他和 C 语言类似2 )逻辑和关系运算符分别是相等 = 、不等 =3)注释语句以 # 开始,而不是 /*/ 或者/4 )每一个 section 后面的左花括号必须紧跟 section 的名称,不能出现换行,否则会报错。如value正确而value会出错。5)变量声明比较复杂,通常需要声明数据类型和变量类型。数据类型不同,简单类型包括 integer 、 number 、string 和 enum ,复合类型包括 struct 、union 和 array 。3 MAST 建立模型实例3 1 控制系统的二

17、阶环节 根据二阶环节的定义,令输入量为 u(t) ,输出量为 y(t) ,则 s 域的输入输出关系为Y(s)/U(s)=K/(s+p1)*(s+p2)其中 K 是开环增益, p1 和 p2 是两个极点。将等式展开可得sA2*Y(s)+( p1+ p2)*s*Y(s)+p1*p 2*Y(s)=K*U(s)改写为时域表达式可得d(dy/dt)/dt+a1*dy/dt+a0*y=K*u其中 a0=p1*p2,a1=p1+p2.saber 并不支持在同一个表达式中出现二由于 MAST 不允许表达式中出现两个微分项相乘,所以必须展开至这种最简形式。此外 次和二次以上的微分,因此必须声明一个中间变量表示一

18、次微分,从而将原来的二次微分表示为此中间变量的一次微分。根据这些分析,可以写出二阶环节的 template 如下所示 例 3-1 控制系统的二阶环节templatetrans_2orderinout=a0,a1,k inputnuin outputnuout numbera1,a2,k varnuout_d1 equations out_d1:out_d1=d_by_dt(out) out:d_by_dt(out_d1)+a1*out_d1+a0*out=k*inTools-Drawingtools in 和 out 。如图所示写好此 template 以后,将其保存为 trans_2orde

19、r.sin 。在 saber 中选择 File-New-Symbol ,再选择 画好需要的模型符号。再点右键 Create-inputport 和 outputport 放置输入端口和输出端口,并命名为再设置模型的属性( properties ),添加一个属性 primitive, 值为 trans_2order 自动添加了 template 中声明的输入参数,此处将所有输入参数的值设置为req* 。再次打开 properties .最后把模型保存为时可以看到 saber 已经trans_2order.ai_sym,浏览并添加 trans_2order.ai_sym ,设为了验证模型的正确性,

20、新建一个原理图,右键菜单选择Get Part £ySymbolName置 a0=100, a1=8 , k=100 。从参数可知这是一个欠阻尼二阶环节。再添加一个阶跃信号,结果如图所示。3.2 离散有效值转换模块对正弦信号等间隔采样,令每个信号周期内的采样点数为N,则信号的有效值可以根据均方根值的定义按照以下公式计算:计算输入信号在多个时间点的平方和是一MAST 的系统变量保存。在数字离因此只需获得输入信号在一个周期内的平方和, 就可以根据上式计算出信号的均方根值。 个累积的过程,在每个采样时刻必须已知上一个时刻的值,因此数据的平方和计算结果必须用 散系统中,系统变量是 state 。根据这些分析,写出的 template 如下: 例 3-2 离散有效值转换模块templatez_rm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论