Source Code
063034,000001: # Copyright: Public domain.
063035,000002: # Filename: SPS_BACK-UP_RCS_CONTROL.agc
063036,000003: # Purpose: A section of Luminary 1C, revision 131.
063037,000004: # It is part of the source code for the Lunar Module's (LM)
063038,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
063039,000006: # This file is intended to be a faithful transcription, except
063040,000007: # that the code format has been changed to conform to the
063041,000008: # requirements of the yaYUL assembler rather than the
063042,000009: # original YUL assembler.
063043,000010: # Reference: pp. 1504-1507 of 1729.pdf.
063044,000011: # Contact: Ron Burkey <info@sandroid.org>.
063045,000012: # Website: www.ibiblio.org/apollo/index.html
063046,000013: # Mod history: 06/08/03 RSB. Began transcribing.
063047,000014: # 05/14/05 RSB Corrected website reference above.
063048,000015: # 2010-10-25 JL Indentation fixes.
063049,000016:
063050,000017: # Page 1504
063051,000018: # PROGRAM NAME: SPSRCS
063052,000019: # AUTHOR: EDGAR M. CSHIKA (AC ELECTRONICS)
063053,000020: # MODIFIED: TO RETURN TO ALL AXES VIA Q BY P. S. WEISSMAN, OCT 7, 1968
063054,000021: # MODIFIED TO IMPROVE BENDING STABILITY BY G. KALAN, FEB. 14, 1969
063055,000022:
063056,000023: # FUNCTIONAL DESCRIPTION:
063057,000024: # THE PROGRAM CONTROLS THE FIRING OF ALL RCS JETS IN THE DOCKED CONFIGURATION ACCORDING TO THE FOLLOWING PHASE
063058,000025: # PLANE LOGIC.
063059,000026:
063060,000027: # 1. JET SENSE TEST (SPSRCS)
063061,000028: # IF JETS ARE FIRING NEGATIVELY, SET OLDSENSE NEGATIVE AND CONTINUE
063062,000029: # IF JETS ARE FIRING POSITIVLEY, SET OLDSENCE POSITIVE AND CONTINUE
063063,000030: # IF JETS ARE NOT FIRING, SET OLDSENSE TO ZERO AND GO TO OUTER RATE LIMIT TEST
063064,000031:
063065,000032: # 2. RATE DEAD BAND TEST
063066,000033: # IF JETS ARE FIRING NEGATIVELY AND RATE IS GREATER THAN TARGET RATE, LEAVE
063067,000034: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
063068,000035: # IF JETS ARE FIRING POSITIVELY AND RATE IS LESS THAN TARGET RATE, LEAVE
063069,000036: # JETS ON AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
063070,000037:
063071,000038: # 3. OUTER RATE LIMIT TEST (SPSSTART)
063072,000039: # IF MAGNITUDE OF EDOT IS GREATER THAN 1.73 DEG/SEC SET JET FIRING TIME
063073,000040: # TO REDUCE RATE AND GO TO INHIBITION LOGIC. OTHERWISE, CONTINUE.
063074,000041:
063075,000042: # 4. COAST ZONE TEST
063076,000043: # IF STATE (E,EDOT) IS BELOW LINE E + 4 X EDOT > -1.4 DEG AND EDOT IS LESS THAN 1.30 DEG/SEC SET JET TIME
063077,000044: # POSITIVE AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
063078,000045: # IF STATE IS ABOVE LINE E + 4 X EDOT > +1.4 DEG AND EDOT IS GREATER THAN -1.30 DEG/SEC, SET JET TIME NEGATIVE
063079,000046: # AND CONTINUE. OTHERWISE, SET JET FIRING TIME TO ZERO AND CONTINUE.
063080,000047:
063081,000048: # 5. INHIBITION LOGIC
063082,000049: # IF OLDSENSE IS NON-ZERO:
063083,000050: # A) RETURN IF JET TIME AS THE SAME SIGN AS OLDSENSE
063084,000051: # B) SET INHIBITION COUNTER* AND RETURN IF JET TIME IS ZERO
063085,000052: # C) SET INHIBITION COUNTER,* SET JET TIME TO ZERO AND RETURN IF SIGN
063086,000053: # OF JET TIME IS OPPOSITE TO THAT OF OLDSENSE
063087,000054: # IF OLDSENSE IS ZERO:
063088,000055: # A) RETURN IF INHIBITION COUNTER IS NOT POSITIVE
063089,000056: # B) SET JET TIME TO ZERO AND RETURN IF INHIBITION COUNTER IS POSITIVE
063090,000057: # *NOTE: INHIBITION COUNTERS CAN BE SET TO 4 OR 10 FOR THE P AND UV AXES,
063091,000058: # RESPECTIVELY, IN SPSRCS. THEY ARE DECREMENTED BY ONE AT THE BEGINNING OF
063092,000059: # Page 1505
063093,000060: # EACH DAP PASS.
063094,000061:
063095,000062: # THE MINIMUM PULSE WIDTH OF THIS CONTROLLER IS DETERMINED BY THE REPETITION RATE AT WHICH THIS ROUTINE IS CALLED
063096,000063: # AND IS NOMINALLY 100 MS FOR ALL AXES IN DRIFTING FLIGHT. DURING POWERED FLIGHT THE MINIMUM IS 100 MS FOR THE
063097,000064: # P AXIS AND 200 MS FOR THE CONTROL OF THE U AND VE AXES.
063098,000065:
063099,000066: # CALLING SEQUENCE:
063100,000067: # INHINT
063101,000068: # TC IBNKCALL
063102,000069: # CADR SPSRCE
063103,000070:
063104,000071: # EXIT:
063105,000072: # TC Q
063106,000073:
063107,000074: # ALARM/ABORT MODE: NONE
063108,000075:
063109,000076: # SUBROUTINES CALLED: NONE
063110,000077:
063111,000078: # INPUT: E, EDOT
063112,000079: # TJP, TJV, TJU TJ MUST NOT BE NEGATIVE ZERO
063113,000080:
063114,000081: # OUTPUT: TJP, TJV, TJU
063115,000082:
063116,000083: 21,3655 BANK 21
063117,000084: 21,2000 SETLOC DAPS4
063118,000085: 21,2000 BANK
063119,000086:
063120,000087: 21,3655 COUNT* $$/DAPBU
063121,000088:
063122,000089: 21,3655 E6,1525 EBANK= TJU
063123,000090: 21,3655 00632 RATELIM2 OCT 00632 # 1.125 DEG/SEC
063124,000091: 21,3656 34736 POSTHRST CA HALF
063125,000092:
063126,000093: 21,3657 51505 NDX AXISCTR
063127,000094: 21,3660 55525 TS TJU
063128,000095: 21,3661 11744 CCS OLDSENSE
063129,000096: 21,3662 13702 TCF POSCHECK # JETS FIRING POSITIVELY
063130,000097: 21,3663 13705 TCF CTRCHECK # JETS OFF. CHECK INHIBITION CTR
063131,000098: 21,3664 51505 NEGCHECK INDEX AXISCTR # JETS FIRING NEGATIVELY
063132,000099: 21,3665 41525 CS TJU
063133,000100: 21,3666 10000 CCS A
063134,000101: 21,3667 00002 TC Q # RETURN
063135,000102: 21,3670 13672 TCF +2
063136,000103: 21,3671 13672 TCF +1 # JETS COMMANDED OFF. SET CTR AND RETURN
063137,000104: 21,3672 51505 SETCTR INDEX AXISCTR # JET FIRING REVERSAL COMMANDED. SET CTR,
063138,000105: 21,3673 33714 CA UTIME # SET JET TIME TO ZER, AND RETURN
063139,000106: # Page 1506
063140,000107: 21,3674 51505 INDEX AXISCTR
063141,000108: 21,3675 55767 TS UJETCTR
063142,000109: 21,3676 34755 ZAPTJ CA ZERO
063143,000110: 21,3677 51505 INDEX AXISCTR
063144,000111: 21,3700 55525 TS TJU
063145,000112: 21,3701 00002 TC Q
063146,000113: 21,3702 51505 POSCHECK INDEX AXISCTR
063147,000114: 21,3703 31525 CA TJU
063148,000115: 21,3704 13666 TCF NEGCHECK +2
063149,000116: 21,3705 51505 CTRCHECK INDEX AXISCTR # CHECK JET INHIBITION COUNTER
063150,000117: 21,3706 11767 CCS UJETCTR
063151,000118: 21,3707 13711 TCF +2
063152,000119: 21,3710 00002 TC Q # CTR IS NOT POSITIVE. RETURN
063153,000120: 21,3711 13676 TCF ZAPTJ # CTR IS POSITIVE. INHIBIT FIRINGS
063154,000121: 21,3712 00002 TC Q # CTR IS NOT POSITIVE. RETURN
063155,000122: 21,3713 00004 OCT 00004
063156,000123: 21,3714 00012 UTIME OCT 00012
063157,000124: 21,3715 00012 OCT 00012
063158,000125: 21,3716 E6,1744 OLDSENSE EQUALS DAPTREG1
063159,000126: 21,3716 44753 NEGFIRE CS ONE # JETS FIRING NEGATIVELY
063160,000127: 21,3717 55744 TS OLDSENSE
063161,000128: 21,3720 31427 CA EDOT
063162,000129: 21,3721 13725 TCF +4
063163,000130: 21,3722 34753 PLUSFIRE CA ONE
063164,000131: 21,3723 55744 TS OLDSENSE
063165,000132: 21,3724 41427 CS EDOT # RATE DEAD BAND TEST
063166,000133: 21,3725 22000 LXCH A
063167,000134: 21,3726 40111 CS DAPBOOLS # IF DRIFTBIT = 1, USE ZERO TARGET RATE
063168,000135: 21,3727 74744 MASK DRIFTBIT # IF DRIFTBIT = 0, USE 0.10 RATE TARGET
063169,000136: 21,3730 10000 CCS A
063170,000137: 21,3731 34767 CA RATEDB1
063171,000138: 21,3732 60001 AD L
063172,000139: 21,3733 00006 EXTEND
063173,000140: 21,3734 63744 BZMF SPSSTART
063174,000141: 21,3735 13661 TCF POSTHRST +3
063175,000142:
063176,000143: 21,3736 51505 SPSRCS INDEX AXISCTR # JET SENSE TEST
063177,000144: 21,3737 11525 CCS TJU
063178,000145: 21,3740 13722 TCF PLUSFIRE # JETS FIRING POSITIVELY
063179,000146: 21,3741 13743 TCF +2
063180,000147: 21,3742 13716 TCF NEGFIRE # JETS FIRING NEGATIVELY
063181,000148: 21,3743 55744 TS OLDSENSE # JETS OFF
063182,000149: 21,3744 31427 SPSSTART CA EDOT # OUTER RATE LIMIT TEST
063183,000150: 21,3745 00006 EXTEND
063184,000151: 21,3746 74766 MP RATELIM1
063185,000152: 21,3747 10000 CCS A
063186,000153: 21,3750 13767 TCF NEGTHRST # OUTER RATE LIMIT EXCEEDED
063187,000154: 21,3751 13753 TCF +2
063188,000155: 21,3752 13656 TCF POSTHRST # OUTER RATE LIMIT EXCEEDED
063189,000156: 21,3753 31427 CA EDOT # COAST ZONE TEST
063190,000157: # Page 1507
063191,000158: 21,3754 61751 AD E
063192,000159: 21,3755 00006 EXTEND
063193,000160: 21,3756 71411 MP DKDB # PAD LOADED DEADBAND. FRESHSTART: 1.4 DEG
063194,000161: 21,3757 00006 EXTEND
063195,000162: 21,3760 13775 BZF TJZERO
063196,000163:
063197,000164: 21,3761 00006 EXTEND
063198,000165: 21,3762 63771 BZMF +7
063199,000166: 21,3763 31427 CA EDOT
063200,000167: 21,3764 63655 AD RATELIM2
063201,000168: 21,3765 00006 EXTEND
063202,000169: 21,3766 63775 BZMF TJZERO
063203,000170: 21,3767 44736 NEGTHRST CS HALF
063204,000171: 21,3770 13657 TCF POSTHRST +1
063205,000172: 21,3771 43655 +7 CS RATELIM2
063206,000173: 21,3772 61427 AD EDOT
063207,000174: 21,3773 00006 EXTEND
063208,000175: 21,3774 63656 BZMF POSTHRST
063209,000176: 21,3775 34755 TJZERO CA ZERO
063210,000177: 21,3776 13657 TCF POSTHRST +1
063211,000178:
063212,000179: 21,3777 4766 RATELIM1 = CALLCODE # = 00032, CORRESPONDING TO 1.73 DEG/SEC
063213,000180: 21,3777 4767 RATEDB1 = TBUILDFX # = 00045, CORRESPONDS TO 0.101 DEG/SEC
063214,000181:
063215,000182: # *** END OF LM DAP .025 ***
End of include-file SPS_BACK-UP_RCS_CONTROL.agc. Parent file is MAIN.agc