C*********************************************************** SUBROUTINE TYPE70(T,XIN,OUT,Q,DQDT,PAR,INFO,ICNTRL,*) C version from 12/22/89 C SAMPLE INPUT AND OUTPUT FOLLOW THE NOMENCLATURE C*********************************************************** C C THIS COMPONENT SIMULATES THE PERFORMANCE OF A LEAD-ACID C STORAGE BATTERY. IT IS DESIGNED TO OPERATE IN CONJUNCTION C WITH A SOLAR CELL ARRAY AND A REGULATOR. C C Q = STATE OF CHARGE [AH] C QM = RATED CAPACITY OF CELL [AH] C QC,QD = CAPACITY PARAMETERS ON CHARGE, DISCHARGE C F = FRACTIONAL STATE OF CHARGE = Q/QM (1.0 IS FULL CHARGE) C CP,CS = NUMBER OF CELLS IN PARALLEL, SERIES C P = POWER [WATTS] C IQ = CURRENT [AMPS C IQMAX,IQMIN = MAXIMUM CURRENT (CHARGE), MINIMUM CURRENT (DISCHARGE) C V = VOLTAGE [VOLTS] C VC,IC = CUTOFF VOLTAGE ON CHARGE, CURRENT CORRESPONDING TO VC C ICTOL = PARAMETER FOR ITERATIVE CALCULATIONS C VD = CUTOFF VOLTAGE ON DISCHARGE C ED,RD = DATA USED TO CALCULATE VD WHEN VCONTR .LT. 0. C VCONTR = SPECIFICATION OF VOLTAGE CONTROL ON DISCHARGE. C POSITIVE MEANS VD=VCONTR. NEGATIVE MEANS VD=ED-ABS(IQ)*RD. C VDI = DIODE VOLTAGE FROM Z-P MODEL C VOC = OPEN CIRCUIT VOLTAGE AT FULL CHARGE C ESC,ESD = EXTRAPOLATED OPEN CIRCUIT VOLTAGES C GC,GD = COEFFICIENTS OF (1-F)IN V FORMULAS C RSC,RSD = INTERNAL RESISTANCES AT FULL CHARGE C MC,MD = CELL TYPE PARAMETERS WHICH DETERMINE THE SHAPES OF THE C I-V-Q CHARACTERISTICS C ICOUNT=COUNTS THE NUMBER OF ITERATIONS INVOLVED IN OBTAINING IC C C THE BATTERY MODEL IS THE MODEL RECOMMENDED IN THE BEST C REPORT (THE HYMAN MODEL). IT IS THE SHEPHERD MODEL MODIFIED BY C THE ADDITION OF A ZIMMERMAN-PETERSEN DIODE IN BOTH THE CHARGE AND C DISCHARGE EQUIVALENT CIRCUITS. C******************************************************************** C C SAMPLE INPUT, PARAMETERS, AND OUTPUT VALUES C C INPUT SAMPLE VALUES C XIN(1) IQ 15.0 C C PARAMETERS C PAR(1) QM 250.0 C PAR(2) CP 3.0 C PAR(3) CS 102.0 C PAR(4) EFF .95 C PAR(5) VC 2.3 C PAR(6) VCONTR -1.0 C PAR(7) ICTOL .01 C PAR(8) ESC 2.25 C PAR(9) ESD 2.10 C PAR(10) GC .08 C PAR(11) GD .08 C PAR(12) MC .864 C PAR(13) MD 1.0 C PAR(14) ED 1.8 C PAR(15) RD .0024 C PAR(16) I1 2.5 C PAR(17) K1 29.3 C PAR(18) QC -8.75 C PAR(19) QD 294.12 C PAR(20) RSC .012 C PAR(21) RSD .002 C C DERIVATIVES C 1 INITIAL VALUE 200.0 C C OUTPUTS C OUT(1) 202.4 C OUT(2) 0.8095 C OUT(3) 3385.0 C OUT(4) 169.2 C OUT(5) 15.0 C OUT(6) 225.7 C OUT(7) 182.4 C OUT(8) 234.6 C OUT(9) 61.6 C C*************************************************************** DOUBLE PRECISION XIN, OUT DIMENSION + DQDT(1), INFO(15), OUT(9), PAR(21), + Q(1), XIN(1) REAL + I1, IC, IC1, ICTOL, + IDF, IQ, IQMAX, IQMIN, + K1, MC, MD C*************************************************************** IF(INFO(7).GE.0)THEN C**** set inputs IQ=XIN(1) C**** current for one cell IQ=IQ/CP ENDIF IF(INFO(7).EQ.0)THEN C**** computation of state of charge of battery from C**** the previous time step F=OUT(2) H=1.-F ENDIF C------------------------------------------------------- C**** Initialization--first call of component IF (INFO(7).LT.0) THEN INFO(9)=1 INFO(6)=9 CALL TYPECK (1,INFO,1,21,1) NDER=INFO(5) IF (NDER.NE.1) THEN CALL TYPECK (5,INFO,0,0,0) RETURN ENDIF C C**** Set parameters QM=PAR(1) CP=PAR(2) CS=PAR(3) EFF=PAR(4) VC=PAR(5) VCONTR=PAR(6) IF (VCONTR.GT.0) THEN VD=VCONTR C**** Check on minimum discharge voltage IF (VD.GT.2.5.OR.VD.LT.1.5) CALL TYPECK (-4,INFO,0,0,0) ENDIF ICTOL=PAR(7) ESC=PAR(8) ESD=PAR(9) GC=PAR(10) GD=PAR(11) MC=PAR(12) MD=PAR(13) ED=PAR(14) RD=PAR(15) I1=PAR(16) K1=PAR(17) QC=PAR(18) QD=PAR(19) RSC=PAR(20) RSD=PAR(21) C**** Check on maximum charge voltage IF (VC.GT.2.8.OR.VC.LT.1.8) CALL TYPECK (-4,INFO,0,0,0) C-------------------------------------------------------- C**** first and following calls in time step ELSE C**** Modified Shepherd Model VOC=(ESC+ESD)/2. IF (IQ.GE.0.) THEN C**** Charging VDI=1./K1*ALOG(IQ/I1+1.) V=VOC+VDI-GC*H+IQ*RSC*(1.+MC*H/(QC/QM-H)) ICOUNT=0 IC=50. C**** Iterative search for current 30 CONTINUE IC1=IC VDI=1./K1*ALOG(ABS(IC1)/I1+1.) IC=(VC-VOC-VDI+GC*H)/RSC/(1.+MC*H/(QC/QM-H)) ICOUNT=ICOUNT+1 C**** 100 iterations are permitted to find IC IF(ICOUNT.GT.100)THEN GOTO 50 ELSE IF (ABS(IC1-IC).GT.ICTOL) GO TO 30 ENDIF 50 CONTINUE DQDT(1)=IQ*EFF ELSE C**** Discharging VDI=1./K1*ALOG(-IQ/I1+1.) V=VOC-VDI-GD*H+IQ*RSD*(1.+MD*H/(QD/QM-H)) DQDT(1)=IQ ENDIF ENDIF C-------------------------------------------------------- P=IQ*V C**** Output OUT(1)=Q(1) OUT(2)=Q(1)/QM OUT(3)=P*CP*CS OUT(4)=0. IF (P.GT.0.) OUT(4)=(1.-EFF)*P*CP*CS OUT(5)=IQ*CP OUT(6)=V*CS IF (VCONTR.LT.0.) VD=ED-ABS(IQ)*RD OUT(7)=VD*CS OUT(8)=VC*CS OUT(9)=IC*CP RETURN 1 END