电力仿真论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

szg0933

Iris

YANG

柔直小白

messiliu10

ywwy

18720669717

qq954646921

suoybing

EE_EDTA

zcx

wuzhixiang

chj

玉面孟尝

13647319986

晚风吻尽荷花叶

吃不胖的王胖子

荔荔

zjzy8888

dawoya

张林世家

pscad

cloudyday

cxk2021

李先生爱仿真

查看: 1.9K|回复: 15

[提问] 模块化多电平换流器(MMC)自定义分组排序触发模块程序出错

[复制链接]
发表于 2019-12-22 14:56:47 | 显示全部楼层 |阅读模式

注册可看大图、可下载

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

x
本人在做高压直流输电模块化多电平换流器子模块电容均压的仿真,调制方式采用最近电平逼近调制(NLC),自定义模块如图
截图201912221425079866..png
In为开通子模块个数的信号输入(一个整数),Vin是子模块电压序列(一个一维数组),Iac为电流数值的信号输入(一个实数),Indx为触发信号的输出(一维数组)。
模块需要实现功能,将子模块电压输入序列根据投入个数与上一周期所投个数相比较,再根据上一周期的触发信号将这周期的子模块分为投入组与切出组,调用C语言的子函数生成触发序列,储存在EMTDC中供下一周期使用,将投入个数也存入供下一周期使用,前$DimIdx(单个桥臂子模块总数)个数为触发序列,最后一位数为投入个数。
截图201912221443204292..png
组件参数图
截图201912221446314959..png
组件fortran程序如下
   
      
  1. #STORAGE INTEGER:$(DimIdx)+1
  2.       #LOCAL i,j,k
  3.       #IF ($In>STORI(NSTORI+$(DimIdx))
  4. !对子模块电压序列分组
  5.       j=0
  6.       k=$DimIdx-STORI(NSTORI+$(DimIdx)
  7.       DO i=0,$DimIdx
  8.       IF(STORI(NSTOTI+i)=0)THEN
  9.       $Vcap(j)=$Vcap(i)
  10.       j=j+1
  11.       ELSE
  12.       $Vcap(k)=$Vcap(i)
  13.       k=k+1
  14.       END DO                           
  15.       IF ($Iac>=0)THEN


  16.       CALL idcdd_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$In-STORI(NSTORI+$(DimIdx),$Indx)
  17.       ELSE
  18.       CALL ixcdd_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,STORI(NSTORI+$(DimIdx)-$In,$Indx)
  19.       ENDIF
  20.       #ELSEIF ($In==STORI(NSTORI+$(DimIdx))
  21. !对子模块电压序列分组
  22.       j=0
  23.       k=$DimIdx-STORI(NSTORI+$(DimIdx)
  24.       DO i=0,$DimIdx
  25.       IF(STORI(NSTOTI+i)=0)THEN
  26.       $Vcap(j)=$Vcap(i)
  27.       j=j+1
  28.       ELSE
  29.       $Vcap(k)=$Vcap(i)
  30.       k=k+1
  31.       END DO                                                
  32.       IF ($Iac>=0)THEN

  33.       CALL idcde_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$Indx)
  34.       ELSE
  35.       CALL ixcde_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$Indx)
  36.       ENDIF
  37.       #ELSE
  38. !对子模块电压序列分组
  39.       j=0  
  40.       k=STORI(NSTORI+$(DimIdx)
  41.       DO i=0,$DimIdx
  42.       IF(STORI(NSTOTI+i)=1)THEN
  43.       $Vcap(j)=$Vcap(i)
  44.       j=j+1
  45.       ELSE
  46.       $Vcap(k)=$Vcap(i)
  47.       k=k+1
  48.       END DO                                               
  49.       IF ($Iac>=0)THEN
  50.       CALL idcdx_sort($Vcap,$DimIdx,STORI(NSTORI+$(DimIdx)-1,$In-STORI(NSTORI+$(DimIdx),$Indx)
  51.       ELSE
  52.       CALL ixcdx_sort($Vcap,$DimIdx,STORI(NSTORI+$(DimIdx)-1,STORI(NSTORI+$(DimIdx)-$In,$Indx)
  53.       ENDIF
  54.       #ENDIF
  55.       #LOCAL INTEGER Ki
  56.       DO Ki=0,$DimIdx
  57.        STORI(NSTOTI+Ki) = $Indx(Ki)
  58.       END DO
  59.       STORI(NSTORI+$(DimIdx) = $In
  60.       NSTORI = NSTORI+1+$(DimIdx)
复制代码



出现错误如下
截图201912221451321040..png


本人是Fortran语言的初学者,什么原因出现了这样的错误不清楚,还请各位大佬赐教,十分感谢!!!
截图201912221444121340..png
回复

使用道具 举报

发表于 2019-12-22 15:02:08 | 显示全部楼层
#IF (In>STORI(NSTORI+(DimIdx))改成IF (In>STORI(NSTORI+(DimIdx))
回复

使用道具 举报

 楼主| 发表于 2019-12-22 15:09:07 | 显示全部楼层
    程序调了字体大小后发生了一些变形,原本的程序如下
      
  1. #STORAGE INTEGER:$(DimIdx)+1
  2.       #LOCAL i,j,k
  3.       #IF ($In>STORI(NSTORI+$(DimIdx))
  4.       j=0
  5.       k=$DimIdx-STORI(NSTORI+$(DimIdx)
  6.       DO i=0,$DimIdx
  7.       IF(STORI(NSTOTI+i)=0)THEN
  8.       $Vcap(j)=$Vcap(i)
  9.       j=j+1
  10.       ELSE
  11.       $Vcap(k)=$Vcap(i)
  12.       k=k+1
  13.       END DO
  14.       IF ($Iac>=0)THEN

  15.       CALL idcdd_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$In-STORI(NSTORI+$(DimIdx),$Indx)
  16.       ELSE
  17.       CALL ixcdd_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,STORI(NSTORI+$(DimIdx)-$In,$Indx)
  18.       ENDIF
  19.       #ELSEIF ($In==STORI(NSTORI+$(DimIdx))
  20.       j=0
  21.       k=$DimIdx-STORI(NSTORI+$(DimIdx)
  22.       DO i=0,$DimIdx
  23.       IF(STORI(NSTOTI+i)=0)THEN
  24.       $Vcap(j)=$Vcap(i)
  25.       j=j+1
  26.       ELSE
  27.       $Vcap(k)=$Vcap(i)
  28.       k=k+1
  29.       END DO
  30.       IF ($Iac>=0)THEN

  31.       CALL idcde_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$Indx)
  32.       ELSE
  33.       CALL ixcde_sort($Vcap,$DimIdx,$DimIdx-STORI(NSTORI+$(DimIdx)-1,$Indx)
  34.       ENDIF
  35.       #ELSE
  36.       j=0
  37.       k=STORI(NSTORI+$(DimIdx)
  38.       DO i=0,$DimIdx
  39.       IF(STORI(NSTOTI+i)=1)THEN
  40.       $Vcap(j)=$Vcap(i)
  41.       j=j+1
  42.       ELSE
  43.       $Vcap(k)=$Vcap(i)
  44.       k=k+1
  45.       END DO
  46.       IF ($Iac>=0)THEN
  47.       CALL idcdx_sort($Vcap,$DimIdx,STORI(NSTORI+$(DimIdx)-1,$In-STORI(NSTORI+$(DimIdx),$Indx)
  48.       ELSE
  49.       CALL ixcdx_sort($Vcap,$DimIdx,STORI(NSTORI+$(DimIdx)-1,STORI(NSTORI+$(DimIdx)-$In,$Indx)
  50.       ENDIF
  51.       #ENDIF
  52.       #LOCAL INTEGER Ki
  53.       DO Ki=0,$DimIdx
  54.        STORI(NSTOTI+Ki) = $Indx(Ki)
  55.       END DO
  56.       STORI(NSTORI+$(DimIdx) = $In
  57.       NSTORI = NSTORI+1+$(DimIdx)
复制代码


回复

使用道具 举报

 楼主| 发表于 2019-12-22 15:15:49 | 显示全部楼层
宅男 发表于 2019-12-22 15:02
#IF (In>STORI(NSTORI+(DimIdx))改成IF (In>STORI(NSTORI+(DimIdx))

厉害!!!大佬,什么原因?我是一头雾水
回复

使用道具 举报

 楼主| 发表于 2019-12-22 15:22:43 | 显示全部楼层
截图201912221521211665..png 又出现了这样的问题,什么情况,帮帮忙,大佬
回复

使用道具 举报

发表于 2019-12-22 15:25:47 | 显示全部楼层
origin 发表于 2019-12-22 15:09
程序调了字体大小后发生了一些变形,原本的程序如下

有个上传代码功能 ,帮你修改主了,这样看就舒服了
回复

使用道具 举报

发表于 2019-12-22 15:34:08 | 显示全部楼层
origin 发表于 2019-12-22 15:22
又出现了这样的问题,什么情况,帮帮忙,大佬

你还是给源文件吧,刚刚那错是因为前一段时间帮人校正过,所以一眼看出,不经过修改调试,说不好
回复

使用道具 举报

 楼主| 发表于 2019-12-22 16:08:04 | 显示全部楼层
展开
宅男 发表于 2019-12-22 15:34
你还是给源文件吧,刚刚那错是因为前一段时间帮人校正过,所以一眼看出,不经过修改调试,说不好 ...

我给你模型的文件吧,你帮我看看,打开那个MMC的pscad文件,里面的mmc02__副本7m3

PSCAD模型.zip

10.11 MB, 下载次数: 22, 下载积分: 金钱 -1

回复

使用道具 举报

 楼主| 发表于 2019-12-22 16:09:24 | 显示全部楼层
宅男 发表于 2019-12-22 15:25
有个上传代码功能 ,帮你修改主了,这样看就舒服了

好的,谢谢
回复

使用道具 举报

发表于 2019-12-22 16:20:11 | 显示全部楼层
你好,想问下#STORAGE INTEGER:$(DimIdx)+1,和#STORAGE INTEGER:$DimIdx+1,格式上有影响吗,或者说有区别吗
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 17:58 , Processed in 0.127127 second(s), 70 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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