pscad c语言程序,PSCAD入门教程(第8节):调用C语言函数及file reference组件使用...

void my_bj(double*i,double*j)

{double t;

if(*i>*j)

t=*i;

*i=*j;

*j=t;

}

8.1.2 通过鼠标右键add component添加一个filereference组件

8.1.3 PSCAD中的Script里编写如下函数:

#STORAGE INTEGER:10

#STORAGE REAL:10

#LOCAL INTEGER NMY_NSTORF

#LOCAL INTEGER NMY_NSTORI

#LOCAL REAL a,b,c

#BEGIN

#ENDBEGIN

a=$i1

b=$i2

c=$i3

IF(a .gt.b) THEN

callmy_bj(a,b)

ENDIF

IF(b .gt.c) THEN

callmy_bj(b,c)

ENDIF

IF(a .gt.b) THEN

callmy_bj(a,b)

ENDIF

$o1=a

$o2=b

$o3=c

8.2 CVFortran编译器

8.2.1 编写C语言函数(并命名为.C文件:

#includevoidmy_bjc(double*i,double*j)

{double t;

if (*i>*j)

t=*i;

*i=*j;

*j=t; }

8.2.2 用fortran语言编写一个辅助子程序my_bjf(并命名为.f文件),让pscad能识别c语言。

Subroutine my_bjf(i,j)

Real i,j

Interface

Subroutine my_bjc(i,j)

!DEC$ attributes C:: my_bjc

!DEC$ attributes reference:: i,j

Real i,j

End Subroutine

End Interface

Call my_bjc(i,j)

end

8.2.3 通过鼠标右键add component添加2个file reference组件(一个用于引用以上.C文件,一个用于引用以上的.f文件

8.2.4 PSCAD脚本中调用my_bjf函数(注意此处是my_bjf不是my_bjc。

#STORAGE INTEGER:10

#STORAGE REAL:10

#LOCALINTEGER NMY_NSTORF

#LOCALINTEGER NMY_NSTORI

#LOCALREAL a,b,c

#BEGIN

#ENDBEGIN

a=$i1

b=$i2

c=$i3

IF(a .gt. b) THEN

call my_bjf (a,b)

ENDIF

IF(b .gt. c) THEN

call my_bjf (b,c)

ENDIF

IF(a .gt. b) THEN

call my_bjf (a,b)

ENDIF

$o1=a

$o2=b

$o3=c

仿真输出结果:

总结:最好直接用fortran语言编写函数,然后pscad的script脚本中调用该函数;实是要用C语言编写函数,要注意自己装的编译器是Gfortran编译器还是CVFortran编译器(具体怎么甄别编译器,文中有提到,需要的模型见最后的链接。若是Gfortran编译器则可以直接pscad的script脚本中调用C函数, 若是CVFortran编译器则需要通过fortran语言简单的将c函数转换成pscad能识别的函数。

1.PSCAD/Matlab仿真模型解读

往期回顾

PSCAD入门教程(第6节):构建自定义元件(附讲解模型

简单示例模型文章底部自行提取!

PSCAD入门教程(第5节): 4种常用元件的使用(附讲解模型

简单示例模型文章底部自行提取!

由于本人水平有限,所述内容难免会有疏漏之处,有遗漏或阐述不当之处请各位同学、老师傅指正,公众号私信或QQ(3135975766)。

示例模型百度网盘链接(其中有一个为官方CInterface模型可用于学习:

链接1:

https://pan.baidu.com/s/1U0_Lj0YbMHa1H1M9_iD7yQ

提取码1:p4u7

链接2:

https://pan.baidu.com/s/1APFaBsBzniOspbx0-jy8kA

提取码2:4ynb

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值