Source Code

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