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