C ====================================================================== SUBROUTINE DSDYN C ---------------------------------------------------------------------- C Title:Trex C C *** FORTRAN 77 *** C C Associated files: C OH.dat C OH.dso.f C C ====================================================================== C Include and Common Block Declarations C ---------------------------------------------------------------------- INCLUDE 'emt.d' INCLUDE 'emt.e' COMMON /S1/TIME,DELT,ICH,PRINT,FINTIM COMMON /S2/STOR(ND10),NEXC COMMON /S4/VAR(ND11),CON(ND12),PGB(ND13) REAL PI_, TWO_PI, PI_BY3, PI2_BY3 DATA PI_/3.141592654/, TWO_PI/6.283185307/ DATA PI_BY3/1.047197551/, PI2_BY3/2.094395102/ C C ====================================================================== C Function Declarations C ---------------------------------------------------------------------- C INTGL3 : Integrator C LIMIT : Hard Limiter C APLIN : nonlinear transfer characteristic C PI3 : Proportional/Integral Controller C RAMP3 : Rate Limiter C TSAT21 : Transformer Saturation Subroutine C G6P200 : Valve Group Model C DERIV1 : Derivative Function C ESYS65 : 3-Phase RRL Source model w/ Zero sequence C REAL INTGL3 REAL LIMIT REAL APLIN REAL PI3 REAL RAMP3 REAL DERIV1 C ====================================================================== C Variable Declarations C ---------------------------------------------------------------------- REAL TIME,DELT,PRINT,FINTIM,STOR,VAR,CON,PGB INTEGER ICH,NEXC REAL AR, KB, IRSET, Freq, Vrms, POL, Poh, ILS REAL IDS, RT_1, RT_2, VT2(6), IT2(6), GI, RT_3 REAL RT_4, VT3(6), IT3(6), RT_5, AM, RT_10 REAL RT_11, VT4(6), IT4(6), RT_12, RT_13, RT_14 REAL VT1(6), IT1(6), RT_21, RT_22, RT_25, RT_26 REAL RT_27, RT_28, RT_29, RT_30, RT_33, RT_34 REAL RT_35, RT_36, RT_37, RT_38, RT_39, RT_40 REAL RT_41, RT_42, RT_43, RT_44, RT_45, RT_46 REAL RT_47, RT_48, RT_49, RT_50, RT_51, RT_52 REAL RT_53, RT_54, RT_55, RT_56, RT_57, RT_58 REAL RT_59, RT_60, RT_61, RT_62, RT_63, RT_64 REAL RT_65, RT_66, RT_67, RT_68, RT_69, RT_70 REAL RT_71, RT_72, RT_73, RT_74, RT_75, RT_76 REAL RT_77, RT_78, RT_79, RT_80, RT_81, RT_82 REAL RT_83, RT_84, RT_85, RT_86, RT_87, RT_88 REAL RT_89, RT_90, RT_91, RT_92, RT_93, RT_94 REAL RT_95, RT_96, RT_97, RT_98, RT_99, RT_100 REAL RT_101, RT_102, RT_103, RT_104, RT_105 REAL RT_106, RT_107, RT_108, RT_109, RT_110 REAL RT_111, RT_112, RT_113, RT_114, RT_115 REAL RT_116, RT_117, RT_118, PGAIN, ITAU, RT_119 REAL RT_120, RT_121, VDO, RT_122, RT_123, RT_124 REAL RT_125, RT_126, RT_127, X_C(10), Y_C(10) REAL RT_128, RT_129, RT_130, RT_131, X_KNEE REAL C_INST, P_MES, Q_MES, E_RMS, THETA_D, A_CURR REAL B_CURR, C_CURR, A_MAG, B_MAG, C_MAG, SRC_V REAL SRC_F, SRC_P INTEGER FP2(6), FP3(6), FP4(6), FP1(6), IT_3, IT_4 INTEGER IT_5, IT_6, IT_7, IT_8, IT_9, IT_10 C C ====================================================================== C CON() definitions C ---------------------------------------------------------------------- C CON( 1) = Reference of "RT_38" before definition. C CON( 2) = Reference of "Poh" before definition. C CON( 3) = Reference of "RT_40" before definition. C CON( 4) = Reference of "ILS" before definition. C CON( 5) = Reference of "IDS" before definition. C CON( 6) = Transfer of "RT_21" to DSDYN. C C ====================================================================== C VAR() definitions C ---------------------------------------------------------------------- C VAR(1) Slider Desc="Pmotor" Group="" Min=-1.12e+07 Max=1.12e+07 InitValue=0.0 Units="MW" C VAR(2) Slider Desc="Comm Inductance" Group="GenCtrl" Min=1.0e-05 Max=5.0e-05 InitValue=2.26338e-05 Units="H" C VAR(3) Switch Desc="Control Mode" Group="GenCtrl" InitValue=0 P0=0.0 P1=1.0 OnText="ON_V" OffText="OFF_I" C VAR(4) Slider Desc="min Gamma" Group="GenCtrl" Min=0.0 Max=90.0 InitValue=15.0 Units="deg" C VAR(5) Slider Desc="Intgrl Gain" Group="GenCtrl" Min=0.0 Max=200.0 InitValue=0.0 Units="farads" C VAR(6) Slider Desc="Prop Gain" Group="GenCtrl" Min=0.0 Max=100.0 InitValue=0.0 Units="ohms" C VAR(7) Slider Desc="GI_PLO" Group="GenCtrl" Min=0.0 Max=200.0 InitValue=100.0 Units="" C C ====================================================================== C Subsystem: "MG" C ---------------------------------------------------------------------- RT_35 = 0.0 RT_36 = VAR(1) RT_39 = 76.360 RT_45 = 1.576712e+04 RT_47 = 1.20 RT_49 = 2.376e+03 RT_51 = 3.0 RT_53 = 3.3410 RT_56 = 2.718e+09 RT_57 = 5.546995e+05 RT_58 = 13.80 Vrms = RT_58 RT_38 = CON(1) C RT_37 = RT_36 * RT_38 C Poh = CON(2) RT_40 = CON(3) RT_34 = - RT_35 - Poh + RT_37 - RT_40 C PGB(1) = RT_34 C Integrator RT_54 = INTGL3( 2.718e+09, 0.0, 4.25e+09, 1.0, RT_34) C C IF (ABS(RT_57) .LT. 1.0E-10) THEN IF (RT_57 .LT. 0.0) THEN RT_42 = -1.0E10 * RT_54 ELSE RT_42 = 1.0E10 * RT_54 ENDIF ELSE RT_42 = RT_54 / RT_57 ENDIF C C IF (RT_42 .LE. 0.0) THEN RT_43 = 0.0 ELSE RT_43 = SQRT(RT_42) ENDIF C C IF (ABS(RT_39) .LT. 1.0E-10) THEN IF (RT_39 .LT. 0.0) THEN RT_38 = -1.0E10 * RT_43 ELSE RT_38 = 1.0E10 * RT_43 ENDIF ELSE RT_38 = RT_43 / RT_39 ENDIF C C RT_44 = RT_43 * RT_45 C C RT_46 = RT_43 ** RT_47 C C RT_48 = RT_46 * RT_49 C C RT_50 = RT_43 ** RT_51 C C RT_52 = RT_50 * RT_53 C RT_41 = + RT_48 + RT_52 C RT_40 = + RT_44 + RT_41 C Freq = RT_43 PGB(2) = RT_43 RT_55 = + RT_56 - RT_54 C PGB(3) = RT_55 CON(1) = RT_38 CON(3) = RT_40 C ====================================================================== C Subsystem: "OH Coil R(I^2T)" C ---------------------------------------------------------------------- RT_60 = 4.5496e-15 RT_63 = 0.136080 RT_66 = 2.0934e+14 RT_69 = 2.8709e+11 RT_70 = 10.0 RT_71 = 6.2949e+13 RT_73 = 5.3309e-32 RT_75 = 1.4139e-04 RT_78 = 0.00410 RT_81 = 1.0 C RT_65 = RT_66 * RT_70 C C RT_67 = RT_70 * RT_70 C C RT_68 = RT_67 * RT_69 C RT_59 = + RT_71 + RT_65 - RT_68 C ILS = CON(4) C IF (ABS(RT_75) .LT. 1.0E-10) THEN IF (RT_75 .LT. 0.0) THEN RT_86 = -1.0E10 * ILS ELSE RT_86 = 1.0E10 * ILS ENDIF ELSE RT_86 = ILS / RT_75 ENDIF C C RT_84 = RT_86 * RT_86 C C Gain RT_85 = 1000.0 * RT_84 C C Integrator RT_87 = INTGL3( 0.0, 0.0, 1.0e+20, 0.0010, RT_85) C RT_72 = + RT_87 + RT_59 C C RT_61 = RT_72 * RT_72 C C RT_62 = RT_61 * RT_73 C C RT_83 = RT_60 * RT_72 C RT_64 = + RT_63 + RT_83 + RT_62 C RT_74 = AMAX1(RT_64,RT_70) C PGB(4) = RT_74 RT_76 = + RT_74 - RT_70 C C RT_77 = RT_76 * RT_78 C C RT_79 = ILS * RT_77 C RT_80 = + RT_77 + RT_81 C PGB(5) = RT_80 C Gain RT_82 = 0.10 * RT_79 C IRSET = RT_82 C RT_88 = ILS * ILS C C Gain RT_89 = 1000.0 * RT_88 C C Integrator RT_90 = INTGL3( 0.0, 0.0, 1.0e+20, 0.0010, RT_89) C PGB(6) = RT_90 C ====================================================================== C Subsystem: "Mode Control" C ---------------------------------------------------------------------- RT_104 = 13.80 RT_105 = 0.750 RT_108 = VAR(2) RT_109 = VAR(3) RT_111 = VAR(4) RT_112 = TIME IT_3 = 0 IT_4 = 1 IT_5 = -7 IT_6 = 0 IT_10 = 33 RT_122 = VAR(5) RT_123 = 1.0 PGAIN = VAR(6) RT_125 = 4.0 RT_126 = TIME RT_128 = TIME RT_130 = TIME C Cosine Function RT_99 = COS(RT_111 * 0.0174533) C C IF (ABS(RT_105) .LT. 1.0E-10) THEN IF (RT_105 .LT. 0.0) THEN RT_103 = -1.0E10 * RT_104 ELSE RT_103 = 1.0E10 * RT_104 ENDIF ELSE RT_103 = RT_104 / RT_105 ENDIF C C IF (ABS(RT_103) .LT. 1.0E-10) THEN IF (RT_103 .LT. 0.0) THEN RT_102 = -1.0E10 * Vrms ELSE RT_102 = 1.0E10 * Vrms ENDIF ELSE RT_102 = Vrms / RT_103 ENDIF C C Gain RT_107 = 6.28320 * Freq C C RT_106 = RT_108 * RT_107 C C Gain RT_110 = 1.41420 * RT_106 C C IF (ABS(RT_102) .LT. 1.0E-10) THEN IF (RT_102 .LT. 0.0) THEN RT_101 = -1.0E10 * RT_110 ELSE RT_101 = 1.0E10 * RT_110 ENDIF ELSE RT_101 = RT_110 / RT_102 ENDIF C IDS = CON(5) C RT_100 = RT_101 * IDS C RT_98 = + RT_100 - RT_99 C C Hard Limit RT_97 = LIMIT(-1.0, 1.0, RT_98) C C ArcCosine Function RT_96 = ACOS(RT_97) C C Step_Xfer_Function IF (RT_112 .LT. 0.050) THEN RT_113 = 0.0 ELSE RT_113 = 1.0 ENDIF C C COMPARATOR IF ( IDS .GT. FLOAT(IT_10)) THEN IT_9 = 1.0 ELSE IT_9 = 0.0 ENDIF C C RSFlipFlop IF(TIME.LT.DELT) THEN STOR(NEXC+1)=0 ELSE IF ((IT_9.NE.0).AND.(IT_6.EQ.0)) THEN STOR(NEXC+1)=1 ELSE IF ((IT_6.NE.0).AND.(IT_9.EQ.0)) THEN STOR(NEXC+1)=0 END IF END IF IT_7=STOR(NEXC+1) IT_8=1-IT_7 NEXC=NEXC+1 C C Selector IF (IT_7 .EQ. 1) THEN RT_115 = FLOAT(IT_5) ELSE RT_115 = FLOAT(IT_4) ENDIF C C Selector IF (NINT(RT_113) .EQ. 1) THEN RT_114 = RT_115 ELSE RT_114 = FLOAT(IT_3) ENDIF C PGB(7) = RT_114 PGB(8) = FLOAT(IT_9) PGB(9) = FLOAT(IT_7) C Gain RT_121 = 57.30 * RT_96 C PGB(10) = RT_121 C Gain VDO = 1.350 * RT_102 C C IF (ABS(RT_122) .LT. 1.0E-10) THEN IF (RT_122 .LT. 0.0) THEN ITAU = -1.0E10 * RT_123 ELSE ITAU = 1.0E10 * RT_123 ENDIF ELSE ITAU = RT_123 / RT_122 ENDIF C C RT_124 = RT_125 * VDO C X_C(1) = 0.050 X_C(2) = 0.0510 X_C(3) = 0.270 X_C(4) = 0.2710 X_C(5) = 0.280 X_C(6) = 0.2810 X_C(7) = 0.5440 X_C(8) = 0.670 X_C(9) = 1.070 X_C(10) = 1.370 Y_C(1) = 0.0 Y_C(2) = 24.0 Y_C(3) = 24.0 Y_C(4) = 0.0 Y_C(5) = 0.0 Y_C(6) = 20.0 Y_C(7) = 0.0 Y_C(8) = 8.30 Y_C(9) = 20.40 Y_C(10) = 0.0 C Transfer Function RT_127 = APLIN(10,X_C,Y_C,RT_126) C RT_91 = + RT_127 - ILS C PGB(11) = RT_127 C PI_Controller RT_118 = PI3( PGAIN , ITAU , -4.40 , 4.40, 4.40 , RT_91) C C Selector IF (NINT(RT_109) .EQ. 1) THEN RT_92 = RT_127 ELSE RT_92 = RT_118 ENDIF C C IF (ABS(RT_124) .LT. 1.0E-10) THEN IF (RT_124 .LT. 0.0) THEN RT_93 = -1.0E10 * RT_92 ELSE RT_93 = 1.0E10 * RT_92 ENDIF ELSE RT_93 = RT_92 / RT_124 ENDIF C C Hard Limit RT_95 = LIMIT(-1.0, 1.0, RT_93) C C ArcCosine Function RT_94 = ACOS(RT_95) C RT_116 = AMIN1(RT_94,RT_96) C C Rate Limiter RT_117 = RAMP3(2.0e+03, 2.0e+03, RT_116) C C Gain RT_119 = 57.30 * RT_94 C PGB(12) = RT_119 PGB(13) = RT_91 C Gain RT_120 = 57.30 * RT_117 C PGB(14) = RT_120 AR = RT_117 PGB(15) = RT_118 C Band_Compare IF (RT_128 .LT. 0.050) THEN RT_129 = 0.0 ELSE IF (RT_128 .LE. 2.0) THEN RT_129 = 1.0 ELSE RT_129 = -7.0 ENDIF C KB = RT_129 C Band_Compare IF (RT_130 .LT. 0.5440) THEN RT_131 = 1.0 ELSE IF (RT_130 .LE. 1.50) THEN RT_131 = -1.0 ELSE RT_131 = 1.0 ENDIF C POL = RT_131 C ====================================================================== C Subsystem: "OH Power Supply" C ---------------------------------------------------------------------- C TRANSFORMER SATURATION SUBROUTINE X_KNEE = 1.250 CALL TSAT21(15,7, 7,11, 11,15, 1, + 8.3333333,7.50,0.20,X_KNEE,60.0,1.0,0.010, 0.0, 0) C C TRANSFORMER SATURATION SUBROUTINE X_KNEE = 1.250 CALL TSAT21(19,21, 21,20, 20,19, 1, + 8.3333333,7.50,0.20,X_KNEE,60.0,1.0,0.010, 0.0, 0) C GI = VAR(7) RT_12 = 0.0 RT_26 = 1.0e+07 RT_29 = 0.01240 RT_30 = 964.0 C G6P200 Valve Group Model CALL G6P200( 1 , 12 , 13 , 14 , + 28 , 32 , 34 , 30 , 28 , 33 , + 32 , 30 , 28 , 34 , 33 , 30 , + AR , 1.0e+04 , GI , 70.0 , NINT(KB) , 1 , -1 , + RT_1 , RT_2 , 666.60 , 0.030 , + 0.005070 , 1.0e+08 , 0.01880 , 1.0e+06 , 0.0 ) C FP2(1) = STOR(NEXC-168) FP2(2) = STOR(NEXC-167) FP2(3) = STOR(NEXC-166) FP2(4) = STOR(NEXC-165) FP2(5) = STOR(NEXC-164) FP2(6) = STOR(NEXC-163) VT2(1) = VDC(32,1)-VDC(28,1) VT2(2) = VDC(30,1)-VDC(34,1) VT2(3) = VDC(33,1)-VDC(28,1) VT2(4) = VDC(30,1)-VDC(32,1) VT2(5) = VDC(34,1)-VDC(28,1) VT2(6) = VDC(30,1)-VDC(33,1) IT2(1) = STOR(NEXC-174) IT2(2) = STOR(NEXC-173) IT2(3) = STOR(NEXC-172) IT2(4) = STOR(NEXC-171) IT2(5) = STOR(NEXC-170) IT2(6) = STOR(NEXC-169) C C G6P200 Valve Group Model CALL G6P200( 1 , 25 , 23 , 24 , + 30 , 39 , 41 , 29 , 30 , 40 , + 39 , 29 , 30 , 41 , 40 , 29 , + AR , 1.0e+04 , GI , 70.0 , NINT(KB) , 1 , 0 , + RT_3 , RT_4 , 666.60 , 0.030 , + 0.005070 , 1.0e+08 , 0.01880 , 1.0e+06 , 0.0 ) C FP3(1) = STOR(NEXC-168) FP3(2) = STOR(NEXC-167) FP3(3) = STOR(NEXC-166) FP3(4) = STOR(NEXC-165) FP3(5) = STOR(NEXC-164) FP3(6) = STOR(NEXC-163) VT3(1) = VDC(39,1)-VDC(30,1) VT3(2) = VDC(29,1)-VDC(41,1) VT3(3) = VDC(40,1)-VDC(30,1) VT3(4) = VDC(29,1)-VDC(39,1) VT3(5) = VDC(41,1)-VDC(30,1) VT3(6) = VDC(29,1)-VDC(40,1) IT3(1) = STOR(NEXC-174) IT3(2) = STOR(NEXC-173) IT3(3) = STOR(NEXC-172) IT3(4) = STOR(NEXC-171) IT3(5) = STOR(NEXC-170) IT3(6) = STOR(NEXC-169) C PGB(19) = FLOAT(FP2(1)) PGB(20) = VT2(1) PGB(21) = FLOAT(FP3(1)) PGB(22) = VT3(1) PGB(23) = IT2(1) PGB(24) = IT3(1) C Single Phase Current Source. C_INST = IRSET CCIN(5, 1) = CCIN(5, 1) + C_INST CCIN(26, 1) = CCIN(26, 1) - C_INST C IF (TIME .LT. DELT) THEN IF (ABS(CCIN(5, 1)) .LE. 1.0E-6) CCIN(5, 1) = 1.0E-6 IF (ABS(CCIN(26, 1)) .LE. 1.0E-6) CCIN(26, 1) = 1.0E-6 ENDIF C C G6P200 Valve Group Model CALL G6P200( 1 , 25 , 23 , 24 , + 29 , 36 , 37 , 26 , 29 , 35 , + 36 , 26 , 29 , 37 , 35 , 26 , + AR , 1.0e+04 , GI , 70.0 , NINT(KB) , 1 , -1 , + RT_10 , RT_11 , 666.60 , 0.030 , + 0.005070 , 1.0e+08 , 0.01880 , 1.0e+06 , 0.0 ) C FP4(1) = STOR(NEXC-168) FP4(2) = STOR(NEXC-167) FP4(3) = STOR(NEXC-166) FP4(4) = STOR(NEXC-165) FP4(5) = STOR(NEXC-164) FP4(6) = STOR(NEXC-163) VT4(1) = VDC(36,1)-VDC(29,1) VT4(2) = VDC(26,1)-VDC(37,1) VT4(3) = VDC(35,1)-VDC(29,1) VT4(4) = VDC(26,1)-VDC(36,1) VT4(5) = VDC(37,1)-VDC(29,1) VT4(6) = VDC(26,1)-VDC(35,1) IT4(1) = STOR(NEXC-174) IT4(2) = STOR(NEXC-173) IT4(3) = STOR(NEXC-172) IT4(4) = STOR(NEXC-171) IT4(5) = STOR(NEXC-170) IT4(6) = STOR(NEXC-169) C PGB(25) = FLOAT(FP4(1)) PGB(26) = VT4(1) PGB(27) = IT4(1) C G6P200 Valve Group Model CALL G6P200( 1 , 12 , 13 , 14 , + 27 , 38 , 42 , 28 , 27 , 31 , + 38 , 28 , 27 , 42 , 31 , 28 , + AR , 1.0e+04 , GI , 70.0 , NINT(KB) , 1 , 0 , + RT_13 , RT_14 , 666.660 , 0.030 , + 0.005070 , 1.0e+08 , 0.01880 , 1.0e+06 , 0.0 ) C FP1(1) = STOR(NEXC-168) FP1(2) = STOR(NEXC-167) FP1(3) = STOR(NEXC-166) FP1(4) = STOR(NEXC-165) FP1(5) = STOR(NEXC-164) FP1(6) = STOR(NEXC-163) VT1(1) = VDC(38,1)-VDC(27,1) VT1(2) = VDC(28,1)-VDC(42,1) VT1(3) = VDC(31,1)-VDC(27,1) VT1(4) = VDC(28,1)-VDC(38,1) VT1(5) = VDC(42,1)-VDC(27,1) VT1(6) = VDC(28,1)-VDC(31,1) IT1(1) = STOR(NEXC-174) IT1(2) = STOR(NEXC-173) IT1(3) = STOR(NEXC-172) IT1(4) = STOR(NEXC-171) IT1(5) = STOR(NEXC-170) IT1(6) = STOR(NEXC-169) C C Gain RT_5 = 57.2957795 * RT_14 C C Gain AM = 57.2957795 * RT_13 C PGB(28) = AM PGB(29) = RT_5 PGB(30) = FLOAT(FP1(1)) PGB(31) = VT1(1) PGB(32) = IT1(4) PGB(33) = IT1(5) PGB(34) = IT1(6) PGB(35) = IT1(1) PGB(36) = IT1(2) PGB(37) = IT1(3) RT_21 = CON(6) C Derivative RT_22 = DERIV1( 1.0e-04 , RT_21 ) C C RT_25 = RT_22 * RT_26 C C 3-Phase source: MG A_MAG = 1.0 B_MAG = 1.0 C_MAG = 1.0 SRC_V = Vrms SRC_F = Freq SRC_P = RT_12 CALL ESYS65(1, 3,2,1,0, 1, 3,2,1, + -1.0, 0.00140, 2.14e-04, 1.0, 0.10, + 70.0, SRC_F, 0, SRC_V, 0.0010, + A_MAG, B_MAG, C_MAG, + SRC_P, 13.80, 475.0, + 1.0, 230.0, 0.020, 0.050, + 1.0, 0.020, 0.050, 0, + P_MES, Q_MES, E_RMS, THETA_D, + A_CURR , B_CURR , C_CURR ) C ILS = RT_21 C RT_27 = RT_25 * RT_29 C C IF (ABS(RT_30) .LT. 1.0E-10) THEN IF (RT_30 .LT. 0.0) THEN RT_28 = -1.0E10 * RT_27 ELSE RT_28 = 1.0E10 * RT_27 ENDIF ELSE RT_28 = RT_27 / RT_30 ENDIF C PGB(46) = RT_28 C RT_33 = RT_21 * POL C PGB(48) = RT_33 CON(4) = ILS C ====================================================================== RETURN END