#%%A-RCB-0094-SL-12 GRAPHIC -- LOG TEST PROGRAM # FIRST PLOT IS A SQUARE LOG-LOG PLOT COMPLEX COM, CVAL CALL STRTPL CALL SIUNIT CALL LOGX(1); CALL LOGY(1) CALL ROTATE (1) CALL CORNER (55.0, -152.0) CALL SCALE (10., 100., 150., 0.05, 0.5, 150.) CALL GRID (6.,6.); CALL TICKS (3., 'I4', 3., 'F5.2') CALL GRID (3.,3.,-1); CALL GRID (1.,1.,-1,2) CALL BORDER (3) CALL CTITLE (-12.0, 'GRAPHIC -- LOG TEST PROGRAM OUTPUT') CALL CTITLE (-18.0, 'A-RCB-0094-SK-12') I = 3 FOR (X=10.0; X<=100.0; X=X+5.0) [ CALL MOVE (X,(X+100.)/400., I) I = 9 ] CALL ENDPLT #%^ # SECOND PLOT IS FREQUENCY RESPONSE ON SEMILOG DEFINE PI 3.14159 DEFINE ZETA 0.1 DEFINE FN 1.0 DEFINE NPNT 30.0 CALL ROTATE (0); CALL LOGX(1); CALL LOGY(0) CALL CORNER (25.0, 160.0) CALL SCALE (0.1, 10.0, 150., -40.0, 20.0, 80.0) CALL GRID (5.,10.); CALL GRID (1., 20., -1) CALL TICKS (1.0, 'F5.1', 20.0, 'I4') CALL BORDER (3) CALL ANNOTE (-22.0, 50.0, 'Gain') CALL ANNOTE (-19.0, 45.0, 'dB') I = 2 FACT = 10.0**(1.0/NPNT) FOR (FREQ=0.1; FREQ<=10.0; FREQ=FREQ*FACT) [ COM = CMPLX(0.0, FREQ/FN) CVAL = 1.0/(1.0 + COM*(2.0*ZETA + COM)) RMAG = ABS(CVAL) IF (RMAG>=1.0E-20) Y = 20*LOG10(RMAG) ELSE Y = -500.0 CALL MOVE (FREQ, Y, I) I = 9 ] #%^ # PHASE PLOT ON SAME PAGE AS MAGNITUDE CALL CORNER (25.0, 70.0) CALL SCALE (0.1, 10.0, 150.0, -180.0, 0.0, 80.0) CALL GRID (5.0, 45.0); CALL GRID (1.0, 90.0, -1) CALL TICKS (1.0, 'F5.1', 90.0, 'I4') CALL BORDER (3) CALL ANNOTE (-22.0, 60.0, 'Phase') CALL ANNOTE (-22.0, 55.0, 'Degrees') CALL ANNOTE (50.0, -15.0, 'Frequency -- Hz') CALL CTITLE (-25.0, 'GRAPHIC -- LOG TEST PROGRAM OUTPUT Page 2') CALL CTITLE (-31.0, 'A-RCB-0094-SK-12') I = 2 FOR (FREQ=0.1; FREQ<=10.0; FREQ=FREQ*FACT) [ COM = CMPLX (0.0, FREQ/FN) CVAL = 1.0/(1.0 + COM*(2.0*ZETA + COM)) Y = ATAN2(AIMAG(CVAL), REAL(CVAL))*180.0/PI CALL MOVE (FREQ, Y, I) I = 9 ] CALL ENDPLT #%^ # PHASE AND GAIN ON ONE PLOT DEFINE PHZERO -18.0 DEFINE MAJDIV 12.0 DEFINE MAJDEGR 90.0 CALL ROTATE (1) CALL LOGX(1) CALL CORNER (80.0, -125.0) CALL SCALE (0.1,10.0,100.0, -42.0,18.0,120.0) CALL BORDER (1); CALL GRID (5.0,6.0,-1) CALL TICKS (1.0,'F5.1', 6.0,'I4') CALL CTITLE (-30.0, 'GRAPHIC -- LOG TEST PROGRAM OUTPUT Page 3') CALL CTITLE (-38.0, 'A-RCB-0094-SK-12') CALL UPNOTE (-15.0, 70.0, 'GAIN -- dB') CALL CTITLE (-15.0, 'FREQUENCY -- Hz') CALL PHPOSN (MAJDIV,STEP,X,Y) PHGAIN = MAJDIV/MAJDEGR; SCAL = STEP/MAJDIV Y = Y + PHZERO*SCAL; CALL ANNOTE (X,Y, '0') CALL ANNOTE (X,Y-90.0*PHGAIN*SCAL, '-90') CALL ANNOTE (X,Y-180.0*PHGAIN*SCAL, '-180') CALL UPNOTE (X+20.0, Y-40.0, 'PHASE -- Degrees') FACT = 10.0**(1.0/NPNT) OLDGA = 0.0; OLDPH = PHZERO; OLDF = 0.1 FOR (FREQ=0.1; FREQ<=10.0; FREQ=FREQ*FACT) [ COM = CMPLX (0.0,FREQ/FN) CVAL = 1.0/(1.0 + COM*(2.0*ZETA + COM)) RMAG = ABS (CVAL) IF (RMAG>=1.0E-20) RMAG = 20.*LOG10(RMAG) ELSE RMAG = -500.0 CALL VECTOR (OLDF,OLDGA,FREQ,RMAG,2) PHASE = ATAN2(AIMAG(CVAL), REAL(CVAL))*180.0/PI IF (PHASE >> 90.0) PHASE = PHASE - 360.0 PHASE = PHZERO + PHASE*PHGAIN CALL VECTOR (OLDF,OLDPH,FREQ,PHASE,2) OLDGA = RMAG; OLDPH = PHASE; OLDF = FREQ ] CALL ENDPLT CALL ENDJOB CALL EXIT END