收藏 分享(赏)

09-用户自定义元件.ppt

上传人:cjc2202537 文档编号:653208 上传时间:2018-04-17 格式:PPT 页数:46 大小:1.07MB
下载 相关 举报
09-用户自定义元件.ppt_第1页
第1页 / 共46页
09-用户自定义元件.ppt_第2页
第2页 / 共46页
09-用户自定义元件.ppt_第3页
第3页 / 共46页
09-用户自定义元件.ppt_第4页
第4页 / 共46页
09-用户自定义元件.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、PSCAD自定义元件,武汉大学电气工程学院乐 健2011.07,第 2 页,主要内容,自定义元件方法 自定义元件界面的编写 自定义元件代码的编写 自定义元件的管理,第 3 页,一、自定义元件方法,第 4 页,第 5 页,!仅对引脚为数据类型时有效,第 6 页,固定型(缺省):最常用的电气引脚类型。代表简单的电气 节点。如存在疑问时尽量选择该类型。,可移除型:可由PSCAD移除的电气节点。例如RLC串联 电路可由PSCAD等效为单一阻抗元件,从而移除2个 电气节点。主要是从提高仿真计算效率出发。,开关型:若该节点为某个开关支路的一部分应选择该类 型。选择该类型后可提高PSCAD仿真过程中的矩阵解

2、 耦效率,进而提高仿真速度。,接地型:该电气节点接地时选用。,第 7 页,创建完成后的外观,第 8 页,第 9 页,第 10 页,第 11 页,Graphic页面:对元件外观,引脚,变量等进行各种编辑。 例如:外观大小, 输入输出引脚,输入输入变量名重 定义等。也可新增引脚。,第 12 页,Parameters页面:可给元件添加参数输入界面。这些参数 将作为元件代码部分中使用的常量。,第 13 页,Script页面:用Fortran语言编写元件代码,注意需遵守 PSCAD的一些语法规定和相应编译器的语法。,第 14 页,!Page Module的内部搭建与常规模型建立方法一致,也可包括自定义元

3、件和页面模块。,!在用户Case内定义的元件和模块无法使用Create Instance-paste的方法在其它Case的工作区内调用。,可在原Case内采用输出元件(模块)定义的方法,存储为.cmp文件,再在新Case内采用输入元件(模块)的方法。,也可在原Case内采用Copy Definition操作,再在新Case内采用Paste Definition操作。,第 15 页,二、自定义元件界面的编写,提供了一个简单的画图工具,使得用户可自行绘制元件外观,第 16 页,增加用户界面,每个用户界面称为一个Category,类似于书中的每页;多个Category的组织类似于一本书。可调整cat

4、egory之间的次序,第 17 页,Category预览,第 18 页,用户元件的图形界面或参数界面中的每一个对象均具有一个可控制可视或使能的参数输入。用户可添加判断条件来控制元件的可视/不可视,或者使能/禁止。,判断条件可使用算术和逻辑运算符。使得用户可在设计元件时,利用判断条件控制元件的外观、控制元件的参数输入。,第 19 页,第 20 页,三、自定义元件代码的编写,元件代码部分包含多个segment,每个Segment实现特定的功能,但不是所有的segment都是实现元件所必须的。几个最常用的是Fortran,Computation和Branch模块。,第 21 页,Computatio

5、n模块 该模块提供了对用户输入数据进行预处理的环境。某些情况下用户可能以自己方便的形式输入数据,但从元件代码的角度可能不方便于编程。因此需要事先进行预处理。 该模块是编译器对元件代码部分进行编译时最先处理的模块,因此该模块中定义的量能在后续任何模块中使用。而且所定义的量只被编译器处理一次,故该量只能是静态的。该模块中可采用任何算术和逻辑表达式。, 可以是REAL或INTEGER类型. 缺省情况下为REAL 为常量名称 为仅包含静态参数的算术或逻辑表达式,注意:该模块中不允许使用前缀($),第 22 页,Branch模块 该模块提供了输入电气支路信息的环境,以将其加入到EMTDC的电气网络导纳矩

6、阵中。支路设计的完成是通过指定无源元件的类型和参数,以及这些元件之间连接信息来实现的。 一条简单的支路定义语句可定义一个简单的电气支路,也可用于定义开关型支路或包含理想电压源的支路。,和 为图形界面接口中定义的电气节点的名称; 该支路包含电阻的大小 (单位欧姆) 该支路包含的电抗的大小(可选,单位H) 该支路包含的电容的大小(可选,单位uF) = 支路名称;很多EMTDC子程序需要支路名称作为输入参数。 可为 SOURCE 或 BREAKER 关键字,第 23 页,$为子程序前缀运算符,注意:对于不需要的RLC,可简单的设置其值为0.0;,实例:描述两个并联的电气支路,元件的电气节点,RC并联

7、支路参数,第 24 页,第 25 页,实例:带内阻的电压源支路描述,第 26 页,实例:开关支路描述, = BREAKER ,指定了开关的初始电阻值,仅影响初始状态,而不 影响到后续仿真。通常的缺省值为1.0。,第 27 页,Fortran模块 该模块是任何定义用户元件模型的Fortran代码输入的位置。代码的输入可以是标准Fortran77格式,也可以是PSCAD脚本,或者两者的组合。出于某些不兼容的问题,不推荐Fortran90的格式。 在该模块内可定义函数,或调用其它外部子程序。需注意的是外部源文件(函数或子程序)必须与Fortran77或90的格式兼容。 需要注意的是所有代码行前需要6

8、个空格。,第 28 页,先导6个空格,无需6个先导空格,第 29 页,编写代码时应考虑如下几个因素:,直接在Fortran模块中编写代码时可直接使用所有的EMTCD内部全局变量,而无需事先定义或加入包括文件;,PSCAD脚本只能用在Fortran模块内的代码编制中;,所有在Fortran模块中的代码将直接加入到仿真模型的.f文件中;,编译时,将根据代码中定义的变量用途,以及该用户元件如何连接到仿真模型中,自动地将代码分配到EMTDC相应的模块中,如:DSDYN或DSOUT。,DSDYN和DSOUT模块 代码编制与Fortran模块一致,仅是强制性将该部分代码放置于EMTDC的DSDYN或DSO

9、UT部分中。,第 30 页,Checks模块 该模块用于检查用户输入参数值的合理性。模型编译时若特定条件满足,将在输出窗口中给出错误或警告信息。, : , 可以是 WARNING或ERROR 。如果是警告, 信息将以警告的形式出现在输出窗口中。如果是错误. 仿真过程将被中止。 诊断信息,需要提供足够的信息来描述问题发生的位置和问题产生的根源。 判断是否发生错误或警告的条件. 该表达式基于否定逻辑,即该条件不满足时将触发警告或错误。,参数F的输入值小于等于0时,将出现错误,并提示信息;,参数R1与R2输入值之比小于等于100时,将出现警告并提示信息;,第 31 页,Help模块 可在此模块中列出

10、与该元件相关联的帮助文件。确保文件路径的正确性。,Flyby模块 可在用户元件上给出Flyby提示。,: ,This is my SVM component.: vainThis is actual voltage input.,第 32 页,增加内部输出变量,1. 可通过增加输出引脚方式引出内部变量;,2. 通过使用OUTPUT指令的方式。,#OUTPUT , 可以是 REAL, INTEGER或 LOGICAL. 变量名称. 可选整形, 定义了数组变量长度. 一维时为空。 输出变量的赋值表达式,可以为数学表达式,某个存储位置或已定义的变量。,第 33 页,IsVs,则在仿真过程中Is,Vs

11、可直接用于显示和处理。,第 34 页,emstor.h,这些数组用于存储特定的用户变量,以在下一时间步长内访问。因此这些数组对涉及到时间的用户元件非常有用。,关于内部全局变量,第 35 页,这些数组均为多行、单列的存储堆栈。用户按顺序指针存储数据。,所有的指针均在每个仿真步长开始时自动恢复至1。指针的管理和数据存储非常重要,需要靠用户进行维护。在每个单独的子程序中都可以借助相应的数组和指针存储和访问其中的内容。需要注意的是要根据自身存储的变量数量来调整相应指针的位置。,从相应数组中取回存储值;,将新值存储回相应数组;,指针调整;,第 36 页,timea=STORF(NSTORF) timeb

12、=STORF(NSTORF +1) timec=STORF(NSTORF+2) timen=STORF(NSTORF+3) erra_old=STORF(NSTORF+4) errb_old=STORF(NSTORF+5) errc_old=STORF(NSTORF+6) acta=STORI(NSTORI ) actb=STORI(NSTORI +1) actc=STORI(NSTORI +2) actn=STORI(NSTORI +3),STORF(NSTORF)=timea STORF(NSTORF+1)=timeb STORF(NSTORF+2)=timec STORF(NSTORF+

13、3)=timen STORF(NSTORF+4)=erra_old STORF(NSTORF+5)=errb_old STORF(NSTORF+6)=errc_old STORI(NSTORI)=acta STORI(NSTORI+1)=actb STORI(NSTORI+2)=actc STORI(NSTORI+3)=actn,NSTORF=NSTORF+7NSTORI=NSTORI+4,第 37 页,timea=STORF(mystoref) timeb=STORF(mystoref+1) timec=STORF(mystoref+2) timen=STORF(mystoref+3) er

14、ra_old=STORF(mystoref+4) errb_old=STORF(mystoref+5) errc_old=STORF(mystoref+6) acta=STORI(mystorei) actb=STORI(mystorei+1) actc=STORI(mystorei+2) actn=STORI(mystorei+3),mystoref=NSTORF NSTORF=NSTORF+7 mystorei=NSTORI NSTORI=NSTORI+4,STORF(mystoref)=timea STORF(mystoref+1)=timeb STORF(mystoref+2)=tim

15、ec STORF(mystoref+3)=timen STORF(mystoref+4)=erra_old STORF(mystoref+5)=errb_old STORF(mystoref+6)=errc_old STORI(mystorei)=acta STORI(mystorei+1)=actb STORI(mystorei+2)=actc STORI(mystorei+3)=actn,第 38 页,s1.h,第 39 页,emtconst.h,给出了一些常用的常量。,第 40 页,fnames.h,与文件有关的常量,第 41 页,s0.h,与仿真模型有关的变量,第 42 页,branches.h,与支路有关的变量,第 43 页,EMTDC为基于支路的程序,因此访问支路信息时需要通过指定支路号。,BRN支路号;SS所在子系统号;NN节点号;,#OUTPUT REAL Ia $CBR:BRN,#OUTPUT REAL Vdiff $VDC:N1:N2,第 44 页,四、自定义元件的管理,创建用户元件库可方便在任何Case内使用用户自定义元件。但在加载包含了用户自定义元件的Case之前,必须先加载包含该元件的元件库,即使是后加载也会出错。,其后可逐步添加用户自定义元件,并可按照master lib的方式进行分组,方便调用。,第 45 页,第 46 页,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报