电力仿真论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: pscad atp VIP会员
新来朋友

fy030509

yoonae

fengxian

luzhiyuan

节度使

szg0933

Iris

YANG

柔直小白

messiliu10

ywwy

18720669717

qq954646921

suoybing

EE_EDTA

zcx

wuzhixiang

chj

玉面孟尝

13647319986

晚风吻尽荷花叶

吃不胖的王胖子

荔荔

zjzy8888

dawoya

查看: 15.1K|回复: 9

PSCAD入门教程(3、4节):自定义模型及Fortran语言应用

[复制链接]
发表于 2019-10-28 13:20:32 | 显示全部楼层 |阅读模式

注册可看大图、可下载

您需要 登录 才可以下载或查看,没有账号?立即注册

x
转载似鸥电气,关注公众号有视频教程哦


欢迎大家加入电力系统仿真论坛官方QQ群(584013101)讨论电气工程领域的相关问题,群里有许多电气方向的学术大咖,兴许还有你的师兄师姐,涉及的方向也比较多,比如柔直、稳定性分析、故障分析、控制与保护、新能源,重要的是他们都是英俊潇洒、风流倜傥、美丽动人、才华横溢、乐于助人的小哥哥小姐姐。
一、自定义模型(组件)的构建
01 PSCAD中自定义模型分类
PSCAD中自定义模型分为两大种,一种是自定义模型(组件),另一种是自定义模型(元件)。
(1)自定义模型(组件)
可以在自定义模型里添加PSCAD库中自带的元器件,比如电压表、电容、IGBT、发电机等等,也可以添加自定义元件。比如官网中关于MMC的控制模块,它的外部接口如图所示。
qw2.jpg
双击该组件自定义模型即可看到它的内部结构是由库中自带的一些元件搭建而成的,如下图所示。

qw3.jpg

(2)自定义模型(元件)
仅由程序语言(比如Fortran语言、C语言)构建该自定义模型。比如,此处我通过Fortran语言构建了一个自定义的可变电阻,它的外部接口如下图所示,由于该元件的功能通过程序表达,所以双击该元件自定义模型,其内部电气结构不可见,但可看到该元件的程序(程序未黑箱化的前提下)。
qw4.jpg

选中该元件自定义模型后,右键Edit definition,然后在界面偏下的部分就可以看到Graphic、paraments、Script三个选项,点击Script就可以看到该自定义模型的程序。
--------------------------------

  1. #STORAGE  INTEGER:10   
  2. #STORAGE  REAL:10
  3. #LOCAL INTEGER NMY_NSTORF
  4. #LOCAL INTEGER NMY_NSTORI
  5. #LOCAL REAL NR                                                        
  6. #LOCAL REAL NU
  7. #LOCAL REAL Ntest
  8. #LOCAL INTEGER j
  9. #LOCAL INTEGER i
  10. #BEGIN
  11.        CALL E_VARRLC1_CFG(0,$SS,$NTB,0)
  12. #ENDBEGIN
  13.           NMY_NSTORF=NSTORF
  14.           NSTORF=NSTORF+10
  15.           NMY_NSTORI=NSTORI
  16.           NSTORI=NSTORI+10
  17.         IF (TIMEZERO) THEN         
  18.            STORF(NMY_NSTORF)=0
  19.            STORF(NMY_NSTORF+1)=0
  20.             i=0
  21.             j=0      
  22.             Ntest=0
  23.         ENDIF
  24.           NR=$R_my
  25.           NU=0
  26.         CALL E_VARRLC1_EXE(0,$SS,$NTB,0,NR,NU)
  27.              i=i+5
  28.             $Nout1=i*1.0
  29.           $Nout2=STORF(NMY_NSTORF)+5
  30.           STORF(NMY_NSTORF)=$Nout2
复制代码

-----------------------------------------

以上程序虽然只实现了一个可变电阻的功能,但是此处我将构建自定义模型时的简单程序框架放上去,方便读者在以上基础上进行更改,由于其中小部分变量是由我自定义的,所以可能有些繁琐,具体含义下次介绍自定义模型(元件)时再讲。在PSCAD中该部分程序是自定义的,所以可以编辑,而主界面“Fortran”部分中的Fortran程序不可更改。

02 构建自定义模型(组件)
此处以(a+b)*c
这个简单功能介绍自定义模型(组件)的构建步骤:
在PSCAD库文件的界面中 -> 鼠标右键 -> 选择Create:component
->当到达自定义组件界面;

qw5.jpg
设置好以上数据后,点击finish,在库文件主界面将会显示以下自定义元件的示意图。
qw6.jpg
图中a、b表示“加法”的两个输入量端子,c端子为乘法输入端子,通过自定义模块的参数输入界面输入,out1表示输出端子。
qw7.jpg
由于c端子通过参数输入界面输入,所以需要在组件中手动添加以下元件:
qw8.jpg
并且在自定义模型的参数输入界面,对输入参数c的相关属性进行设置。
qw9.jpg
测试端子输入/输出:(a+b)*c=(1+2)*2=6
qw10.jpg
qw11.jpg
此处以一个简单的加减乘除运算为例说明自定义模型的构建步骤,小伙伴们只要掌握了构建的方法,构建其他功能的自定义模型也就很简单了。
   
二、应用于PSCAD的Fortran简单语法介绍
Fortran语言看起来高大上,听起来好像又是一门新的程序语言,其实如果Fortran只用于在PSCAD中编写自定义模型,那么我们只需要掌握部分的语法,学过C语言、matlab的M语言或者FPGA中的语法后,再学Fortran不算太难。在PSCAD中使用Fortran可能需要注意到的问题:
(一)、Fortran 数组下标默认情况下是从1 开始(c语言从0开始),与一般矩阵的下标相同
(二)、变量名不区分大小写,使用变量前建议对变量类型进行声明,且声明语句在所有执行语句之前。
在PSCAD中使用Fortran语言的方式有两种:①可以将Fortran语言与脚本语言结合起来使用,这样可以直接在脚本(Script)界面直接编写程序。②在外部编写.f函数,然后在PSCAD中的脚本(Script)界面中call该函数。
定义整型变量X: #LOCAL INTEGER X
实型变量X: #LOCAL REAL X
逻辑型变量X: #LOCAL Logical X
定义数组:
可以直接在PSCAD脚本中定义1维数组,高于1维的不能在脚本中直接定义,需要通过写.f函数文件,然后在脚本中call,例如,定义包含9个数据的1维数组:
整型变量X: #LOCAL INTEGER X 9
实型变量X: #LOCAL REAL X 9
逻辑型变量X: #LOCAL Logical X 9
(三)、赋值语句
例如,将a赋值给b
b=a

将a赋值给数组c中的第4个位置
c(4)=a

(四)、数学运算表达式



+



-



*



/

求余

%

平方

**

并联

\

(五)、关系运算符

大于

>(或者“.gt.”)         

大于等于

>=(或者“.ge.”)      

小于

<(或者“.lt.”)

小于等于

<=(或者“.le.”)

等于

==(或者“.eg.”)   

不等于

/=(或者“.ne.”)

(六)、逻辑运算符



.and.



.or.



.not.



.eqv.

不等

.neqv.

(七)、条件、循环语句

①.if 语句

if (a>0 ) then



elseif(a<0) then



else



endif

②循环语句

DO j=1,b,c



End do

以上语句表示从j为1开始循环每次循环后j增加c,直到j大于b为止,若c不写,则默认每次循环后j增加1。

(八)、函数

例如,实现一个z=x+y的功能。

Subroutine  add_sub(x,y,z)

!此处由于该函数不是在PSCAD脚本中编写的,所以声明变量时有所不同

Real:: x

Real::y

Real::z

z=x+y

end

在PSCAD脚本中使用以下语句就可以使用上述函数,语句中abc表示函数的三个输入输出参数,与上述函数中xyz相对应。

Call add_sub(a,b,c)

近期预告
①.电气主接线
介绍电气主接线的主要原因是我们老师傅说了一句话触动了我,他说“当你走进变电站,第一眼看到的就是主接线,你要是主接线都弄不清,那你头顶的那些电线就和一团乱麻没有区别,其他工作开展起来也很困难”。确实,我觉得这虽然是一个很基础的知识,但对于新手来说,了解电气主接线有利建立电气知识框架,对于一二次系统的调试、运行、检修都能很好很快的入手。
②.PSCAD自定义模型(元件)的构建
③.PSCAD自定义模型中怎样call外部.f文件中的函数
④.模型解读计划
往期回顾

qw12.jpg

如何设计控制器使被控系统达到预期性能?
反馈控制的最根本问题是什么?
qw13.jpg

PSCAD入门教程(1、2节):认识PSCAD操作界面+波形数据的3种输出方式
有视频!~~但是比较模糊,效果差~~建议看文档。
qw14.jpg

插播|  电力公司面试常见试题(下)
电力公司面试;电气专业保研、考研复试问答。
qw15.jpg
易混| 4种派克(Park)变换、克拉克(Clark)变换与基于dq轴解耦的双闭环控制的关系(一)
4种形式的派克(Park)变换矩阵、锁相环(PLL)、电流内环与功率外环。
qw16.jpg

qw17.jpg

qw18.jpg

回复

使用道具 举报

会员网龄
4.9岁

TA在排名榜Top100

积分:暂未上榜

发帖:暂未上榜

在线:NO. 85 名

  • TA的每日心情
    开心
    2021-5-6 11:08
  • 2

    主题

    2

    回帖

    12

    积分

    新手上路

    Rank: 1

    积分
    12
    发表于 2019-10-28 15:45:03 | 显示全部楼层
    顶顶顶!
    回复

    使用道具 举报

    会员网龄
    3.9岁

    TA在排名榜Top100

    积分:暂未上榜

    发帖:NO. 46 名

    在线:暂未上榜

  • TA的每日心情
    难过
    2020-10-27 19:01
  • 1

    主题

    32

    回帖

    33

    积分

    新手上路

    Rank: 1

    积分
    33
    发表于 2020-6-30 15:01:52 | 显示全部楼层
    PSCAD小白,努力学习中。。
    回复

    使用道具 举报

    会员网龄
    3.8岁

    TA在排名榜Top100

    积分:暂未上榜

    发帖:暂未上榜

    在线:暂未上榜

  • TA的每日心情
    难过
    2020-8-7 16:05
  • 4

    主题

    2

    回帖

    26

    积分

    新手上路

    Rank: 1

    积分
    26
    发表于 2020-8-7 16:41:02 | 显示全部楼层
    不错不多
    回复

    使用道具 举报

    会员网龄
    3.6岁

    TA在排名榜Top100

    积分:暂未上榜

    发帖:暂未上榜

    在线:暂未上榜

  • TA的每日心情
    开心
    2021-2-1 11:14
  • 2

    主题

    7

    回帖

    9

    积分

    新手上路

    Rank: 1

    积分
    9
    发表于 2020-10-30 16:03:09 | 显示全部楼层
    DING顶ding
    回复

    使用道具 举报

    会员网龄
    3.5岁

    TA在排名榜Top100

    积分:NO. 26 名

    发帖:暂未上榜

    在线:NO. 43 名

  • TA的每日心情
    慵懒
    2024-1-26 02:33
  • 0

    主题

    13

    回帖

    1195

    积分

    金牌会员

    Rank: 8Rank: 8

    积分
    1195

      发表于 2020-11-28 03:00:20 | 显示全部楼层
      学习学习
      回复

      使用道具 举报

      会员网龄
      3.1岁

      TA在排名榜Top100

      积分:暂未上榜

      发帖:暂未上榜

      在线:暂未上榜

    • TA的每日心情
      开心
      2022-4-12 17:16
    • 0

      主题

      1

      回帖

      1

      积分

      新手上路

      Rank: 1

      积分
      1

        发表于 2021-4-19 11:23:11 | 显示全部楼层
        顶顶顶,对新手入门pscad很有帮助
        回复

        使用道具 举报

        会员网龄
        3.0岁

        TA在排名榜Top100

        积分:暂未上榜

        发帖:暂未上榜

        在线:暂未上榜

      • TA的每日心情
        开心
        2021-4-29 15:23
      • 0

        主题

        2

        回帖

        2

        积分

        新手上路

        Rank: 1

        积分
        2

          发表于 2021-4-26 14:06:01 | 显示全部楼层
          已经学习了一遍,看来还得在学习一遍
          回复

          使用道具 举报

          会员网龄
          2.8岁

          TA在排名榜Top100

          积分:暂未上榜

          发帖:暂未上榜

          在线:暂未上榜

        • TA的每日心情
          萌哒
          2021-7-14 15:58
        • 0

          主题

          1

          回帖

          1

          积分

          新手上路

          Rank: 1

          积分
          1

            发表于 2021-7-14 16:03:54 | 显示全部楼层
            牛啊牛啊
            回复

            使用道具 举报

            会员网龄
            5.3岁

            TA在排名榜Top100

            积分:NO. 35 名

            发帖:NO. 18 名

            在线:暂未上榜

          • TA的每日心情
            开心
            2023-8-6 17:51
          • 0

            主题

            61

            回帖

            650

            积分

            高级会员

            Rank: 6Rank: 6

            积分
            650

              发表于 2021-8-10 16:57:31 | 显示全部楼层
              请问,pscad自定义元件里,有迭代过程,但初值只赋一次,是用timezero实现吗
              回复

              使用道具 举报

              发贴规则: 
              1.严禁将帖子发至无关版面,请选择对应版块发贴,以维护论坛的系统性和整洁性。
              2.提问题需要将问题描述清楚,涉及到仿真模型问题需要添加报错图片或描述,上传仿真模型效果更佳。
              3.由于论坛的时效性不足,可以发帖后点击楼层下分享到:QQ好友和群快速得到关注。
              4.保持和谐。
              您需要登录后才可以回帖 登录 | 立即注册

              本版积分规则

              Archiver|手机版|小黑屋|电力仿真论坛

              GMT+8, 2024-4-24 12:38 , Processed in 0.128703 second(s), 69 queries .

              Powered by Discuz! X3.4

              © 2001-2023 Discuz! Team.

              快速回复 返回顶部 返回列表