ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:282.66KB ,
资源ID:16912040      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-16912040.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(sabermast要点归纳.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

sabermast要点归纳.docx

1、sabermast要点归纳Saber MAST 要点归纳(总15页)1. Saber MAST模型分类 MAST可以描述以下三类系统,每一类系统的模型写法各不相同。 (1)连续模拟系统(continuous analog systems) 在仿真连续模拟系统时仿真器按照仿真时刻反复求解一系列代表仿真模型的微分方程。此类系统的每一个节点(node)都包括两个系统变量(system variable),一个across量和一个through量,通常每个量都与一个单位(unit)关联,在cosmos scope中显示波形时可以显示相应单位。以电气模型为例,每一个节点都包括一个across量(电压)和

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

3、基本单位。MAST template是按照特定的语法编写的纯文本文件,后缀是.sin。 MAST template的基本格式包括以下几个部分: (1) template header 声明template的名称(reference),管脚(pin)和参数(argument) 基本形式如下: template TEMPLATE_NAME PIN1 PIN2 PIN3 = ARG1, ARG2, ARG3 PIN_DECLARATION ARG_DECLARATION 容易看出template header由关键字template开始,后面紧跟template的名称,再接下来是管脚(pin)的名称

4、,然后是一个等号(=),接下来是参数名、 值得注意的是等号左边的各个名称不需要用逗号(,)分隔,而等号右边必须用逗号分隔各个参数。 (2) template header declaration 对pin和argument类型的进行声明 MAST的所有变量在使用前都必须声明其类型。第一行的模板参数声明以后是管脚的类型声明和参数类型声明。形式如下: PIN_TYPE PIN_NAME ARG_TYPE ARG_NAME 管脚(pin)的类型根据template的类型可以定义为electrical(电气模型)、input/output(控制系统模型)和state(数字系统模型)等。参数(argum

5、ent)类型通常为无单位简单量number。 例2-1 理想电流源 template isource p m = is electrical p,m number is equations i(p-m) += is 对于参数较多较复杂的模型可以将参数分类,再将同一类的参数定义为一个结构(struct) (3) template body 对模型的行为进行描述 结构化(structured)的模型包含本地变量声明(local variable declaration)和若干个段(section),各个段分别完成不同的任务。 最重要的段是equations section,template在此段中

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

7、值,所以对其赋值应该用+=。 例2-2 控制系统的加法器 template adder in1 in2 out = k input in1 in2 output out number k equations out = (in1+in2)*k 对于事件驱动型的数字系统,template body中描述输入输出关系的段不是equations section,而是when语句(when statement)。 例2-3 逻辑与门 template and in1 in2 out = td state logic_4 in1 in2 out number td=0 state logic_4 out

8、_state when (event_on(in1) | event_on(in2) if (in1=l4_1) & (in2=l4_1) out_state = l4_1 else out_state = l4_0 if(driven(out)=out_state) schedule_event(time+td, out, out_state) 其中template的管脚类型为state,数据类型是logic_4。when statement的语法为 when(CONDITION) . 其中CONDITION通常用带有特定参数的event_on()函数特定信号发生变化的事件,即当作为even

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

10、变才触发事件。 对本地局部变量的复制赋值直接用等号(=).。 MAST template变量声明 在一个template中除了作为模型节点的pin变量和设置参数argument变量以外,通常还必须在template body中声明若干本地变量。通常可以分为无单位局部变量、var/ref变量以及val变量。 (1)无单位局部变量 不与单位关联,不具有实际物理意义,仅在模型内部有效 无单位量通常用作输入参数的中间变量,只可在parameter section中赋值。通常声明为简单标量(scalar)类型number。 除了number、enum等标量类型,局部变量还可以声明为复合(composit

11、e)类型,如结构(struct)、数组(array)等。 例2-4 可变电阻 template var_r p m = r_max, ratio electrical p, m number r_max, ratio number r parameters if(ratio | ratio m) = (v(p)-v(m) )/ r (2)var和ref变量 在template中声明的系统变量,在系统范围内有效 var变量通常作为equation section中的系统中间变量,用于作为through量(例如电流)不能直接由关系式表达的情况。var变量仅能在eqations section中赋值

12、。 考虑理想电压源的情况,流过电压源的电流由外电路决定,而与模型内部无关,电流无法用内部表达式给出,所以必须引入var变量。var变量的声明格式如下: var UNIT VAR_NAME 例2-5 理想电压源 template vsource p m = vs electrical p, m number vs var i ivs equations i(p-m) += ivs ivs: v(p) - v(m) = vs 本例中ivs是var变量,单位是i,表示从节点p流向节点m的电流。ivs: v(p) - v(m) = vs表示ivs的值由随后的关系式确定。仅从此式中无法确定ivs,所以仿

13、真器在保证此式成立的情况下根据总体电路来确定ivs 例 2-6 线性电感 template inductor p m = ind electrical p, m number ind var i il equations i(p-m) += il il: v(p) - v(m) = d_by_dt(ind*il) 本例中il表示电感电流,d_by_dt表示对时间求导数。由于MAST的表达式不支持积分运算,因此电感电流与电压的关系必须表示为电压是电流的对时间的导数,所以无法显式给出电流的表达式,故将电流声明为var变量。 参看例2-1理想电流源。 对于数字系统,与var变量类似的是state变量

14、。 ref变量也是系统变量,在系统范围有效,但是在一个template内部声明的ref变量表示在另一个template中声明的var变量。 例2-7电流控制电压源 template cvt ci p m = k ref i ci electrical p, m number k var i i equations i(p-m) += i i: v(p)-v(m) += k*ci (3)val变量 本地有单位变量,仅在模型内部有效 val变量通常用作计算模型内部参数的中间变量,仅可在values section赋值。运行时仿真器将value section和equation section合并。

15、同时val变量在仿真结束后可以用exact命令提取到cosmos scope中观察。 例 2-8 线性电阻 template res p m = r electrical p, m number p val p power val i i val v v values v = v(p,m) i = v / r p = v*i equations i(p-m) += i 本例中i、v和p都可以用exact命令提取并观察。 MAST与C语言比较 MAST大部分语法形式与C语言相近,但也有很多区别如下: (1)每一行代码用回车换行,而不用分号(;)。当一行代码未写完就需要换行时必须用反斜线“” (2

16、)逻辑和关系运算符分别是 相等=、不等=、与&、或|,其他和C语言类似 (3)注释语句以#开始,而不是/* */或者 正确而 value . 会出错。 (5)变量声明比较复杂,通常需要声明数据类型和变量类型。 数据类型不同,简单类型包括integer、number、string和enum,复合类型包括struct、union和array。3 MAST建立模型实例 31 控制系统的二阶环节 根据二阶环节的定义,令输入量为u(t),输出量为y(t) ,则s域的输入输出关系为 Y(s)/U(s) = K / (s+p1)*(s+p2) 其中K是开环增益,p1和p2是两个极点。将等式展开可得 s2*Y

17、(s) + (p1+p2)*s*Y(s) + p1*p2*Y(s) = K*U(s) 改写为时域表达式可得 d(dy/dt)/dt +a1*dy/dt + a0*y = K*u 其中a0=p1*p2, a1 = p1+p2. 由于MAST不允许表达式中出现两个微分项相乘,所以必须展开至这种最简形式。此外saber并不支持在同一个表达式中出现二次和二次以上的微分,因此必须声明一个中间变量表示一次微分,从而将原来的二次微分表示为此中间变量的一次微分。 根据这些分析,可以写出二阶环节的template如下所示 例3-1 控制系统的二阶环节 template trans_2order in out =

18、 a0,a1, k input nu in output nu out number a1, a2, k var nu out_d1 equations out_d1: out_d1 = d_by_dt(out) out: d_by_dt(out_d1) + a1*out_d1+a0*out = k*in 写好此template以后,将其保存为。在saber中选择File-New-Symbol,再选择Tools-Drawing tools,画好需要的模型符号。再点右键Create-input port和output port放置输入端口和输出端口,并命名为in和out。如图所示 再设置模型的属

19、性(properties),添加一个属性primitive,值为trans_2order。再次打开properties时可以看到saber已经自动添加了template中声明的输入参数,此处将所有输入参数的值设置为*req*。.最后把模型保存为。 为了验证模型的正确性,新建一个原理图,右键菜单选择Get Part By Symbol Name,浏览并添加,设置a0=100,a1=8,k=100。从参数可知这是一个欠阻尼二阶环节。再添加一个阶跃信号,结果如图所示。 离散有效值转换模块 对正弦信号等间隔采样,令每个信号周期内的采样点数为N,则信号的有效值可以根据均方根值的定义按照以下公式计算: 因

20、此只需获得输入信号在一个周期内的平方和,就可以根据上式计算出信号的均方根值。计算输入信号在多个时间点的平方和是一个累积的过程,在每个采样时刻必须已知上一个时刻的值,因此数据的平方和计算结果必须用MAST的系统变量保存。在数字离散系统中,系统变量是state。根据这些分析,写出的template如下: 例3-2 离散有效值转换模块 template z_rms zin smp zout = freq, smp_freq state nu zin,smp,zout # smp is the sample signal input number freq, smp_freq # freq is th

21、e frequency of signal and smp_freq is that of sample signal #代码还是等到paper都完成了再放上来比较好. template body内的各个部分的任务如下:parameter段中完成输入参数的转换,即根据输入的信号和采样频率计算得到采样点数和信号周期;value段中根据均方根值定义计算输出结果;when语句完成对输出端赋值,并对延迟信号赋值。 由于保存平方和的state变量只能在when段中赋值,因此声明了一个val型中间变量sum_zin2,用来在保存value段中计算出的当前仿真时刻的平方和。由于val变量的值不能保存到下一个仿真时刻,因此在when段中必须把sum_zin2的值保存到last_sum_zin2,才能用于下一个仿真时刻。 在when段中,由于对模型内部声明的state变量赋值无须触发事件,所以直接用等号;第一个schedule_event用于对输出信号赋值;第二个schedule_event用于在一个信号周期的延迟以后再对zin2_delay赋值。每次计算信号平方和时,利用上一个采样时刻的信号平方和加上当前时刻输入信号的平方,再减去一个信号周期以前的输入信号的平方,从而只保留了一个信号周期内的平方和。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2