MAtlab7.0.4接口完整详细解释并给出多种简易示例_第1页
MAtlab7.0.4接口完整详细解释并给出多种简易示例_第2页
MAtlab7.0.4接口完整详细解释并给出多种简易示例_第3页
MAtlab7.0.4接口完整详细解释并给出多种简易示例_第4页
MAtlab7.0.4接口完整详细解释并给出多种简易示例_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

Matlab7.0.4 接口连接说明。PSCAD使用的4.2.1教育版,网络版。对于大小写的要求,对于系统的变量需要正常的大小写。用户自定义的不需要注意。切记:每个有MATLAB的工程都需要设置一下链接,那个勾一定要勾上啊,害了我几天。否则会报错的。如下:不勾就会报错:下面的两个设置是一次设置就可以保存的。1.设置fortran编译器,不能使用GUN编译器,因为它只能用在fortran77中,我用的下面的版本。VF6.6专业版。在PSCAD中如下设置:2.设置MATLAB,对于7.0.4已经可以正常运行。3.PSCAD系统设置完成后,就可以建case了,开始加模块了。下面是我做的一个简单测试模块。单输入单输出。已成功运行。testmat1.m :文件如下:function I1=testIO(in1)I1=in1;模块的制作如下:首先建立一个模块,这个就自己建了。上面的三个参数是可以自己改的,第一个参数是m函数的文件名。第二个参数是相对路径,即m函数所在的文件夹名,建议仿系统示例目录形式。第三个参数是不一定需要的。前面两个参数主要是用于调用m函数,表示路径和文件名。下面是编写的脚本文件,是在DSDYN中。#STORAGE REAL:2#LOCAL INTEGER I_CNT STORF(NSTORF) = $INPUT CALL MLAB_INT(%:Dir$Path, $Name, R , R) $OUTPUT = STORF(NSTORF+1) NSTORF = NSTORF + 2联合数组多输入多输出:首先建立一个INPUT,一个OUTPUT,可以是多维的,下面是一个2维输入输出。注意,这里只有一个变量,使用数组表示,此数组下标是从1开始的。在m文件中也是使用数组。在main中使用数据组合和分离器。M函数:function t1=testmat1(inn1) t1(1) = 2* inn1(1);t1(2) = inn1(2);Fortran DSDYN函数:#STORAGE REAL:4! -! -! PSCAD/EMTDC - MATLAB INTERFACE! Module: $Name!#LOCAL INTEGER I_CNT ! IF($Enabl.GT.0.9) THEN! -! Transfer EMTDC Input Variables to Matlab Interface! -! First Input Array (REAL(2) ! I_CNT = 1 ! DO WHILE ( I_CNT .LE. 1 ) STORF(NSTORF) = $INPUT(1) STORF(NSTORF+1) = $INPUT(2) ! I_CNT = I_CNT + 1 ! END DO! -! Call PSCAD/EMTDC Matlab Interface:! CALL MLAB_INT(MFILEPATH,MFILENAME,Input Format,Output Format)! - CALL MLAB_INT(%:Dir$Path, $Name, R(2) , R(2)! -! Transfer Matlab Output Variables from Matlab Interface! -! First Output Array (REAL(1)! I_CNT = 1 $OUTPUT(1) = STORF(NSTORF+2) $OUTPUT(2) = STORF(NSTORF+3) ! ENDIF! Update STORx Pointers NSTORF = NSTORF + 4! -! -单独的多输入多输出:模块:Fortran程序: #storage real:4 STORF(NSTORF) = $IN1 STORF(NSTORF+1) = $IN2 CALL MLAB_INT(%:Dir$Path,$Name,R R,R R) $OUT1 = STORF(NSTORF+2) $OUT2 = STORF(NSTORF+3) NSTORF = NSTORF + 4M函数:function out1,out2=testmat3(in1,in2)out1=2*in1+0.1;out2=in1+in2+0.5;与MATLAB的接口程序编写在DSDYN中使用Fortran语言编写代码,并且将编写的m函数使用文件链接到工程中,通过函数名接口调用。Matlab和PSCAD是通过PSCAD中的数据栈进行通信的。主要的数据栈有:STORI(*)NSTORIAn array of integer variables, with index NSTORI, used to govern accessibility to the STORI arraySTORF(*)NSTORFAn array of floating point variables, with an index pointer NSTORF, used to govern accessibility to the STORF arrayFortran 语言: #STORAGE REAL:33 /向系统申请一个数据空间,包括输入输出的个数,有real和integer#LOCAL INTEGER I_CNT /定义一个局部变量! First Input Array (REAL(31)DO I_CNT = 1,31,1 /循环压栈,STORF(NSTORF+I_CNT-1) = $INPUT(I_CNT)END DO /注意空格DO的用法简介:DO 与 end DO联合使用。DO 变量名 = 初值,终值,步长(当步长为1时可省略)ENDDODO WHILE(条件语句)ENDDOIF (条件) then。Else if(条件) then。Endif或 #if /不用加then #ELSE#endif! SUBROUTINE MLAB_INT(MPATH, MFILE, INPUTS, OUTPUTS)/路径一般使用相对路径,即在你当前的工程目录下建立一个文件夹,比如命名为mfiles。则$Path可改写为”:$Dir$Path”,Path,Name均为设定的变量值,A MATLAB module is called by D = TEST(A,B,C), where TEST is a module in a MATLAB file TEST.m, that is located in C:TEMP MLAB_FILES. The input A is a REAL variable, B is a REAL array of dimension 31 and C is an INTEGER. The output D is a REAL array of dimension 10.The MATLAB interface subroutine call would then appear as follows:CALL MLAB_INT(C:TEMPMLAB_FILES, TEST, R R(31) I, R(10)CALL MLAB_INT(%:Dir$Path, $Name, R(3) , R )/相对路径表示。CALL MLAB_INT($Path,$Name,R(31),R(2)! First Output

温馨提示

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

评论

0/150

提交评论