xingzaiyuanfang 发表于 2014-6-11 21:41:34

自定义模型通不过编译

请教一下各位大神,我的AC8B自定义模型程序总是通不过编译报错END STATEMENT IS MISSING,Syntax error found identifier strtin when
expecting one of the end of statement, 到底错在哪里啊,求助一下!!!!
程序如下
SUBROUTINE AC8B(MC,ISLOT)
    INTEGER MC,ISLOT
C
C   MC =MACHINE ARRAY INDEX
C   ISLOT=ARRAY ALLOCATION TQABLE INDEX
C   J =STRTIN(1,ISLOT)
C   K =STRTIN(2,ISLOT)
C
    $INSERT COMON4
C
    INTRINSIC MAX,EXP,LOG
    EXTERNAL BADMID
C
    INTEGERIB,J,K
    REAL VERROR,VPID,SE,IN,   FEX,VEMAX,   A,   B
    REAL VE0,VR0,   VPID0
C
C   DO NOTHING IN ACTIVITIES 'DOCU' AND 'DYDA' FOR NOW
C
    IF (MODE.GT.4) RETURN
C
C   BUS SEQUENCS NUMBER NEGATIVE IF MACHINE
C   IS OFF LINE,SVS OR INDUCTION MACHINE
C
    IB=NUMTRM(MC)
    IF (IB.LE.0) RETURN
C
    IF (MIDTRM) GO TO 900
C
C   GET STARTING 'CON' AND 'STATE' INDICES
C
    J=STRTIN(1,ISLOT)
    K=STRTIN(2,ISLOT)
    B=LOG(CON(J+20)/CON(J+18))/(CON(19)-CON(17))   
    A=CON(J+18)/EXP(B*CON(J+17))
C
    GO TO(100,200,300,400),MODE
C
C   MODE = 1 – INITIALIZE
C
100 STATE(K)=ECOMP(MC)
    VREF(MC)=ECOMP(MC)-VUEL(MC)-VOEL(MC)
    STATE(K+2)=0
    VE0=EFD(MC)+0.577*CON(J+11)*XADIFD(MC)
    VR0=(A*EXP(B*VE0)+CON(J+13))*VE0+CON(J+12)*XADIFD(MC)
    VPID0=VR0/CON(J+7)
    STATE(K+4)=VE0
    STATE(K+3)=VR0
    STATE(K+2)=VPID0
    VAR(L)=VPID0
    VAR(L+1)=1-0.577*XADIFD(MC)/VE0
    VAR(L+2)=(CON(J+15)-CON(J+12)*XADIFD(MC))/(CON(J+13)+A*EXP(B*VE0))
    IF (VR0.LT.CON(J+10).OR.VR0.GT.CON(J+9)) THEN
       WRITE(LPDEV,307) NUMBUS(IB),MACHID(MC)
    ENDIF
    IF (VE0.LT.CON(J+16).OR.VE0.GT.VAR(L+2)) THEN
       WRITE(LPDEV,307) NUMBUS(IB),MACHID(MC)
    ENDIF
    RETURN
C
C   MODE = 2 – CALCULATE DERIVATIVES
C
200 DSTATE(K)=(ECOMP(MC)-STATE(K))/CON(J)
    VERROR=VREF(MC)+VOTHSG(MC)+VUEL(MC)+VOEL(MC)-STATE(K)
    DSTATE(K+1)=CON(J+2)*VERRROR
    DSTATE(K+2)=(CON(J+3)/CON(J+4)*VERRROR-STATE(K+2))/CON(J+4)
    VPID=STATE(K+1)-STATE(K+2)+(CON(J+1)+CON(J+3)/CON(J+4))*VERROR
    IF(VPID.GT.CON(J+5)) VPID=CON(J+5)
    IF(VPID.LT.CON(J+6)) VPID=CON(J+6)
    DSTATE(K+3)=(CON(J+7)*VPID-STATE(K+3))/CON(J+8)
    IF(STATE(K+3).GT.CON(J+9)) STATE(K+3)=CON(J+9)
    IF(STATE(K+3).LT.CON(J+10)) STATE(K+3)=CON(J+10)
    SE=A*EXP(B*STATE(K+4))
    DSTATE(K+4)=(STATE(K+3)-(SE+CON(13))*STATE(K+4)
    * -CON(J+12)*XADIFD(MC))/CON(J+14)
    VEMAX=(CON(J+15)-CON(J+12)*XADIFD(MC))/(CON(J+13)+SE)
    IF(STATE(K+4).GT.CON(J+9)) STATE(K+3)=CON(J+9)
    IF(STATE(K+4).LT.CON(J+16)) STATE(K+3)=CON(J+16)
    RETURN
C
C   MODE 3 – SET EFD
C
300 IN=CON(J+11)*XADIFD(MC)/STATE(K+4)
    IF(IN.LE.0) THEN
      FEX=1
    ELSEIF(IN.LE.0.433) THEN
      FEX=1-0.577*IN
    ELSEIF(IN.LT.0.75) THEN
      FEX=SQRT(0.75-IN*IN)
    ELSEIF(IN.LE.1) THEN
      FEX=1.732*(1-IN)
    ELSE
      FEX=0
    ENDIF
    EFD(I)=FEX*STATE(K+4)
    RETURN
C
C   MODE = 4 – SET NINTEG
C
400 NINTEG=MAX(NINTEG,K+1)
    RETURN
C
C   MODEL NOT IMPLEMENTED FOR MSTR/MRUN
C
307 FORMAT('AC8B AT BUS',16,'MACHINE',A,
    *, 'INITIALIZED OUT OF LIMITS')
C
900 CALL BADMID(MC,IB,'AC8B')
    RETURN
C
    END

apsal 发表于 2014-8-6 08:59:14

猜你是用的for格式写的Fortran代码。那你应该每行空出前6列,你现在只空了4列吧?

大肚腩 发表于 2015-1-14 00:34:06

做的自定义励磁?

kinghcyy 发表于 2015-3-8 07:00:26

请问你怎么自建模型的?谢谢谢谢!

君弃剑 发表于 2016-7-24 16:34:28

楼主好人,请问你怎么自建模型的?谢

小宇1994 发表于 2017-10-18 11:20:28

楼主您好,我想问问您是怎样进行编译的?万分感谢!

snowlyy 发表于 2020-5-14 00:41:35

最后结尾得 end sub routine AC8B这样?
页: [1]
查看完整版本: 自定义模型通不过编译

招聘斑竹