diff --git a/Comanche055/TVCROLLDAP.agc b/Comanche055/TVCROLLDAP.agc index 15396f2..250ee83 100644 --- a/Comanche055/TVCROLLDAP.agc +++ b/Comanche055/TVCROLLDAP.agc @@ -28,56 +28,57 @@ # Colossus 2A # Page 984 -# PROGRAM NAME....TVC ROLL AUTOPILOT -# LOG SECTION....TVCROLLDAP SUBROUTINE....DAPCSM +# PROGRAM NAME...TVC ROLL AUTOPILOT +# LOG SECTION...TVCROLLDAP SUBROUTINE...DAPCSM # MOD BY SCHLUNDT 21 OCTOBER 1968 -# + + # FUNCTIONAL DESCRIPTION.... -# + # *AN ADAPTATION OF THE LEM P-AXIS CONTROLLER # *MAINTAIN OGA WITHIN 5 DEG DEADBND OF OGAD, WHERE OGAD = OGA AS SEEN -# BY IGNOVER (P40) +# BY IGNITION (P40) # *MAINTAIN OGA RATE LESS THAN 0.1 DEG/SEC LIMIT CYCLE RATE # *SWITCHING LOGIC IN PHASE PLANE.... SEE GSOP CHAPTER 3 -# *USES T6 CLOCK TO TIME JET FIRINGS. +# *USES T6 CLOCK TO TIME JET FIRINGS # *MAXIMUM JET FIRING TIME = 2.56 SECONDS, LIMITED TO 2.5 IF GREATER # *MINIMUM JET FIRING TIME = 15 MS # *JET PAIRS FIRE ALTERNATELY # *AT LEAST 1/2 SECOND DELAY BEFORE A NEW JET PAIR IS FIRED # *JET FIRINGS MAY NOT BE EXTENDED, ONLY SHORTENED, WHEN RE-EVALUATION # OF A JET FIRING TIME IS MADE ON A LATER PASS -# + # CALLING SEQUENCE.... -# + # *ROLLDAP CALL VIA WAITLIST, IN PARTICULAR BY TVCEXEC (EVERY 1/2 SEC) # WITH A 3CS DELAY TO ALLOW FREE TIME FOR OTHER RUPTS (DWNRPT, ETC.) -# + # NORMAL EXIT MODES.... ENDOFJOB -# + # ALARM OR ABORT EXIT MODES.... NONE -# + # SUBROUTINES CALLED.....NONE -# + # OTHER INTERFACES.... -# + # *TVCEXEC SETS UP ROLLDAP TASK EVERY 1/2 SECOND AND UPDATES 1/CONACC # EVERY 10 SECONDS (VIA MASSPROP AND S40.15) # *RESTARTS SUSPEND ROLL DAP COMPUTATIONS UNTIL THE NEXT 1/2 SEC # SAMPLE PERIOD. (THE PART OF TVCEXECUTIVE THAT CALLS ROLL DAP IS # NOT RESTARTED.) THE OGAD FROM IGNITION IS MAINTAINED. -# -# ERASABLE INITIALIZATION REQUIRED -# -# *1/CONACC (S40.15) -# *OGAD (CDUX, AT IGNITION) -# *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE) -# *OGAPAST (OGANOW AT TVCEXECUTIVE) -# *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON) + +# ERASABLE INITIALIZATION REQUIRED.... + +# *1/CONACC (S40.15) +# *OGAD (CDUX AT IGNITION) +# *OGANOW (CDUX AT TVCINIT4 AND TVCEXECUTIVE) +# *OGAPAST (OGANOW AT TVCEXECUTIVE) +# *ROLLFIRE = TEMREG = ROLLWORD = 0 (MRCLEAN LOOP IN TVCDAPON) # # OUTPUT.... -# + # *ROLL JET PAIR FIRINGS -# + # Page 985 # DEBRIS.... MISCELLANEOUS, SHAREABLE WITH RCS/ENTRY, IN EBANK6 ONLY @@ -86,7 +87,7 @@ # LOGIC. SEE SECTION THREE OF THE GSOP (SUNDISK/COLOSSUS) FOR DETAILS. # SWITCHING LOGIC IN THE PHASE PLANE.... -# + # OGARATE # * # * @@ -118,17 +119,17 @@ # * -MAXLIM # * # * -# + # SWITCHING PARABOLAS ARE CONTROL PARABOLAS, THUS REQUIRING KNOWLEDGE OF # CONTROL ACCELERATION CONACC, OR ITS RECIPROCAL, 1/CONACC, THE TVC -# ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET +# ROLL DAP GAIN (SEE TVCEXECUTIVE VARIABLE GAIN PACKAGE). JET # FIRING TIME IS SIMPLY THAT REQUIRED TO ACHIEVE THE DESIRED OGARATE, # SUBJECT TO THE LIMITATIONS DISCUSSED UNDER FUNCTIONAL DESCRIPTION, # ABOVE. -# -# THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRISED OF -# TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME... -# 5-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS) + +# THE THREE CONTROL REGIONS (+, -, AND ZERO TORQUE) ARE COMPRIZED OF +# TWELVE SUBSET REGIONS ( 1...6, AND THE CORRESPONDING 1-PRIME... +# 6-PRIME ) SEE SECTION 3 OF THE GSOP (SUNDISK OR COLOSSUS) # Page 987 # # GIVEN THE OPERATING POINT NOT IN THE COAST REGION, THE DESIRED OGARATE @@ -137,7 +138,7 @@ # DESIRED OGARATE IS SIMPLY +-MAXLIM. FOR REGIONS 1 OR 6 THE SOLUTION # TO A QUADRATIC IS REQUIRED (THE PENETRATION IS ALONG THE STRAIGHT # LINE OR MINLIM BOUNDRY SWITCH LINES). AN APPROXIMATION IS MADE -# INSTEAD. CONSIDER AN OPERATING POINT IN REGION 6'. PASS A TANGENT TO +# INSTEAD. TAKE AN OPERATING POINT IN REGION 6' . PASS A TANGENT TO # THE CONTROL PARABOLA THROUGH THE OPERATING POINT, AND FIND ITS # INTERSECTION WITH THE STRAIGHT LINE SECTION OF THE SWITCH CURVE... # THE INTERSECTION DEFINES THE DESIRED OGARATE. IF THE OPERATING POINT IS @@ -149,61 +150,63 @@ # RE-EVALUATION OF DESIRED OGARATE IN SUBSEQUENT ROLL DAP PASSES (1/2 # SECOND INTERVALS) WILL BENEFIT FROM THE CONVERGENT NATURE OF THE # APPROXIMATION. -# + # FOR LARGE OGAERROR THE TANGENT INTERSECTS +-MINLIM SWITCH BOUNDARY BEFORE # INTERSECTING THE STRAIGHT LINE SWITCH. HOWEVER THE MINLIM IS # IGNORED IN COMPUTING THE FIRING TIME, SO THAT THE EXTENSION (INTO # THE COAST REGION) OF THE STRAIGHT LINE SWITCH IS WHAT IS FIRED TO. # IF THE ROLL DAP FINDS ITSELF IN THE COAST REGION BEFORE REACHING -# THE DESIRED INTERSECTION (I.E., IN THE REGION BETWEEN THE MINLIM +# THE DESIRED INTERSECTION (IE. IN THE REGION BETWEEN THE MINLIM # AND THE STRAIGHT LINE SWITCH) IT WILL EXHIBIT NORMAL COAST-REGION # BEHAVIOR AND TURN OFF THE JETS. THE PURPOSE OF THIS FIRING POLICY # IS TO MAINTAIN STATIC ROLL STABILITY IN THE EVENT OF A JET # FAILED-ON. -# + # WHEN THE OPERATING POINT IS IN REGION 1 THE SAME APPROXIMATION IS # MADE, BUT AT AN ARTIFICIALLY-CREATED OR DUMMY OPERATING POINT, -# DEFINED BY: OGAERROR = INTERSECTION OF CONTROL PARABOLA AND +# DEFINED BY.. OGAERROR = INTERSECTION OF CONTROL PARABOLA AND # OGAERROR AXIS, OGARATE = +-LMCRATE WHERE SIGN IS OPPOSITE THAT OF # REAL OPERATING POINT RATE. WHEN THE OPERATING POINT HAS PASSED # FROM REGION 1 TO REGION 6', THE DUMMY POINT IS NO LONGER REQUIRED, # AND THE SOLUTION REVERTS TO THAT OF A REGULAR REGION 6' POINT. -# + + # EQUATION FOR SWITCHING PARABOLA (SEE FIGURE ABOVE).... -# 2 +# 2 # SOGAERROR = (DB - (SOGARATE) (1/CONACC)/2) SGN(SOGARATE) -# + + # EQUATION FOR SWITCHING STRAIGHT LINE SEGMENT.... -# + # SOGARATE = -(-SLOPE)(SOGAERROR) - SGN(SOGARATE) INTERCEP -# + # WHERE INTERCEP = DB(-SLOPE) - LMCRATE # Page 988 # -# EQUATION FOR INTERSECTION, CONTROL PARABOLA, AND STRAIGHT SWITCH LINE.... -# +# EQUATION FOR INTERSECTION, CONTROL PARABOLA AND STRAIGHT SWITCH LINE.... + # DOGADOT = NUM/DEN, WHERE -# 2 -# NUM = (-SLOPE)(OGARATE) (1/CONACC) -# +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB)) -# +LMCRATE -# -# DEN = (-SLOPE)(LMCRATE)(1/CONACC) = SGN(DELOGA) -# 2 -# DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2)SGN(OGARATE) -# -# FOR REGIONS 6 AND 6-PRIME, USE ACTUAL OPERATING POINT (OGA, OGARATE) +# 2 +# NUM = (-SLOPE)(OGARATE) (1/CONACC) +# +SGN(DELOGA)(-SLOPE)(OGAERROR - SGN(DELOGA)(DB)) +# +LMCRATE + +# DEN = (-SLOPE)(LMCRATE)(1/CONACC) - SGN(DELOGA) + +# 2 +# DELOGA = OGAERROR - (DB - (OGADOT) (1/CONACC)/2) SGN(OGARATE) + + +# FOR REGIONS 6 AND 6-PRIME USE ACTUAL OPERATING POINT (OGA, OGARATE) # FOR OGAERROR AND OGARATE IN THE INTERSECTION EQUATIONS ABOVE. # FOR REGIONS 1 AND 1-PRIME USE DUMMY OPERATING POINT FOR OGAERROR # AND OGARATE, WHERE THE DUMMY POINT IS GIVEN BY.... +# OGAERROR= DELOGA + DB SGN(OGARATE) +# OGARATE= -LMCRATE SGN(OGARATE) # -# OGAERROR = DELOGA + DB SGN(OGARATE) -# -# OGARATE = -LMCRATE SGN(OGARATE) -# -# NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING -# ALSO, AT POINT WHERE DOGADOT IS COMPUTED, REGISTER DELOGA IS USED -# AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE. +# NOTE, OGAERROR = OGA - OGAD USES DUMMY REGISTER OGA IN ROLL DAP CODING +# ALSO, AT POINT WHERE DOGARATE IS COMPUTED, REGISTER DELOGA IS USED +# AS A DUMMY REGISTER FOR THE OGAERROR IN THE NUM EQUATION ABOVE # Page 989 # ROLLDAP CODING.... @@ -221,15 +224,15 @@ ROLLDAP CAE OGANOW # OGA RATE ESTIMATOR...SIMPLE FIRST-ORDER TS OGARATE # SC.AT B-4 REV/SEC # COMPUTATIONS WHICH FOLLOW USE OGA FOR OGAERR (SAME REGISTER) -# EXAMINE DURATION OF LAST ROLL FIRING IF JETS ARE NOW ON. +# EXAMINE DURATION OF LAST JET FIRING IF JETS ARE NOW ON. DURATION CA ROLLFIRE # SAME SGN AS PRESENT TORQ,MAGN=POSMAX EXTEND BZF +2 # ROLL JETS ARE NOW OFF. - TCF ROLLOGIC # ENTER LOGIC, JETS NOW ON. + TCF ROLLOGIC # ENTER LOGIC,JETS NOW ON. CAE TEMREG # EXAMINE LAST FIRING INTERVAL - EXTEND # IF POSITIVE, DON'T FIRE + EXTEND # IF POSITIVE, DONT FIRE BZF ROLLOGIC # ENTER LOGIC, JETS NOW OFF. CAF ZERO # JETS HAVE NOT BEEN OFF FOR 1/2 SEC. WAIT @@ -257,7 +260,8 @@ ROLLOGIC CS OGARATE # SCALED AT 2(-4) REV/SEC TS SGNRT # + OR - 2(-14) # Page 990 -# CALCULATE DISTANCE FROM SWITCH PARABOLA,DELOGA +# CALCULATE DISTANCE FROM SWITCH PARABOLA (DELOGA) + EXTEND MP TEMREG # SGN(OGARATE) TEMREG NOW IN L CS L @@ -268,28 +272,28 @@ DELOGAC TS DELOGA # SC.AT B+0 REV, PLUS TO RIGHT OF C-PARAB EXTEND BZMF +3 - CAF PRIO30 # = CA (30000) + CAF PRIO30 # =CA (30000) TCF +2 - CAF BIT15 # = CS (40000) + CAF BIT15 # =CS (40000) TS I - INDEX I # TSET ON I SGN(OGARATE) + INDEX I # TSET ON I SGN(OGARATE) 0 SGNRT # CA OR CS COM EXTEND REG1TST BZMF ROLLON # IF REGION 1 (DELOGA OGARATE SAME SIGN) -# NO JET FIRE YET. TEST FOR MAX OGARATE. +# NO JET FIRE YET. TEST FOR MAX OGARATE INDEX I 0 OGARATE # CA OR CS...BOTH MUST BE NEG. HERE - TS IOGARATE # I.E., I OGARATE + TS IOGARATE # I.E. I OGARATE AD MAXLIM # SCALED AT 2(-4) REV/SEC EXTEND REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS) -# COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT: NOTE THAT STR. LINE -# SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG. QUANTITY +# COMPUTATION OF I((-SLOPE)OGA + OGARATE) - INTERCEPT..NOTE THAT STR. LINE +# SWITCH SLOPE IS (SLOPE) DEG/SEC/DEG, A NEG QUANTITY CA OGARATE EXTEND @@ -312,10 +316,10 @@ REG3TST BZMF RATELIM # IF REGION 3 (RATES TOO HIGH, FIRE JETS) EXTEND REG2TST BZMF NOROLL # IP REGION 2 (COAST SIDE OF STRT LINE) -# CHECK TO SEE IF OGARATE IS ABOVE MINLIM +# CHECK TO SEE IF OGARATE IS ABOVE MINLIM BOUNDARY CA IOGARATE # ALWAYS NEGATIVE - AD MINLIM # SCALED AT 2(-4) REV/SEC. + AD MINLIM # SCALED AT 2(-4) REV/SEC EXTEND REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM) @@ -329,7 +333,7 @@ REG4TST BZMF NOROLL # IF REGION 4 (COAST SIDE OF MINLIM) EXTEND REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB) -# JETS MUST FIRE NOW. OGARATE IS NEG. (OR VICE VERSA). USE DIRECT STR. LINE. +# JETS MUST FIRE NOW.OGARATE IS NEG.(OR VICE VERSA).USE DIRECT STR. LINE. # DELOGA AND DELOGART ARE USED AS DUMMY VARIABLES IN THE SOLUTION OF A # STRAIGHT LINE APPROXIMATION TO A QUADRATIC SOLUTION OF THE INTERSECTION # OF THE CONTROL PARABOLA AND THE STRAIGHT-LINE SWITCH LINE. THE STRAIGHT @@ -339,13 +343,13 @@ REG5TST BZMF NOROLL # IF REGION 5 (COAST SIDE OF DB) REGION6 CAE OGA # USE ACTUAL OPERATING POINT FOR TANGENT TS DELOGA # ACTUAL STATE CA OGARATE - TS DELOGART # ACTUAL STATE, I.E., DEL OGARATE + TS DELOGART # ACTUAL STATE,I.E. DEL OGARATE TCF ONROLL -# JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VICE VERSA), USE INDIRECT -# STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA +# JETS ALSO FIRE FROM HERE EXCEPT OGARATE IS POS (VICE VERSA),USE INDIRECT +# STRAIGHT LINE ESTABLISHED BY TANGENT TO A CONTROL PARABOLA AT ((DELOGA # + DB SGN(DELOGA) ), -LMCRATE SGN(DELOGA) ) (THIS IS THE DUMMY -# OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1') +# OPERATING POINT FOR OPERATING POINTS IN REGIONS 1 AND 1' ) ROLLON INDEX I 0 DB @@ -386,7 +390,7 @@ RATEDEN ADS TEMREG # DENOMINATOR COMPLETED MP BIT11 RATENUM AD DELOGART # NUMERATOR COMPLETED - XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK + XCH L # PLACE NUMERATOR IN L FOR OVERFL. CHECK CA ZERO EXTEND DV TEMREG # OVERFLOW, IF ANYTHING, NOW APPEARS IN A @@ -402,12 +406,12 @@ MINLIMAP CCS A DVOK LXCH A # PUT NUMERATOR BACK INTO A, 0 INTO L EXTEND DV TEMREG # RESULT OF DIVISION IS DESIRED OGARATE - TCF ROLLSET # (SCALED AT B-4 REV/SEC) + TCF ROLLSET # ( SCALED AT B-4 REV/SEC ) RATELIM CS MAXLIM INDEX I # Page 993 - 0 A # IF I = CA, DESIRED RATE IS -MAXLIM + 0 A # IF I = CA, DESIRED RATE IS -MAXLIM # COMPUTE JET FIRE TIME, BASED ON DESIRED RATE MINUS PRESENT RATE @@ -436,7 +440,7 @@ ROLLSET TS TEMREG # STORE DESIRED OGARATE (SCALED B-4) CAE TEMREG # DESIRED CHANGE IN OGARATE EXTEND - MP ROLLFIRE # (SGN OF TORQUE: ZERO IF JETS NOW OFF) + MP ROLLFIRE # (SGN OF TORQUE..ZERO IF JETS NOW OFF) CCS A TCF MOREROLL # CONTINUE FIRING WITH PRESENT POLARITY TCF NEWROLL # START NEW FIRING NOW, PLUS @@ -462,11 +466,11 @@ NEWROLL CCS TEMREG # CALL THIS T6FIRE EXTEND MINTST BZMF NOROLL # IF NOT GREATER THAN TMINFIRE (NEW FIRE) -# PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE +# PROCEED WITH NEW FIRING BUT NOT LONGER THAN TMAXFIRE. MAXTFIRE CA TEMREG EXTEND - MP 1/TMXFIR # I.E., 1/TMAXFIRE + MP 1/TMXFIR # I.E. 1/TMAXFIRE EXTEND MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE @@ -476,7 +480,7 @@ MAXTST BZF NOMXFIRE # IF LESS THAN TMAXFIRE CS TMAXFIRE # USE MAXIMUM TS TEMREG -# SET UP SIGN OF REQUIRED TORQUE +# SET UP SIGN OF REQUIRED TORQUE. NOMXFIRE CCS TEMREG # FOR TORQUE SIGN CA POSMAX # POSITIVE TORQUE REQUIRED @@ -499,7 +503,7 @@ FIREPLUG CAE TIME6 # CHECK FOR EXTENDED FIRING EXTEND SU TEMREG EXTEND -EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DON'T, EXIT ROLL DAP +EXTENTST BZMF TASKOVER # IF EXTENSION WANTED, DONT, EXIT ROLL DAP TCF JETROLL NOROLL CS ZERO # COAST....(NEG ZERO FOR TIME6) @@ -513,7 +517,7 @@ JETROLL EXTEND CA TEMREG # ENTER JET FIRING TIME TS TIME6 - CA I # I=0 IF MOREROLL, KEEP SAME JETS ON + CA I # I=0 IF MOREROLL,KEEP SAME JETS ON EXTEND SAMEJETS BZF TASKOVER # IF JETS ON KEEP SAME JETS. EXIT ROLL DAP @@ -574,7 +578,7 @@ RDAPEND TCF TASKOVER # EXIT ROLL DAP # THIS T6 TASK SHUTS OFF ALL ROLL JETS NOROLL1 LXCH BANKRUPT # SHUT OFF ALL (ROLL) JETS, (A T6 TASK - CAF ZERO # CALLED BY "JETROLL") + CAF ZERO # CALLED BY ..JETROLL..) TS ROLLFIRE # ZERO INDICATES JETS NOW OFF EXTEND KILLJETS WRITE CHAN6 @@ -600,18 +604,16 @@ MINLIM DEC .00277778 B+4 # RATELIM,MIN (1DEG/SEC), SC.AT B-4 REV/SC MAXLIM DEC .01388889 B+4 # RATELIM,MAX (5DEG/SEC), SC.AT B-4 REV/SC -# The following two were B+4.---RSB 2009. -TMINFIRE DEC 1.5 B-10 # 15 MS. (14MIN), SC.AT 16 BITS/CS +TMINFIRE DEC 1.5 B+4 # 15 MS (14MIN), SC.AT 16 BITS/CS -TMAXFIRE DEC 250 B-10 # 2.5 SEC, SC.AT 16 BITS/CS +TMAXFIRE DEC 250 B+4 # 2.5 SEC, SC.AT 16 BITS/CS 1/TMXFIR = BIT3 # RECIPROCAL THEREOF, SHIFTED 14 RIGHT, # ROUNDS TO OCT00004, SO ALLOWS 2.56 # SEC FIRINGS BEFORE APPLYING LIMIT -T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC) +T6SCALE = PRIO31 # (B+3) (16 BITS/CS) (100CS/SEC) +ROLL1 = FIVE # ONBITS FOR JETS 9 AND 11 +ROLL2 = OCT120 # ONBITS FOR JETS 13 AND 15 --ROLL1 = TEN # ONBITS FOR JETS 12 AND 10 +-ROLL1 = TEN # ONBITS FOR JETS 12 NAD 10 -ROLL2 OCT 240 # ONBITS FOR JETS 16 AND 14 -