Appendix A
Appendix A MICROPROCESSOR PROGRAM LISTING hSSM 0000 BOO0 Assembled at 0000 Cg 0082 E_ 00EB PORT500E9 PORT6 00EA 0UT! 0040 OUT2 OOAI OUT3 0090 OUT4 0091 OUT5 0092 OUT6 0093 IOBAS 00A0 MBASE 8000 MLOU 0000 MHIGH 0080 HBTAT 00A1 MFLAG OOA7 MBIAS OO/F BASE F700 SCA FTO0 ii FCR F701 LCHAN _[702 CLR F703 ABDAT F704 DACO F708 DAC! F70A MUXO 0001 MUXI 0000 MUX2 0002 MUX3 0003 XMAX 0789 XTHR 0038 TVO 0085 TVI 00C8 TU2 002F TUEXP 0036 STACK 3FFF RAM 3FBO ACCEL 8000 FLIM 3F80 UBVEL 3F84 STRUT 3F86 SINK 3FB8 BXTHR 3FBA DXMAX 3FBC i15 PE 3F8E TRANS 3F92 START 0000 L1 O01E L8 004B L9 0088 LIO 0096 LIt 0099 L4 OODE L5 0116 L_. 0123 L? 0127 L7 0131 IN3 0143 HI 014C M2 0165 IN1 0174 H3 017B SUB2 0189 SHL 0190 HkTH 01gS gAIT 0197 PGA 01AC R2 0186 0000 0010 * 0000 0020 * DEFINE CONSTANTS 0000 0030 * 0040 * I/O PORTS 0050 CW EQU 82H ; GROUP 2 CONTROL QORD 0000 0060 EB EgO OEBH ; GROUP 2 CONTROL UORD ADDR.
0070 PORT5 EQU OEgH ; PORT 5 ADDR 0080 PORT6 EQU OEAH ; PORT 6 ADDR 0000 0090 * 0000 0100 * PORT 6 OUTPUTS CTLR CTLR T/O LAND 0110 * ENA RESET LAHP LAHP rNT.ENA 8L,ENA 0120 OUTI EOU 40H DIS ; OFF ON OFF OFF DIS 0130 OUT2 EQU OA1H ENA ; ON OFF ON OFF DIS 0000 0140 OUT3 EOU 90H DIS ; ON OFF OFF ON DIS 0150 OUT4 EOU 91H ENA ; ON OFF OFF ON DIS 0160 OUTS EOU 92H DIS ; ON OFF OFF ON ENA 0000 0170 OUT6 EQU 93H ENA ; ON OFF OFF ON ENA 0000 0180 * 0000 0190 * MATH BOARD- SC 310 PARAMETERS 0200 IOBA5 EgU OAON ; IlO BASE ADDR 0000 0210 HBASE EQU 8000H ; NEMORY BASE ADDR 0000 0220 MLOU EOU OOH ; LS BYTE MEMORY BASE ADDR 0000 0230 HHIGH EOU 80H ; MS BYTE MEMORY BASE ADDR 0000 0240 HSTAT EOU OAtH ; STATUS BYTE 0000 0250 MFLAG EQU OA7H ; FLAG BYTE 0000 0260 MBIAS EQU 7FH ; FLOATING POINT EXPONENT BIAS 0270 * 0280 * ANALOG I/O BOARD- SBC 732 PARAMETERS 0290 BASE EQU OFTOOH ; MEMORY BASE ADDRESS 0300 SCA EOU BASE+O ; AID COMMAND-STATUS REGISTER 0310 FCR EOU BASE+I ; MUX ADDR AND GAIN REGISTER 0320 LCHAN EGU BASE+2 ; LAST CHANNEL REGISTER 0330 CLR EQU BASE+3 ; CLEAR INTERRUPTS 0340 ADDAT EOU BASE+4 ; A/D DATA REGISTER 0350 DACO EOU BASE+8 ; DACO OUTPUT 0360 DACI EQU BASE+tO ; DACI OUTPUT 0370 MUXO EOU 01 ; A/D GAIN=I, POINT HUX TO U/G ACCEL 0380 MUXt EOU O0 ; A/D GAIN=I, POINT HUX TO g/G VEL 0390 MUX2 EOU 02 ; A/D GAIN=l, POINT MUX TO STRUT F'OS 0400 MUX3 EOU 03 ; A/D GAIN=I, POINT MUX TO SINK RATE 0000 0410 * 0420 * STRUT PARAMETERS 0430 XMAX EQU 0989H ; MAX STROKE= 8.5 IN. = 6.078 VOLTS 0440 XTHR EQU O03BH ; THRESHOLD= 0.2 IN. = 0.143 VOLTS 0450 * 0460 * TRANSITION VELOCITY SCALE FACTOR 0470 * =0.00004191 DECIMAL 0000 0480 * =1.0101t111100100010000101 , 2.*-15 BINARY 0000 0490 TVO EOU 85H ; LS BYTE (M) 0500 TVI EOU OCBH ; LS BYTE+I (M+I) 0510 TV2 EOU 2FH ; MS BYTE (M+2) 0520 TVEXP EOU 36H ; EXPONENT (M+3) 0530 * 0540 * RAM MEMORY ASSIGNMENTS 0550 STACK EQU 3FFFH ; INITIAL STACK POINTER 0560 RAM EQU 3FSOH ; START OF RAM SCRATCH AREA 0570 ACCEL EOU MBASE ; W/G ACCEL 0580 FLIM EOU RAM ; LIMIT FORCE COMMAND 0590 WGVEL EQU RAM+4 ; U/G VELOCITY 0600 STRUT EOU RAM+6 ; STRUT POSITION 0610 SINK EOU RAM+8 ; INITIAL SINK RATE 0620 DXTHR EQU RAM+tO ; STRUT THRESHOLD , i6 0630 DXMAX EQU RAM+I2 ; MAX STRUT STROKE * 16 0640 PE EOU RAM+I4 ; POTENTIAL ENERGY- 4 BYTES 0650 TRANS EQU RAM+18 ; TRANSITION VELOCITY- 4 BYTES 0660 * 0670 * START OF MAIN PROGRAM 0680 * 0000 F3 0690 START DI ;DISABLE INTERRUPTS 0001 21 FF 3F 0700 LXI H,STACK ;INIT STACK POINTER 0004 F9 0710 SPHL 0720 * CONFIGURE II0 PORTS 0005 3E 82 0730 MVI A,CU 0007 D3 EB 0740 OUT EB 0750 * INIT HATH BOARD 0009 3E O0 0760 MUl A,MLOW ;SET MEMORY BASE ADDR O00B D3 A1 0770 OUT MSTAT O00O 3E 80 0780 HVI A,MHIOH O00F D3 A2 0790 OUT MSTAT+I 0011 21 Z8 O0 0800. LXl H,XTHR ;HULT STRUT THRESHOLD BY 16 0014 CO 90 01 0810 CALL 8HL ;FOR LATER USE 0017 22 8A 3F 0820 SHLD BXTHR OOIA 3E 40 0830 MPI A,OUT1 ;SET LIGHTS, SWITCHES 001C D3 EA 0840 OUT PORT6 O01E DB E9 0850 L1 IN PORT5 ;CONTROLLER ENABLED?
0020 1F 0860 RAR JNC L1 0021 D2 1E O0 0870 ;NO, KEEP LOOKING 0024 0880 * 0024 0890 , CONTROLLER HAS BEEN ENABLED 0024 0900 * 0024 3E 02 0910 HVI A,MUX2 ;YES, BET STRUT POSITION FOR 0026 CD 74 01 0920 CALL INI ;LANOINB/TAKEOFF OETERHINATION 0029 2A 8A 3F 0930 LHLD BXTHR ;GET STRUT THRESHOLD 002C EB 0940 XCHG ;PUT IN DE O02D 2A 86 3F 0950 LHLD STRUT ;LOAO HL UITH STRUT POS# 0030 CO 89 01 0960 CALL SUB2 ;CALC: THRESHOLD - STRUT 0033 OA 27 Ol 0970 JC L2 ;TAKING OFF 0036 0980 * 0036 0990 * LANDING, _AKE PREPARATIONS 0036 1000 * 0036 3E 03 1010 MPl A,NUX3 ;GET INITIAL SINK RATE 0038 CO 74 01 1020 CALL INI 0038 22 88 3F 1030 8HLD SINK ;STORE IT O03E 21 89 09 1040 LXI H,XMAX ;HULT XHAX BY 16 TO SHIFT INTO UPPER 12 BITS 0041CD 90 01 1050 CALL 8NL 0044 22 8C 3F 1060 8HLD BXHAX ;STORE IT 0047 1070 * 0047 1080 * ENABLE INTEGRATOR, START 0047 1090 * ENERGY CALCULATIONS.
0047 1100 * 0047 3E 92 1110 MVI A,OUT5 ;ENABLE tNT 0049 03 EA 1120 OUT PORT6 0048 CO 43 01 1130 L8 CALL IN3 ;GET ACCEL, W/G VEL, STRUT POSN FROM A/B O04E EB 1140 XCHG ;CALC POTENTIAL ENERGY. SAVE HL IN OE O04F 2A 8C 3F t150 LHLD BXMAX ;GET MAX STROKE XCHG 0052 EB 1160 .;PUT IN DE 0053 78 1170 ;CALC: XMAX - STRUT POSN NOV A,E 0054 95 1180 SUB L 0055 6F 1190 NOV L,A 0056 7A 1200 MOV A,O 0057 9C 1210 SBB H 0058 67 1220 NOV H,A 0059 22 04 80 1230 SHLO MBASE+4 ;STORE IN HATH BOARD ' 005C 1240 * ACCEL iS ALREADY IN MATH BOARD AT HBASE+O,I XRA A 005C AF 1250 ;MULTIPLY CALL MATH O05D CD 95 O! 1260 ;NOU HAVE PE AS A 32-BIT WORD LHLO MBASE 0060 2A O0 BO 1270 ;SAVE IT IN RAM SHLO PE 0063 22 8E 3F 1280 0066 2A 02 80 1290 LHLB MBASE+2 • 118
O069 22 90 3F SHLD PE+2
006C 2A 88 3F 1310 LHLO SINK ;CALC KINETIC ENERGY O06F EB 1320 XCHG 0070 2A 84 3F 1330 LHLB gGVEL 0073 CD 89 01 1340 CALL SUB2 ;CALC: SINK RATE - UIG VEL 0076 2200 80 1350 SHLD MBASE ;LOAD INTO MATH BOARD,TUO PLACES 0079 22 04 80 1360 SHLD MBASE+4 007C AF 1370 XRA A ;MULT O0?D CO 95 01 1380 CALL MATH :NOU HAVE kE AT MDASE+O, Ir2,3 0080 1390 * DO A BYTE-BY-BYTE COMPARISON TO TEST IF 1400 * 0080 PE GREATER THAN KE. DO NOT BOTHER TO TEST 0080 1410 * LS BYTE, IT HAS NO USEFUL DATA.
0080 06 03 1420 MVI B,3 ;SET A BYTE COUNTER 0082 21 91 3F 1430 LXI H,PE+3 ;POINT HL TO PE MSB 0085 11 03 BO 1440 LXI O,MBASE+3 ;POINT DE TO KE MSB 0088 IA 1450 L9 LDAX B ;PE GREATER THAN KE?
0089 BE 1460 CMP M O08A C2 96 O0 1470 JNZ LIO 008D 1B 1480 DCX D ;TRY ANOTHER BYTE O08E 28 1490 DCX H O08F 05 1500 DCR B ;TESTED 3 BYTES?
0090 C2 88 O0 1510 JNZ L9 ;NO, LOOP DACK 0093 C3 99 O0 1520 JMP LIt 0096 P2 48 O0 1530 LIO JNC LB ;GO GET NEU INPUTS, TRY AGAIN 0099 1540 * 0099 1550 * TIME TO INITIATE ACTIVE CONTROL 0099 1560 * 0099 2A 80 3F LHLO FLIM 1_70 Lll ;ISSUE LIMIT FORCE COMMAND 009C 22 08 F7 1580 SHLD OACO O09F 3E 93 MVI A,OUT6 ;ENABLE SERVOLOOP 1600 OUT PORT6 OOAI D3 EA OOA3 1610 * OOA3 1620 * GEAR IS NOU UNDER ACTIVE CONTROL OOA3 1630 * 1640 * CALC TRANSITION VELOCITY OOA3 1650 LHLD FLIM OOA3 2A 80 3F ;GET LIMIT FORCE CMD (FLI) OOA6 22 O0 80 1660 SHLB MBASE ;LOAD INTO MATH BOARD OOA9 21 O0 O0 1670 LXI H,O OOAC 22 02 80 1680 SHLD NBASE+2 OOAF 3E OB 1690 HVl ;CONVERT TO FLOATING POINT A,8 0081 CB 95 01 1700 CALL MATH 1710 MUI 0084 3E 06 ;SQUARE IT A,6 0086 CD 95 01 1720 CALL MATH OOB9 3E 85 1730 HVI ;LOAD TRANSITION VELOCITY SCALE A,TVO OOD8 32 04 80 1740 STA MBASE+4 ;FACTOR INTO MATH BOARD OOBE 3E C8 1750 MVI A,TVI OOCO 32 05 80 1760 STA MBASE+5 00C3 3E 2F 1770 MVI A,TV2 00C5 32 06 80 1780 STA MBASE+6 OOCB 3E 36 1790 MVI A,TVEXP OOCA 32 07 80 1800 STA MBASE+7
OOCD 3E 02
1810 MPI A,2 ;MULT BY FLI**2
OOCF CD95 01 1820 CALL HATH
OOD2 2A O0BO 1830 LHLD MBASE
;STORE TRANS VEL
OOD5 22 92 3F 1840 SHLD TRANS
OOD8 2A 02 80 1850 LHLD HBASE+2 OODB 22 94 3F 1860 SHLD TRANS+2 OODE 1870 * NOW HAVE TRANSITION VEL STORED AS FLOATING POINT, 32-BIT # OODE 1880 * SO START COMPARING THIS AGAINST (SINK RATE - gig gEL) OODE 1890 * FOR DETERHININ6 START OF TRANSITION.
OOD£ 2A 88 3F 1900 L4 LHLD SINK ;GET SINK RATE 1910 XCHG OOE1 EB ;SAVE IN DE OOE2 3E O0 1920 HVI A,HUX1 ;GET gIG VELOCITY OOE4 CD 74 01 1930 CALL IN1 OOE7 CD 89 01 1940 CAL_. SUB2 ;CALC: SINK RATE - WIG VEL OOEA 22 00 80 1950 SHLO HBASE ;CONVERT TO FLOATING POINT OOED 21 00 O0 1960 LXI H,O OOFO 22 02 80 1970 SHLD MBASE+2 OOF3 3E 08 1980 HVI A,8 OOF5 CP 95 01 1990 CALL MATH ;ITS NOg IN MBASE+O,I,2,3 2000 LflLD TRANS OOF8 2A 92 3F ;LOAD TRANS VEL INTO HATH BOARD OOFB 22 04 80 2010 fiRLD MBASE+4 OOFE 2A 94 3F 2020 LHLD TRANS+2 0101 22 06 80 2030 SNLD HBASE+6 0104 3E OA 2040 MPl A,OAH ;COMPARE AGAINST (SINK-Q/G gEL) 0106 CD 95 01 2050 CALL HATH 0109 DB A1 2060 IN MSTAT ;GET STATUS, MASK 'LESS THAN" BIT 0108 E6 20 2070 ANI 20H ;IS (SINK-gIG VEL) .LT. TRANS VEL?
OlOP CA DE 00 2080 . JZ L4 ;NO, CONTINUE LOOPING 0110 2090 * YES, TIME TO START TRANSITION 2100 * TRANSITION PHASE 0110 2110 * 0110 2A 80 3.F 2120 LHLB FLIM ;LOAD LINIT FORCE COMNAND 0113 11 FD FF 2130 LXI D,-3 ;SET RAMP RATE 0116 22 08 F7 2140 L5 ' 8HLD DACO .
;OUTPUT CMD TO DAC 0119 19 2150 DAD O ;DECREASE LIMIT FORCE CMD 2160 JC L5 011A 16 o1 ;LOOP UNTIL CMD = 0 OllP 21 O0 O0 2170 LX! H,O ;SET LIMIT FORCE CMD EXACTLY = 0 0120 22 08 F7 2180 SHLD DACO 0123 O0 2190 L6 NOP ;STAY I.NA LOOP UNTIL A RESET OCCURS 0124 C3 23 01 2200 JHP L6 2210 * 2220 * TAKEOFF MOPE 2230 * 0127 21 00 O0 2240 L2 LXI H,O ;COMHAWD A ZERO LIMIT FORCE OI2A 22 08 FT 2250 SHLB DACO 012P 3E AI 2260 HVI A,OUT2 ;ENABLE SERUO LOOP, LEAVE ENABLED OI2F D3 EA 2270 OUT PORT6 ;UNTIL STROT POSITION LESS THAN THRESHOLD 0131 3E 02 2280 L7 HPI A,HUX2 ;GET STRUT POSITION 0133 CO 74 01 2290 CALL IN1 0136 EB 2300 XCHG ;PUT IN DE 0137 2A 8A 3F 2310 LHLD BXTHR ;LOAD HL WITH THRESHOLD " OI3A CD 89 01 2320 CALL SUB2 ;CALC: STRUT - THRESHOLD 013D D2 31 OI 2330 JNC L7 ;LOOP UNTIL STRUT EXTENDED FULLY 0140 C3 O0 O0 2340 JMP START ;HAVE LIFTOFF, TURN OFF CONTROLLER 0143 2350 * 2360 * ROUTINE TO INPUT AND STORE DATA FROM 0143 2370 * THREE MUX CHANNELS 2380 * 0143 3E 01 2390 IN3 HVl A,MUXO ;POINT HUX TO UlG ACCEL 0145 21 01 F7 2400 LXI H,FCR ;POINT HL TO HUX/GAIN REGISTER 0148 77 2410 HOV N,A ;LOAD REGISTER 0149 28 2420 DCX H ;POINT HL TO CMD/STATUS REGISTER OI4A 36 O1 ;START CONVERSION 2430 NVI M,01 0;4C 7E 2440 HI NOV A,M ;READ STATUS 0140 07 2450 RLC ;DONE?
014E 02 4C 01 2460 JNC M1 ;NO, KEEP LOOPING 0151 36 O0 2470 MVI M,O ;YES, RESET CONVERSION ENABLE 2480 LHLO ADDAT 0153 2A 04 F7 ;GET DATA 2490 SHLD ACCEL 0156 22 O0 80 ;STO U/G ACCEL IN MATH BOARD, 0159 22 BO 3F 2500 SHLD FLIH ;ALSO IN RAM 015C 3E O0 ;REPEAT FOR W/G VELOCITY 2510 MVI A,MUXI OISE 21 01 F7 2520 LXI H,FCR 0161 77 2530 HOV M,A 2540 DCX H 0162 28 0163 36 O1 2550 HVI M,01 0165 7E 2560 H2 NOV A,H 0166 07 2570 RLC 0167 02 65 Ol 2580 JNC M2 OI6A 36 O0 2590 MPl M,O 016C 2A 04 F7 2600 LHLD ADBAT 016F 22 84 3F 2610 SHLD gGVEL ;STORE g/G VEL 0172 3E 02 2620 MVI A,HUX2 ;REPEAT FOR STRUT POSITION 0174 21 01 F7 2630 INI LXI H,FCR 0177 77 2640 NOV M,A 0178 28 2650 DCX H 0179 36 Ol 2660 MVI M,Ol 017D 7E 2670 H3 MOP A,H 017C 07 2680 RLC 017D D2 7D Ol 2690 JNC M3 0180 36 O0 270_ MVI M,O 0182 2A O4 F7 2710 LHLD ADDAT 0185 22 86 3F 2720 SHLD STRUT 0188 C9 2730 RET 2740 * 2?50 * DOUBLE PRECISION SUBTRACT ROUTINE 2760 * HL:DE-HL 0189 7D 2770 SUB2 HOP A,E 018A 95 2780 SUB L 018B 6F 2790 MOV L,A 018C 7A 2800 NOV A,D 0180 9C 2810 SDB H 018E 67 2820 MOV H,A O18F C9 3830 RET 0190 2840 * 0190 2850 * ROUTINE TO SHIFT VALUE iN HL LEFT 4 PLACES, 0190 2860 * 0190 29 2870 SHL DAD H 0191 29 2880 DAD H 0192 29 2890 DAD H 0193 29 2900 DAD H 0194 C9 2910 RET 0195 2920 * 2930 * ROUTINE TO ACTIVATE MATH BOARD ANP UAIT FOR RESULT.
0195 2940 * ACCUH HAS OPCODE.
2950 * 2960 MATH OUT 0195.93 AO IOBAS ;COMMAND MATH BOARD TO START 0197 99 A7 2970 WAIT IN I09AS+7 ;GET FLAG BYTE 2980 ANI 0199 E6 01 01 ;CHECK BUSY BIT 2990 JNZ 0199 C2 97 01 gAIT ;STAY IN LOOP UNTIL NOT _USY O19E C9 3000 RET 019F 3010 * 019F 3020 * 019F 3030 * SPECIAL CHECK-OUT ROUTINES OI9F 3040 * 019F 3050 * ROUTINE TO INPUT A VALUE FROM A/D, STORE IN RAN.
019F 3060 * 019F F3 3070 DI OIAO 3E O0 3080 MVI A,O0 ;SELECT CHAN 0 01A2 CD 74 01 3090 CALL IN1 3100 RST 1.
01A5 CF OIA6 O0 3110 NOP 01A7 O0 3120. HOP 3130 * ROUTINE TO DO PGA TEST ON A/D 01AO 3140 DI OIA8 F3 01A9 21 01 F7 3150 LXI HpFCR OIAC 36 O0 3160 PGA MVI M,O0 OIAE 36 CO 3170 MVI M,OCOH OIBO C3 AC 01 3180 JMP PGA 0193 O0 3190 NOP 0194 3200 * ROUTINE TO OUTPUT A VALUE TO DACO_ DACI.
0194 F3 3210 91 O1BS O0 3220 HOP 0196 21 O0 O0 3230 R2 LXI HpO 0199 22 OB F7 3240 SHLD DACO 019C 22 OA F7 3250 SHLD DACI 019F O0 3260 NOP OleO O0 3270 NOP 01CI O0 32B0 NOP 01C2 C3 96 01 3290 JMP R_ ?
ASSM 3910 8D10 Assembled at 3D 10 CU 0082 EB OOEB PORT500E9 PORT600EA OUT] 0040 OUT2 00A1 OUT3 0090 OUT4 0091 OUTS 0092 OUT6 0093 IOBAS OOAO MBASE 8000 MLOU 0000 MHIGH 0080 MSTAT OOAI MFLA6 00A7 MBIA5 007F BASE F700 SCA F700 FCR F701 LCHAN F702 CLR F703 ADDAT F704 DACO F708 DACI F70A MUXO 000!
MUX! 0000 HUX2 0002 MUX3 0003 XHAX 0989 XTHR 0038 TVO 0085 'rut 00C8 TU2 002F TUEXP 0036 STACK 3FFF RAH 3F80 ACCEL 8000 FLIN 3F80 W6UEL 3F94 STRUT 3F86 SINK 3F88 BXTHR 3F8A BXHAX 3F8C PE 3FSE TRANS 3F92 START 3DlO LI 302E L8 3059 L9 3Dg8 LIO 3DA6 LI1 3DA9 L4 3DEE L5 3E26 L6 3E33 L2 3E37 L7 3E41 IN3 3E53 HI 3E5C M2 3E75 INI 3E84 M3 3ESB SUB2 ZE99 SHL 3EAO HATH 3EA5 UAIT, 3EAT PGA 3EBC R2 3EC6 3BlO 0010 3HO 0020 * DEFIWE CONSTANTS 3D10 0030 * 3DlO I/0 PORTS 0040 * 3DI0 EgO B2N 0050 CU ; GROUP 2 CONTROLUORD 3BI0 EOU OEBH 0060 EB ; GROUP 2 CONTROLUORD ADDR.
3DI0 EOU OEOH 0070 PORT5 ; PORT 5 ADDR 3B10 EOU OEAH 0080 PORT6 ; PORT 6 ADDR 3D10 0090 * 31,I0 0100 * PORT 6 OUTPUTS CTLR CTLR T/O LAND 3DI0 0110 * ENA RESET LAMP LAMP INT.ENA SL.ENA 3DlO 0120 OUT1 OFF OFF DIS DIS EQU 40H ; OFF ON 3D10 0130 OUT2 ON OFF BIG ENA EgU OAIH ; ON OFF 0140 OUT3 OFF ON DIS DIS 3D10 EOU 90H ; ON OFF OFF ON DIS END 3DlO 0150 OUT4 EOU 91H ; ON OFF 3D10 0160 OUT5 OFF ON ENA DIS EQU 92H ; ON OFF OFF ON ENA ENA 3D10 0170 OUT6 EOU 93H ; ON OFF 3810 0180 * 3BlO 0190 * MATH BOARD- SC 310 PARAMETERS 3B10 0200 IOBAS EDU OAOH ; I/O BASE ADDR 3D10 0210 MBASE EOU 8000H ; HEHORY BASE ADDR 3D10 0220 MLOU EOU OOH ; LS BYTE MEMORY SAGE ADDR 3DI0 0230 HHIGH EOU 80H ; MS BYTE MEMORY BASE ADDR 3DI0 0240 HSTAT EOU OA1H ; STATUS BYTE 3DlO 0250 MFLAG EOU OA7H ; FLAG BYTE 3D10 0260HBIAS EOU 7FH ; FLOATING POINT EXPONENT BIAS 3010 0270 * 3D10 0280 * ANALOG IlO BOARD- 8BC 732 PARAMETERS 0290 BASE EOU OFTOOH ; MEMORY BASE ADDRESS 3B10 0300 SCA EGU BASE+O ; A/D COMMAND-STATUS REGISTER 0310 FCR EQU BASE+I ; HUN ADDR AND GAIN REGISTER 0320 LCHAN EOU BASE+2 ; LAST CHANNEL REGISTER 3BlO 0330 CLR EOU BASE+3 ; CLEAR INTERRUPTS 3D10 0340 ADDAT EOU BASE+4 ; A/D DATA REGISTER 3DtO 0350 DACO EQO BASE+8 ; DACO OUTPUT 3D10 0360 DACI EQU BASE+IO ; DACf OUTPUT 3D10 0370 MUXO EOU O1 ; A/D GAIN=I, POINT HUX TO W/G ACCEL 3D10 0380 HUXI EQU O0 ; A/D GAIN:I, POINT HUX TO W/G VEL 3D10 0390 MUX2 EQU 02 ; A/D GAIN=I, POINT HUX TO STRUT POS 3D10 0400 MUX3 EOU 03 ; A/D GAIN:_, POINT MUX TO SINK RATE 3D10 0410 * 3910 0420 * STRUT PARAMETERS 0430 XHAX EQU 09BBH 3DlO ; MAX STROKE= 8.5 IN, : 6.078 VOLTS 3D10 0440 XTHR EOU 0038H ; THRESHOLD: 0.2 IN. : 0.143 VOLTS 3D10 0450 * 3DIO 0460 * TRANSITION VELOCITY SCALE FACTOR 0470 * =0.00004191 DECIMAL 3DIO 3DI0 0480 * :I.01011111100100010000101 * 2.*-15 BINARY 3DI0 0490 TVO EOU 85H ; LS _YTE (M) 3DIO 0500 TV1 EOU OCBH ; LS DYTE÷I (M+I) 3DIO 0510 TV2 EQU 2FH ; MS BYTE (H+2) 3D10 0520 TVEXP EOU 36H ; EXPONENT (M+3) 3DI0 0530 * 3D10 0540 * RAM MEMORY ASSIGNMENTS 0550 STACK EQU 3FFFH 3D10 ; INITIAL STACK POINTER 3D10 0560 RAM EOU 3FSOH ; START OF RAM SCRATCH AREA 0570 ACCEL EOU MBASE 3DI0 ; W/G ACCEL 0580 FLIH EOU RAM 3DI0 ; LIMIT FORCE COMMAND 0590 WGVEL EOU RAM+4 3DI0 ; U/G VELOCII'Y 0600 STRUT EOU RAM+6 3D1 0 ; STRUT POSITION 3DtO 0610 SIHK EQU RAM+8 ; INITIAL SINK RATE 31)10 0620 DXTHR EOU RAM+tO ; STRUT THRESHOLD • 16 0630 BXHAX EQU RAM+f2 3DIO ; MAX STRUT STROKE , 16 3DIO 0640 PE EQU RAM+t4 ; POTENTIAL ENERGY- 4 BYTES 0650 TRANS EOU RAM+18 3DI0 ; TRANSITION VELOCITy-4 BYTES 3DI0 0660 * 3D10 0670 * START OF MAIN PROGRAM 3DIO 0680 * 3DI0 F3 0690 START DI ;DISABLE INTERRUPTS 3DTI 21 FF 3F 0700 LXI H,STACK ;INIT STACK POINTER 3D14 F9 07_0 SPHL 3D15 0720 , CONFIGURE I/0 PORTS 3D15 3E 82 0730 MVI' A,CW 3D17 D3 EB 0740 OUT EB IRIT HATH BOARD 3D19 0750 * 3D19 3E O0 0760 MVI A,MLOU ;SET MEMORY BASE ADDR MSTAT 3P1B D3 AI 0770 OUT 0780 MVI 3DID 3E 80 A,MHIGH 3DIF D3 A2 0790 OUT MSTAT+I 0800 LXI 3D21 21 38 O0 H,XTHR ;MULT STRUY THRESHOLD BY 16 0810 CALL 5HL 3D24 CD AO 3E ;FOR LATER USE 0820 SHLD BXTHR 3D27 22 8A 3F 3D2A 3E 40 0830 MVI A,OUT!
;SET LIGHTS, S_ITCHE£ 0840 OUT PORT6 3D2C D3 EA 3B2E DB E9 0850 LI IN PORT5 ;CONTROLLER ENABLED?
3D30 1F 0860 RAR 3D31 D2 2E 3D 0870 JNC L1 ;NO, KEEP LOOKING 3P34 0880 * 3D34 0890 * CONTROLLER HAS BEEN ENABLE1) 3D34 0900 * 3934 3E 02 0910 MVI A,MUX2 ;YES, GET STRUT POSITION FOR 3D36 CD 84 3E 0920 CALL INI ;LANDING/TAKEOFF DETERMINATION 31)39 2A 8A 3F 0930 LHLD BXTHR ;GET STRUT THRESHOLD 393C EB 0940 XCHG ;PUT IN DE - 3D3D 2A B6 3F 0950 LHLD STRUT ;LOAD HL WITH STRUT POSN 3B40 CD 99 3E 0960 CALL SUB2 ;CALC: THRESHOLD - STRUT 3D43 DA 37 3E 0970 JC L2 ;TAKING OFF 3D46 0980 * 0990 * LANDIWG, MAKE PREPARATIONS 1000 * 3946 3E 03 1010 MVI A,MUX3 ;GET INITIAL SINK RATE 3948 CD 84 3E 1020 CALL INI 3B49 22 98 3F 1030 SHLD SINK ;STORE IT 3II4E 21 99 09 1040 LXI H,XHAX ;MULT XMAX BY 16 TO SHIFT INTO UPPER 12 BITS 3951 CD AO 3E 1050 CALL SHL 3054 22 8C 3F 1060 SHLD 9XMAX ;STORE IT 3057 1070 , 1080 * ENABLE INTEGRATOR, START 3B57 1090 * ENERGY CALCULATIONS, 3957 1100 * 3957 3E 92 1110 MVI A,OUT5 ;ENABLE INT 31)59 93 EA 1120 OUT PORT6 3958 CD 53 3E 1130 L8 CALL IN3 ;GET ACCEL, U/G VEL, STRUT POSN FROM A/D 395E EB 1140 XCHG ;CALC POTENTIAL ENERGY. SAVE HL_IN DE 3D5F 2A 8C 3F 1150 LHLD BXMAX ;GET MAX STROKE 3962 E_ 1160 XCHG ;PUT IN DE 3963 78 1170 MOV A,E ;CALC= XMAX - STRUT POSN " -' 3964 95 SUB L 3965 6F 1190 MOV L,A 31)66 7A 1200 HOV A,D 3967 9C 1210 SDD H 3P68 67 1220 MOV H,A 3969 22 04 80 1230 SHLB MBASE+4 ;STORE I# MATH BOARD 3n6c 1240 * ACCEL IS ALREADY IN MATH BOARD AT HDASE+O,I 396C AF 1250 XRA A ;MULTIPLY 396D CD A5 3E 1260 CALL MATH ;NOW HAVE PE AS A 32-91T gORD 3970 2A O0 80 1270 LHLD MBASE ;SAVE IT IN RAM 31)73 22 8E 3F 1280 SHLD PE 1290 LHLD MDASE+2 31)76 2A 02 80 3079 22 90 3F 1300 SHLD PE+2 31)7C 2A 88 3F 1310 LHLB SiNK ;CALC kINETIC ENERGY XCHG 31)7F EB 1320 3980 2A 84 3F LHLD UGVEL 3983 CD 99 3E 1340 CALL SUB2 ;CALC: SINK RATE - W/G VEL 3986 22 O0 80 1350 SHLD HDASE ;LOAD INTO MATH BOARD:,TWO PLACES 3P89 22 04 80 1360 5HLD HBASE+4 3DEC AF 1370 XRA A ;MULT 3)88 CD A5 3E 1380 CALL HATH ;NOU HAVE KE AT HBASE+O,I,2,3 3890 1390 * DO k BYTE-BY-BYTE COHPARISON TO TEST IF PE GREATER THAN KE. DO NOT BOTHER TO TEST 3890 1400 * 3890 1410 • LS BYTE, IT HAS NO USEFUL DATA, 3890 06 03 1420 HVI B,3 ;SET A BYTE COUNTER ;31)92 21 91 3F 143_ LXI H,PE+3 ;POINT HL TO PEHSB ]440 3D95 11 03 80 LXI D,NBASE+3 ;POINT DE TO KE MS8 3B98 1k 1450 L9 LBAX D ;PE GREATER THAN KEP 3D99 BE 1460 CHP N 389A C2 A6 38 1470 JNZ LIO 3Dvg 1B 1480 DCX D ;TRY ANOTHER BYTE POX H .389E 28 1490 3D9F 05 1500 DCR B ;TESTED 3 BYTES!
38A0 C2 98 30 1510 JNZ L9 ;NO, LOOP BACK [ 39A3 C3 A9 3D 1520 JMP Ll1 38A6 D2 58 3D 1530 LlO JNC L8 ;GO BET NEU INPUTS, TRY AGAIN 3DA9 1540 • 38A9 1550 • TIHE TO INITIATE ACTIVE CONTROL 38A9 1560 • 38A9 2A 80 3F 1570 LlI LHLD FLIH ;ISSUE LIMIT FORCE COMMAND 38AC 22 08 F7 1580 SHLD DACO 38AF 3E 93 1590 HVI A,OUT6 ;ENABLE SERVOLOOP 3881 83 EA 1600 OUT PORT6 1610 • 38B3 1620 * BEAR IS NOV UNDER ACTIVE CONTROL 3D83 1630 • 38B3 CALC TRANSITION VELOCITY 1640 * 3883 2A 80 3F 1650 LHLD FLIH ;GET LIMIT FORCE CMD (FLI) 3886 22 O0 80 1660 SHLD MBASE ;LOAD INTO HATH BOARD 3H)9 21 O0 O0 1670 LXI H,O 388C 22 02 BO 1680 SHLD HDASE+2 388F 3E 08 1690 NPI ;CONVERT TO FLOATING POINT k,8 38C1 CB A5 3E 1700 CALL MATH 38C4 3E 06 1710 MVI ;SQUARE IT A,6 38C6 CD A5 3E 1720 CALL MATH 38C9 3E 85 1730 NPl ;LOAD TRANSITION VELOCITY SCALE A,TVO 38CB 32 04 80 1740 STA MBASE+4 ;FACTOR INTO HATH BOARD 38CE 3E CG ]750 HVI A,TVI HBASE+5 38D0 32 05 80 1760 8Tk 3883 3E 2F 1770 NUT ApTV2 38])5 32 06 80 1780 STA MBASE+6 3888 3E 36 1790 HPl A, TVEXP 3BOA 32 07 60 1800 8TA MBASE+7 3POD 3E 02 1810 HVI A,2 ;hULT BY FLI**2 3DDF CD A5 3E 1820 CALL HATH 38E2 2A O0 80 1830 LNLD HBASE ;STORE TRAMS VEL 3DE5 22 92 3F 1840 SHLD TRANS 3DES 2A 02 80 1850 LHLD MBASE+2 38E_ 22 94 3F 1860 SHLD TRANS+2 3DEE 1870 * NOV HAVE TRANSITION VEL STOREDAS FLOATING POINT, 32-BIT # 3DEE 1880 * SO START COMPARING THIS AGAINST (SINK RATE - W/G VEL) 3DEE 1890 * FOR DETERMINING START OF TRANSITION.
LHLD 3DEE 2A 88 3F 1900 L4 SINK ;GET SINK RATE XCHG 3_F1EB 1910 ;SAVE IN DE 3OF2 3E O0 MVl 1920 A,MUX1 ;GET U/G VELOCITY 3OF4 CD 84 3E CALL INI i930 3OF7 CD 99 3E CALL SUB2 1940 ;CALC: SINK RATE - g/G VEL 3DFA 22 O0 80 SHLD MBASE 1950 ;CONVERT TO FLOATING POINT 3DFD 21 O0 O0 1960 LXI H,O 3EO0 22 02 80 SHLD MBASE+2 3E03 3E 08 1980 HVI A,8 CALL MATH 1990 3E05 CD AS 3E ;ITS NOW IN MBASE+O,I,2,3 LHL_ TRAMS 2000 3E08 2A 92 3F ;LOAD TRAMS VEL INTO MATH BOARD 20t0 SHLD HBASE+4 3EOB 22 O4 80 2020 LHLD TRAMS+2 3EOE 2A 94 3F 2030 SHLD HBASE+6 3E11 22 06 BO 3E14 3E OA NUT A,OAH ;COHPARE AGAINST (SINK-U/G VEL) CALL MATH 3E16 CD A5 3E 2050 IN NSTAT 3E19 DD AI 2060 ;GET STATUS, MASK 'LESS THAN" BIT 3E18 E6 20 2070 ANI 20H ;IS (SINK-U/G VEL) .LT. TRANS VEL?
3E1D CA EE 3D 2080 dZ L4 ;NO, CONTINUE LOOPING 3E20 2090 * YES, TIME TO START TRANSITION 3E20 2100 * TRANSITION PHASE 3E20 2110 * 3E20 2A 80 3F 2120 LHLD FLIM ;LOAD LIMIT FORCE COMMAND 3E23 II FD FF 2130 LXI 0,-3 ;SET RAMP RATE 3E26 22 08 F7 2140 L5 SHLD DACO ;OUTPUT CND TO DAC 3E29 19 2150 DAD D ;DECREASE LIMIT FORCE CMD 3E2A DA 26 3E 2160 JC LS ;LOOP UNTIL CMD = 0 3E2D 21 O0 O0 2170 LXI H,O ;SET LIHIT FORCE CHD EXACTLY = 0 3E30 22 08 F7 2180 SHLD DACO 3E33 O0 2190 L6 NOP ;STAY IN A LOOP UNTIL A RESET OCCURS 3E34 C3 33 3E 2200 JHP L6 3E37 2210 * 3E37 2220 * TAKEOFF MODE 3E37 2230 * 3E37 21 O0 O0 ;COMMAND A ZERO LIMIT FORCE 2240 L2 LXI H,O 3E3A 22 08 F7 2250 8HLO DACO 3E30 3E AJ ;ENABLE SERVO LOOP, LEAVE ENABLED 2260 HVI A,OUT2 3E3F D3 EA 2270 OUT PORT6 ;UNTIL STRUT POSITION LESS THAN THRESHOLD 3E41 3E 02 2280 L7 NPI A,MUX2 ;GET STRUT POSITION 3E43 CD 84 3E 2290 CALL INI 2300 XCHG 3E46 ED ;PUT IN DE 3E47 2A 8A 3F 2310 LHLD DXTHR ;LOAD HL UITH THRESHOLD 2320 CALL SUB2 3E4A CD 99 3E ;CALC_ STRUT - THRESHOLD 3E4D D2 41 3E 2330 JNC L7 ;LOOP UNTIL STRUT EXTENDED FULLY 3E50 C3 10 3D 2340 JMP START ;HAVE LIFTOFF, TURN OFF CONTROLLER 3E53 2350 * 2360 * ROUTINE TO INPUT AND STORE DATA FROM 3E53 2370 * THREE MUX CHANNELS 3E53
3E53 2380 *
3E53 3E O1
2390 IN3 MVI A,MUXO ;POINT MUX TO U/G ACCEL 3E55 21 01 F7 2400 LXI H,FCR ;POINT HL TO MUX/GAIN REGISTER 3E58 77 2410 MOV M,A ;LOAD REGISTER 3E59 2B 2420 DCX H :POINT HL TO CMD/STATUS REGISTER 3E5A 36 01 2430 MVI N,OI ;START CONVERSION 3E5C 7E 2440 M1 NOV A,M ;READ STATUS 2450 RLC 3ESD 07 ;DONE?
3E5E D2 5C 3E 2460 JNC MI ;NO, KEEP LOOPING 3E61 36 O0 2470 MVI M,O ;YES, RESET CONVERSION ENABLE 3E63 2A 04 F7 2480 LNLD ADDAT ;GET DATA 3E66 22 O0 BO 2490 SHLD ACCEL ;STO W/G ACCEL IN MATH BOARD, 3E69 22 BO 3F 2500 SHLD FLIM ;ALSO IN RAM 3E6C 3E O0 ;REPEAT FOR g/G VELOCITY 2510 MVI A,MUXI 3EGE 21 OI F7 2520 L×I H,FCR 3E71 77 2530 MOV M,A 3E72 2B 2540 DCX H 3E73 36 01 2550 MVI M,O{ 3E75 7E 2560 M2 MOV A,M 3E76 07 2570 RLC 2580 JNC M2 3E77 D2 75 3E 3E7A 36 O0 2590 MVI M,O 3E7C 2A 04 F7 2600 LHLD ADDAT 3E7F 22 84 3F 2610 SHLD _GVEL ;STORE W/G VEL 3E82 3E O2 2620 MVI A,MUX2 ;REPEAT FOR STRUT POSITION 3E84 21 O1 F7 2630 INI LXI H,FCR 3E87 77 2640 NOV M,A 2650 DCX H 3E88 28 3E89 36 01 2660 MVI M,01 3EGG 7E 2670 M3 MOV A,M 3E8C 07 2680 RLC 2690 JNC M3 3EGD D2 BB 3E 3E90 36 O0 2700 MVI M,O 3E92 2A 04 F7 2710 LHLD ADDAT 2720 SHLD STRUT 3E95 22 86 3F 2730 RET 3E98 C9 3E99 2740 * 3E99 27.50 * IeOUBLE PRECISION SUBTRACT ROUTINE 3E99 2760 * HL=DE-HL 3E99 78 2770 SUB2 MOV A,E 2780 SUB L 3EgA 95 3E9B 6F 2790 MOP LpA 3E9C 7A 2800 MOV A_D 3E9D 9C 2810 SBB H 3EgE 67 2820 MOP H,A 3EgF C9 2830 RET 3EAO 2840 * 3EAO 2850 * ROUTINE TO SHIFT VALUE IN HL. LEFT 4 PLACES.
3EAO 2860 * 3EAO 29 2870 SHL DAD H 2880 DAD H 3EA1 29 3EA2 29 2890 PAD H 3EA3 29 2900 DAD H 3EA4 C9 29t0 RET 2920 * 3EA5 2930 * ROUTINE TO ACTIVATE MATH BOARD AND WAIT FOR'RESULT.
3EA5 2940 * ACCUM HAS OPCODE.
3EA5 3EA5 2950 * 2960 MATH OUT 3EA5 P3 kO IOBAS ;COMHANP NATH BOARD TO START 3EA7 DB A7 2970 gAIT IN IOBAS+7 ;GET FLAG BYTE 3EA9 E60t 2980 ANI Ol ;CHECK BUSY BIT 3EAB C2 A7 3E 2990 JNZ gAIT ;STAY IN LOOP UNTIL NOT BUSY 3EAE C9 3000 RET 3EAF 3010 * 3EAF 3020 * 3EAF 3030 * SPECIAL CHECK-OUT ROUTINES 3EAF 3040 * 3EAF ROUTINE TO INPUT A VALUE FROH A/D, STORE IN RAM. 3050 * 3EAF 3060 * 3EAF F3 3070 PI 3EBO 3E 00 3080 MVI A,O0 ;SELECT CHAN 0 3090 CALL IN1 3EB2 CO 84 3E 3EBS CF 3100 RST 1 3EB6 O0 3110 NOP 3EB7 O0 3120 NOP 3EBB 3130 , ROUTINE TO DO PGA TEST ON A/O 3EBB F3 DI 3140 3EB9 21 01 F7 LXI 3t50 H,FCR 3EBC 36 O0 MVl 3160 PGA M,O0 3EBE 36 CO MVI 3170 M,OCOH 3ECO C3 BC 3E JMP PGA 3180 3_C3 O0 NOR 3190 3EC4 3200 * ROUTINE TO OUTPUT A VALUE TO BACO, DACI.
3EC4 F3 DI 3210 3EC5 O0 NOP 3220 3EC6 21 O0 O0 3230 R2 LXI H,O 3EC9 22 Oe F7 SHLD DACO 3240 3ECC 22 Ok F7 SHLD BACI 3250 3ECF O0 NOP 3260 3EO0 O0 NOP 3270 3EPI 00 NOP 3280 3EP2 C3 C6 3E JMP R2 3290 ?
Appendix B
Appendix B ELECTRONIC CONTROLI,ER DETAILED DESCRIPTION GENERAL CONSTR UCTION The controller consists of four boards, together with + and - 5V dc power supplies, control switches, and test jacks. The four boards perform the follow Lug functions.
(1) Central Processi_ng Unit (CPU) Board: The CPU board is part of the computer and performs the basic digital computations as well as the logical computations which determine the operating mode of the controller.
(2) Arithmetic Board: The arithmetic board performs, in digital form, the required multiplication and division functions associated with energy and transition velocity.
(3) Linear (Analog) Board: The linear board provides the control laws and functions associated with the force and position loops. It also computes the w_ng] gear velocity by integrating the wing]gear acceleration.
In addition, it incorporates the switching circuitry which is actuated by signals from the CPU.
(4) Analog-t0-Di_ital (A/D) and Digital-to-Analog (D/A) Board: This controller board converts the sensed and.computed analog quantities : to digital form so that the digital computations can be perfnrmed to determine the commanded limit force, and converts the limit force to analog form so that it can be used as the input to the force loop.
The physical location of the units is shown in Figure B-1 and the functional interrelationship (block diagram form) is shown in Figure B-2.
As received from the factory, the A/D board is configured to operate over the range o; I0 to +10 V. All of the analog signals in the controller lie between 0 and +10 V. Therefore, to achieve maximum accuracy, the AID board was reconfigured to operate in this range in accordance with the manual's jumpering instructions. The board is sent to NASA in this configuration.
"0 °J--I .0 v m L_ !
!
m n_ tU tU LUn_ >UJ O _j_j
>I>
" <_j
>1>
UJ >O (D u_ -J On" _.> T-- co LU o.
>_ 20.
(3 n- z W o _ ,,,o
I
I
I
I t I E_
I>l>
m , o
I _
P, I "- X_')o
>I>
Z I
o I > ×> _O o) C
>1>
m
_o8 o
>
I
r_ %
>I:'
J
I _'
!
°i d
!
m-| N CONTROL LAWS The control laws implemented in the controller are presented below in Figure B-3. (Refer to SYMBOLS, Page 3, Report Proper.)
LEAD.LAG NOTCH NETWORK NETWORKS SERVOVALVE + | F COMPENSATION , rt$+!
x c Figure B-3. Controller Control Laws As shown in this figure, the force loop compensation consiSls of a notch fIRer with a center frequency of 251.3 rad/sec and two iead-lag networks, 0.0281S+ 1/0.0141S+ ! and 0.001S+ 1/0.0001S+ 1. The position loop, which insures that the strut returns to its static position, incorporates a simple lag network: Kf/0. IS+I.
GAINS AND SCALING-LINEAR The static gains and. scale factors of the controller are shown in Figure B-2. These gains and scale factors were chosen to be compatible with the maximum values of the system parameters and the 10-V maximum of the microprocessor.
GAINS AND SCALING - DIGITAL The digRal scaling is accomplished as follows: (I) W/G acceleration (Xwg) XCv _ = 6 (1.8) V/g • 409.5 bR/V = 4423 bit/g, or 0.000226 g/bit
(2)
W/G velocity (Xwg) XCvg = 3. 937 V/m/sec • 409. 5 bit/V = 1612 bit/m/sec (40.95 bit/ in/ sec) or 6,203 (10 -4 ) m/sec/bit (0. 02442 in/sec/bit)
(s)
Strut displacement (X s) Xs = 0.715. 39.37 V/m* 409.5 bR/V = I. 153 (104 ) bit/m (292.8 bit/in) or 8. 673 (I0 -5) m/bit (0. 003415 in/bit)
(4)
Strut velocity (V s) V s = 3. 937 V/m/sec" 409, 5 bit/V = 1612 bit/m/sec (40.95 bit/ in/ sec) or 6. 203 (10 -4) m/sec/bR (0.02442 in/sec/bit)
(5) Work potential of the strut (WP)
WP = Fwg • (Xsmax-Xs) . IVIXwg (X s max-Xs) ff_wg = lgand X s = 0.0254 m (1 in) WP = Mg =W = 363.3 N • m (3215 in. lb) In digital terms, WP- 6 (I. 8) V. 409.5bit/V. 0.7!5V. 409.5bit/V = 1. 2949 (10 -6) bits Therefore, the scale factor of WP is: 1.2949 (10 6) bits = 3564bR/N- re;or 2 806 (10 -4 ) N. m/bit 363, 3 N" m (402, 7 bit/in • lb, or 0.002483 in • lb/bit)
(6)
KE = 1/2. W/g (VTOT)2 where VTO T = Xwg touchdown + wg At Kinetic energy (KE) Jot'X If V = 0.02.54 m/sec (1 in/sec) ICE = 0.4706 N • m (4. 1645 in" lb) In digital terms, KE = 0. 1 V (409.5bit/V) 2 = 1676.9 bits Therefore, the scale factor of KE is 1676.9/0.4706 = 3564bit/N "m, or 2.806 (10 -4 ) N" m/bit (402.7 bit/in • lb, or 0.002483 in" lb/bit) Which is the same scale factor as that for WP, and the two terms can be compared directly.
(7)
Decrease of limit force command (FLI) during the transition from impact phase to rollout phase: The scale factor of FLI is 1.324 (104)N (2977 lb) for 10 V; and, 10 V corresponds to 4095 digital bits. Therefore, the digital scale factor for FLI is 4095/1. 324 (104)N; or 0.3094 bit/N (1. 376 bit/lb). During transition, FLI is decreased at a rate of 1. 379 (105 ) N/sec (31 000 lb/sec), or digitally at 1. 379 (105 ) 0. 3094 = 42 642 bit/sec.
(8) Transition Velocity: From Figure 3.2.3 of the system specification: FLI 2 VT = 2 (W/g) R where W = aircraft weight per gear and R is the limit force transition rate.
The scale factor of V T is determined as follows: W/g = 1459N' sec2/m Then 1 Newton of FLI produces (1) 2 = 2. 486 (10 -9 ) m/sec of V T 2 (1459) (1. 379 • 105 ) Digitally, the scale factor for FLI (from the previous section) is 0. 3094 bit]N (1. 3755 bit]lb) Then, the scale factor for VT]FLI = (0. 3094) 2 = 0. 0956 bit/N (1. 892 bit/lb) of FLI Therefore, the scale factor for V T is: O. 0956 : 3. 845 (107) bit/m/see (977 000 bit/in/see) 2.486(10 -9 ) This scaling must be matched to the scaling of VTOT; that is, Xwgdt + Vs.
0.1V 409.5 bit The scaling of VTO T =0.0254 m/see x V : 1612 bit/m/see (40.95 bit]in/sec) To provide this scaling for V T it must be=multiplied by 1612/3. 845 (107) = 0.00004191 using the arithmetic board. This is accomplished as follows: 0. 00004191 DECIMAL (D) = .00000000000000101011111100100010000101 BINARY (B) or 1.01011111100100010000101 x 2 "15 (B) The exponent is -15 (D) The bias in the arithmetic board is 07F HEXIDECIMAL (H) or 127 (D) Therefore, the number must be applied to the arithmetic board with a bias of 127-15 = 112 (D). In addition, a factor must be applied due to the fact that the numbers from the A/D converter are stored in the most signi- ficant 12 bits out of 16 so that the number for VTO T is a factor of 16 too high.
The transition velocity (V T) is a function of FLI 2, and is a factor of (16) 2 too high. The net result is that the number for V T is too high by a factor of 16.
It must therefore be reduced by a factor of 16 or 24.
Therefore, the exponent of the applied number is 112-4 or 108 (D) = 6C (H) = 01101100 (B).
The format
A sign bit ("0" for positive) must precede the exponent.
of the applied number, is:
Sign Exp. Fraction
0011011000 lOllllli-O0100010000101 M+3 M+2 M+I M Therefore, if this number starts at location M, the contents of memory are: M 85(H) M+I C8(H) M+2 2F(H) M+3 36(H) LINEAR CIRCUIT DESCRIPTION The linear circuit is shown in HR drawing 88000080-201. Power for the linear components is obtained from two auxiliary power supplies which provide +15 Vdc and -15 Vdc. The signal from the wing/gear accelerometer is applied to a differential pair of amplifiers, U22 and U23. This approach was taken in order to minimize the noise on the low-level signal. The output of the differential pair is applied to U4 and the output of U4 is biased by potentiometer R6 to provide a 1-g offset level. The biased signal is applied to U3 and then to U5 which has a gain of 6 and the output of which is the wing/gear interface force which is applied to the microprocessor. The acceleration signal is available at J 13 on the front panel.
The acceleration signal from U3 is also applied through potentiometer R2 to integrator U2, the output of which is the wing/gear velocity signal and is applied to the microprocessor. R2 provides a means of adjusting the inte- grator gain. The integrator is enabled by analog switch U1A which removes the short circuit across the capacitor upon receiving an enable signal from the microprocessor. The wing/gear velocity signal is available at J12 on the fr'ont panel. Switch $7 is provided on the front panel in order to allow a simulated wing/gear signal to be applied to the microprocessor for test pur- poses. The simulated test signal is applied to J25 on the front panel.
The commanded limit force is algebraically summed with the wing/gear force by means of R22 and R23 to produce the force error which is then amplified by U6 and U7. The limit force command signal is available at J15 on the front panel. Switch 5 allows a simulated limit force command signal (applied at J23 on the front panel) to be used for test purposes. RI5, in the feedback path of U7, allows tl_e forward loop gain of the system to be adjusted as required.
The output of U7 is applied to the notch network (bridged T) which is composed of R16, R 17, C2 and C3, and the output of which is applied to U8.
The output of U8 is applied to ug, which provides one of the lead-lag functions, and then through UI0 to UII, which provides the other lead-lag function, and the output of which is applied to UI2. The signal from UI2 passes through one path of dual analog switch U1 and then to UI4, the output of which is the servovalve command signal, and is applied to the servovalve controller. This signal is available at Jlg. U1 closes the forward loop path upon receipt of an enable signal from the microprocessor. R31 on the front panel provides a means of biasing the servovalve.
The strut position is set by R41 on the front panel. The signal from this potentiometer passes through Ul7 and UI6 (when the servoloop is enabled) and is algebraically summed, at UI5, with the signal from the strut poten- tiometer, after it has passed through UI9 and UI8. The output of UI5 is the strut position loop error. It passes through U2 1 and is applied to the force loop at U6. The strut position command signal is available at TPI, the strut position signal is available at J18 and the strut position error signal is available at J17, all on the front panel. The controller is enabled and reset by means of switches on the front panel which are provided for this purpose.
In additions the strut hydraulic pressure signal and pneumatic pressure signal are available at J21 and J22 respectively on the front panel.
These The signals for the controller are applied at the rear of the unit.
are: J2 - 28 Vdc J4 - W/G acceleration J5 - Hub acceleration J6 - Strut position J7 - Strut pneumatic pressure J8 - Strut hydraulic pressure J9 - Servovalve command In order to set and maintain the initial hydraulic pressure in the gear an auxiliary pressure loop is used prior to enabling of the servoloop. To accomplish this, the pressure signal is amplified by amplifiers U24, U25, U28, U30 and U32, the output of which is added to the servoloop command signal through switch U33. When the servoloop is disabled, the switch is closed and allows the pressure signal to close the loop. The pressure is then controlled by a servovalve bias signal. When the servoloop is enabled the switch is opened and the pressure is free to vary in response to the loop command signal.
DIGITAL SOFTWARE The digital software program is listed in Appendix B. Appended to this listing are routines for testing the arithmetic board and A/D board.
The program is in the C. P.U. twice; that {s, the C. P.U. contains two PROM's, each containing the entire program. One PROM is at location 0000 and is the one normally used. No special procedures are required to use it.
When power is applied the computer starts at this location, and once the Controller Enable signal is received it assumes control of the process.
The second PROM is intended for test and program changes if required.
It is located at address 0800 in program memory but is programmed to start
at address 3D10 in RAM. To use it, the first PROM must be replaced by the
monitor ROM (at 0000) and then the program can be controlled by a standard
teletypewriter connected to the proper socket on the rear of the CPU board.
The contents of locations 0800 to 09F9 are moved to new locations starting at
3D10 with a teletype input: M0800, 09F9, 3D10 RETURN. Then, any input
desired can be applied to the computer by means of the teletype -- for testhlg
or for program changes. To operate in this mode an input is required --
G3D10 RETURN -- before any test.
If permanent program changes are required the PROM must be 'burned"
to contain the new program.
Appendix C
Appendix C TEST PROCEDURE GEAR CHARGING PROCEDURE (1) With the gear vertical, and the dead weight of the beam as a static load, bleed any accumulated gas from the hydraulic port of the gear until hydraulic fluid escapes from the port.
(2) Bleed gas or hydraulic fluid from the pneumatic charge port of the gear until the gear is fully compressed.
(3) Recheck the hydraulic port for any additional accumulated gas.
(4) If hydraulic fluid does not emerge from both gear ports in the fully compressed condition then fluid must be added. One method of accomplishing this is as follows: (a) Turn on the controller 28-Vdc supply and electronics.
(b) Press the controller '_RESET" button. This applies a positive bias command (pressure bias) to the servovalve.
(c) Turn on the gear hydraulic supply pump. Momentarily raise the pressure by means of the main relief valve to approximate- ly 4140 kPa (600 lb/Ln2), and then reduce this pressure to about 690 kPa (100 lb/in2).
(d) Slowly open the gear isolation valve (see Figure C- 1).
This should apply hydraulic pressure to the gear and bleed gas at both the hydraulic and pneumatic ports of the gear until hydraulic fluid escapes from bo_h.
(e) Close the gear isolation valve.
(f) Turn off the gear hydraulic supply pump.
(g) If the gear has extended during this procedure repeat 2 and 3.
steps 1, °i-I r_ tuo bo _4 (.9 !
I r_ _4 o_..4
(5) Connect a nitrogen charging system to the pneumatic charge
port and apply the desired pre-charge pressure.
NOTE: The gear has a working pressure rating of 3450 kPa (500 lb/in2),
• Therefore, caution should be exercised to avoid exceeding the
proof pressure of 5170 kPa (750 lb/in2).
(6) Until the strut is fully extended and is stabilized at the
desired charge pressure, slowly lift the upper gear using the load system.
(7) Close the pneumatic charge port and remove the charging
system.
PASSIVE GEAR TEST PROCEDURE (1) Turn on the load system electronics and allow 30 minutes for warm-up.
(2) Turn on the load hydraulic supply system. Be sure minimum capacities are 114 liter/rain (30 gal/min) and 2.413(104) kPa (3500 lb/in2).
(3) Move the mode switch on the load controller to "POSITION".
(4) Open the load system supply valve and slowly raise the load system pressure to 1.45 (104) kPa (2100 lb/in2). If the position command potentiometer has been preset to nlaximum drop height, the beam will move to its retract stop, thereby raising the gear.
(5) If the position command potentiometer has not been pre-set, then slowly adjust it to position the beam against the retract stop and check to see if the gear charge pressure is at the desired value.
(6) Set the recorder _o monitor the required parameters and set the channel gains.
(7) Momentarily move the reset/operate switch on the load controller to "RESET" and then return it to "OPERATE".
(8) Raise the load system pressure to 2. 069 (104 ) kPa (3000 lb/in2).
(9) Start the recorder and move the mode switch to "VELOCITY]
LOAD" to drop the gear.
(10) After the drop, reduce the load system pressure to 2100
lb/in 2 and move the mode switch to "POSITION".
(11} For further testing repeat steps 6 through 9.
(12) When testing is concluded, reduce the load system pressure
to minimum and close the load system supply valve.
ACTIVE GEAR TEST PROCEDURE
(1) Turn on all load system, controller, and servovalve controller electronics. Allow 30 minutes for warm-up.
(2) Follow the procedures of steps 2 through 7 of "Passive Gear Test Procedure".
(3) Place the gear controller in the "RESET" state.
(4) With the gear isolation valve closed, turn on the gear hydraulic supply pump and adjust its main relief valve to provide 6895 kPa (1000 lb/in 2) as read on the supply pressure gage.
(5) Adjust the "BIAS" control on the servovalve controller to produce approximately the same gear supply pressure as the gear charge pressure.
(6) Slowly open the gear isolation valve while observing the pressure in the gear. The gear internal pressure must not fall more than 345 kPa (50 lb/in 2) below its pre-set charge pressure. Otherwise, the gas may be forced into the hydraulic side of the gear and necessitate re- charging in accordance with the first section, "Gear Charging Procedure".
(7) Readjust the "BIAS" control on the servovalve controller to obtain the desired gear internal charge pressure, as read by the gear hydraulic pressure transducer.
(8) Confirm that the "S. V. CMD. BIAS" control on the gear controller is set to the proper value for the gear charge pressure.
(9) Set the sink speed value by means of the "SINK SPEED" control.
(10) Set the load "VELOCITY" command potentiometer for the desired sink speed.
(11) Momentarily move the reset operate switch on the load controller to "RESET" and then return it to "OPERATE".
(12) Raise the gear supply pressure to 2. 069 (104 ) kPa (3000 lb/in 2) and recheck the gear internal pressure, if necessary, readjust the servo- valve controller "BIAS" control for the desired gear pressure.
NOTE: To prevent overheating do not operate the gear hydraulic supply at 2. 069 (104) kPa (3000 Ib/in 2) until immediately prior to the drop.
(13) Raise the load system pressure to 2. 069 kPa (3000 lb]in2).
(14) Start the recorder and move the load mode switch to "VELOCITY LOAD" to drop the gear.
(15) After the drop, reduce the gear supply pressure to 6900 kPa (1000 lb/in2).
(16) Reduce the load system pressure to 1.45 (104 ) kPa (2100 lb]in2).
(17) Close the gear isolation valve.
(18) Raise the gear by moving the mode switch on the load controller to "POSITION".
(19) Return the gear controller to the "RESET" mode.
(20) Slowly open the gear isolation valve. The gear internal pressure should return to the pre-set charge value. For further testing repeat steps 9 through 19. Otherwise proceed to step 21.
(21) Reduce the load pressure slowly to minimum allowing the gear to settle gently, and close the load system supply valve.
(22) Turn off all electronics except the recorder. Wait about two minutes (to allow capacitors to discharge) and run a short record for channel zero references.
Appendix D
Appendix D OSCILLOGRAPH RECORDINGS Key to Recording s Zero Position (with respect Parameter Sensitivity Channel to reference line) 16.76 cm (6.6 in) 0,25 m/sec/cm (0.25 in/sec/tn) WIG Velocity 7.62 cm (3.0 in) 2224 N/cm (1270 lb/in) Net Force (Accelerometer # 1) 15.24 cm (6.0 in) 0.05 cm/cm (0.05 in/in) 3 Servovalve Spool Pos.
2.54 cm (1.01 in) S76 N/cm (500 1b/in) Limit Force Command 10. 19 cm (4. 01 in) 2224 N/cm (1270 lb/in) 5 Net Force (filterea (Accelerometer #2) 19.71 cm (7.76 in) o. o127 m/in (1.27 in/in) Strut Position 9. 17 cm (3.61 in) Servovalve Command 1.97 ma/cm (5 ma/in) 19.81 cm (7.8 in) 277 kPa/cm (102 lb/in2in) 8 Gear Hydraulic Pressure 19.30 cm (7.6 in) 277 kPa/cm (102 lb/in2/in) 9 Gear Pneumatic Pressure 18.26 cm (7. 19 in) 1.97 V]cm (5 V/in) Lift Force Command 12.70 cm (5.0 in) 0.05 m/cm (5 in/in) Lift Simulator Position 17.78 cm (7.0 in} 8756 N/cm (5000 lb/in) 12 Lift Force ..L.
! ' l J
I
,5
II
• .
I I.
i
. 155
| | _J
II
.!
REFERENCES
io
McGehee, John R. ; and Carden, Huey D. : A Mathematical Model
of an Active Control Landing Gear for Load Control During
Impact and Roll-Out. NASA TN D-8080, 1976.
Fasanella, Edwin L. ; McGehee, John R. ; and Pappas, M. Susan. :
Experimental and Analytical Determination of Characteristics
Affecting Light Aircraft Landing-Gear Dynamics. NASA TM
X-3581, 1977.
f , 3. Recipient's Catalog No.
I. Report No. 2. Government Accession No.
NASA CR-3113
5. Repo_ Date 4. Title and Subtitle
April 1979
An Electronic Control for an Electrohydraulic Active
6. Performing Organization Code
Control Aircraft Landing Gear
8. Performing Orgamzation Report No.
7. Author(s)
Irving Ross and Ralph Edson
10. Work Unit No.
9. Performing Or_nization Name and Addre_ '11. Contr_t or Grant No.
Hydraulic Research Textron
Valencia, California 91355
NAS1-14459
13. Ty_ of Repo_ and Pefi_ Cov_ed 12. Spon_ring Agency Name _d A_r_s
Contractor Report
National Aeronautics and Space Administration
14. Sponsoring Agency Code
Washington, DC 20546
15. '_pplementary Notes i
John R. McGehee
Langley technical monitor:
Final Report
16. A_tra_ HYdraulic Research, under NASA Contract NAS1-14459, has developed, designed,
fabricated and tested an electronic controller for an electro-hydraulic active
control aircraft landing gear. Drop tests of a modified gear from a 2722 kg
(6000 Ibm) class of airplane were conducted to illustrate controller performance.
The results of this effort indicate that the active gear effects a force reduc-
tion, relative to that of the passive gear, from 9 to 31 percent depending on the
aircraft sink speed and the static gear pressure.
"i8. Distribution Statement 17. Key Words (Suggested by Author(s))
Unclassified-Unlimited
Aircraft landing gear
Electronic controls
Active controls
Subject Category 05
Landing loads
,,= 21. No. of Pages 22. _ice" _. Security O=,if. (of this _ga) 19. Security Oemif. (of this report)