'3CAP - control modem and capture three ph microMETER data - CJC (C) 7/01/1997 'GOSUB SUB3: BEEP: STOP:'TEST TIMER '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht color x,0,0 ' ap/tp DDC CL$ = "3CAP 1 222222 1249AC.GHI...... MATDT8989214" COMMAN2$ = COMMAND$ 'OMMAN2$ = "2 16 0.2............. MATDT7855680": 'TEST PARM IF LEN(COMMAN2$) < 4 THEN PRINT CL$: STOP CP = VAL(MID$(COMMAN2$, 1, 1)) N = VAL(MID$(COMMAN2$, 3, 6)) IF LEN(COMMAN2$) < 27 THEN M$ = " ": SEL$ = "0...............": GOTO R050 SEL$ = MID$(COMMAN2$, 10, 16) M$ = MID$(COMMAN2$, 27, 1) P$ = MID$(COMMAN2$, 28, 25) 'CP = 5: N = 16: SEL$ = "0...............": M$ = " " R050: 'CP = 5: N = 16 SCREEN 0, 0: PS = 0 KEY OFF: CLS PRINT SEL$: COLOR 1, 0, 0 LOCATE (25) LABL$ = " x=exit " + CHR$(176) + " (C) 1997 - microMETER Corp. - v 1.03 " + CHR$(176) PRINT LABL$ LOCATE (1) COLOR 7, 0, 0 IF CP = 1 OR CP = 3 THEN CLOSE : OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 IF CP = 2 OR CP = 4 THEN CLOSE : OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 IF M$ <> "M" THEN GOTO R200 GOSUB SUB3 PRINT #1, "ATE0 S10=254" GOSUB SUB3 GOSUB SUB2 PRINT "3CAPture program - Enter modem AT commands or" PRINT " x - continue y - repeat dial z - abort" R100: B$ = INKEY$ IF B$ = "x" THEN GOTO R200 IF B$ = "X" THEN GOTO R200 IF B$ = "z" THEN STOP IF B$ = "Z" THEN STOP IF B$ = "y" THEN PRINT #1, P$: PRINT P$ IF B$ = "Y" THEN PRINT #1, P$: PRINT P$ IF B$ <> "" THEN PRINT #1, B$; : PRINT B$; IF EOF(1) THEN GOTO R100: 'IF COM EMPTY, GET KEY R130: IF LOC(1) > 128 THEN PS = 1: 'HALF FULL:PRINT #1,CHR$(19):'XOFF ON ERROR RESUME NEXT A$ = INPUT$(LOC(1), #1): 'DEVICE I/O ERROR IF A$ = "," THEN GOTO R200 LPF = INSTR(LPF + 1, A$, CHR$(10)) IF LPF > 0 THEN MID$(A$, LPF, 1) = " ": LPF = 0: 'CLEAR LF PRINT A$; IF LOC(1) > 0 THEN GOTO R130 IF PS THEN PAUSE = 0: PRINT #1, CHR$(17): 'XON GOTO R100 R200: 'END OF MODEM CONNECT COLOR 4, 0, 0 OPEN "O", #2, "CT.BAK" OPEN "O", #3, "MICRO2.BAK" IF INKEY$ = "x" THEN GOTO SKIP2 IF INKEY$ = "X" THEN GOTO SKIP2 SKIP0: IF CP < 5 THEN PRINT #1, "0"; FOR K = 1 TO 16: ' SIXTEEN mM UNITS I = 0 SL$ = MID$(SEL$, K, 1) IF CP > 4 AND I = 0 THEN CLOSE #1 IF CP > 4 AND I = 0 THEN OPEN "I", #1, "XX.CAP" 'DDC on IF SL$="G" THEN PRINT #1, CHR$(128)+CHR$(1); IF SL$="H" THEN PRINT #1, CHR$(128)+CHR$(2); IF SL$="I" THEN PRINT #1, CHR$(128)+CHR$(4); IF SL$="J" THEN PRINT #1, CHR$(128)+CHR$(8); IF CP < 5 THEN PRINT #1, SL$; IF SL$ = "." THEN GOTO SKIP1 IF SL$ = " " THEN GOTO SKIP1 IF CP < 5 THEN LINE INPUT #1, XX$: 'DISCARD FIRST READING 'PRINT " " CLS LOCATE (25) COLOR 1, 0, 0 PRINT LABL$ LOCATE (1) COLOR 4, 0, 0 PRINT "3CAPture program - Unit selected = "; COLOR 7, 0, 0 PRINT SL$ COLOR 4, 0, 0 PRINT "PC: time date "; COLOR 2, 0, 0 PRINT "mM: CT#, B, C, D" COLOR 7, 0, 0 LOOP1: INPUT #1, A, B, C, D I = I + 1: J = J + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D PRINT #2, A; ","; B; ","; C; ","; D PRINT #3, TIME$; " "; DATE$ IF INKEY$ = "x" THEN GOTO SKIP2 IF INKEY$ = "X" THEN GOTO SKIP2 IF I < N THEN GOTO LOOP1 SKIP1: NEXT K PLAY "DA" 'DDC off IF CP < 5 THEN PRINT #1, CHR$(128)+CHR$(0); COLOR 7, 0, 0 SKIP2: PRINT J; " readings" IF M$ <> "M" THEN GOTO SKIP3 GOSUB SUB3 GOSUB SUB3 IF CP < 5 THEN PRINT #1, "+++"; GOSUB SUB3 GOSUB SUB3 GOSUB SUB1 SKIP3: CLOSE IF INKEY$ = "x" THEN GOTO SKIP4 IF INKEY$ = "X" THEN GOTO SKIP4 SHELL "COPY CT.BAK CT.CAP" SHELL "COPY MICRO2.BAK MICRO2.CAP" SKIP4: END SUB1: IF CP < 5 THEN PRINT #1, "ATH": PRINT "Disconnected." PLAY " E" RETURN SUB2: IF CP < 5 THEN PRINT #1, P$: 'Phone # RETURN SUB3: X1 = VAL(MID$(TIME$, 7, 2)) LOOPY: X2 = VAL(MID$(TIME$, 7, 2)) X3 = X2 - X1 IF X3 < 0 THEN X3 = -X3 IF X3 < 3 THEN GOTO LOOPY RETURN '3COM - Combine 3CAP data for 3 mM - microMETER Corp. (C) 1997 DIM BB(16), CC(16), DD(16), EE(16) PRINT "3COM 111111 999999 #readings, #mM" S1 = VAL(MID$(COMMAND$, 1, 6)) S2 = VAL(MID$(COMMAND$, 8, 6)) S1 = 96 S3 = S1 / 16 S4 = 48 K = 0 CLOSE OPEN "I", #1, "MICRO2.BAK" OPEN "O", #2, "MICRO2.CAP" LOOP1: K = K + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ FOR L = 2 TO S3 LINE INPUT #1, DUMMY$ NEXT L PRINT #2, P1$ PRINT P1$ GOTO LOOP1 SKIP1: K = K - 1 PRINT "output ", K K = 0 CLOSE OPEN "I", #1, "CT.BAK" LOOP2: K = K + 1 IF EOF(1) <> 0 THEN GOTO SKIP4 INPUT #1, A, B, C, D IF K > S4 THEN GOTO SKIP2 BB(A) = BB(A) + B CC(A) = CC(A) + C DD(A) = DD(A) + D SKIP2: IF K <= S4 THEN GOTO SKIP3 EE(A) = EE(A) + B SKIP3: GOTO LOOP2 SKIP4: CLOSE OPEN "O", #1, "CT.CAP" OPEN "O", #2, "E.CAP" FOR I = 1 TO 16 A = I PRINT #1, A; ","; BB(A); ","; CC(A); ","; DD(A) PRINT #2, A; ","; EE(A) NEXT I CLOSE END microMETER calculations in PC software: I goes from 1 to 16. KW(I) = B (bean count). KVA(I) = C (bean count). BK(I) = CT size (breaker size) from CT.DAT LV(I) = Line volts from CT.DAT PF(I) = Correction factor (power factor) from CT.DAT SCAL = Scale 1 from MICRO.DAT (first value) V1 = Voltage applied to transformer primary to produce calibrated VREF from MICRO.DAT (last row, third value) (This is just a correction factor in the form of x/120 to make KW register correctly, regardless of the type of installation.) Bean counts are then converted to actual KVA and KW: KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V1 / 120 Now, calculate KVAR and PF from KVA and KW: IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5 IF KVA(I) > 0 THEN PF(I) = KW(I) / KVA(I) 10 'CAP - capture microMETER data - CJC 10/10/1994 (C) 30 'CLOSE 40 KEY OFF: CLS : SEL$ = "0" 50 LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.07 "; CHR$(176) 60 I = 0: LOCATE 1 65 IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): N = VAL(MID$(COMMAND$, 3, 6)): SEL$ = MID$(COMMAND$, 10, 1): GOTO 100 70 INPUT "Please enter COM port (1 2 3 or 4) "; CP 80 PRINT "Please enter # of readings? (16 for one complete set, 8640 for 24 hour period): " 90 INPUT N: CLS 100 LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.07 "; CHR$(176): LOCATE 1 110 OPEN "O", #2, "CT.CAP" 120 OPEN "O", #3, "MICRO2.CAP" IF SEL$ = "" THEN SEL$ = "0" PRINT "CAPture program - Selection Code: "; SEL$ 130 IF CP = 1 THEN OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 140 IF CP = 2 THEN OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 142 IF CP = 3 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 144 IF CP = 4 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 150 IF CP < 5 THEN PRINT #1, SEL$; 152 IF CP > 4 THEN OPEN "I", #1, "XX.CAP": CP = CP * 1000 160 ON ERROR GOTO 180 170 IF INKEY$ = "x" THEN GOTO 310 175 IF CP > 4 THEN FOR J = 1 TO CP: NEXT J: GOTO 190 180 LINE INPUT #1, XX$: 'DISCARD FIRST READING 190 'PRINT "CAPture program - Discarding first reading." 193 'FOR J = 1 TO 1000: NEXT J 195 PRINT "CAPture program - System synchronized." 200 PRINT "PC: time date mM: CT#, B, C, D" 210 INPUT #1, A, B, C, D 215 IF CP > 4 THEN FOR J = 1 TO CP: NEXT J 220 I = I + 1 230 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D 240 PRINT #2, A; ","; B; ","; C; ","; D 250 PRINT #3, TIME$; " "; DATE$ 260 IF INKEY$ = "x" THEN GOTO 310 270 IF I < N THEN GOTO 210 280 PLAY "DA" 290 CLOSE #2, #3 300 IF LEN(COMMAND$) = 0 THEN CHAIN "DIS" 310 PRINT I; " readings" 320 'SYSTEM 'SEP - separate some lines from a file - microMETER Corp. (C) 1995 PRINT "SEP 111111 999999 reads SEP.INP and writes the block to SEP.OUT" S1 = VAL(MID$(COMMAND$, 1, 6)) S2 = VAL(MID$(COMMAND$, 8, 6)) K = 0 CLOSE OPEN "I", #1, "usage.cap" OPEN "I", #3, "usage.dte" OPEN "O", #2, "usage.OUT" LOOP1: K = K + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ LINE INPUT #3, P3$ 'P2$ = " " + MID$(P1$, 1, 72) 'IF K < S1 OR K > S2 THEN GOTO LOOP1 PRINT #2, P3$ + " " + P1$ 'PRINT P1$ 'IF S1 = S2 THEN GOTO SKIP1 'IF K > S2 THEN GOTO SKIP1 GOTO LOOP1 SKIP1: CLOSE 'COMMA - delimit fields in CUS.BIL file - microMETER Corp. (C) 1995 K = 0 PRINT "COMMA.EXE reads CUS.BIL, inserts comma delimiters and writes CT.BIL." CLOSE OPEN "I", #1, "CUS.BIL" OPEN "O", #2, "CT.BIL" LOOP1: K = K + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ P2$ = MID$(P1$, 1, 24) + ", " + MID$(P1$, 27, 10) + " , " + MID$(P1$, 41, 10) + ", " + MID$(P1$, 53, 6) + " , " + MID$(P1$, 66, 10) PRINT #2, P2$ 'PRINT P1$ 'PRINT P2$ GOTO LOOP1 SKIP1: CLOSE 'CP - just get one line from comport and put out in file 'M2CAP - control modem and capture multiple microMETER II data - CJC (C) 7/5/2003 'GOSUB SUB3: BEEP: STOP:'TEST TIMER CL$ = "MCAP 1 222222 0........9ABCDEF MATDT8989214" COMMAN2$ = COMMAND$ 'OMMAN2$ = "2 16 0.2............. MATDT7855680": 'TEST PARM IF LEN(COMMAN2$) < 4 THEN PRINT CL$: STOP CP = VAL(MID$(COMMAN2$, 1, 1)) N = VAL(MID$(COMMAN2$, 3, 6)) IF LEN(COMMAN2$) < 27 THEN M$ = " ": SEL$ = "0...............": GOTO R050 SEL$ = MID$(COMMAN2$, 10, 16) M$ = MID$(COMMAN2$, 27, 1) P$ = MID$(COMMAN2$, 28, 25) 'CP = 5: N = 16: SEL$ = "0...............": M$ = " " R050: 'CP = 5: N = 16 'SCREEN 0, 0: PS = 0 'KEY OFF: CLS 'PRINT SEL$ 'LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.02 "; CHR$(176) 'LOCATE (1) IF CP = 1 OR CP = 3 THEN CLOSE : OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 IF CP = 2 OR CP = 4 THEN CLOSE : OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 IF M$ <> "M" THEN GOTO R200 GOSUB SUB3 PRINT #1, "ATE0 S10=254" GOSUB SUB3 GOSUB SUB2 'PRINT "MCAPture program (mMII) - Enter modem AT commands or" 'PRINT " x - continue y - repeat dial z - abort" R100: B$ = INKEY$ IF B$ = "x" THEN GOTO R200 IF B$ = "z" THEN STOP IF B$ = "y" THEN PRINT #1, P$: PRINT P$ IF B$ <> "" THEN PRINT #1, B$; : PRINT B$; IF EOF(1) THEN GOTO R100: 'IF COM EMPTY, GET KEY R130: IF LOC(1) > 128 THEN PS = 1: 'HALF FULL:PRINT #1,CHR$(19):'XOFF ON ERROR RESUME NEXT A$ = INPUT$(LOC(1), #1): 'DEVICE I/O ERROR IF A$ = "," THEN GOTO R200 LPF = INSTR(LPF + 1, A$, CHR$(10)) IF LPF > 0 THEN MID$(A$, LPF, 1) = " ": LPF = 0: 'CLEAR LF PRINT A$; IF LOC(1) > 0 THEN GOTO R130 IF PS THEN PAUSE = 0: PRINT #1, CHR$(17): 'XON GOTO R100 R200: 'END OF MODEM CONNECT IF CP > 4 THEN OPEN "I", #1, "XX.CAP" OPEN "O", #2, "CP.TXT" 'OPEN "O", #3, "MICRO2.CAP" IF INKEY$ = "x" THEN GOTO SKIP2 SKIP0: IF CP < 5 THEN PRINT #1, "0"; FOR K = 1 TO 16 I = 0 SL$ = MID$(SEL$, K, 1) IF CP < 5 THEN PRINT #1, SL$; IF SL$ = "." THEN GOTO SKIP1 IF SL$ = " " THEN GOTO SKIP1 IF CP < 5 THEN LINE INPUT #1, XX$: 'DISCARD FIRST READING 'PRINT " " 'PRINT "MCAPture program (mMII) - Unit selected = " + SL$ 'PRINT "PC: time date mM: CT#, B, C, D, E, F, G, ID" LOOP1: INPUT #1, A, B, C, D, E, F, G, H I = I + 1: J = J + 1 'PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; E; ","; F; ","; G; ","; H PRINT #2, A; ","; B; ","; C; ","; D; ","; E; ","; F; ","; G; ","; H 'PRINT #3, TIME$; " "; DATE$ IF INKEY$ = "x" THEN GOTO SKIP2 IF I < N THEN GOTO LOOP1 SKIP1: NEXT K 'PLAY "DA" SKIP2: 'PRINT J; " readings" IF M$ <> "M" THEN GOTO SKIP3 GOSUB SUB3 GOSUB SUB3 IF CP < 5 THEN PRINT #1, "+++"; GOSUB SUB3 GOSUB SUB3 GOSUB SUB1 SKIP3: CLOSE END SUB1: IF CP < 5 THEN PRINT #1, "ATH": PRINT "Disconnected." PLAY " E" RETURN SUB2: IF CP < 5 THEN PRINT #1, P$: 'Phone # RETURN SUB3: X1 = VAL(MID$(TIME$, 7, 2)) LOOPY: X2 = VAL(MID$(TIME$, 7, 2)) X3 = X2 - X1 IF X3 < 0 THEN X3 = -X3 IF X3 < 3 THEN GOTO LOOPY RETURN 'THREEPH1 microMETER data - CJC 6/28/1996 (C) DEF SEG = &HB800 DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 'INPUT "Please enter COM port (1 or 2) "; CP DFN$ = "US" AL = 0 DD = 27 S160: CT = 18: CL = 1: CH = 1 LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF HI(18) = 1 THEN OUT 888, JK CLS LOCATE (25) PRINT PL$ LOCATE 1 'OPEN "O", #2, "USAGE.CAP" 'OPEN "O", #3, "USAGE.DTE" GOSUB T800 GOSUB T805 GOSUB T120 PRINT DV 'IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 'IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 'PRINT #1, "0"; 'LINE INPUT #1, XX$: 'DISCARD FIRST READING 'PRINT "Discarding first reading." 'PRINT "PC: time date mM: CT#, B, C, D, E" 'INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: 'INPUT #1, A, B, C, D *********************************** A = 1 PRINT DV$, D2, D3 IF I = 4 THEN INPUT XX$ IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 'PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ 'PRINT #2, A; ","; B; ","; C; ","; D; ","; JK IF A > 15 THEN JS = JS * -1 IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK 'PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 'PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2: J4 = 252 'IF JS = 1 THEN JK = 252: GOTO S510 IF A = 1 THEN JK = J2 IF A = 2 THEN JK = J3 IF A = 3 THEN JK = J1 IF A = 4 THEN JK = J2 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J1 IF A = 7 THEN JK = J2 IF A = 8 THEN JK = J3 IF A = 9 THEN JK = J1 IF A = 10 THEN JK = J2 IF A = 11 THEN JK = J3 IF A = 12 THEN JK = J1 IF A = 13 THEN JK = J2 IF A = 14 THEN JK = J3 IF A = 15 THEN JK = J1 IF A = 16 THEN JK = J1 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" 'OPEN "A", #2, FIL2$ 'OPEN "A", #3, FIL3$ 'PRINT #2, "START " + DATE$ + " " + TIME$ 'PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 PRINT "T160", YY, MM, DD 'FIL4$=FIL2$ DV = DV + 1 DW = DV PRINT DV$ GOSUB T800 PRINT DV$ GOSUB T805 PRINT DV$ 'GOSUB T790 'PRINT #2, "ENDED " + DATE$ + " " + TIME$ 'PRINT #3, "ENDED " + DATE$ + " " + TIME$ 'CLOSE #2 'CLOSE #3 'SHL$="COPY "+FIL4$+" A:" 'IF LG$ = " " THEN SHELL SHL$ GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ 'HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) HH = SS IF HH > 23 THEN HH = HH - 24 IF HH > 23 THEN HH = HH - 24 'SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) 'DD = VAL(MID$(DT$, 4, 2)) IF HH > 0 THEN SE2 = 0 IF HH = 0 AND SE2 = 0 THEN DD = DD + 1: SE2 = 1 S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) K = 1960 POKE K + 0, H1 POKE K + 2, H2 POKE K + 4, ASC(":") POKE K + 6, M1 POKE K + 8, M2 POKE K + 10, ASC(":") POKE K + 12, S1 POKE K + 14, S2 RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD D2 = DV IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 D3 = DV 'IF DW > 0 AND DV <> DW THEN DV = DW: 'PREVENT NON-ADVANCE OF JULIAN DATE DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ 'MID$(TXT$(8), 10, 3) = DV$ RETURN T950: 'PRINT #2, "ENDED " + DATE$ + " " + TIME$ 'PRINT #3, "ENDED " + DATE$ + " " + TIME$ 'CLOSE CLS RETURN 'DAYSEP - separate usage into days - microMETER Corp. (C) 1995 PRINT "DAYSEP reads USAGE.CAP and writes USAGE1.CAP, USAGE2.CAP etc. " PRINT " USAGE.DTE USAGE1.DTE ..." D1 = 0 CLOSE OPEN "I", #1, "USAGE.CAP" OPEN "I", #2, "USAGE.DTE" LOOP1: D1 = D1 + 1 OPEN "O", #3, "USAGE" + MID$(STR$(D1), 2, 2) + ".CAP" OPEN "O", #4, "USAGE" + MID$(STR$(D1), 2, 2) + ".DTE" FOR I = 1 TO 8640 IF EOF(1) <> 0 THEN GOTO SKIP1 IF EOF(2) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ LINE INPUT #2, P2$ PRINT #3, P1$ PRINT #4, P2$ NEXT I CLOSE #3 CLOSE #4 GOTO LOOP1 SKIP1: D2 = D1 - 1 PRINT "Complete Days = ", D2 CLOSE END 10 'DEMAND - convert microMETER data to demand format - CJC 1995 (C) 20 DIM BK(17), PF(17), LV(17), B2(17), T$(17), A2(17), CK$(17), B4(17), DM(17) 30 CK$(17) = "Entire System ": M1$ = "*": M2$ = "*": BMX = 0 40 KEY OFF: CLS 50 LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.06 "; CHR$(176) 60 LOCATE 1 70 CLOSE 80 OPEN "I", #1, "CT.DAT" 90 FOR I = 1 TO 16 100 LINE INPUT #1, T$(I) 110 CK$(I) = MID$(T$(I), 1, 20) 120 BK(I) = VAL(MID$(T$(I), 28, 3)) 130 PF(I) = VAL(MID$(T$(I), 32, 4)) 135 LV(I) = VAL(MID$(T$(I), 37, 3)) 136 IF LV(I) = 0 THEN LV(I) = 120 140 BKT = BKT + BK(I) 150 NEXT I 160 BK(17) = BKT 170 CLOSE 171 IF LEN(COMMAND$) > 0 THEN DP = VAL(COMMAND$): GOTO 182 180 INPUT "Interval (15 30 or 60)? ", DP 182 IF DP <> 15 AND DP <> 30 AND DP <> 60 THEN DP = 30 PRINT "Computing ... " 190 OPEN "I", #1, "USAGE.CAP" 230 OPEN "O", #2, "DEMAND.OUT" 231 D1 = DP / 60 * 22.5: D3 = 3: D4 = 176 232 IF DP = 15 THEN D4 = 80: D3 = 1 233 IF DP = 60 THEN D4 = 352: D3 = 1 235 D5 = D4 + 16 260 'MAIN LOOP 270 R1 = R1 + 1 275 IF EOF(1) <> 0 THEN GOTO 485 290 INPUT #1, A, B, C, D 300 AMP = B * BK(A) / 20 / 12.75 / D1: 'amps / # in interval so sum is avg 306 KW = AMP * PF(A) * LV(A) / 1000 310 J = J + 1 320 'PRINT "J", J, K: '11 11 11 12 22 23 5 6 5 6 5 6 5 6 -1 322 ' 176 192 352 368 80 96 330 DM(A) = DM(A) + KW: 'sum of samples is avg 340 IF J < D4 AND K < D3 THEN GOTO 260: '16*11*3 + 350 IF J < D5 AND K = D3 THEN GOTO 260: '16*12 = 45 in 2 hrs 360 J = 0 370 K = K + 1: IF K > D3 THEN K = 0 375 GOSUB 490: 'process the periods in 2 hrs 470 IF INKEY$ <> "x" THEN GOTO 260 485 CLOSE : PRINT R2; " Records for "; DP; " minute demand periods" 486 PLAY "c d " 'INPUT "Press Enter "; XX$ 487 CHAIN "DSPLIT" 490 'Build total and emit demand period 500 FOR I = 1 TO 16 510 DM(17) = DM(17) + DM(I) 520 NEXT I 530 FOR I = 1 TO 17 IF R2 > 1631 THEN GOTO 560 540 R2 = R2 + 1 550 PRINT #2, I; ","; DM(I) 560 'PRINT TIME$, I, DM(I) 570 DM(I) = 0 580 NEXT I 585 RETURN 'DIS - (C) 1994 - microMETER,Inc. COL = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0 '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht FOR I = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT I FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" FIL3$ = "CT.CAP" FIL4$ = "CT.RES" FIL5$ = "CT.DTE" FIL6$ = "MICRO.PRT" FIL7$ = "MICRO2.CAP" FIL8$ = "MICRO.TXT" CL$ = CHR$(13) + CHR$(10) KEY OFF: CLS GOSUB S780 IF COL > 0 THEN COL = 1 IF COL = 1 THEN COLOR C01, C2, C3 SW = 1 DIM A(16), B(16), C(16), D(16), E(16), F(16), G(16), T$(16), TA(6), TB(16) DIM BK(16), PF(16), LV(16), DTE$(16), AA(16), BB(16), EE(16), FF(16), GG(16) LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.09 "; CHR$(176); " " CLOSE OPEN "O", #1, FIL6$: CLOSE S130: 'RECONCILE LOOP IF COL = 1 THEN COLOR C01, C2, C3 GOSUB S850 GOSUB S590 OPEN "A", #1, FIL6$ TA(1) = 0: TA(2) = 0: TA(3) = 0: TA(4) = 0: TA(5) = 0 PRINT TXT1$ PRINT #1, TXT1$ PRINT "<> microMETER <> - System Summary as of " + TIM2$ + " " + DAT2$ + " @"; PRICE; " cts/kwh" PRINT #1, "<> microMETER <> - System Summary as of " + TIM2$ + " " + DAT2$ + " @"; PRICE; " cts/kwh" PRINT DB$; PRINT #1, " " IF COL = 1 THEN COLOR 0, 2, C3 IF SW = 1 THEN PRINT " # Circuit amps kwh $ % reset "; IF SW = 1 THEN PRINT #1, " # Circuit amps kwh $ % reset " IF SW = -1 THEN PRINT " # Circuit kw kwh $ % prev curr "; IF SW = -1 THEN PRINT #1, " # Circuit kw kwh $ % prev curr " IF COL = 1 THEN COLOR C05, C2, C3 PRINT SB$; PRINT #1, " " + CL$ FOR I = 1 TO 16 TA(1) = C(I) + TA(1) TA(2) = A(I) + TA(2) TA(3) = G(I) + TA(3) NEXT I FOR I = 1 TO 16 V$ = MID$(T$(I), 1, 25) TB(I) = C(I) / (TA(1) + 1E-10) * 100 IF COL = 1 THEN COLOR C00, C2, C3 PRINT V$; PRINT #1, V$; IF SW = -1 THEN A(I) = A(I) * LV(I) * PF(I) / 1000 PRINT USING "###.#"; A(I); PRINT #1, USING "###.#"; A(I); PRINT USING "########.#"; G(I); PRINT #1, USING "########.#"; G(I); PRINT USING "########.##"; C(I); PRINT #1, USING "########.##"; C(I); PRINT USING "####"; TB(I); PRINT #1, USING "####"; TB(I); IF COL = 1 THEN COLOR C00, C03, C3 IF SW = 1 THEN PRINT " "; DTE$(I); " "; IF SW = 1 THEN PRINT #1, " "; DTE$(I) IF SW = -1 THEN PRINT USING "##########.#"; GG(I); IF SW = -1 THEN PRINT #1, USING "##########.#"; GG(I); G2 = GG(I) + G(I) IF SW = -1 THEN PRINT USING "##########.#"; G2 IF SW = -1 THEN PRINT #1, USING "##########.#"; G2 TA(4) = TA(4) + GG(I) TA(5) = TA(5) + G2 NEXT I IF COL = 1 THEN COLOR C00, C06, C3 PRINT TAB(16); "totals: "; PRINT #1, TAB(16); "totals: "; IF COL = 1 THEN COLOR C00, C03, C3 PRINT USING "#####.#"; TA(2); PRINT #1, USING "#####.#"; TA(2); PRINT USING "########.#"; TA(3); PRINT #1, USING "########.#"; TA(3); PRINT USING "########.##"; TA(1); PRINT #1, USING "########.##"; TA(1); IF SW = 1 THEN PRINT " 100" IF SW = 1 THEN PRINT #1, " 100" IF SW = -1 THEN PRINT " 100"; IF SW = -1 THEN PRINT #1, " 100"; IF SW = -1 THEN PRINT USING "##########.#"; TA(4); IF SW = -1 THEN PRINT #1, USING "##########.#"; TA(4); IF SW = -1 THEN PRINT USING "##########.#"; TA(5) IF SW = -1 THEN PRINT #1, USING "##########.#"; TA(5) IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU: Enter 0-exit 1-alt display kwh 2-reset 3-setup 4-reconcile " PRINT #1, "MENU: Enter 0-exit 1-alt display kwh 2-reset 3-setup 4-reconcile" IF LEN(COMMAND$) > 0 THEN REC$ = COMMAND$: GOTO S588 INPUT REC$ S588: IF REC$ = "0" THEN CLOSE : COLOR 7, 0, 0: CLS : SYSTEM IF REC$ = "1" THEN SW = -1 * SW IF REC$ = "2" THEN CLOSE : CHAIN "RESET" IF REC$ = "3" THEN CLOSE : CHAIN "SETUP" IF REC$ = "4" THEN GOSUB S960: CLOSE : GOTO S130 GOTO S130 S590: 'redisplay - unordered files CLOSE OPEN "I", #2, FIL3$ OPEN "I", #3, FIL4$ OPEN "I", #4, FIL7$ FOR I = 1 TO 16 INPUT #2, J, A(J), B(J), E(J) INPUT #3, K, AA(K), BB(K), EE(K) NEXT I INPUT #4, TIM3$ TIM2$ = MID$(TIM3$, 1, 8) DAT2$ = MID$(TIM3$, 10, 10) FOR I = 1 TO 16 B(I) = B(I) - BB(I) E(I) = E(I) - EE(I) F(I) = B(I) + E(I) * 65536! FF(I) = BB(I) + EE(I) * 65536! A(I) = A(I) / SCAL * BK(I) / 20: 'Scale to amps G(I) = (F(I) / SCA2 * BK(I) / 20 * PF(I) * LV(I) / 120): 'Scale to kwh GG(I) = (FF(I) / SCA2 * BK(I) / 20 * PF(I) * LV(I) / 120): 'Scale to kwh C(I) = PRICE * G(I) / 100 NEXT I 'CLOSE RETURN S780: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3 CLOSE OPEN "I", #1, FIL8$ LINE INPUT #1, TXT1$ RETURN S850: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ OPEN "I", #2, FIL5$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) BK(I) = VAL(MID$(T$(I), 28, 3)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 LINE INPUT #2, DTE$(I) NEXT I RETURN S960: 'reconcile INPUT "Enter kwh usage from meter "; KWH SCA3 = SCA2 * TA(3) / KWH SCA2 = SCA3 PRINT "Note "; SCA3; " as possible new value for Scale 2. Press ENTER when ready" INPUT X$ RETURN 10 'DSPLIT - split demand format data - CJC 1995 (C) 20 KEY OFF: CLS 30 LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.06 "; CHR$(176) 40 LOCATE 1 50 CLOSE 55 IF LEN(COMMAND$) > 0 THEN CT = VAL(COMMAND$): GOTO 70 60 INPUT "CT (1-16)? (17=system) ", CT 70 OPEN "I", #1, "DEMAND.OUT" 80 IF CT < 1 OR CT > 17 THEN GOTO 60 90 OPEN "O", #2, "DSPLIT.OUT" 100 'MAIN LOOP 115 IF EOF(1) <> 0 THEN GOTO 170 120 INPUT #1, A, B R1 = R1 + 1 130 IF A <> CT THEN GOTO 100 IF R2 > 96 THEN GOTO 170 140 PRINT #2, B 150 'RINT B 160 R2 = R2 + 1 165 GOTO 100 170 CLOSE 180 PLAY "c d " 190 PRINT "I/O ", R1, R2 200 IF LEN(COMMAND$) < 1 THEN CHAIN "PLOT2" 10 'HCAP - capture microMETER data hourly - CJC 8/15/1995 (C) 30 'CLOSE 40 KEY OFF: CLS : SEL$ = "0" 50 LOCATE (25): PRINT " HCAP ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.00 "; CHR$(176) 60 I = 0: LOCATE 1 65 IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): N = VAL(MID$(COMMAND$, 3, 6)): SEL$ = MID$(COMMAND$, 10, 1): GOTO 100 70 INPUT "Please enter COM port (1 2 3 or 4) "; CP 80 PRINT "Please enter # of readings? (16 for one complete set, 8640 for 24 hour period): " 90 INPUT N: CLS 100 LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.00 "; CHR$(176): LOCATE 1 110 OPEN "O", #2, "CT.CAP" 120 OPEN "O", #3, "MICRO2.CAP" IF SEL$ = "" THEN SEL$ = "0" LOOP1: PRINT "HCAPture program - Selection Code: "; SEL$ 130 IF CP = 1 THEN OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 140 IF CP = 2 THEN OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 142 IF CP = 3 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 144 IF CP = 4 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 150 IF CP < 5 THEN PRINT #1, SEL$; 152 IF CP > 4 THEN OPEN "I", #1, "XX.CAP": CP = CP * 1000 160 ON ERROR GOTO 180 170 IF INKEY$ = "x" THEN GOTO 310 175 IF CP > 4 THEN FOR J = 1 TO CP: NEXT J: GOTO 190 180 LINE INPUT #1, XX$: 'DISCARD FIRST READING 190 'PRINT "HCAPture program - Discarding first reading." 193 'FOR J = 1 TO 1000: NEXT J 195 PRINT "HCAPture program - System synchronized." 200 PRINT "PC: time date mM: CT#, B, C, D" 210 INPUT #1, A, B, C, D 215 IF CP > 4 THEN FOR J = 1 TO CP: NEXT J 220 I = I + 1: J = J + 1 230 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D 240 PRINT #2, A; ","; B; ","; C; ","; D 250 PRINT #3, TIME$; " "; DATE$ 260 IF INKEY$ = "x" THEN GOTO 310 270 IF I < N THEN GOTO 210 IF INKEY$ = "x" THEN GOTO SKIP4 T1 = TIMER LOOPT: T2 = TIMER - T1 IF INKEY$ = "x" THEN GOTO SKIP4 IF T2 < 3435 THEN GOTO LOOPT: '3600 - 165 I = 0 CLOSE #1 GOTO LOOP1 SKIP4: 280 PLAY "DA" 290 CLOSE 300 'F LEN(COMMAND$) = 0 THEN CHAIN "DIS" 310 PRINT J; " readings" 320 'SYSTEM 'IDEAL - Format demand data for IDEAL - microMETER Corp. (C) 1995 PRINT "IDEAL DDDCCYYHHMM reads 15 minute KW.DAT and KVA.DAT and writes IDEAL.OUT" S1 = VAL(MID$(COMMAND$, 1, 3)) S2 = VAL(MID$(COMMAND$, 4, 4)) S3 = VAL(MID$(COMMAND$, 8, 2)) S4 = VAL(MID$(COMMAND$, 10, 2)) 'S1 = 365 'S2 = 1995 'S3 = 16 'S4 = 15 LP = 0: IF S2 = 1996 OR S2 = 2004 OR S2 = 2008 THEN LP = 1 K = 0 CLOSE OPEN "I", #1, "KW.DAT" OPEN "I", #2, "KVA.DAT" OPEN "O", #3, "IDEAL.OUT" LOOP1: K = K + 1 IF S4 > 45 THEN S4 = 0: S3 = S3 + 1 IF S3 > 23 THEN S3 = 0: S1 = S1 + 1 IF S1 > 365 AND LP = 0 THEN S1 = 1: S2 = S2 + 1 IF S1 > 366 AND LP = 1 THEN S1 = 1: S2 = S2 + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ LINE INPUT #2, P3$ P1 = VAL(P1$) P3 = VAL(P3$) IF P1 = P3 THEN P1 = .995 * P3 IF P1 > P3 THEN P1 = P3 P2 = (P3 ^ 2 - P1 ^ 2) ^ .5 IF S1 > 99 THEN PRINT #3, USING "###"; S1; : GOTO SKIP0 IF S1 > 9 THEN PRINT #3, "0"; : PRINT #3, USING "##"; S1; : GOTO SKIP0 PRINT "00"; : PRINT #3, USING "#"; S1; SKIP0: PRINT #3, USING "####"; S2; IF S3 > 9 THEN PRINT #3, USING "#####"; S3; IF S3 < 10 THEN PRINT #3, " 0"; : PRINT #3, USING "#"; S3; IF S4 <> 0 THEN PRINT #3, USING "##"; S4; IF S4 = 0 THEN PRINT #3, "00"; PRINT #3, USING "#######.##"; P1; PRINT #3, USING "#######.##"; P2; PRINT #3, USING "#######.##"; P3 S4 = S4 + 15 GOTO LOOP1 SKIP1: CLOSE 'M2CAP - control modem and capture multiple microMETER II data - CJC (C) 7/5/2003 'GOSUB SUB3: BEEP: STOP:'TEST TIMER CL$ = "MCAP 1 222222 0........9ABCDEF MATDT8989214" COMMAN2$ = COMMAND$ 'OMMAN2$ = "2 16 0.2............. MATDT7855680": 'TEST PARM IF LEN(COMMAN2$) < 4 THEN PRINT CL$: STOP CP = VAL(MID$(COMMAN2$, 1, 1)) N = VAL(MID$(COMMAN2$, 3, 6)) IF LEN(COMMAN2$) < 27 THEN M$ = " ": SEL$ = "0...............": GOTO R050 SEL$ = MID$(COMMAN2$, 10, 16) M$ = MID$(COMMAN2$, 27, 1) P$ = MID$(COMMAN2$, 28, 25) 'CP = 5: N = 16: SEL$ = "0...............": M$ = " " R050: 'CP = 5: N = 16 SCREEN 0, 0: PS = 0 KEY OFF: CLS PRINT SEL$ LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.02 "; CHR$(176) LOCATE (1) IF CP = 1 OR CP = 3 THEN CLOSE : OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 IF CP = 2 OR CP = 4 THEN CLOSE : OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 IF M$ <> "M" THEN GOTO R200 GOSUB SUB3 PRINT #1, "ATE0 S10=254" GOSUB SUB3 GOSUB SUB2 PRINT "MCAPture program (mMII) - Enter modem AT commands or" PRINT " x - continue y - repeat dial z - abort" R100: B$ = INKEY$ IF B$ = "x" THEN GOTO R200 IF B$ = "z" THEN STOP IF B$ = "y" THEN PRINT #1, P$: PRINT P$ IF B$ <> "" THEN PRINT #1, B$; : PRINT B$; IF EOF(1) THEN GOTO R100: 'IF COM EMPTY, GET KEY R130: IF LOC(1) > 128 THEN PS = 1: 'HALF FULL:PRINT #1,CHR$(19):'XOFF ON ERROR RESUME NEXT A$ = INPUT$(LOC(1), #1): 'DEVICE I/O ERROR IF A$ = "," THEN GOTO R200 LPF = INSTR(LPF + 1, A$, CHR$(10)) IF LPF > 0 THEN MID$(A$, LPF, 1) = " ": LPF = 0: 'CLEAR LF PRINT A$; IF LOC(1) > 0 THEN GOTO R130 IF PS THEN PAUSE = 0: PRINT #1, CHR$(17): 'XON GOTO R100 R200: 'END OF MODEM CONNECT IF CP > 4 THEN OPEN "I", #1, "XX.CAP" OPEN "O", #2, "CT.CAP" OPEN "O", #3, "MICRO2.CAP" IF INKEY$ = "x" THEN GOTO SKIP2 SKIP0: IF CP < 5 THEN PRINT #1, "0"; FOR K = 1 TO 16 I = 0 SL$ = MID$(SEL$, K, 1) IF CP < 5 THEN PRINT #1, SL$; IF SL$ = "." THEN GOTO SKIP1 IF SL$ = " " THEN GOTO SKIP1 IF CP < 5 THEN LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT " " PRINT "MCAPture program (mMII) - Unit selected = " + SL$ PRINT "PC: time date mM: CT#, B, C, D, E, F, G, ID" LOOP1: INPUT #1, A, B, C, D, E, F, G, H I = I + 1: J = J + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; E; ","; F; ","; G; ","; H PRINT #2, A; ","; B; ","; C; ","; D; ","; E; ","; F; ","; G; ","; H PRINT #3, TIME$; " "; DATE$ IF INKEY$ = "x" THEN GOTO SKIP2 IF I < N THEN GOTO LOOP1 SKIP1: NEXT K PLAY "DA" SKIP2: PRINT J; " readings" IF M$ <> "M" THEN GOTO SKIP3 GOSUB SUB3 GOSUB SUB3 IF CP < 5 THEN PRINT #1, "+++"; GOSUB SUB3 GOSUB SUB3 GOSUB SUB1 SKIP3: CLOSE END SUB1: IF CP < 5 THEN PRINT #1, "ATH": PRINT "Disconnected." PLAY " E" RETURN SUB2: IF CP < 5 THEN PRINT #1, P$: 'Phone # RETURN SUB3: X1 = VAL(MID$(TIME$, 7, 2)) LOOPY: X2 = VAL(MID$(TIME$, 7, 2)) X3 = X2 - X1 IF X3 < 0 THEN X3 = -X3 IF X3 < 3 THEN GOTO LOOPY RETURN 'MAIN - (C) 1995 - microMETER Corp. COL = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0 '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht FOR i = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT i FILE$ = "MICRO.DAT" FIL8$ = "MICRO.TXT" CL$ = CHR$(13) + CHR$(10) KEY OFF: CLS GOSUB S780 IF COL = 1 THEN COLOR C01, C2, C3 SW = 1 DIM BK(16), PF(16), LV(16) LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.06 "; CHR$(176); " " CLOSE S130: 'RECONCILE LOOP IF COL = 1 THEN COLOR C01, C2, C3 PRINT TXT1$ TIM2$ = TIME$: DAT2$ = DATE$ PRINT "<> microMETER <> - Main Menu T/D " + TIM2$ + " " + DAT2$ + " @"; PRICE; " cts/kwh" PRINT DB$; PRINT SB$; IF COL = 1 THEN COLOR C00, C2, C3 FOR i = 1 TO 7: PRINT : NEXT i: PRINT " MAIN MENU" PRINT " 0 - Exit" PRINT " 1 - CAPture" PRINT " 2 - RESET" PRINT " 3 - SETUP" PRINT " 4 - DISplay" FOR i = 1 TO 6: PRINT : NEXT i IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU choice: " INPUT REC$ IF REC$ = "0" THEN CLOSE : COLOR 7, 0, 0: CLS : SYSTEM IF REC$ = "1" THEN CLOSE : CHAIN "CAP" IF REC$ = "2" THEN CLOSE : CHAIN "RESET" IF REC$ = "3" THEN CLOSE : CHAIN "SETUP" IF REC$ = "4" THEN CLOSE : CHAIN "DIS" GOTO S130 S780: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3 CLOSE OPEN "I", #1, FIL8$ LINE INPUT #1, TXT1$ RETURN 'map - consolidate bill files - microMETER Corp. (C) 1995 N = 0: II = 1 DIM S$(100), SK(100), SD(100), MM(100), CT(100), SDT$(100) DIM R$(100), RK(100), RD(100), RDT$(100) INPUT "Please enter total bill amount, or 0 if not available. ", TBA CLOSE OPEN "I", #1, "CT.BIL" OPEN "I", #2, "CT.AFF" OPEN "O", #3, "CUS.BIL" CL$ = CHR$(10) + CHR$(13) LINE INPUT #2, XX$ LINE INPUT #2, XX$ LINE INPUT #2, XX$ LINE INPUT #2, XX$ I = 0: J = 0: K = 0: N = 0: OLD$ = "" 'LOAD AFFINITY TABLE LOOP1: K = K + 1 IF EOF(2) <> 0 THEN GOTO SKIP1 LINE INPUT #2, P1$ S$(K) = MID$(P1$, 1, 25) IF OLD$ <> S$(K) THEN N = N + 1: R$(N) = S$(K): OLD$ = S$(K) MM(K) = VAL(MID$(P1$, 26, 3)) CT(K) = VAL(MID$(P1$, 29, 3)) GOTO LOOP1 SKIP1: MXK = K - 1 MXN = N K = 0 LOOP2: 'READ CT.BIL AND ADD TO WHICHEVER TABLE ENTRIES HAVE AFFINITY I = I + 1 K = K + 1: IF K > 16 THEN K = 1 J = INT((I - 1) / 16) + 1 IF EOF(1) <> 0 THEN GOTO SKIP2 LINE INPUT #1, T1$ V1 = VAL(MID$(T1$, 52, 6)) V2 = VAL(MID$(T1$, 68, 9)) D$ = MID$(T1$, 26, 25) FOR L = 1 TO MXK 'PRINT J, MM(L), K, CT(L) IF J = MM(L) AND K = CT(L) THEN SK(L) = SK(L) + V1: SD(L) = SD(L) + V2: SDT$(L) = D$ NEXT L GOTO LOOP2 SKIP2: 'CONSOLIDATE AFFINITY ENTRIES BY CUSTOMER N = 1 FOR K = 1 TO MXK IF S$(K) <> R$(N) THEN N = N + 1 IF S$(K) = R$(N) THEN RK(N) = RK(N) + SK(K): RD(N) = RD(N) + SD(K): IF LEN(SDT$(K)) > 0 THEN RDT$(N) = SDT$(K) NEXT K TK = 0 FOR I = 1 TO MXN TK = TK + RK(I) NEXT I IF TK = 0 THEN TK = 1 'PRINT BY CUSTOMER FOR I = 1 TO MXN IF LEN(RDT$(I)) = 0 THEN RDT$(I) = D$ PK = RK(I) / TK * 100 IF TBA > 0 THEN RD(I) = TBA * PK / 100 'put out bill PRINT MID$(R$(I), 1, 25); " "; MID$(RDT$(I), 2, 10); " to "; MID$(RDT$(I), 16, 10); " "; PRINT USING "######"; RK(I); PRINT " kwh $"; PRINT USING "######.##"; RD(I); PRINT USING "###.#"; PK; PRINT "%" PRINT #3, MID$(R$(I), 1, 25); " "; MID$(RDT$(I), 2, 10); " to "; MID$(RDT$(I), 16, 10); " "; PRINT #3, USING "######"; RK(I); PRINT #3, " kwh $"; PRINT #3, USING "######.##"; RD(I); PRINT #3, USING "###.#"; PK; PRINT #3, "%" NEXT I CLOSE 'MCAP - control modem and capture multiple microMETER data - CJC (C) 8/15/1995 'GOSUB SUB3: BEEP: STOP:'TEST TIMER CL$ = "MCAP 1 222222 0........9ABCDEF MATDT8989214" COMMAN2$ = COMMAND$ 'OMMAN2$ = "2 16 0.2............. MATDT7855680": 'TEST PARM IF LEN(COMMAN2$) < 4 THEN PRINT CL$: STOP CP = VAL(MID$(COMMAN2$, 1, 1)) N = VAL(MID$(COMMAN2$, 3, 6)) IF LEN(COMMAN2$) < 27 THEN M$ = " ": SEL$ = "0...............": GOTO R050 SEL$ = MID$(COMMAN2$, 10, 16) M$ = MID$(COMMAN2$, 27, 1) P$ = MID$(COMMAN2$, 28, 25) 'CP = 5: N = 16: SEL$ = "0...............": M$ = " " R050: 'CP = 5: N = 16 SCREEN 0, 0: PS = 0 KEY OFF: CLS PRINT SEL$ LOCATE (25): PRINT " x=exit ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.02 "; CHR$(176) LOCATE (1) IF CP = 1 OR CP = 3 THEN CLOSE : OPEN "COM1:300,N,8,1,OP" FOR RANDOM AS #1 IF CP = 2 OR CP = 4 THEN CLOSE : OPEN "COM2:300,N,8,1,OP" FOR RANDOM AS #1 IF M$ <> "M" THEN GOTO R200 GOSUB SUB3 PRINT #1, "ATE0 S10=254" GOSUB SUB3 GOSUB SUB2 PRINT "MCAPture program - Enter modem AT commands or" PRINT " x - continue y - repeat dial z - abort" R100: B$ = INKEY$ IF B$ = "x" THEN GOTO R200 IF B$ = "z" THEN STOP IF B$ = "y" THEN PRINT #1, P$: PRINT P$ IF B$ <> "" THEN PRINT #1, B$; : PRINT B$; IF EOF(1) THEN GOTO R100: 'IF COM EMPTY, GET KEY R130: IF LOC(1) > 128 THEN PS = 1: 'HALF FULL:PRINT #1,CHR$(19):'XOFF ON ERROR RESUME NEXT A$ = INPUT$(LOC(1), #1): 'DEVICE I/O ERROR IF A$ = "," THEN GOTO R200 LPF = INSTR(LPF + 1, A$, CHR$(10)) IF LPF > 0 THEN MID$(A$, LPF, 1) = " ": LPF = 0: 'CLEAR LF PRINT A$; IF LOC(1) > 0 THEN GOTO R130 IF PS THEN PAUSE = 0: PRINT #1, CHR$(17): 'XON GOTO R100 R200: 'END OF MODEM CONNECT IF CP > 4 THEN OPEN "I", #1, "XX.CAP" OPEN "O", #2, "CT.CAP" OPEN "O", #3, "MICRO2.CAP" IF INKEY$ = "x" THEN GOTO SKIP2 SKIP0: IF CP < 5 THEN PRINT #1, "0"; FOR K = 1 TO 16 I = 0 SL$ = MID$(SEL$, K, 1) IF CP < 5 THEN PRINT #1, SL$; IF SL$ = "." THEN GOTO SKIP1 IF SL$ = " " THEN GOTO SKIP1 IF CP < 5 THEN LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT " " PRINT "MCAPture program - Unit selected = " + SL$ PRINT "PC: time date mM: CT#, B, C, D" LOOP1: INPUT #1, A, B, C, D I = I + 1: J = J + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D PRINT #2, A; ","; B; ","; C; ","; D PRINT #3, TIME$; " "; DATE$ IF INKEY$ = "x" THEN GOTO SKIP2 IF I < N THEN GOTO LOOP1 SKIP1: NEXT K PLAY "DA" SKIP2: PRINT J; " readings" IF M$ <> "M" THEN GOTO SKIP3 GOSUB SUB3 GOSUB SUB3 IF CP < 5 THEN PRINT #1, "+++"; GOSUB SUB3 GOSUB SUB3 GOSUB SUB1 SKIP3: CLOSE END SUB1: IF CP < 5 THEN PRINT #1, "ATH": PRINT "Disconnected." PLAY " E" RETURN SUB2: IF CP < 5 THEN PRINT #1, P$: 'Phone # RETURN SUB3: X1 = VAL(MID$(TIME$, 7, 2)) LOOPY: X2 = VAL(MID$(TIME$, 7, 2)) X3 = X2 - X1 IF X3 < 0 THEN X3 = -X3 IF X3 < 3 THEN GOTO LOOPY RETURN 'MIM microMETER data - CJC 10/08/1996 (C) FILE$ = "MIM4.LOG" OPEN "I", #1, FILE$ S010: IF EOF(1) <> 0 THEN GOTO S999 LINE INPUT #1, MIMT1$ IF MID$(MIMT1$, 1, 2) <> "KA" THEN GOTO S010 LINE INPUT #1, MIMT2$ 'PRINT MIMT1$ 'PRINT MIMT2$ MIMID = VAL(MID$(MIMT1$, 4, 1)) MIMA1 = VAL(MID$(MIMT2$, 7, 3)) MIMA2 = VAL(MID$(MIMT2$, 11, 3)) MIMA3 = VAL(MID$(MIMT2$, 15, 3)) MIMA4 = VAL(MID$(MIMT2$, 19, 3)) MIMA5 = VAL(MID$(MIMT2$, 23, 3)) MIMD7 = VAL(MID$(MIMT2$, 27, 1)) MIMD6 = VAL(MID$(MIMT2$, 28, 1)) MIMD5 = VAL(MID$(MIMT2$, 29, 1)) MIMD4 = VAL(MID$(MIMT2$, 30, 1)) MIMD3 = VAL(MID$(MIMT2$, 31, 1)) MIMD2 = VAL(MID$(MIMT2$, 32, 1)) MIMD1 = VAL(MID$(MIMT2$, 33, 1)) MIMD0 = VAL(MID$(MIMT2$, 34, 1)) MIMDX = ((((((MIMD7 * 2 + MIMD6) * 2 + MIMD5) * 2 + MIMD4) * 2 + MIMD3) * 2 + MIMD2) * 2 + MIMD1) * 2 + MIMD0 'PRINT MIMID, MIMA1, MIMA2, MIMA3, MIMA4, MIMA5, MIMDX V1 = MIMA1 / 255 * 5 V2 = MIMA2 / 255 * 5 V3 = MIMA3 / 255 * 5 V4 = MIMA4 / 255 * 5 V5 = MIMA5 / 255 * 5 T1 = V1 * 40 - 70 R1 = V2 * 25 - 25 T2 = V3 * 40 - 70 R2 = V4 * 25 - 25 T5 = V5 * 25 - 25 PRINT "TEMPS: "; T1, T2 PRINT "REL H: "; R1, R2 GOTO S010 S999: CLOSE 'MIM microMETER data - CJC 10/08/1996 (C) 'FILE$ = "MIM4.LOG" 'OPEN "I", #1, FILE$ FMT$ = " ##.# ##.# ##.# ##.# ##.# ##.# ##.# ##.# " OPEN "COM2:1200,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 S010: 'IF EOF(1) <> 0 THEN GOTO S999 IF INKEY$ <> "" THEN GOTO S999 LINE INPUT #1, MIMT1$ LINE INPUT #1, MIMT2$ 'IF MID$(MIMT1$, 1, 2) <> "KA" THEN GOTO S010 'LINE INPUT #1, MIMT2$ MIMT1$ = MID$(MIMT1$, 2, 90) MIMT2$ = MID$(MIMT2$, 2, 90) IF MID$(MIMT2$, 1, 2) = "KA" THEN LINE INPUT #1, XX$ 'PRINT MIMT1$ 'PRINT MIMT2$ MIMID = VAL(MID$(MIMT1$, 4, 1)) MIMA1 = VAL(MID$(MIMT2$, 7, 3)) MIMA2 = VAL(MID$(MIMT2$, 11, 3)) MIMA3 = VAL(MID$(MIMT2$, 15, 3)) MIMA4 = VAL(MID$(MIMT2$, 19, 3)) MIMA5 = VAL(MID$(MIMT2$, 23, 3)) MIMD7 = VAL(MID$(MIMT2$, 27, 1)) MIMD6 = VAL(MID$(MIMT2$, 28, 1)) MIMD5 = VAL(MID$(MIMT2$, 29, 1)) MIMD4 = VAL(MID$(MIMT2$, 30, 1)) MIMD3 = VAL(MID$(MIMT2$, 31, 1)) MIMD2 = VAL(MID$(MIMT2$, 32, 1)) MIMD1 = VAL(MID$(MIMT2$, 33, 1)) MIMD0 = VAL(MID$(MIMT2$, 34, 1)) MIMDX = ((((((MIMD7 * 2 + MIMD6) * 2 + MIMD5) * 2 + MIMD4) * 2 + MIMD3) * 2 + MIMD2) * 2 + MIMD1) * 2 + MIMD0 'PRINT MIMID, MIMA1, MIMA2, MIMA3, MIMA4, MIMA5, MIMDX V1 = MIMA1 / 255 * 5 V2 = MIMA2 / 255 * 5 V3 = MIMA3 / 255 * 5 V4 = MIMA4 / 255 * 5 V5 = MIMA5 / 255 * 5 T1 = V1 * 40 - 70 R1 = V2 * 25 - 25 T2 = V3 * 40 - 70 R2 = V4 * 25 - 25 T5 = V5 * 25 - 25 IF T1 < 0 THEN PRINT MIMT1$ IF R1 < 0 THEN PRINT MIMT2$ IF T1 > 0 THEN PRINT "TEMPS: "; : PRINT USING FMT$; T1; T2; Z; Z; Z; Z; Z; Z; : PRINT " TIME: "; TIME$ IF R1 > 0 THEN PRINT "REL H: "; : PRINT USING FMT$; R1; R2; Z; Z; Z; Z; Z; Z; : PRINT " DATE: "; DATE$ GOTO S010 S999: CLOSE OPEN "c:\mm.dat" FOR INPUT AS #1 DO UNTIL EOF(1) LINE INPUT #1, mm$ PRINT mm$ LOOP 'MONITO2 microMETER data - CJC 4/14/1996 (C) DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), T5(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS JK = 0 DFT = 0 CK$(17) = " System Total " INPUT "Is the deenergized relay closed on true power (y/n)? ", DF$ IF DF$ = "y" OR DF$ = "Y" THEN DFT = 1 CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.05 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, "USAGE.CAP" OPEN "I", #3, "USAGE.DTE" PL$ = "PC: time date mM: CT# KVA KW KVAR PF" FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 32 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E IF FIRST = 1 AND A <> 1 THEN GOTO S310: FIRST = 0 LINE INPUT #3, x$ F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ DT$(A) = Y$ 'IF E = -1 THEN E = 0 'IF E = 1 THEN E = 255 'KVA(A) = 0 'KW(A) = 0 IF E = 0 AND DFT = 0 THEN KVA(A) = B IF E = 255 AND DFT = 0 THEN KW(A) = B IF E = 0 AND DFT = 1 THEN KW(A) = B IF E = 255 AND DFT = 1 THEN KVA(A) = B NEXT I PRINT P0$ PRINT " " PRINT PL$ FOR I = 1 TO 16 'KW(I) = KW(I) * 1.05 IF PF(I) = 0 THEN KVA(I) = 0 IF KVA(I) = 0 THEN KW(I) = 0 IF KW(I) = 0 THEN KVA(I) = 0 IF KVA(I) < KW(I) AND KVA(I) > 0 THEN KVA(I) = KW(I) IF KVA(I) > 0 AND KW(I) > 0 AND KVA(I) > 2 * KW(I) THEN KVA(I) = 0: KW(I) = 0 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / 12.75 / 1000 KW(I) = KW(I) * BK(I) / 20 * LV(I) / 12.75 / 1000 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2): N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) PRINT DT$(I); US$ = " ###. ####.## ####.## ####.## ####.##" PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I) NEXT I IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLOSE PRINT P0$ PRINT " " MID$(PL$, 1, 16) = "averages: " PRINT PL$ FOR I = 1 TO 16 IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 17 PRINT MID$(CK$(I), 2, 20); PRINT USING US$; I; T1(I); T2(I); T3(I); T4(I) NEXT I END 'MONITO3 microMETER data - CJC 4/14/1996 (C) DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), T5(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS JK = 0 DFT = 1 CK$(17) = " System Total " 'INPUT "Is the deenergized relay closed on true power (y/n)? ", DF$ 'IF DF$ = "y" OR DF$ = "Y" THEN DFT = 1 CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 BK(17) = BK(17) + BK(I) NEXT I CLOSE BK(4) = BK(1): BK(7) = BK(1): BK(10) = BK(1): BK(13) = BK(1): BK(16) = BK(1) BK(5) = BK(2): BK(8) = BK(2): BK(11) = BK(2): BK(14) = BK(2) BK(6) = BK(3): BK(9) = BK(3): BK(12) = BK(3): BK(15) = BK(3) PF(4) = PF(1): PF(7) = PF(1): PF(10) = PF(1): PF(13) = PF(1): PF(16) = PF(1) PF(5) = PF(2): PF(8) = PF(2): PF(11) = PF(2): PF(14) = PF(2) PF(6) = PF(3): PF(9) = PF(3): PF(12) = PF(3): PF(15) = PF(3) LV(4) = LV(1): LV(7) = LV(1): LV(10) = LV(1): LV(13) = LV(1): LV(16) = LV(1) LV(5) = LV(2): LV(8) = LV(2): LV(11) = LV(2): LV(14) = LV(2) LV(6) = LV(3): LV(9) = LV(3): LV(12) = LV(3): LV(15) = LV(3) P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.05 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, "USAGE.CAP" OPEN "I", #3, "USAGE.DTE" PL$ = "PC: time date mM: CT# KVA KW KVAR PF" FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 32 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E IF FIRST = 1 AND A <> 1 THEN GOTO S310: FIRST = 0 LINE INPUT #3, x$ F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ DT$(A) = Y$ IF E < 10 AND DFT = 0 THEN KVA(A) = B IF E > 250 AND DFT = 0 THEN KW(A) = B IF E < 10 AND DFT = 1 THEN KW(A) = B IF E > 250 AND DFT = 1 THEN KVA(A) = B NEXT I KW(1) = (KW(4) + KW(7) + KW(10) + KW(13) + KW(16)) / 6 KVA(1) = (KVA(4) + KVA(7) + KVA(10) + KVA(13) + KVA(16)) / 6 KW(2) = (KW(5) + KW(8) + KW(11) + KW(14)) / 5 KVA(2) = (KVA(5) + KVA(8) + KVA(11) + KVA(14)) / 5 KW(3) = (KW(6) + KW(9) + KW(12) + KW(15)) / 5 KVA(3) = (KVA(6) + KVA(9) + KVA(14) + KVA(15)) / 5 PRINT P0$ PRINT " " PRINT PL$ FOR I = 1 TO 3 IF PF(I) = 0 THEN KVA(I) = 0 IF KVA(I) = 0 THEN KW(I) = 0 IF KW(I) = 0 THEN KVA(I) = 0 IF KVA(I) < KW(I) AND KVA(I) > 0 THEN KVA(I) = KW(I) IF KVA(I) > 0 AND KW(I) > 0 AND KVA(I) > 2 * KW(I) THEN KVA(I) = 0: KW(I) = 0 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / 12.75 / 1000 KW(I) = KW(I) * BK(I) / 20 * LV(I) / 12.75 / 1000 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2): N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) PRINT DT$(I); US$ = " ###. ####.## ####.## ####.## ####.##" PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I) NEXT I IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLOSE PRINT P0$ PRINT " " MID$(PL$, 1, 16) = "averages: " PRINT PL$ FOR I = 1 TO 3 IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 3 PRINT MID$(CK$(I), 2, 20); PRINT USING US$; I; T1(I); T2(I); T3(I); T4(I) NEXT I END 'MONITOR microMETER data - CJC 10/10/1994 (C) 'revised com choice - CJC 3/20/1995 (C) 'add power factor data - CJC 4/14/1996 (C) DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.05 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 INPUT "Please enter COM port (1 or 2) "; CP INPUT "Alarm? (0=no, 1=yes) "; AL PRINT "Please enter CT#, Low limit, High limit (17=all, 18,1,1=pf, 0,0,0 = start):" PRINT " example " PRINT " 3,20,50 " PRINT " 17,0,240 " PRINT " 0,0,0 " S160: INPUT CT, CL, CH LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF CT > 0 AND CT < 19 THEN GOTO S160 IF HI(18) = 1 THEN OUT 888, JK CLS LOCATE (25) PRINT PL$ LOCATE 1 OPEN "O", #2, "USAGE.CAP" OPEN "O", #3, "USAGE.DTE" IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 'RINT #1, "CAP" LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: INPUT #1, A, B, C, D IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK IF A > 15 THEN JS = JS * -1 'IF A > 15 THEN JK = 255 - JK IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2 IF JS = 1 THEN JK = 252: GOTO S510 IF A = 1 THEN JK = J2 IF A = 2 THEN JK = J3 IF A = 3 THEN JK = J1 IF A = 4 THEN JK = J2 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J1 IF A = 7 THEN JK = J2 IF A = 8 THEN JK = J3 IF A = 9 THEN JK = J1 IF A = 10 THEN JK = J2 IF A = 11 THEN JK = J3 IF A = 12 THEN JK = J1 IF A = 13 THEN JK = J2 IF A = 14 THEN JK = J3 IF A = 15 THEN JK = J1 IF A = 16 THEN JK = J1 S510: RETURN 'MONITOR microMETER data - CJC 10/10/1994 (C) 'revised com choice - CJC 3/20/1995 (C) 'add power factor data - CJC 4/14/1996 (C) DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.05 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 INPUT "Please enter COM port (1 or 2) "; CP INPUT "Alarm? (0=no, 1=yes) "; AL PRINT "Please enter CT#, Low limit, High limit (17=all, 18,1,1=pf, 0,0,0 = start):" PRINT " example " PRINT " 3,20,50 " PRINT " 17,0,240 " PRINT " 0,0,0 " S160: INPUT CT, CL, CH LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF CT > 0 AND CT < 19 THEN GOTO S160 IF HI(18) = 1 THEN OUT 888, JK CLS LOCATE (25) PRINT PL$ LOCATE 1 OPEN "O", #2, "USAGE.CAP" OPEN "O", #3, "USAGE.DTE" IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 'RINT #1, "CAP" LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" S300: INPUT #1, A, B, C, D IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK IF A > 15 THEN JS = JS * -1 'IF A > 15 THEN JK = 255 - JK IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2 IF JS = 1 THEN JK = 252: GOTO S510 IF A = 1 THEN JK = J2 IF A = 2 THEN JK = J3 IF A = 3 THEN JK = J1 IF A = 4 THEN JK = J2 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J1 IF A = 7 THEN JK = J2 IF A = 8 THEN JK = J3 IF A = 9 THEN JK = J1 IF A = 10 THEN JK = J2 IF A = 11 THEN JK = J3 IF A = 12 THEN JK = J1 IF A = 13 THEN JK = J2 IF A = 14 THEN JK = J3 IF A = 15 THEN JK = J1 IF A = 16 THEN JK = J2 S510: RETURN 'NCAP - capture non-microMETER data - CJC (C) 9/22/1996 DIM D(16), E(16), F(16), G(16) COMMAN2$ = COMMAND$ SCREEN 0, 0: PS = 0: J = 0: Z = 0 KEY OFF: CLS PRINT SEL$ LOCATE (25): PRINT " ", CHR$(176); " (C) 1996 - microMETER Corp. - v 1.00 "; CHR$(176) LOCATE (1) PRINT "NCAPture program - non-microMETER KWH data entry" PRINT "Use Scale 2 = 65536.0 for correct KWH display." PRINT "COPYRIGHT (C) - 1996 - microMETER Corporation" PRINT "****************************************************************************" PRINT " WARNING - This software and software provided with microMETER equipment is" PRINT " licensed to original and subsequent owners of microMETER equipment." PRINT " Unauthorized use is a copyright violation and may infringe on one or more" PRINT " US Patents." PRINT "****************************************************************************" PRINT " " OPEN "I", #1, "CT.CAP" OPEN "I", #2, "CT.RES" FOR I = 1 TO 16 INPUT #1, A, B, C, D(A) INPUT #2, A, B, C, G(A) NEXT I CLOSE INPUT "Are these total KWH readings? (y/n) "; TOT$ S050: INPUT "Please enter CT# and KWH e.g. 1,115 or 0,0 to end. "; I, KWH IF I > 16 THEN I = 16 IF I < 1 THEN GOTO S100 J = J + 1 E(I) = KWH GOTO S050 S100: PRINT " CT# KWH" FOR I = 1 TO 16 PRINT USING "## ######.#"; I; E(I) NEXT I INPUT "Is everything correct? (y/n)"; X$ IF X$ = "n" OR X$ = "N" THEN GOTO S050 FOR I = 1 TO 16 IF TOT$ = "Y" OR TOT$ = "y" THEN F(I) = E(I): GOTO S150 F(I) = D(I) + E(I) S150: NEXT I OPEN "O", #2, "CT.CAP" OPEN "O", #3, "MICRO2.CAP" IF TOT$ = "y" OR TOT$ = "Y" THEN GOTO S160 OPEN "O", #1, "CT.RES" FOR I = 1 TO 16 PRINT #1, I; ","; Z; ","; Z; ","; Z NEXT I CLOSE 1 S160: PRINT "NCAPture program - Unit selected = MANUAL ENTRY" PRINT "PC: time date mM: CT#, B, C, D" FOR I = 1 TO 16 A = I: B = 0: C = 0 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; E(I) PRINT #2, A; ","; B; ","; C; ","; E(I) PRINT #3, TIME$; " "; DATE$ NEXT I PLAY "DA" PRINT J; " readings" CLOSE INPUT "PRESS ENTER"; X$ END 'PLOT2 - (C) microMETER - 2/28/95 CLS : SCREEN 12: rn = 1 PRINT " m i c r o M E T E R" FOR i = 1 TO 8: PRINT " .": NEXT i PRINT "K ." PRINT " ." PRINT "w ." PRINT "a ." PRINT "t ." PRINT "t ." PRINT "s ." FOR i = 1 TO 8: PRINT " .": NEXT i FOR i = 1 TO 1: PRINT " ": NEXT i CLOSE OPEN "I", #1, "DSPLIT.OUT" L0: INPUT #1, a: IF EOF(1) <> 0 THEN GOTO L1 IF a > am THEN am = a rn = rn + 1 GOTO L0: L1: sf = 118 / am CLOSE PRINT " ....................... Demand in"; rn; "Intervals ......................" PRINT " " OPEN "I", #1, "DSPLIT.OUT" xx = 40: yy = 380 DRAW "bm " + STR$(xx) + "," + STR$(yy) am = 0 L2: IF EOF(1) <> 0 THEN GOTO L3 i = i + 11 INPUT #1, a IF a > am THEN am = a e = yy - INT(a * sf) * 3 k = .5 * i / 22.5 MOD 8 + 1 DRAW "c" + STR$(k) j = INT(i / rn * 48) + xx - 5 DRAW "m" + STR$(j) + "," + STR$(e) GOTO L2 L3: PRINT "Max KW "; INT(10 * am) / 10; COMMAND$ L4: IF INKEY$ = "" THEN GOTO L4 'PLOT4 - (C) microMETER - 19/20/95 DIM lab$(17), ct(17), pf(17), lv(17), kw(17), kv(17) lab$(17) = " System Total " OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, TITLE$ CLOSE OPEN "I", #1, "CT.DAT" FOR i = 1 TO 16 LINE INPUT #1, rec$ lab$(i) = MID$(rec$, 1, 25) IF MID$(rec$, 27, 1) = "," THEN MID$(rec$, 27, 1) = "0" ct(i) = VAL(MID$(rec$, 27, 4)) pf(i) = VAL(MID$(rec$, 32, 4)) lv(i) = VAL(MID$(rec$, 37, 3)) kw(i) = ct(i) * pf(i) * lv(i) / 1000 kv(i) = ct(i) * lv(i) / 1000 NEXT i CLOSE TL1$ = " 3p 4p 5p 6p 7p 8p 9p 10 11 12 1a 2a 3a 4a 5a 6a 7a 8a 9a 10 11 12 1p 2p" TL2$ = TL1$ + TL1$ + TL1$ OPEN "I", #1, "USAGE.DTE" LINE INPUT #1, udte$ CLOSE disp = VAL(MID$(udte$, 1, 2)) dis2 = 3 * disp + 29 TL3$ = MID$(TL2$, dis2, 72) CLS FOR ii = 1 TO 16 ct(17) = ct(17) + ct(ii) kw(17) = kw(17) + kw(ii) kv(17) = kv(17) + kv(ii) NEXT ii pf(17) = 1 IF kv(17) <> 0 THEN pf(17) = kw(17) / kv(17) FOR ii = 1 TO 17 km = 0 SCREEN 12 CLS red = 54 grn = 54 blu = 60 clr = 65536 * blu + 256 * grn + red PALETTE 0, clr COLOR 1 'PRINT " m i c r o M E T E R" PRINT TITLE$ mm = kw(ii) IF ii < 17 THEN PRINT mm IF ii = 17 THEN PRINT " ." FOR i = 1 TO 6: PRINT " .": NEXT i PRINT "K ." PRINT "i ." PRINT "l ." PRINT "o ." PRINT " ." PRINT "w ." PRINT "a ." PRINT "t ." PRINT "t ." PRINT "s ." FOR i = 1 TO 6: PRINT " .": NEXT i FOR i = 1 TO 1: PRINT " ": NEXT i 'PRINT " ............................ 24 Hours ............................" PRINT " " + TL3$ PRINT " " CLOSE IF ii = 1 THEN FILE$ = "USAGE.P01" IF ii = 2 THEN FILE$ = "USAGE.P02" IF ii = 3 THEN FILE$ = "USAGE.P03" IF ii = 4 THEN FILE$ = "USAGE.P04" IF ii = 5 THEN FILE$ = "USAGE.P05" IF ii = 6 THEN FILE$ = "USAGE.P06" IF ii = 7 THEN FILE$ = "USAGE.P07" IF ii = 8 THEN FILE$ = "USAGE.P08" IF ii = 9 THEN FILE$ = "USAGE.P09" IF ii = 10 THEN FILE$ = "USAGE.P10" IF ii = 11 THEN FILE$ = "USAGE.P11" IF ii = 12 THEN FILE$ = "USAGE.P12" IF ii = 13 THEN FILE$ = "USAGE.P13" IF ii = 14 THEN FILE$ = "USAGE.P14" IF ii = 15 THEN FILE$ = "USAGE.P15" IF ii = 16 THEN FILE$ = "USAGE.P16" IF ii = 17 THEN FILE$ = "USAGE.P17" OPEN "I", #1, FILE$ L0: INPUT #1, a ' amps already has been multiplied by lv/120 in usag2 k = a * pf(ii) * 120 / 1000 IF k > km THEN km = k IF EOF(1) = 0 THEN GOTO L0 CLOSE k2 = km IF ii < 17 THEN km = kw(ii) sf = 1 IF km > 0 THEN sf = 118 / km OPEN "I", #1, FILE$ xx = 40: yy = 380 DRAW "bm " + STR$(xx) + "," + STR$(yy) L2: IF EOF(1) <> 0 THEN GOTO L3 i = i + 1 IF INKEY$ = "q" THEN END INPUT #1, a k = a * pf(ii) * 120 / 1000 e = yy - INT(k * sf) * 3 'kk = (i + 9) / 22.5 MOD 8 + 1 kk = 1 DRAW "c" + STR$(kk) hi = i * 25.6 / 24 j = INT(hi / 1) + xx - 3 DRAW "m" + STR$(j) + "," + STR$(e) GOTO L2 L3: PRINT " Max KW "; INT(10 * k2) / 10; " "; lab$(ii) + " " + MID$(udte$, 10, 10) + " q=quit mM" L1: IF INKEY$ = "" THEN GOTO L1 NEXT ii 'prtbill - print bill file - microMETER Corp. (C) 1995 N = 0: II = 22 IF LEN(COMMAND$) > 0 THEN II = VAL(COMMAND$) OPEN "I", #1, "CT.BIL" OPEN "I", #2, "MICRO.TXT" OPEN "O", #3, "BILLS.OUT" OPEN "I", #4, "MICRO.DAT" CL$ = CHR$(10) + CHR$(13) LINE INPUT #4, XX$ LINE INPUT #4, XX$ LINE INPUT #4, P1$ LINE INPUT #2, T1$ LINE INPUT #2, T2$ LINE INPUT #2, T3$ LINE INPUT #2, T4$ LINE INPUT #2, T5$ LINE INPUT #2, T6$ LINE INPUT #2, T7$ LOOP1: N = N + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, BL$ T9$ = MID$(T7$, 1, 55) + P1$ + MID$(T7$, 60, 18) KWH = VAL(MID$(BL$, 51, 7)) PRICE = VAL(P1$) TOTAL = KWH * PRICE / 100 PRINT #3, T1$ PRINT #3, T2$ PRINT #3, T3$ PRINT #3, T4$ PRINT #3, T5$ PRINT #3, T6$ PRINT #3, MID$(BL$, 1, 65); : PRINT #3, USING ("######.##"); TOTAL 'PRINT #3, BL$ PRINT #3, T9$ LPRINT T1$ LPRINT T2$ LPRINT T3$ LPRINT T4$ LPRINT T5$ LPRINT T6$ LPRINT MID$(BL$, 1, 65); : LPRINT USING ("######.##"); TOTAL 'LPRINT BL$ LPRINT T9$ FOR I = 1 TO 3 PRINT #3, " " LPRINT " " NEXT I IF N > 3 THEN FOR I = 1 TO II: PRINT #3, " ": LPRINT " ": NEXT I: N = 0 GOTO LOOP1 SKIP1: CLOSE 10 'readprt - read and print - cjc 1/10/95 20 CLOSE 25 INPUT "filespec e.g. c:\p4\readme";A$ 30 OPEN "i",#1,A$ 40 INPUT "pg ";P 50 IF P = 1 THEN GOTO 110 60 F=(P-1)*54 70 T=F+54 80 FOR I = 1 TO F 90 LINE INPUT#1,A$ 100 NEXT I 110 FOR I = 1 TO 54 120 LINE INPUT#1,A$ 130 PRINT " "+A$ 140 LPRINT " "+A$ 150 NEXT I 'READOUT microMETER data - CJC 8/29/1996 (C) 'Switch every 10,30,60 min, cycle tp / ap; phase from CT.DAT 'Produce realtime readout DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM SW(17), TM$(17), DT$(17) DIM KVA(38), KW(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) SYNCU = 0 CLOSE FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 CLOSE CLS : JK = 0: JS = -1: JU = -1 FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.09 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 PRINT "10,30,60 or 120 minute switching - use THREEPHE.EXE to interpret." IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 2)): PRINT CP, MINU: GOTO S150 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S140: INPUT "Please enter minutes 10,30,60 or 120 "; MINU IF MINU = 10 THEN GOTO S150 IF MINU = 30 THEN GOTO S150 IF MINU = 60 THEN GOTO S150 IF MINU = 120 THEN GOTO S150 GOTO S140 S150: JJ = 6 * MINU JJ1 = JJ - 1 DFN$ = "US" J = 0 K = 0 S160: OUT 888, JK LOCATE (25) PRINT PL$ LOCATE 3 GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." 'PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500 OUT 888, JK PRINT #1, CHR$(128) + CHR$(JK); S300: INPUT #1, A, B, C, D 'B = 127 IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 S330: 'PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK PRINT #2, A; ","; B; ","; C; ","; D; ","; JK PRINT #3, TIME$; " "; DATE$ E = JK 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 IF E = 255 THEN EAP = 1 FF = 1 'IF EUS = 0 THEN FF = C2 'IF EAP = 0 THEN KW(A) = FF * B: '+ KW(A): CNT1(A) = CNT1(A) + 1 'IF EAP = 1 THEN KVA(A) = FF * B: '+ KVA(A): CNT2(A) = CNT2(A) + 1 IF EAP = 1 THEN KVA(A) = FF * B * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A) IF EAP = 0 THEN KW(A) = FF * B * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A): ' * V3 / 120 KVAR(A) = 0 IF KVA(A) > KW(A) AND KW(A) > 0 THEN KVAR(A) = (KVA(A) ^ 2 - KW(A) ^ 2) ^ .5: N3(A) = N3(A) + 1: T3(A) = T3(A) + KVAR(A) PE(A) = 0 IF KVA(A) > 0 THEN PE(A) = KW(A) / KVA(A): N1(A) = N1(A) + 1: T1(A) = T1(A) + KVA(A) IF KW(A) > 0 THEN N2(A) = N2(A) + 1: T2(A) = T2(A) + KW(A) PRINT TIME$; " Ch:"; A; " KVA:"; KVA(A); " KW:"; KW(A); " PF:"; PE(A); " KVAR:"; KVAR(A); " PORT:"; JK I = I + 1 J = J + 1 K = K + 1 SYNC2 = VAL(MID$(TIME$, 5, 1)): 'minute units SYNC3 = VAL(MID$(TIME$, 4, 2)): 'minutes SYNC4 = VAL(MID$(TIME$, 1, 2)): 'hours SYNC5 = 0 IF SYNC4 = 0 OR SYNC4 = 2 OR SYNC4 = 4 OR SYNC4 = 6 THEN SYNC5 = 1 IF SYNC4 = 8 OR SYNC4 = 10 OR SYNC4 = 12 OR SYNC4 = 14 THEN SYNC5 = 1 IF SYNC4 = 16 OR SYNC4 = 18 OR SYNC4 = 20 OR SYNC4 = 22 THEN SYNC5 = 1 IF SYNC2 = 5 THEN SYNCU = 0 IF SYNCU = 1 THEN GOTO S378 IF MINU = 10 AND SYNC2 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 30 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 60 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 120 AND SYNC3 = 0 AND SYNC5 = 1 THEN JS = JS * -1: SYNCU = 1 S378: IF K > 15 THEN JU = JU * -1: K = 0 GOSUB S500 OUT 888, JK PRINT #1, CHR$(128) + CHR$(JK); : 'Control via DDC Pod S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" OUT 888, 0 CLOSE END S500: 'Aph Bph Cph A/P USES J1 = 0: J2 = 1: J3 = 2: J4 = 4: J5 = 8 J0 = A + 1 IF J0 > 16 THEN J0 = 1 JK = SW(J0) IF JU = 1 THEN JK = JK + J4 IF JS = 1 THEN JK = JK + J5 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 DV = DV + 1 DW = DV GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) SW(I) = VAL(MID$(T$(I), 49, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 10 'RESET - (C) 1995 - microMETER Corp. 20 FILE$ = "MICRO.DAT" 30 FIL2$ = "CT.DAT" 40 FIL3$ = "CT.CAP" 50 FIL4$ = "CT.RES" 60 FIL5$ = "CT.DTE" 70 FIL6$ = "CT.BIL" 75 FIL7$ = "CT.BI2" 80 KEY OFF: CLS 90 DIM A(16), B(16), C(16), D(16), E(16), F(16), G(16), H(16), T$(16), TA(4), TB(16), BK(16), PF(16), LV(16), DTE$(16), AA(16), BB(16), EE(16) 100 LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.06 "; CHR$(176) 110 CLOSE 120 OPEN "O", #2, FIL6$ 130 GOSUB 560 140 GOSUB 490 150 GOSUB 320 160 CLOSE 170 OPEN "A", #2, FIL6$ 174 OPEN "A", #4, FIL7$ 175 REC$ = "X" 180 PRINT "Enter 0-display kwh 1 thru 16-reset individual CT 17-reset all 18-unreset" 190 IF LEN(COMMAND$) = 0 THEN INPUT REC$ 191 IF LEN(COMMAND$) > 0 AND REC$ <> "0" THEN REC$ = COMMAND$ 192 IF REC$ = "0" AND LEN(COMMAND$) > 0 THEN GOSUB 670: CLOSE : SYSTEM 200 IF REC$ = "0" THEN GOSUB 670: CLOSE : CHAIN "DIS" 210 IF REC$ = "17" THEN GOSUB 760: REC$ = "0": GOTO 180 220 IF REC$ = "18" THEN GOSUB 970: REC$ = "0": GOTO 180 230 II = VAL(REC$): REC$ = "0" 240 IF II < 0 OR II > 16 THEN GOTO 180 250 I = II 260 GOSUB 870 270 AA(II) = A(I) 280 BB(II) = B(I) 290 EE(II) = E(I) 300 DTE$(II) = TIME$ + " " + DATE$ 310 GOTO 180 320 'get kwh - unordered files 330 CLOSE 340 OPEN "I", #2, FIL3$ 350 OPEN "I", #3, FIL4$ 360 FOR I = 1 TO 16 370 INPUT #2, J, A(J), B(J), E(J) 380 INPUT #3, K, AA(K), BB(K), EE(K) 390 NEXT I 400 FOR I = 1 TO 16 410 BTMP = B(I) - BB(I) 420 ETMP = E(I) - EE(I) 430 F(I) = BTMP + ETMP * 65536! 440 H(I) = A(I) / SCAL * BK(I) / 20: 'Scale to amps 450 G(I) = (F(I) / SCA2 * BK(I) / 20 * PF(I) * LV(I) / 120): 'Scale to kwh 460 C(I) = PRICE * G(I) / 100 470 NEXT I 480 RETURN 490 'load1 - global 500 CLOSE 510 OPEN "I", #1, FILE$ 520 INPUT #1, SCAL 530 INPUT #1, SCA2 540 INPUT #1, PRICE 550 RETURN 560 'load2 - ordered files 570 CLOSE 580 OPEN "I", #1, FIL2$ 590 OPEN "I", #2, FIL5$ 600 FOR I = 1 TO 16 610 LINE INPUT #1, T$(I) 620 BK(I) = VAL(MID$(T$(I), 28, 3)) 630 PF(I) = VAL(MID$(T$(I), 32, 4)) 635 LV(I) = VAL(MID$(T$(I), 37, 3)) 636 'IF LV(I) = 0 THEN LV(I) = 120 640 LINE INPUT #2, DTE$(I) 650 NEXT I 660 RETURN 670 'put out reset file 680 CLOSE 690 OPEN "O", #2, FIL4$ 700 OPEN "O", #3, FIL5$ 710 FOR I = 1 TO 16 720 PRINT #2, I; ","; AA(I); ","; BB(I); ","; EE(I) 730 PRINT #3, DTE$(I) 740 NEXT I 750 RETURN 760 'reset all 770 CLOSE 780 OPEN "O", #2, FIL6$ 781 OPEN "A", #4, FIL7$ 790 FOR I = 1 TO 16 800 GOSUB 870 810 AA(I) = A(I) 820 BB(I) = B(I) 830 EE(I) = E(I) 840 DTE$(I) = TIME$ + " " + DATE$ 850 NEXT I 860 RETURN 870 'put out bill 880 PRINT MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 890 PRINT USING "####"; G(I); 900 PRINT " kwh $"; 910 PRINT USING "####.##"; C(I) 920 PRINT #2, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 930 PRINT #2, USING "####"; G(I); 940 PRINT #2, " kwh $"; 950 PRINT #2, USING "####.##"; C(I) 951 PRINT #4, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 952 PRINT #4, USING "####"; G(I); 953 PRINT #4, " kwh $"; 954 PRINT #4, USING "####.##"; C(I) 960 RETURN 970 'unreset all 980 FOR I = 1 TO 16 990 AA(I) = 0 1000 BB(I) = 0 1010 EE(I) = 0 1020 DTE$(I) = "00:00:00 MM-DD-YYYY" 1030 NEXT I 1040 RETURN 10 'RESE3 - (C) 1995 - microMETER Corp. 20 FILE$ = "MICRO.DAT" 30 FIL2$ = "CT.DAT" 40 FIL3$ = "CT.CAP" 50 FIL4$ = "CT.RES" 60 FIL5$ = "CT.DTE" 70 FIL6$ = "CT.BIL" 75 FIL7$ = "CT.BI2" 80 KEY OFF: CLS 90 DIM A(16), B(16), C(16), D(16), E(16), F(16), G(16), H(16), T$(16), TA(4), TB(16), BK(16), PF(16), LV(16), DTE$(16), AA(16), BB(16), EE(16) 100 LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.07 "; CHR$(176) 110 CLOSE 120 OPEN "O", #2, FIL6$ 130 GOSUB 560 140 GOSUB 490 150 GOSUB 320 160 CLOSE 170 OPEN "A", #2, FIL6$ 174 OPEN "A", #4, FIL7$ 175 REC$ = "X" 180 PRINT "Enter 0-display kwh 1 thru 16-reset individual CT 17-reset all 18-unreset" 190 IF LEN(COMMAND$) = 0 THEN INPUT REC$ 191 IF LEN(COMMAND$) > 0 AND REC$ <> "0" THEN REC$ = COMMAND$ 192 IF REC$ = "0" AND LEN(COMMAND$) > 0 THEN GOSUB 670: CLOSE : SYSTEM 200 IF REC$ = "0" THEN GOSUB 670: CLOSE : CHAIN "DIS" 210 IF REC$ = "17" THEN GOSUB 760: REC$ = "0": GOTO 180 220 IF REC$ = "18" THEN GOSUB 970: REC$ = "0": GOTO 180 230 II = VAL(REC$): REC$ = "0" 240 IF II < 0 OR II > 16 THEN GOTO 180 250 I = II 260 GOSUB 870 270 AA(II) = A(I) 280 BB(II) = B(I) 290 EE(II) = E(I) 300 DTE$(II) = TIME$ + " " + DATE$ 310 GOTO 180 320 'get kwh - unordered files 330 CLOSE 340 OPEN "I", #2, FIL3$ 350 OPEN "I", #3, FIL4$ 360 FOR I = 1 TO 16 370 INPUT #2, J, A(J), B(J), E(J) 380 INPUT #3, K, AA(K), BB(K), EE(K) 390 NEXT I 400 FOR I = 1 TO 16 410 BTMP = B(I) - BB(I) 420 ETMP = E(I) - EE(I) 430 F(I) = BTMP + ETMP * 65536! 440 H(I) = A(I) / SCAL * BK(I) / 20: 'Scale to amps 450 G(I) = (F(I) / SCA2 * BK(I) / 20 * PF(I) * LV(I) / 120): 'Scale to kwh 460 C(I) = PRICE * G(I) / 100 470 NEXT I 480 RETURN 490 'load1 - global 500 CLOSE 510 OPEN "I", #1, FILE$ 520 INPUT #1, SCAL 530 INPUT #1, SCA2 540 INPUT #1, PRICE 550 RETURN 560 'load2 - ordered files 570 CLOSE 580 OPEN "I", #1, FIL2$ 590 OPEN "I", #2, FIL5$ 600 FOR I = 1 TO 16 610 LINE INPUT #1, T$(I) 620 BK(I) = VAL(MID$(T$(I), 28, 3)) 630 PF(I) = VAL(MID$(T$(I), 32, 4)) 635 LV(I) = VAL(MID$(T$(I), 37, 3)) 636 IF LV(I) = 0 THEN LV(I) = 120 640 LINE INPUT #2, DTE$(I) 650 NEXT I 660 RETURN 670 'put out reset file 680 CLOSE 690 OPEN "O", #2, FIL4$ 700 OPEN "O", #3, FIL5$ 710 FOR I = 1 TO 16 720 PRINT #2, I; ","; AA(I); ","; BB(I); ","; EE(I) 730 PRINT #3, DTE$(I) 740 NEXT I 750 RETURN 760 'reset all 770 CLOSE 780 OPEN "O", #2, FIL6$ 781 OPEN "A", #4, FIL7$ 790 FOR I = 1 TO 16 800 GOSUB 870 810 AA(I) = A(I) 820 BB(I) = B(I) 830 EE(I) = E(I) 840 DTE$(I) = TIME$ + " " + DATE$ 850 NEXT I 860 RETURN 870 'put out bill 880 PRINT MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 890 PRINT USING "####.#"; G(I); 900 PRINT " kwh $"; 910 PRINT USING "######.##"; C(I) 920 PRINT #2, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 930 PRINT #2, USING "####.#"; G(I); 940 PRINT #2, " kwh $"; 950 PRINT #2, USING "######.##"; C(I) 951 PRINT #4, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; 952 PRINT #4, USING "####.#"; G(I); 953 PRINT #4, " kwh $"; 954 PRINT #4, USING "######.##"; C(I) 960 RETURN 970 'unreset all 980 FOR I = 1 TO 16 990 AA(I) = 0 1000 BB(I) = 0 1010 EE(I) = 0 1020 DTE$(I) = "00:00:00 MM-DD-YYYY" 1030 NEXT I 1040 RETURN 'RESET - (C) 1995 - microMETER Corp. '1.09 10/01/97 - make reset date = capture date instead of system date '1.10 01/10/99 - Exit to DOS FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" FIL3$ = "CT.CAP" FIL4$ = "CT.RES" FIL5$ = "CT.DTE" FIL6$ = "CT.BIL" FIL7$ = "CT.BI2" FIL8$ = "MICRO2.CAP" KEY OFF: CLS DIM A(16), B(16), C(16), D(16), E(16), F(16), G(16), H(16), T$(16) DIM TA(4), TB(16), BK(16), PF(16), LV(16), DTE$(16), AA(16), BB(16) DIM EE(16), DTC$(16) LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.10 "; CHR$(176) CLOSE OPEN "O", #2, FIL6$ GOSUB 560 GOSUB 490 GOSUB 320 CLOSE OPEN "A", #2, FIL6$ OPEN "A", #4, FIL7$ REC$ = "X" 180 PRINT "Enter 0-exit 1 thru 16-reset individual CT 17-reset all 18-unreset" PRINT " 19-print bills now " IF LEN(COMMAND$) = 0 THEN INPUT REC$ IF LEN(COMMAND$) > 0 AND REC$ <> "0" THEN REC$ = COMMAND$ IF REC$ = "0" AND LEN(COMMAND$) > 0 THEN GOSUB 670: CLOSE : SYSTEM IF REC$ = "0" THEN GOSUB 670: CLOSE : SYSTEM: 'CHAIN "DIS" IF REC$ = "17" THEN GOSUB 760: REC$ = "0": GOTO 180 IF REC$ = "18" THEN GOSUB 970: REC$ = "0": GOTO 180 IF REC$ = "19" THEN GOSUB 670: CLOSE : CHAIN "PRTBILL" II = VAL(REC$): REC$ = "0" 240 IF II < 0 OR II > 16 THEN GOTO 180 I = II GOSUB 870 AA(II) = A(I) BB(II) = B(I) EE(II) = E(I) DTE$(II) = DTC$(II): 'TIME$ + " " + DATE$ GOTO 180 320 'get kwh - unordered files CLOSE OPEN "I", #2, FIL3$ OPEN "I", #3, FIL4$ OPEN "I", #4, FIL8$ FOR I = 1 TO 16 INPUT #2, J, A(J), B(J), E(J) INPUT #3, K, AA(K), BB(K), EE(K) INPUT #4, DTC$(J) NEXT I FOR I = 1 TO 16 BTMP = B(I) - BB(I) ETMP = E(I) - EE(I) F(I) = BTMP + ETMP * 65536! H(I) = A(I) / SCAL * BK(I) / 20: 'Scale to amps G(I) = (F(I) / SCA2 * BK(I) / 20 * PF(I) * LV(I) / 120): 'Scale to kwh C(I) = PRICE * G(I) / 100 NEXT I RETURN 490 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE RETURN 560 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ OPEN "I", #2, FIL5$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) BK(I) = VAL(MID$(T$(I), 28, 3)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 LINE INPUT #2, DTE$(I) NEXT I RETURN 670 'put out reset file CLOSE OPEN "O", #2, FIL4$ OPEN "O", #3, FIL5$ FOR I = 1 TO 16 PRINT #2, I; ","; AA(I); ","; BB(I); ","; EE(I) PRINT #3, DTE$(I) NEXT I RETURN 760 'reset all CLOSE OPEN "O", #2, FIL6$ OPEN "A", #4, FIL7$ FOR I = 1 TO 16 GOSUB 870 AA(I) = A(I) BB(I) = B(I) EE(I) = E(I) 'DTE$(I) = TIME$ + " " + DATE$ DTE$(I) = DTC$(I) NEXT I RETURN 870 'put out bill 'PRINT MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; DATE$; " "; PRINT MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; MID$(DTC$(I), 10, 10); " "; PRINT USING "######"; G(I); PRINT " kwh $"; PRINT USING "######.##"; C(I) PRINT #2, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; MID$(DTC$(I), 10, 10); " "; PRINT #2, USING "######"; G(I); PRINT #2, " kwh $"; PRINT #2, USING "######.##"; C(I) PRINT #4, MID$(T$(I), 1, 25); " "; MID$(DTE$(I), 10, 10); " to "; MID$(DTC$(I), 10, 10); " "; PRINT #4, USING "######"; G(I); PRINT #4, " kwh $"; PRINT #4, USING "######.##"; C(I) RETURN 970 'unreset all FOR I = 1 TO 16 AA(I) = 0 BB(I) = 0 EE(I) = 0 DTE$(I) = "00:00:00 MM-DD-YYYY" NEXT I RETURN 'RTIME 4-20 ma microMETER data - CJC 10/03/1996 (C) DIM T$(16), TM$(16), DT$(16) DIM BK(16), PF(16), LV(16), SW(16), RB(17), RF(16) FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" FIL3$ = "RTIME.PRT" OPEN "I", #1,"RTIME.DAT":'Apply resistance corrections FOR I = 1 TO 17 INPUT #1, RB(I) NEXT I CLOSE FOR I = 1 TO 16 RF(I) = RB(17) / RB(I) NEXT I GOSUB F400 GOSUB F330 CLOSE CLS PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.00 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 3)): PRINT CP, MINU: GOTO S150 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S150: OPEN "A", #3, FIL3$ LOCATE (25) PRINT PL$ LOCATE 1 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading. " PRINT "PC: time date mM: CT#, B, MA, VO, TE, HU" PRINT #3, "PC: time date mM: CT#, B, MA, VO, TE, HU" S300: INPUT #1, A, B, C, D I = I + 1 MA = B * .075461 * RF(A) VO = MA / 4 TE = 40 * VO - 70 HU = 25 * VO - 25 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; MA; ","; VO; ","; TE; ","; HU PRINT #3, TIME$; " "; DATE$; " "; A; ","; B; ","; MA; ","; VO; ","; TE; ","; HU S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: PRINT I; " readings" CLOSE END F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) SW(I) = VAL(MID$(T$(I), 49, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 'SEP - separate some lines from a file - microMETER Corp. (C) 1995 PRINT "SEP 111111 999999 reads SEP.INP and writes the block to SEP.OUT" S1 = VAL(MID$(COMMAND$, 1, 6)) S2 = VAL(MID$(COMMAND$, 8, 6)) K = 0 CLOSE OPEN "I", #1, "SEP.INP" OPEN "O", #2, "SEP.OUT" LOOP1: K = K + 1 IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, P1$ 'P2$ = " " + MID$(P1$, 1, 72) IF K < S1 OR K > S2 THEN GOTO LOOP1 PRINT #2, P1$ 'PRINT P1$ IF S1 = S2 THEN GOTO SKIP1 IF K > S2 THEN GOTO SKIP1 GOTO LOOP1 SKIP1: CLOSE 'setup - (C) 1995 - microMETER,Inc. FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" KEY OFF: CLS DIM A(16), B(16), C(16), D(16), E(16), T$(16), DT$(16) DIM TM$(16), BK(16), PF(16), LV(16) 70 ' LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.09 "; CHR$(176) CLOSE #1, #2 GOSUB 400 GOSUB 330 DAT2$ = DATE$: TIM2$ = TIME$ PRINT " " PRINT "<> microMETER <> Setup Program" PRINT " Scale 1: "; SCAL; " Scale 2: "; SCA2; " Price: "; PRICE; " cts/kwh" PRINT " # Circuit CT size CF Voltage " PRINT " " FOR I = 1 TO 16 V$ = MID$(T$(I), 1, 25) PRINT V$; PRINT USING "########"; BK(I); PRINT USING "##########.##"; PF(I); PRINT USING "###########"; LV(I) 'PRINT " "; TM$(I); " "; DT$(I) NEXT I PRINT " " PRINT "Enter 0-exit 1-DISplay 2-price 3-CT label 4-scales 5-colors 6-CT size" 'PRINT " 7 - testkit" INPUT REC$ IF REC$ = "0" THEN CLOSE : CLS : SYSTEM IF REC$ = "1" THEN CLOSE : CHAIN "DIS" IF REC$ = "2" THEN GOSUB 510 IF REC$ = "3" THEN GOSUB 740 IF REC$ = "4" THEN GOSUB 590 IF REC$ = "5" THEN GOSUB 970 IF REC$ = "6" THEN GOSUB 740 IF REC$ = "7" THEN GOSUB 450 GOTO 70 330 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN 400 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 450 'testkit PRINT "Choose power type: " PRINT " 0 - exit to main menu without making changes" PRINT " 1 - single phase 2 wire (120 volts) A N" PRINT " 2 - single phase 3 wire (120/240 volts) A B N" PRINT " 3 - three phase 3 wire delta (open or closed) with corner neutral A B N" PRINT " 4 - three phase 3 wire floating delta or wye without neutral A B C" PRINT " 5 - three phase 4 wire wye with neutral A B C N or open wye A B N" PRINT " 6 - three phase 4 wire delta with one high leg A B C no neutral" PRINT " 6 - NOTE: Only total of the 3 phases will be correct." INPUT PWRT$ IF PWRT$ = "0" THEN GOTO 70 IF PWRT$ = "1" THEN HVPR$ = "120" IF PWRT$ = "2" THEN HVPR$ = "240" IF PWRT$ = "3" THEN INPUT "Enter highest voltage present (240 or 480): ", HVPR$ IF PWRT$ = "4" THEN INPUT "Enter highest voltage present (240 or 480): ", HVPR$ IF PWRT$ = "5" THEN INPUT "Enter highest voltage present (208 or 416 or 480): ", HVPR$ IF PWRT$ = "6" THEN HVPR$ = "240" HVPT$ = "120": HVPA$ = "120": ST = 0 IF HVPR$ = "120" AND PWRT$ = "1" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "240" AND PWRT$ = "2" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "240" AND PWRT$ = "3" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 'F HVPR$ = "480" AND PWRT$ = "3" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF HVPR$ = "240" AND PWRT$ = "4" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF HVPR$ = "480" AND PWRT$ = "4" THEN HVPT$ = "240": HVPA$ = "277": ST = 1 IF HVPR$ = "208" AND PWRT$ = "5" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "416" AND PWRT$ = "5" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 IF HVPR$ = "480" AND PWRT$ = "5" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 IF HVPR$ = "240" AND PWRT$ = "6" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF ST = 0 THEN PRINT "Error, please retry ...": FOR I = 1 TO 50000: NEXT I: GOTO 450 INPUT "Enter CT size (0020,0100...) : ", CTSZ$ MID$(T$(1), 7, 16) = "Phase A " MID$(T$(2), 7, 16) = "Phase a " MID$(T$(3), 7, 16) = "Phase B " MID$(T$(4), 7, 16) = "Phase b " MID$(T$(5), 7, 16) = "Phase C " MID$(T$(6), 7, 16) = "Phase c " FOR I = 7 TO 16: MID$(T$(I), 7, 16) = " ": NEXT I FOR I = 1 TO 8: MID$(T$(I), 27, 4) = CTSZ$: NEXT I FOR I = 8 TO 16: MID$(T$(I), 27, 4) = CTSZ$: NEXT I 'FOR I = 1 TO 16: MID$(T$(I), 32, 4) = "1.00": NEXT I FOR I = 1 TO 8: MID$(T$(I), 37, 3) = HVPT$: NEXT I FOR I = 9 TO 16: MID$(T$(I), 37, 3) = HVPA$: NEXT I GOSUB 910 RETURN 510 'change price CLOSE #1 INPUT "price? (cents per KWH, eg. 6.95) ", PRICE GOSUB 987 RETURN 590 'change scale CLOSE #1 PRINT "Scale 1 affects the AMPS readout. It will always be 12.75 for" PRINT "the hardware versions 1.03 and 1.04. Scale 2 affects the KWH" PRINT "readout. The design value is 2390.625. Use the RECONCILE option" PRINT "to determine a new value to better match your next utility bill." PRINT "Scale 1 is currently ", SCAL PRINT "Scale 2 is currently ", SCA2 INPUT "Scale 1 ? ", SCAL INPUT "Scale 2 ? ", SCA2 700 ' GOSUB 987 RETURN 740 'change CT INPUT "Which CT? (1-16)"; I V$ = MID$(T$(I), 1, 25) IF REC$ = "6" THEN GOTO 850 PRINT "Please type all entries exactly as shown." PRINT "Description (25 chars) --" PRINT " 1 1 2 2" PRINT "....5....0....5....0....5" PRINT V$ LINE INPUT V$ MID$(T$(I), 1, 25) = V$ PRINT " " IF REC$ = "3" THEN GOTO 910 850 INPUT "CT size? (0020 0060 0100 etc.)"; BK2$ 'INPUT "power factor (normally 1.00) Enter others with a leading zero. "; PF2$ INPUT "voltage? (120 208 240 etc.)"; LV2$ MID$(T$(I), 27, 4) = BK2$ 'MID$(T$(I), 32, 4) = PF2$ MID$(T$(I), 37, 3) = LV2$ MID$(T$(I), 40, 5) = TM$(I) MID$(T$(I), 46, 10) = DT$(I) 910 CLOSE #1 OPEN "O", #1, FIL2$ FOR I = 1 TO 16 PRINT #1, T$(I) NEXT I PRINT "Update sucessful" RETURN 970 'change colors CLOSE #1 INPUT "Enter color choice (0-4 0=mono)"; COLR IF COLR < 1 THEN COL = 0 IF COLR > 0 THEN COL = 1: C00 = 0: C03 = 3: C06 = 6: C07 = 7 IF COLR = 1 THEN C2 = 0: C3 = 0: C03 = 0: C06 = 0: C00 = 7: C07 = 0 IF COLR = 2 THEN C2 = 0: C3 = 7: C03 = 0: C06 = 0: C00 = 7: C07 = 0 IF COLR = 3 THEN C2 = 7: C3 = 0 IF COLR = 4 THEN C2 = 7: C3 = 7 GOSUB 987 RETURN 987 'write out OPEN "O", #1, FILE$ PRINT #1, SCAL PRINT #1, SCA2 PRINT #1, PRICE PRINT #1, COL PRINT #1, C00, C01, C02, C03 PRINT #1, C04, C05, C06, C07 PRINT #1, C2, C3, V1, V2 PRINT "Update successful." RETURN 'setup - (C) 1995 - microMETER,Inc. FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" KEY OFF: CLS DIM A(16), B(16), C(16), D(16), E(16), T$(16), DT$(16) DIM TM$(16), BK(16), PF(16), LV(16) 70 ' LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.09 "; CHR$(176) CLOSE #1, #2 GOSUB 400 GOSUB 330 DAT2$ = DATE$: TIM2$ = TIME$ PRINT " " PRINT "<> microMETER <> Setup2 Program" PRINT " Scale 1: "; SCAL; " Scale 2: "; SCA2; " Price: "; PRICE; " cts/kwh" PRINT " # Circuit CT size CF Voltage " PRINT " " FOR I = 1 TO 16 V$ = MID$(T$(I), 1, 25) PRINT V$; PRINT USING "########"; BK(I); PRINT USING "##########.##"; PF(I); PRINT USING "###########"; LV(I) 'PRINT " "; TM$(I); " "; DT$(I) NEXT I PRINT " " PRINT "Enter 0-exit 1-CT label 2-CT size 3-CF 4-voltages 5-scales 6-price" PRINT " 7 - testkit" INPUT REC$ IF REC$ = "0" THEN CLOSE : CLS : SYSTEM IF REC$ = "1" THEN GOSUB 740 IF REC$ = "2" THEN GOSUB 740 IF REC$ = "3" THEN GOSUB 740 IF REC$ = "4" THEN GOSUB 740 IF REC$ = "5" THEN GOSUB 590 IF REC$ = "6" THEN GOSUB 510 IF REC$ = "7" THEN GOSUB 450 GOTO 70 330 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN 400 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 450 'testkit PRINT "Choose power type: " PRINT " 0 - exit to main menu without making changes" PRINT " 1 - single phase 2 wire (120 volts) A N" PRINT " 2 - single phase 3 wire (120/240 volts) A B N" PRINT " 3 - three phase 3 wire delta (open or closed) with corner neutral A B N" PRINT " 4 - three phase 3 wire floating delta or wye without neutral A B C" PRINT " 5 - three phase 4 wire wye with neutral A B C N or open wye A B N" PRINT " 6 - three phase 4 wire delta with one high leg A B C no neutral" PRINT " 6 - NOTE: Only total of the 3 phases will be correct." INPUT PWRT$ IF PWRT$ = "0" THEN GOTO 70 IF PWRT$ = "1" THEN HVPR$ = "120" IF PWRT$ = "2" THEN HVPR$ = "240" IF PWRT$ = "3" THEN INPUT "Enter highest voltage present (240 or 480): ", HVPR$ IF PWRT$ = "4" THEN INPUT "Enter highest voltage present (240 or 480): ", HVPR$ IF PWRT$ = "5" THEN INPUT "Enter highest voltage present (208 or 416 or 480): ", HVPR$ IF PWRT$ = "6" THEN HVPR$ = "240" HVPT$ = "120": HVPA$ = "120": ST = 0 IF HVPR$ = "120" AND PWRT$ = "1" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "240" AND PWRT$ = "2" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "240" AND PWRT$ = "3" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 'F HVPR$ = "480" AND PWRT$ = "3" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF HVPR$ = "240" AND PWRT$ = "4" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF HVPR$ = "480" AND PWRT$ = "4" THEN HVPT$ = "240": HVPA$ = "277": ST = 1 IF HVPR$ = "208" AND PWRT$ = "5" THEN HVPT$ = "120": HVPA$ = "120": ST = 1 IF HVPR$ = "416" AND PWRT$ = "5" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 IF HVPR$ = "480" AND PWRT$ = "5" THEN HVPT$ = "240": HVPA$ = "240": ST = 1 IF HVPR$ = "240" AND PWRT$ = "6" THEN HVPT$ = "120": HVPA$ = "138": ST = 1 IF ST = 0 THEN PRINT "Error, please retry ...": FOR I = 1 TO 50000: NEXT I: GOTO 450 INPUT "Enter CT size (0020,0100...) : ", CTSZ$ MID$(T$(1), 7, 16) = "Phase A " MID$(T$(2), 7, 16) = "Phase a " MID$(T$(3), 7, 16) = "Phase B " MID$(T$(4), 7, 16) = "Phase b " MID$(T$(5), 7, 16) = "Phase C " MID$(T$(6), 7, 16) = "Phase c " FOR I = 7 TO 16: MID$(T$(I), 7, 16) = " ": NEXT I FOR I = 1 TO 8: MID$(T$(I), 27, 4) = CTSZ$: NEXT I FOR I = 8 TO 16: MID$(T$(I), 27, 4) = CTSZ$: NEXT I 'FOR I = 1 TO 16: MID$(T$(I), 32, 4) = "1.00": NEXT I FOR I = 1 TO 8: MID$(T$(I), 37, 3) = HVPT$: NEXT I FOR I = 9 TO 16: MID$(T$(I), 37, 3) = HVPA$: NEXT I GOSUB 910 RETURN 510 'change price CLOSE #1 INPUT "price? (cents per KWH, eg. 6.95) ", PRICE GOSUB 987 RETURN 590 'change scale CLOSE #1 PRINT "Scale 1 affects the AMPS readout. It will always be 12.75 for" PRINT "the hardware versions 1.03 and 1.04. Scale 2 affects the KWH" PRINT "readout. The design value is 2390.625. Use the RECONCILE option" PRINT "to determine a new value to better match your next utility bill." PRINT "Scale 1 is currently ", SCAL PRINT "Scale 2 is currently ", SCA2 INPUT "Scale 1 ? ", SCAL INPUT "Scale 2 ? ", SCA2 700 ' GOSUB 987 RETURN 740 'change CT INPUT "Which CT? (1-16)"; I V$ = MID$(T$(I), 7, 19) IF REC$ = "2" THEN GOTO 850 IF REC$ = "3" THEN GOTO 850 IF REC$ = "4" THEN GOTO 850 PRINT "Please type all entries exactly as shown." PRINT "Description (20 chars) --" PRINT " 1 1 2" PRINT "....5....0....5....0" PRINT V$ LINE INPUT V$ MID$(T$(I), 7, 19) = V$ PRINT " " IF REC$ = "1" THEN GOTO 910 850 ' IF REC$ = "2" THEN INPUT "CT size? (0020 0060 0100 etc.)"; BK2$: IF LEN(BK2$) < 4 THEN BK2$ = "0" + BK2$: IF LEN(BK2$) < 4 THEN BK2$ = "0" + BK2$ IF REC$ = "3" THEN INPUT "correction factor (normally 1.00) Enter others with a leading zero. "; PF2$ IF REC$ = "4" THEN INPUT "voltage? (120 208 240 etc.)"; LV2$ IF REC$ = "2" THEN MID$(T$(I), 27, 4) = BK2$ IF REC$ = "3" THEN MID$(T$(I), 32, 4) = PF2$ IF REC$ = "4" THEN MID$(T$(I), 37, 3) = LV2$ MID$(T$(I), 40, 5) = TM$(I) MID$(T$(I), 46, 10) = DT$(I) 910 CLOSE #1 OPEN "O", #1, FIL2$ FOR I = 1 TO 16 PRINT #1, T$(I) NEXT I PRINT "Update sucessful" RETURN 970 'change colors CLOSE #1 INPUT "Enter color choice (0-4 0=mono)"; COLR IF COLR < 1 THEN COL = 0 IF COLR > 0 THEN COL = 1: C00 = 0: C03 = 3: C06 = 6: C07 = 7 IF COLR = 1 THEN C2 = 0: C3 = 0: C03 = 0: C06 = 0: C00 = 7: C07 = 0 IF COLR = 2 THEN C2 = 0: C3 = 7: C03 = 0: C06 = 0: C00 = 7: C07 = 0 IF COLR = 3 THEN C2 = 7: C3 = 0 IF COLR = 4 THEN C2 = 7: C3 = 7 GOSUB 987 RETURN 987 'write out OPEN "O", #1, FILE$ PRINT #1, SCAL PRINT #1, SCA2 PRINT #1, PRICE PRINT #1, COL PRINT #1, C00, C01, C02, C03 PRINT #1, C04, C05, C06, C07 PRINT #1, C2, C3, V1, V2 PRINT "Update successful." RETURN 'SUMM - (C) 1999 - microMETER Corp. 'add several CT.BIL files and reconcile to statement FIL1$ = "CT.BIL" FIL2$ = "CT.SUM" TOTAL = 0 CLS LOCATE (25): PRINT " ", CHR$(176); " (C) 1999 - microMETER Corp. - v 1.00 "; CHR$(176) INPUT "Please enter utility total due: ", UTIL CLOSE OPEN "I", #1, FIL1$ LOOP1: IF EOF(1) <> 0 THEN GOTO SKIP1 LINE INPUT #1, REC1$ COST = VAL(MID$(REC1$, 66, 74)) TOTAL = TOTAL + COST GOTO LOOP1 SKIP1: 'PRINT TOTAL IF TOTAL < 1 THEN TOTAL = 1 IF UTIL < 1 THEN UTIL = TOTAL 'INPUT x$ CLOSE OPEN "I", #1, FIL1$ OPEN "O", #2, FIL2$ LOOP2: IF EOF(1) <> 0 THEN GOTO EOJ LINE INPUT #1, REC1$ 'PRINT MID$(REC1$, 1, 76); COST = VAL(MID$(REC1$, 66, 74)) * UTIL / TOTAL PRINT #2, MID$(REC1$, 1, 65); PRINT #2, USING "######.##"; COST GOTO LOOP2 EOJ: CLOSE 'TEMPS - (C) 1994 - microMETER,Inc. COL = 0 C00 = 0: C01 = 1: C02 = 2: C03 = 3: C04 = 4: C05 = 5: C06 = 6: C07 = 7 C2 = 7: C3 = 0 '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht FOR I = 1 TO 80 SB$ = SB$ + CHR$(196) DB$ = DB$ + CHR$(205) NEXT I FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" FIL3$ = "CT.CAP" FIL4$ = "CT.RES" FIL5$ = "CT.DTE" FIL6$ = "MICRO.PRT" FIL7$ = "MICRO2.CAP" FIL8$ = "MICRO.TXT" CL$ = CHR$(13) + CHR$(10) KEY OFF: CLS GOSUB 780 IF COL = 1 THEN COLOR C01, C2, C3 SW = -1 DIM A(16), B(16), C(16), D(16), E(16), F(16), G(16), T$(16), TA(6), TB(16), BK(16), PF(16), LV(16), DTE$(16), AA(16), BB(16), EE(16), FF(16), GG(16) LOCATE (25): PRINT " ", CHR$(176); " (C) 1995 - microMETER Corp. - v 1.07 "; CHR$(176); " " CLOSE OPEN "O", #1, FIL6$: CLOSE 130 'RECONCILE LOOP IF COL = 1 THEN COLOR C01, C2, C3 GOSUB 850 GOSUB 590 OPEN "A", #1, FIL6$ TA(1) = 0: TA(2) = 0: TA(3) = 0: TA(4) = 0: TA(5) = 0 PRINT TXT1$ PRINT #1, TXT1$ PRINT "<> microMETER <> - System Summary as of " + TIM2$ + " " + DAT2$ PRINT #1, "<> microMETER <> - System Summary as of " + TIM2$ + " " + DAT2$ PRINT DB$; PRINT #1, " " IF COL = 1 THEN COLOR 0, 2, C3 IF SW = 1 THEN PRINT " # Circuit tempC avg dif reset "; IF SW = 1 THEN PRINT #1, " # Circuit tempC avg dif reset " IF SW = -1 THEN PRINT " # Circuit tempF avg dif reset "; IF SW = -1 THEN PRINT #1, " # Circuit tempF avg dif reset " IF COL = 1 THEN COLOR C05, C2, C3 PRINT SB$; PRINT #1, " " + CL$ FOR I = 1 TO 16 V$ = MID$(T$(I), 1, 25) IF COL = 1 THEN COLOR C00, C2, C3 PRINT V$; PRINT #1, V$; PRINT USING "###.#"; A(I); PRINT #1, USING "###.#"; A(I); PRINT USING "########.#"; G(I); PRINT #1, USING "########.#"; G(I); PRINT USING "########.##"; C(I); PRINT #1, USING "########.##"; C(I); PRINT " "; PRINT #1, " "; IF COL = 1 THEN COLOR C00, C03, C3 PRINT " "; DTE$(I); " "; PRINT #1, " "; DTE$(I) NEXT I IF COL = 1 THEN COLOR C00, C06, C3 PRINT TAB(16); " "; PRINT #1, TAB(16); " "; IF COL = 1 THEN COLOR C00, C03, C3 PRINT " " PRINT #1, " " IF COL = 1 THEN COLOR C04, C2, C3 PRINT "MENU: Enter 0-exit 1-alt display deg " PRINT #1, "MENU: Enter 0-exit 1-alt display deg " INPUT REC$ IF REC$ = "0" THEN CLOSE : COLOR 7, 0, 0: CLS : SYSTEM IF REC$ = "1" THEN SW = -1 * SW GOTO 130 590 'redisplay - unordered files CLOSE OPEN "I", #2, FIL3$ OPEN "I", #3, FIL4$ OPEN "I", #4, FIL7$ FOR I = 1 TO 16 INPUT #2, J, A(J), B(J), E(J) INPUT #3, K, AA(K), BB(K), EE(K) NEXT I INPUT #4, TIM3$ TIM2$ = MID$(TIM3$, 1, 8) DAT2$ = MID$(TIM3$, 10, 10) FOR I = 1 TO 16 B(I) = B(I) - BB(I) E(I) = E(I) - EE(I) F(I) = B(I) + E(I) * 65536! IF F(I) = 0 THEN F(I) = A(I) FF(I) = BB(I) + EE(I) * 65536! NEXT I D2 = 0 IF D2 = 0 THEN D2 = A(D1) UPDS = 1 IF D2 > 0 AND D1 > 0 THEN UPDS = F(D1) / D2 FOR I = 1 TO 16 A(I) = A(I) / SCAL * BK(I) / 20 + LV(I) / 10 - 12!: 'Scale to DEG C IF PF(I) > .1 THEN A(I) = 0 IF PF(I) < .1 THEN A(I) = A(I) - SCA2 IF SW = -1 AND PF(I) < .1 THEN A(I) = A(I) * 9 / 5 + 32 IF PF(I) < .1 AND F(I) > 0 THEN G(I) = (F(I) / SCAL * BK(I) / 20 / UPDS) + LV(I) / 10 - 12!: 'Scale to avg IF PF(I) < .1 AND F(I) > 0 THEN G(I) = G(I) - SCA2 IF SW = -1 AND PF(I) < .1 THEN G(I) = G(I) * 9 / 5 + 32 IF PF(I) > .1 THEN G(I) = 0 C(I) = A(I) - G(I) NEXT I RETURN 780 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 SCAL = 2.2791: SCA2 = 50.62 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, D1, D2 CLOSE OPEN "I", #1, FIL8$ LINE INPUT #1, TXT1$ RETURN 850 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ OPEN "I", #2, FIL5$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) BK(I) = VAL(MID$(T$(I), 28, 3)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 LINE INPUT #2, DTE$(I) NEXT I RETURN 'TESTKIT1 microMETER data - CJC 5/31/1996 (C) DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 INPUT "Please enter COM port (1 or 2) "; CP 'INPUT "Alarm? (0=no, 1=yes) "; AL AL = 0 'PRINT "Please enter CT#, Low limit, High limit (17=all, 18,1,1=pf, 0,0,0 = start):" 'PRINT " example " 'PRINT " 3,20,50 " 'PRINT " 17,0,240 " 'PRINT " 0,0,0 " S160: 'INPUT CT, CL, CH CT = 18: CL = 1: CH = 1 LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" 'IF CT > 0 AND CT < 19 THEN GOTO S160 IF HI(18) = 1 THEN OUT 888, JK CLS LOCATE (25) PRINT PL$ LOCATE 1 OPEN "O", #2, "USAGE.CAP" OPEN "O", #3, "USAGE.DTE" IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 'RINT #1, "CAP" LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: INPUT #1, A, B, C, D IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK IF A > 15 THEN JS = JS * -1 'IF A > 15 THEN JK = 255 - JK IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2: J4 = 252 'IF JS = 1 THEN JK = 252: GOTO S510 IF A = 1 THEN JK = J1 IF A = 2 THEN JK = J2 IF A = 3 THEN JK = J2 IF A = 4 THEN JK = J3 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J4 IF A = 7 THEN JK = J4 IF A = 8 THEN JK = J4 IF A = 9 THEN JK = J4 IF A = 10 THEN JK = J4 IF A = 11 THEN JK = J4 IF A = 12 THEN JK = J4 IF A = 13 THEN JK = J4 IF A = 14 THEN JK = J4 IF A = 15 THEN JK = J4 IF A = 16 THEN JK = J1 S510: RETURN 'TESTKITA microMETER data - CJC 5/31/1996 (C) DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18), VOL(18) DIM T1(18), T2(18), T3(18), T4(18), T5(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1 CK$(17) = " System Total " 'INPUT "Is the deenergized relay closed on true power (y/n)? ", DF$ 'IF DF$ = "y" OR DF$ = "Y" THEN DFT = 1 CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, "USAGE.CAP" OPEN "I", #3, "USAGE.DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "PC: time date mM: CT# KVA KW KVAR PF VOLT" FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 16 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E 'IF FIRST = 1 AND A <> 1 THEN GOTO S310: FIRST = 0 LINE INPUT #3, x$ F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ DT$(A) = Y$ 'IF E < 10 AND DFT = 0 THEN KVA(A) = B 'IF E > 250 AND DFT = 0 THEN KW(A) = B IF E < 10 AND DFT = 1 THEN KW(A) = B: '1-8 1-6 IF E > 250 AND DFT = 1 THEN KVA(A) = B: '9-16 7-16 NEXT I VOL(7) = KVA(7) / 128 * LV(7) * PF(7) * V4 / 120: 'a phase VOL(8) = KVA(8) / 128 * LV(8) * PF(8) * V4 / 120: 'b phase VOL(15) = KVA(15) / 128 * LV(15) * PF(15) * V4 / 120: 'c phase VOL(1) = VOL(7): VOL(2) = VOL(1) VOL(3) = VOL(8): VOL(4) = VOL(3) VOL(5) = VOL(15): VOL(6) = VOL(5) 'IF VOL(7) > 100 THEN LV(9) = VOL(7): LV(10) = LV(9) 'IF VOL(8) > 100 THEN LV(11) = VOL(8): LV(12) = LV(11) 'IF VOL(15) > 100 THEN LV(13) = VOL(15): LV(14) = LV(13) PG$ = "Page " + STR$(PAGE) PAGE = PAGE + 1 PRINT PG$ PRINT P0$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 6 J = I + 8 KVA(I) = KVA(J) * BK(J) / 20 * LV(J) / SCAL / 1000 * PF(J) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 'IF PF(I) = 0 THEN KVA(I) = 0 'IF KVA(I) = 0 THEN KW(I) = 0 'IF KW(I) = 0 THEN KVA(I) = 0 IF KVA(I) < KW(I) AND KVA(I) > 0 THEN KVA(I) = KW(I) 'IF KVA(I) > 0 AND KW(I) > 0 AND KVA(I) > 2 * KW(I) THEN KVA(I) = 0: KW(I) = 0 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) NEXT I N5(7) = N5(7) + 1 T5(7) = T5(7) + VOL(7) T5(8) = T5(8) + VOL(8) T5(15) = T5(15) + VOL(15) FOR I = 1 TO 6 PRINT DT$(I); PRINT #4, DT$(I); US$ = " ###. ####.## ####.## ####.## ####.## ####.##" PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); VOL(I) PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); VOL(I) NEXT I NET2 = KW(2) + KW(4) + KW(6) NET1 = KW(1) + KW(3) + KW(5) 'NET = NET2 - NET1 'RAT = NET2 / NET1 PRINT PRINT : '"NET KW GAIN, RATIO OUT/IN "; NET, RAT PRINT #4, " " PRINT #4, " ": ' "NET KW GAIN, RATIO OUT/IN "; NET, RAT IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: 'CLOSE CLS PG$ = "Page " + STR$(PAGE) PRINT PG$ PRINT P0$ PRINT " " PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " PRINT PL$ PRINT #4, PL$ IF N5(7) > 0 THEN T5(1) = T5(7) / N5(7): T5(2) = T5(1) IF N5(7) > 0 THEN T5(3) = T5(8) / N5(7): T5(4) = T5(3) IF N5(7) > 0 THEN T5(5) = T5(15) / N5(7): T5(6) = T5(5) FOR I = 1 TO 6 IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 6 PRINT MID$(CK$(I), 2, 20); PRINT USING US$; I; T1(I); T2(I); T3(I); T4(I); T5(I) PRINT #4, MID$(CK$(I), 2, 20); PRINT #4, USING US$; I; T1(I); T2(I); T3(I); T4(I); T5(I) NEXT I CLOSE END 'THREEPHF microMETER data - CJC 8/16/1996 (C) DIM KVA(38), KW(38), DT$(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1: DTL = 0: EFSW = 0: DT2 = 0 CK$(17) = "System Total " PRINT "THREEPHF D for detail (or xUT223y010)" IF MID$(COMMAND$, 1, 1) = "D" THEN DTL = 1 IF MID$(COMMAND$, 1, 1) = "d" THEN DTL = 1: DT2 = 1 IF MID$(COMMAND$, 1, 1) = "2" THEN DT2 = 1 IF LEN(COMMAND$) > 5 THEN DFN$ = MID$(COMMAND$, 2, 5): V200$ = MID$(COMMAND$, 7, 1): MINU = VAL(MID$(COMMAND$, 8, 3)): GOTO S100 INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT225" INPUT "v2.00? (y/n)"; V200$ S090: INPUT "Enter minutes 10 30 60 or 120 ", MINU IF MINU < 10 THEN MINU = 10 IF MINU = 10 THEN GOTO S100 IF MINU = 15 THEN GOTO S100 IF MINU = 30 THEN GOTO S100 IF MINU = 60 THEN GOTO S100 IF MINU = 10 THEN GOTO S100 S100: INDX = 6 * MINU IF DFN$ = "" THEN DFN$ = "USAGE" CLS CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.09 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" OPEN "O", #5, "SHEET.TXT" PL$ = "CIRCUIT LOAD KVA KW KVAR PF KWH " SS1$ = " KVA KW KVAR PF KWH " SS2$ = SS1$ + SS1$ + SS1$ + SS1$ + SS1$ + SS1$ PRINT #5, SS2$ + " ENTRY" FIRST = 1: SKIP = 0 DT$(1) = CK$(1) DT$(2) = CK$(4) DT$(3) = CK$(7) DT$(4) = CK$(10) DT$(5) = CK$(13) DT$(6) = CK$(16) S300: FOR I = 1 TO 38 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" DTOFF$ = "" DTONSW = 0 DTOFFSW = 0 EUT = 0 FOR I = 1 TO INDX S310: IF EOF(2) THEN EFSW = 1 IF EOF(3) THEN EFSW = 1 IF EFSW = 1 THEN GOTO S311 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF VAL(MID$(x$, 5, 1)) > 0 AND I = 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 S311: FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use ' 0 4 8 12 with new threeph5 ' 4 is meaningless with tph5 EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 EUT = EUT + EUS IF I = 1 THEN DTON$ = x$ AA = A + 0 * EUS: 'DISPLACE USES OFF BY 18 IF AA > 38 THEN AA = 38 FF = 1 IF EUS = 0 THEN FF = C2 IF V200$ = "y" THEN EAP = 2 IF EAP = 0 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 1 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 IF EAP = 2 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 2 THEN KVA(AA) = FF * C + KVA(AA): CNT2(AA) = CNT2(AA) + 1 NEXT I FOR I = 1 TO 38 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I TEMP = 0 PG$ = "Page " + STR$(PAGE) + " Degree Day Temp (F) = " + STR$(TEMP) PAG0 = PAGE PAGE = PAGE + 1 PO$ = "off at: " + MID$(DTOFF$, 1, 22) STAT$ = "mixed " E45 = 45 * MINU / 10 E15 = 15 * MINU / 10 IF EUT > E45 THEN STAT$ = "USES off" IF EUT < E15 THEN STAT$ = "USES on " PN$ = "Start: " + MID$(DTON$, 1, 22) + " " + STAT$ PRINT PG$ PRINT P0$ PRINT PN$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, PN$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) NEXT I FOR I = 1 TO 1 IF I = 1 THEN K = 0 IF I = 2 THEN K = 18 U1(K + 1) = KVA(K + 1) + KVA(K + 2) + KVA(K + 3) U1(K + 2) = KVA(K + 4) + KVA(K + 5) + KVA(K + 6) U1(K + 3) = KVA(K + 7) + KVA(K + 8) + KVA(K + 9) U1(K + 4) = KVA(K + 10) + KVA(K + 11) + KVA(K + 12) U1(K + 5) = KVA(K + 13) + KVA(K + 14) + KVA(K + 15) U1(K + 6) = U1(K + 1) - U1(K + 2) - U1(K + 3) - U1(K + 4) - U1(K + 5) U2(K + 1) = KW(K + 1) + KW(K + 2) + KW(K + 3) U2(K + 2) = KW(K + 4) + KW(K + 5) + KW(K + 6) U2(K + 3) = KW(K + 7) + KW(K + 8) + KW(K + 9) U2(K + 4) = KW(K + 10) + KW(K + 11) + KW(K + 12) U2(K + 5) = KW(K + 13) + KW(K + 14) + KW(K + 15) U2(K + 6) = U2(K + 1) - U2(K + 2) - U2(K + 3) - U2(K + 4) - U2(K + 5) U3(K + 1) = 0: IF U1(K + 1) > U2(K + 1) AND U1(K + 1) > 0 THEN U3(K + 1) = (U1(K + 1) ^ 2 - U2(K + 1) ^ 2) ^ .5 U3(K + 2) = 0: IF U1(K + 2) > U2(K + 2) AND U1(K + 2) > 0 THEN U3(K + 2) = (U1(K + 2) ^ 2 - U2(K + 2) ^ 2) ^ .5 U3(K + 3) = 0: IF U1(K + 3) > U2(K + 3) AND U1(K + 3) > 0 THEN U3(K + 3) = (U1(K + 3) ^ 2 - U2(K + 3) ^ 2) ^ .5 U3(K + 4) = 0: IF U1(K + 4) > U2(K + 4) AND U1(K + 4) > 0 THEN U3(K + 4) = (U1(K + 4) ^ 2 - U2(K + 4) ^ 2) ^ .5 U3(K + 5) = 0: IF U1(K + 5) > U2(K + 5) AND U1(K + 5) > 0 THEN U3(K + 5) = (U1(K + 5) ^ 2 - U2(K + 5) ^ 2) ^ .5 U3(K + 6) = 0: IF U1(K + 6) > U2(K + 6) AND U1(K + 6) > 0 THEN U3(K + 6) = (U1(K + 6) ^ 2 - U2(K + 6) ^ 2) ^ .5 U4(K + 1) = 0: IF U1(K + 1) > 0 THEN U4(K + 1) = U2(K + 1) / U1(K + 1) U4(K + 2) = 0: IF U1(K + 2) > 0 THEN U4(K + 2) = U2(K + 2) / U1(K + 2) U4(K + 3) = 0: IF U1(K + 3) > 0 THEN U4(K + 3) = U2(K + 3) / U1(K + 3) U4(K + 4) = 0: IF U1(K + 4) > 0 THEN U4(K + 4) = U2(K + 4) / U1(K + 4) U4(K + 5) = 0: IF U1(K + 5) > 0 THEN U4(K + 5) = U2(K + 5) / U1(K + 5) U4(K + 6) = 0: IF U1(K + 6) > 0 THEN U4(K + 6) = U2(K + 6) / U1(K + 6) NEXT I LIN = 6 + DTL * 10 FOR I = 1 TO LIN IF DTL = 0 THEN PRINT DT$(I); IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" KWH1 = U2(I) * MINU / 60 KWH2 = KW(I) * MINU / 60 IF DTL = 0 THEN PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #5, U1(I); U2(I); U3(I); U4(I); KWH1; IF DTL = 0 AND DT2 = 1 THEN PRINT #5, U1(I); U2(I); U3(I); U4(I); KWH1; IF DTL = 1 THEN PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #5, KVA(I); KW(I); KVAR(I); PE(I); KWH2; IF DTL = 1 AND DT2 = 1 THEN PRINT #5, KVA(I); KW(I); KVAR(I); PE(I); KWH2; NEXT I PRINT PRINT #4, " " PRINT #5, PAG0 IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 IF xx$ = "X" THEN STOP LOCATE (1) IF EFSW <> 1 THEN GOTO S300 S400: CLOSE CLS END 'THREEPH1 microMETER data - CJC 6/28/1996 (C) 'DEF SEG = &H800 DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 INPUT "Please enter COM port (1 or 2) "; CP INPUT "Please enter #readings in mode (16, 96->16min"; JJ JJ1 = JJ - 1 DFN$ = "US" AL = 0 S160: CT = 18: CL = 1: CH = 1 LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF HI(18) = 1 THEN OUT 888, JK 'CLS LOCATE (25) PRINT PL$ LOCATE 1 'OPEN "O", #2, "USAGE.CAP" 'OPEN "O", #3, "USAGE.DTE" GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: INPUT #1, A, B, C, D IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK J = J + 1 IF A > 15 AND J > JJ1 THEN JS = JS * -1: J = 0 IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2: J4 = 252 'IF JS = 1 THEN JK = 252: GOTO S510 IF A = 1 THEN JK = J2 IF A = 2 THEN JK = J3 IF A = 3 THEN JK = J1 IF A = 4 THEN JK = J2 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J1 IF A = 7 THEN JK = J2 IF A = 8 THEN JK = J3 IF A = 9 THEN JK = J1 IF A = 10 THEN JK = J2 IF A = 11 THEN JK = J3 IF A = 12 THEN JK = J1 IF A = 13 THEN JK = J2 IF A = 14 THEN JK = J3 IF A = 15 THEN JK = J1 IF A = 16 THEN JK = J1 IF JS = 1 THEN JK = JK + 252 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 'FIL4$=FIL2$ DV = DV + 1 DW = DV GOSUB T800 GOSUB T805 'GOSUB T790 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 'SHL$="COPY "+FIL4$+" A:" 'IF LG$ = " " THEN SHELL SHL$ GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) K = 1960 'POKE K + 0, H1 'POKE K + 2, H2 'POKE K + 4, ASC(":") 'POKE K + 6, M1 'POKE K + 8, M2 'POKE K + 10, ASC(":") 'POKE K + 12, S1 'POKE K + 14, S2 RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 'IF DW > 0 AND DV <> DW THEN DV = DW: 'PREVENT NON-ADVANCE OF JULIAN DATE DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ 'MID$(TXT$(8), 10, 3) = DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN 'THREEPH2 - (C) 1996 - microMETER Corp. 'PROCESS UPLOADED FILES TO FILL TEMPORAL GAPS WITH ZEROES (8640 LINES) IF LEN(COMMAND$) > 5 THEN AFN$ = COMMAND$: GOTO S010 INPUT "Filename eg. US123.CAP or US123.DTE? "; AFN$ S010: SUF$ = MID$(AFN$, 7, 3) IF SUF$ = "" THEN SUF$ = "CAP" IF SUF$ = "dte" THEN SUF$ = "DTE" DFN$ = "US" FILE$ = AFN$ FIL2$ = FILE$ MID$(FIL2$, 2, 1) = "T" OPEN "I", #1, FILE$ OPEN "O", #2, FIL2$ RC = 0 END$ = "ENDED 00-00-0000 00:00:00" ZER$ = "0,0,0,0,0" ZE2$ = "00:00:00 MM/DD/YYYY" IF SUF$ = "DTE" THEN ZER$ = ZE2$ S100: IF EOF(1) <> 0 THEN GOTO S500 LINE INPUT #1, REC$ IF MID$(REC$, 1, 5) = "START" THEN GOSUB S300 IF MID$(REC$, 1, 5) = "ENDED" THEN END$ = REC$: GOTO S100 IF MID$(REC$, 1, 5) <> "START" THEN PRINT #2, REC$: RC = RC + 1 GOTO S100 S300: H2 = VAL(MID$(REC$, 18, 2)) M2 = VAL(MID$(REC$, 21, 2)) HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) HD = H2 - HH: MD = M2 - MN HH = H2: MN = M2 M3 = HD * 60 + MD - 1 II = INT(M3 * 6) IF II = 0 THEN GOTO S305 FOR I = 1 TO II PRINT #2, ZER$ RC = RC + 1 NEXT I S305: RETURN S500: HH = VAL(MID$(END$, 18, 2)) MN = VAL(MID$(END$, 21, 2)) H2 = 23: M2 = 60 HD = H2 - HH: MD = M2 - MN M3 = HD * 60 + MD II = INT(M3 * 6) IF II = 0 THEN GOTO S505 FOR I = 1 TO II IF RC < 8640 THEN PRINT #2, ZER$: RC = RC + 1 NEXT I S505: SC = RC IF RC > 8639 THEN GOTO S600 FOR I = SC TO 8639 PRINT #2, ZER$ RC = RC + 1 NEXT I S600: CLOSE PRINT RC; " REC " 'THREEPH3 microMETER data - CJC 7/15/1996 (C) DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18), SW(18) DIM T$(16), DT$(16), TM$(16), BK(16), PF(16), LV(16) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 INPUT "Please enter COM port (1 or 2) "; CP INPUT "Please enter #readings in mode (16, 96->16min"; JJ JJ1 = JJ - 1 DFN$ = "US" AL = 0 FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 CLOSE S160: CT = 18: CL = 1: CH = 1 LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF HI(18) = 1 THEN OUT 888, JK LOCATE (25) PRINT PL$ LOCATE 1 GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: INPUT #1, A, B, C, D IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK J = J + 1 IF A > 15 AND J > JJ1 THEN JS = JS * -1: J = 0 IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2: J4 = 252 J5 = A + 1 IF J5 > 16 THEN J5 = 1 JK = SW(J5) 'F A = 1 THEN JK = J2 'F A = 2 THEN JK = J3 'F A = 3 THEN JK = J1 'F A = 4 THEN JK = J2 'F A = 5 THEN JK = J3 'F A = 6 THEN JK = J1 'F A = 7 THEN JK = J2 'F A = 8 THEN JK = J3 'F A = 9 THEN JK = J1 'F A = 10 THEN JK = J2 'F A = 11 THEN JK = J3 'F A = 12 THEN JK = J1 'F A = 13 THEN JK = J2 'F A = 14 THEN JK = J3 'F A = 15 THEN JK = J1 'F A = 16 THEN JK = J1 IF JS = 1 THEN JK = JK + 252 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 DV = DV + 1 DW = DV GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 'SHL$="COPY "+FIL4$+" A:" 'IF LG$ = " " THEN SHELL SHL$ GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) SW(I) = VAL(MID$(T$(I), 49, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 'THREEPH4 microMETER data - CJC 7/23/1996 (C) 'Switch every 15 min DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) CLOSE KEY OFF: CLS : JK = 0: JS = -1: EL$ = " exceeding limit" FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0: LOCATE 1 PRINT "15 minute switching - use THREEPHD.EXE to interpret." INPUT "Please enter COM port (1 or 2) "; CP 'INPUT "Please enter #readings in mode (16, 96->16min"; JJ JJ = 90 JJ1 = JJ - 1 DFN$ = "US" AL = 0 S160: CT = 18: CL = 1: CH = 1 LO(CT) = CL: HI(CT) = CH IF CT = 18 THEN HI(17) = 0: EL$ = "" IF HI(18) = 1 THEN OUT 888, JK 'CLS LOCATE (25) PRINT PL$ LOCATE 1 'OPEN "O", #2, "USAGE.CAP" 'OPEN "O", #3, "USAGE.DTE" GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500: OUT 888, JK S300: INPUT #1, A, B, C, D IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 IF HI(17) = 0 AND HI(18) = 1 THEN GOTO S330 IF B > HI(A) OR B > HI(17) OR B < LO(A) OR B < LO(17) THEN GOTO S330 GOTO S380 S330: I = I + 1 PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK; EL$ PRINT #2, A; ","; B; ","; C; ","; D; ","; JK J = J + 1 IF J > JJ1 THEN JS = JS * -1: J = 0 IF HI(18) = 1 THEN GOSUB S500: OUT 888, JK PRINT #3, TIME$; " "; DATE$ IF AL > 0 THEN PLAY "d f a" S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" IF HI(18) = 1 THEN OUT 888, 0 CLOSE END S500: J1 = 0: J2 = 1: J3 = 2: J4 = 252 IF A = 1 THEN JK = J2 IF A = 2 THEN JK = J3 IF A = 3 THEN JK = J1 IF A = 4 THEN JK = J2 IF A = 5 THEN JK = J3 IF A = 6 THEN JK = J1 IF A = 7 THEN JK = J2 IF A = 8 THEN JK = J3 IF A = 9 THEN JK = J1 IF A = 10 THEN JK = J2 IF A = 11 THEN JK = J3 IF A = 12 THEN JK = J1 IF A = 13 THEN JK = J2 IF A = 14 THEN JK = J3 IF A = 15 THEN JK = J1 IF A = 16 THEN JK = J1 IF JS = 1 THEN JK = JK + 252 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 DV = DV + 1 DW = DV GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN 'TPH5 microMETER data - CJC 9/19/1996 (C) 'Switch every 10,30,60 min, cycle tp / ap; phase from CT.DAT DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM SW(17), TM$(17), DT$(17) SYNCU = 0 CLOSE FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 CLOSE CLS : JK = 0: JS = -1: JU = -1 FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.10 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 PRINT "10,30,60 or 120 minute switching - use THREEPHE,F.EXE with v1.04 " IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 3)): PRINT CP, MINU: GOTO S150 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S140: INPUT "Please enter minutes 10,30,60 or 120 "; MINU IF MINU = 10 THEN GOTO S150 IF MINU = 30 THEN GOTO S150 IF MINU = 60 THEN GOTO S150 IF MINU = 120 THEN GOTO S150 GOTO S140 S150: JJ = 6 * MINU JJ1 = JJ - 1 DFN$ = "US" J = 0 K = 0 S160: OUT 888, JK LOCATE (25) PRINT PL$ LOCATE 1 GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500 OUT 888, JK S300: INPUT #1, A, B, C, D IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 S330: PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK PRINT #2, A; ","; B; ","; C; ","; D; ","; JK PRINT #3, TIME$; " "; DATE$ I = I + 1 J = J + 1 K = K + 1 SYNC2 = VAL(MID$(TIME$, 5, 1)): 'minute units SYNC3 = VAL(MID$(TIME$, 4, 2)): 'minutes SYNC4 = VAL(MID$(TIME$, 1, 2)): 'hours SYNC5 = 0 IF SYNC4 = 0 OR SYNC4 = 2 OR SYNC4 = 4 OR SYNC4 = 6 THEN SYNC5 = 1 IF SYNC4 = 8 OR SYNC4 = 10 OR SYNC4 = 12 OR SYNC4 = 14 THEN SYNC5 = 1 IF SYNC4 = 16 OR SYNC4 = 18 OR SYNC4 = 20 OR SYNC4 = 22 THEN SYNC5 = 1 IF SYNC2 = 5 THEN SYNCU = 0 IF SYNCU = 1 THEN GOTO S378 IF MINU = 10 AND SYNC2 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 30 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 60 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 120 AND SYNC3 = 0 AND SYNC5 = 1 THEN JS = JS * -1: SYNCU = 1 S378: IF K > 15 THEN JU = JU * -1: K = 0 GOSUB S500 OUT 888, JK S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" OUT 888, 0 CLOSE END S500: 'Aph Bph Cph A/P USES J1 = 0: J2 = 1: J3 = 2: J4 = 4: J5 = 8 J0 = A + 1 IF J0 > 16 THEN J0 = 1 JK = SW(J0) IF JU = 1 THEN JK = JK + J4 IF JS = 1 THEN JK = JK + J5 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE 'DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 'DV = DV + 1 'DW = DV GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 SYNCU = 0: JK = 0: JU = -1: JS = -1 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) SW(I) = VAL(MID$(T$(I), 49, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 'THREEPH5 microMETER data - CJC 7/29/1996 (C) 'Switch every 10,30,60 min, cycle tp / ap; phase from CT.DAT DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM SW(17), TM$(17), DT$(17) SYNCU = 0 CLOSE FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 CLOSE CLS : JK = 0: JS = -1: JU = -1 FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.09 " + CHR$(176) LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 PRINT "10,30,60 or 120 minute switching - use THREEPHE.EXE to interpret." IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 2)): PRINT CP, MINU: GOTO S150 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S140: INPUT "Please enter minutes 10,30,60 or 120 "; MINU IF MINU = 10 THEN GOTO S150 IF MINU = 30 THEN GOTO S150 IF MINU = 60 THEN GOTO S150 IF MINU = 120 THEN GOTO S150 GOTO S140 S150: JJ = 6 * MINU 'JJ = 90 JJ1 = JJ - 1 DFN$ = "US" J = 0 K = 0 S160: OUT 888, JK LOCATE (25) PRINT PL$ LOCATE 1 GOSUB T800 GOSUB T805 GOSUB T120 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "Discarding first reading." PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D GOSUB S500 OUT 888, JK PRINT #1, CHR$(128) + CHR$(JK); S300: INPUT #1, A, B, C, D IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 S330: PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK PRINT #2, A; ","; B; ","; C; ","; D; ","; JK PRINT #3, TIME$; " "; DATE$ I = I + 1 J = J + 1 K = K + 1 SYNC2 = VAL(MID$(TIME$, 5, 1)): 'minute units SYNC3 = VAL(MID$(TIME$, 4, 2)): 'minutes SYNC4 = VAL(MID$(TIME$, 1, 2)): 'hours SYNC5 = 0 IF SYNC4 = 0 OR SYNC4 = 2 OR SYNC4 = 4 OR SYNC4 = 6 THEN SYNC5 = 1 IF SYNC4 = 8 OR SYNC4 = 10 OR SYNC4 = 12 OR SYNC4 = 14 THEN SYNC5 = 1 IF SYNC4 = 16 OR SYNC4 = 18 OR SYNC4 = 20 OR SYNC4 = 22 THEN SYNC5 = 1 'IF SYNC2 = 0 AND SYNCU = 0 THEN SYNCU = 1: J = 0 'IF J > JJ1 THEN JS = JS * -1: J = 0 IF SYNC2 = 5 THEN SYNCU = 0 IF SYNCU = 1 THEN GOTO S378 IF MINU = 10 AND SYNC2 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 30 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 60 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 120 AND SYNC3 = 0 AND SYNC5 = 1 THEN JS = JS * -1: SYNCU = 1 S378: IF K > 15 THEN JU = JU * -1: K = 0 GOSUB S500 OUT 888, JK PRINT #1, CHR$(128) + CHR$(JK); 'PRINT #3, TIME$; " "; DATE$ S380: IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 PRINT I; " readings" OUT 888, 0 CLOSE END S500: 'Aph Bph Cph A/P USES J1 = 0: J2 = 1: J3 = 2: J4 = 4: J5 = 8 J0 = A + 1 IF J0 > 16 THEN J0 = 1 JK = SW(J0) JK = 0 'F A = 1 THEN JK = J2 'F A = 2 THEN JK = J3 'F A = 3 THEN JK = J1 'F A = 4 THEN JK = J2 'F A = 5 THEN JK = J3 'F A = 6 THEN JK = J1 'F A = 7 THEN JK = J2 'F A = 8 THEN JK = J3 'F A = 9 THEN JK = J1 'F A = 10 THEN JK = J2 'F A = 11 THEN JK = J3 'F A = 12 THEN JK = J1 'F A = 13 THEN JK = J2 'F A = 14 THEN JK = J3 'F A = 15 THEN JK = J1 'F A = 16 THEN JK = J1 IF JU = 1 THEN JK = 255 'IF JS = 1 THEN JK = JK + J5 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE DW = 0 IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 DV = DV + 1 DW = DV GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) SW(I) = VAL(MID$(T$(I), 49, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 'THREEPHA microMETER data - CJC 5/31/1996 (C) DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), S1(18), S2(18), S3(18), S4(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1 CK$(17) = " System Total " INPUT "Enter file name+day e.g. UT123 ", DFN$ IF DFN$ = "" THEN DFN$ = "USAGE" CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "PC: time date mM: CT# KVA KW KVAR PF " FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 32 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF EOF(3) THEN GOTO S400 IF FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ DT$(A) = Y$ IF E < 10 THEN KW(A) = B IF E > 250 THEN KVA(A) = B NEXT I PG$ = "Page " + STR$(PAGE) PAGE = PAGE + 1 PRINT PG$ PRINT P0$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 J = I KVA(I) = KVA(J) * BK(J) / 20 * LV(J) / SCAL / 1000 * PF(J) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) NEXT I FOR I = 1 TO 16 PRINT DT$(I); PRINT #4, DT$(I); US$ = " ###. #####.# #####.# #####.# ####.## ####### #######" UT$ = " ####### ####### ####### ####### #######" PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I) PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I) NEXT I PRINT PRINT PRINT #4, " " PRINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLS PG$ = "Page " + STR$(PAGE) PRINT PG$ PRINT P0$ PRINT " " PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " MID$(PL$, 67, 10) = "KWH $ " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 S1(I) = T1(I) S2(I) = T2(I) IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) PFC = T4(I) IF PFC = 0 THEN PFC = 1 S3(I) = S1(I) * PFC + S2(I) S4(I) = S3(I) * .0445 * 2390.625 / SCA2 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 16 DOL = S4(I) * PRICE / 100 PRINT MID$(CK$(I), 2, 20); PRINT USING US$; I; T1(I); T2(I); T3(I); T4(I); S4(I); DOL PRINT #4, MID$(CK$(I), 2, 20); PRINT #4, USING US$; I; T1(I); T2(I); T3(I); T4(I); S4(I); DOL NEXT I PRINT PRINT #4, " " S1(1) = S4(1) + S4(2) + S4(3) S1(2) = S4(4) + S4(5) + S4(6) S1(3) = S4(7) + S4(8) + S4(9) S1(4) = S4(10) + S4(11) + S4(12) S1(5) = S4(13) + S4(14) + S4(15) FOR I = 1 TO 5 S2(I) = S1(I) * PRICE / 100 NEXT I PRINT "TKWH 1-5 "; : PRINT USING UT$; S1(1); S1(2); S1(3); S1(4); S1(5) PRINT #4, "TKWH 1-5 "; : PRINT #4, USING UT$; S1(1); S1(2); S1(3); S1(4); S1(5) PRINT "COST $ "; : PRINT USING UT$; S2(1); S2(2); S2(3); S2(4); S2(5) PRINT #4, "COST $ "; : PRINT #4, USING UT$; S2(1); S2(2); S2(3); S2(4); S2(5) CLOSE END 'THREEPHB microMETER data - CJC 5/31/1996 (C) 'NOTE KVA = KWon, KW = KWoff, KVAR = diff, PE = $/HR DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), T5(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1 CK$(17) = " System Total " PRINT "Use for 96 entry mode files only." INPUT "Enter file name+day e.g. UT123 ", DFN$ IF DFN$ = "" THEN DFN$ = "USAGE" CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.07 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "Circuit KWoff KWon DIFF $/HR % " FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 18 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 NEXT I FOR I = 1 TO 192 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, X$ IF EOF(3) THEN GOTO S400 IF FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = X$ IF Y$ = "" THEN Y$ = X$ DT$(A) = Y$ IF I = 1 AND E < 10 THEN DTOFF$ = X$ IF I = 97 AND E < 10 THEN DTOFF$ = X$ IF I = 1 AND E > 250 THEN DTON$ = X$ IF I = 97 AND E > 250 THEN DTON$ = X$ IF E < 10 THEN KW(A) = B + KW(A) IF E > 250 THEN KVA(A) = B + KVA(A) NEXT I FOR I = 1 TO 16 KVA(I) = KVA(I) / 6 KW(I) = KW(I) / 6 NEXT I PG$ = "Page " + STR$(PAGE) PR$ = " (16 minutes off and 16 minutes on) cts/kwh:" + STR$(PRICE) PO$ = "off at: " + MID$(DTOFF$, 1, 22) + " on at: " + MID$(DTON$, 1, 22) PAGE = PAGE + 1 PRINT PG$ + PR$ PRINT P0$ PRINT PO$ PRINT " " PRINT PL$ PRINT #4, PG$ + PR$ PRINT #4, P0$ PRINT #4, PO$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 J = I KVA(I) = KVA(J) * BK(J) / 20 * LV(J) / SCAL / 1000 * PF(J) * V3 / 120 KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 KVAR(I) = KW(I) - KVA(I): N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = KVAR(I) * PRICE / 100 IF KVA(I) > 0 THEN N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) IF KVA(I) > 0 AND KW(I) > 0 THEN N4(I) = N4(I) + 1: T4(I) = T4(I) + PE(I) NEXT I FOR I = 1 TO 16 PCT = 0 IF KW(I) > 0 THEN PCT = (1 - KVA(I) / KW(I)) * 100 DT$(1) = " " PRINT CK$(I); PRINT #4, CK$(I); US$ = " ####.## ####.## ####.## ####.## ####.##" PRINT USING US$; KW(I); KVA(I); KVAR(I); PE(I); PCT PRINT #4, USING US$; KW(I); KVA(I); KVAR(I); PE(I); PCT NEXT I PRINT 'RINT " " PRINT #4, " " 'RINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLS PG$ = "Page " + STR$(PAGE) PRINT PG$ + PR$ PRINT P0$ PRINT " " PRINT #4, PG$ + PR$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) 'IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) 'IF N4(I) > 0 THEN T4(I) = T4(I) / N4(I) T3(I) = T2(I) - T1(I) T4(I) = T3(I) * PRICE / 100 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 16 PCT = 0 IF T2(I) > 0 THEN PCT = (1 - T1(I) / T2(I)) * 100 PRINT CK$(I); PRINT USING US$; T2(I); T1(I); T3(I); T4(I); PCT PRINT #4, CK$(I); PRINT #4, USING US$; T2(I); T1(I); T3(I); T4(I); PCT NEXT I CLOSE END 'THREEPHC microMETER data - CJC 5/31/1996 (C) DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), S1(18), S2(18), S3(18), S4(18) DIM U1(18), U2(18), U3(18), U4(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1 CK$(17) = " System Total " INPUT "Enter file name+day e.g. UT123 ", DFN$ IF DFN$ = "" THEN DFN$ = "USAGE" CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "PC: time date LOAD KVA KW KVAR PF " FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 32 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF EOF(3) THEN GOTO S400 IF FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ DT$(A) = Y$ IF E < 10 THEN KW(A) = B IF E > 250 THEN KVA(A) = B NEXT I PG$ = "Page " + STR$(PAGE) PAGE = PAGE + 1 PRINT PG$ PRINT P0$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 J = I KVA(I) = KVA(J) * BK(J) / 20 * LV(J) / SCAL / 1000 * PF(J) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) NEXT I U1(1) = KVA(1) + KVA(2) + KVA(3) U1(2) = KVA(4) + KVA(5) + KVA(6) U1(3) = KVA(7) + KVA(8) + KVA(9) U1(4) = KVA(10) + KVA(11) + KVA(12) U1(5) = KVA(13) + KVA(14) + KVA(15) U1(6) = U1(1) - U1(2) - U1(3) - U1(4) - U1(5) U2(1) = KW(1) + KW(2) + KW(3) U2(2) = KW(4) + KW(5) + KW(6) U2(3) = KW(7) + KW(8) + KW(9) U2(4) = KW(10) + KW(11) + KW(12) U2(5) = KW(13) + KW(14) + KW(15) U2(6) = U2(1) - U2(2) - U2(3) - U2(4) - U2(5) U3(1) = KVAR(1) + KVAR(2) + KVAR(3) U3(2) = KVAR(4) + KVAR(5) + KVAR(6) U3(3) = KVAR(7) + KVAR(8) + KVAR(9) U3(4) = KVAR(10) + KVAR(11) + KVAR(12) U3(5) = KVAR(13) + KVAR(14) + KVAR(15) U3(6) = U3(1) - U3(2) - U3(3) - U3(4) - U3(5) U4(1) = (PE(1) + PE(2) + PE(3)) / 3 U4(2) = (PE(4) + PE(5) + PE(6)) / 3 U4(3) = (PE(7) + PE(8) + PE(9)) / 3 U4(4) = (PE(10) + PE(11) + PE(12)) / 3 U4(5) = (PE(13) + PE(14) + PE(15)) / 3 U4(6) = (U4(2) + U4(3) + U4(4) + U4(5)) / 4 FOR I = 1 TO 6 PRINT DT$(I); PRINT #4, DT$(I); US$ = " ###. #####.# #####.# #####.# ####.## #######.## #######" 'UT$ = " ####### ####### ####### ####### #######" PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I) PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I) NEXT I PRINT PRINT PRINT #4, " " PRINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLS PG$ = "Page " + STR$(PAGE) PRINT PG$ PRINT P0$ PRINT " " PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " MID$(PL$, 67, 10) = "KWH " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 S1(I) = T1(I) S2(I) = T2(I) IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) PFC = T4(I) IF PFC = 0 THEN PFC = 1 S3(I) = S1(I) * PFC + S2(I) S4(I) = S3(I) * .0445 * 2390.625 / SCA2 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) CK$(2) = CK$(4) CK$(3) = CK$(7) CK$(4) = CK$(10) CK$(5) = CK$(13) CK$(6) = CK$(13) U1(1) = T1(1) + T1(2) + T1(3) U1(2) = T1(4) + T1(5) + T1(6) U1(3) = T1(7) + T1(8) + T1(9) U1(4) = T1(10) + T1(11) + T1(12) U1(5) = T1(13) + T1(14) + T1(15) U1(6) = U1(1) - U1(2) - U1(3) - U1(4) - U1(5) U2(1) = T2(1) + T2(2) + T2(3) U2(2) = T2(4) + T2(5) + T2(6) U2(3) = T2(7) + T2(8) + T2(9) U2(4) = T2(10) + T2(11) + T2(12) U2(5) = T2(13) + T2(14) + T2(15) U2(6) = U2(1) - U2(2) - U2(3) - U2(4) - U2(5) U3(1) = T3(1) + T3(2) + T3(3) U3(2) = T3(4) + T3(5) + T3(6) U3(3) = T3(7) + T3(8) + T3(9) U3(4) = T3(10) + T3(11) + T3(12) U3(5) = T3(13) + T3(14) + T3(15) U3(6) = U3(1) - U3(2) - U3(3) - U3(4) - U3(5) U4(1) = (T4(1) + T4(2) + T4(3)) / 3 U4(2) = (T4(4) + T4(5) + T4(6)) / 3 U4(3) = (T4(7) + T4(8) + T4(9)) / 3 U4(4) = (T4(10) + T4(11) + T4(12)) / 3 U4(5) = (T4(13) + T4(14) + T4(15)) / 3 U4(6) = (U4(2) + U4(3) + U4(4) + U4(5)) / 4 S1(1) = S4(1) + S4(2) + S4(3) S1(2) = S4(4) + S4(5) + S4(6) S1(3) = S4(7) + S4(8) + S4(9) S1(4) = S4(10) + S4(11) + S4(12) S1(5) = S4(13) + S4(14) + S4(15) S1(6) = S1(1) - S1(2) - S1(3) - S1(4) - S1(5) FOR I = 1 TO 6 DOL = S1(I) * PRICE / 100 'PRINT MID$(CK$(I), 2, 20); PRINT " "; PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) 'PRINT #4, MID$(CK$(I), 2, 20); PRINT #4, " "; PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) NEXT I PRINT PRINT #4, " " CLOSE END 'THREEPHD microMETER data - CJC 7/23/1996 (C) 'NOTE KVA = KWon, KW = KWoff, KVAR = diff, PE = $/HR 'Process data switched in 15 minut intervals DIM KVA(18), KW(18), DT$(18), KVAR(18), PE(18) DIM T1(18), T2(18), T3(18), T4(18), T5(18) DIM N1(18), N2(18), N3(18), N4(18), N5(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM CNT1(18), CNT2(18) CLS : JK = 0: DFT = 1: PAGE = 1 CK$(17) = " System Total " PRINT "Use for 90 entry mode files only." INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT203": ' Testing IF DFN$ = "" THEN DFN$ = "USAGE" CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.07 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "Circuit KWoff KWon DIFF $/HR % " FIRST = 1: SKIP = 0 S300: FOR I = 1 TO 18 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" DTOFF$ = "" DTONSW = 0 DTOFFSW = 0 FOR I = 1 TO 180 S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, X$ IF EOF(3) THEN GOTO S400 'IF FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = X$ IF Y$ = "" THEN Y$ = X$ DT$(A) = Y$ IF DTOFFSW = 0 AND E < 10 THEN DTOFF$ = X$: DTOFFSW = 1 IF DTONSW = 0 AND E > 250 THEN DTON$ = X$: DTONSW = 1 'F I = 1 AND E < 10 THEN DTOFF$ = X$ 'F I = 91 AND E < 10 THEN DTOFF$ = X$ 'F I = 1 AND E > 250 THEN DTON$ = X$ 'F I = 91 AND E > 250 THEN DTON$ = X$ IF E < 10 THEN KW(A) = B + KW(A): CNT1(A) = CNT1(A) + 1 IF E > 250 THEN KVA(A) = B + KVA(A): CNT2(A) = CNT2(A) + 1 NEXT I FOR I = 1 TO 16 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I PG$ = "Page " + STR$(PAGE) PR$ = " (15 minutes off and 15 minutes on) cts/kwh:" + STR$(PRICE) PO$ = "off at: " + MID$(DTOFF$, 1, 22) + " on at: " + MID$(DTON$, 1, 22) PAGE = PAGE + 1 PRINT PG$ + PR$ PRINT P0$ PRINT PO$ PRINT " " PRINT PL$ PRINT #4, PG$ + PR$ PRINT #4, P0$ PRINT #4, PO$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 J = I KVA(I) = KVA(J) * BK(J) / 20 * LV(J) / SCAL / 1000 * PF(J) * V3 / 120 KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 KVAR(I) = KW(I) - KVA(I): N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = KVAR(I) * PRICE / 100 IF KVA(I) > 0 THEN N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) IF KVA(I) > 0 AND KW(I) > 0 THEN N4(I) = N4(I) + 1: T4(I) = T4(I) + PE(I) NEXT I FOR I = 1 TO 16 PCT = 0 IF KW(I) > 0 THEN PCT = (1 - KVA(I) / KW(I)) * 100 DT$(1) = " " PRINT CK$(I); PRINT #4, CK$(I); US$ = " ####.## ####.## ####.## ####.## ####.##" PRINT USING US$; KW(I); KVA(I); KVAR(I); PE(I); PCT PRINT #4, USING US$; KW(I); KVA(I); KVAR(I); PE(I); PCT NEXT I PRINT 'RINT " " PRINT #4, " " 'RINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 LOCATE (1) GOTO S300 S400: CLS PG$ = "Page " + STR$(PAGE) PRINT PG$ + PR$ PRINT P0$ PRINT " " PRINT #4, PG$ + PR$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) 'IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) 'IF N4(I) > 0 THEN T4(I) = T4(I) / N4(I) T3(I) = T2(I) - T1(I) T4(I) = T3(I) * PRICE / 100 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) FOR I = 1 TO 16 PCT = 0 IF T2(I) > 0 THEN PCT = (1 - T1(I) / T2(I)) * 100 PRINT CK$(I); PRINT USING US$; T2(I); T1(I); T3(I); T4(I); PCT PRINT #4, CK$(I); PRINT #4, USING US$; T2(I); T1(I); T3(I); T4(I); PCT NEXT I CLOSE END 'THREEPHE microMETER data - CJC 5/31/1996 (C) DIM KVA(38), KW(38), DT$(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1: DTL = 0: EFSW = 0 CK$(17) = "System Total " PRINT "THREEPHE D for detail (or xUT223y010)" IF MID$(COMMAND$, 1, 1) = "D" THEN DTL = 1 IF LEN(COMMAND$) > 5 THEN DFN$ = MID$(COMMAND$, 2, 5): V200$ = MID$(COMMAND$, 7, 1): MINU = VAL(MID$(COMMAND$, 8, 3)): GOTO S100 INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT225" INPUT "v2.00? (y/n)"; V200$ S090: INPUT "Enter minutes 10 30 60 or 120 ", MINU IF MINU < 10 THEN MINU = 10 IF MINU = 10 THEN GOTO S100 IF MINU = 15 THEN GOTO S100 IF MINU = 30 THEN GOTO S100 IF MINU = 60 THEN GOTO S100 IF MINU = 10 THEN GOTO S100 S100: INDX = 12 * MINU IF DFN$ = "" THEN DFN$ = "USAGE" CLS CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.11 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" OPEN "O", #5, "SHEET.TXT" OPEN "O", #6, "SHEE2.TXT" PL$ = "CIRCUIT LOAD KVA KW KVAR PF KWH % " SS1$ = " KVA KW KVAR PF KWH " SS2$ = SS1$ + SS1$ + SS1$ + SS1$ + SS1$ + SS1$ PRINT #5, SS2$ + " ENTRY" PRINT #6, SS2$ + " ENTRY" FIRST = 1: SKIP = 0 DT$(1) = CK$(1) DT$(2) = CK$(4) DT$(3) = CK$(7) DT$(4) = CK$(10) DT$(5) = CK$(13) DT$(6) = CK$(16) S300: FOR I = 1 TO 38 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" DTOFF$ = "" DTONSW = 0 DTOFFSW = 0 FOR I = 1 TO INDX S310: IF EOF(2) THEN EFSW = 1 IF EOF(3) THEN EFSW = 1 IF EFSW = 1 THEN GOTO S311 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF VAL(MID$(x$, 5, 1)) > 0 AND I = 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 S311: FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use ' 0 4 8 12 with new threeph5 ' 4 is meaningless with tph5 EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 IF E > 7 THEN DTONSW = 0 IF E < 8 THEN DTOFFSW = 0 IF DTOFFSW = 0 AND EUS = 1 THEN DTOFF$ = x$: DTOFFSW = 1 IF DTONSW = 0 AND EUS = 0 THEN DTON$ = x$: DTONSW = 1 AA = A + 18 * EUS: 'DISPLACE USES OFF BY 18 IF AA > 38 THEN AA = 38 FF = 1 IF EUS = 0 THEN FF = C01 IF V200$ = "y" THEN EAP = 2 IF V200$ = "Y" THEN EAP = 2 IF V200$ = "x" THEN EAP = 3 IF V200$ = "X" THEN EAP = 3 IF EAP = 0 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 1 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 IF EAP = 2 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 3 THEN KW(AA) = FF * C + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 2 THEN KVA(AA) = FF * C + KVA(AA): CNT2(AA) = CNT2(AA) + 1 IF EAP = 3 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 NEXT I FOR I = 1 TO 38 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I PG$ = "Page " + STR$(PAGE) PAG0 = PAGE PAGE = PAGE + 1 PO$ = "off at: " + MID$(DTOFF$, 1, 22) PN$ = " on at: " + MID$(DTON$, 1, 22) PRINT PG$ PRINT P0$ PRINT PN$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, PN$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) J = I + 18 KVA(J) = KVA(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(J) = KW(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(J) = 0 IF KVA(J) > KW(J) AND KW(J) > 0 THEN KVAR(J) = (KVA(J) ^ 2 - KW(J) ^ 2) ^ .5: N3(J) = N3(J) + 1: T3(J) = T3(J) + KVAR(J) PE(J) = 0 IF KVA(J) > 0 THEN PE(J) = KW(J) / KVA(J): N1(J) = N1(J) + 1: T1(J) = T1(J) + KVA(J) IF KW(J) > 0 THEN N2(J) = N2(J) + 1: T2(J) = T2(J) + KW(J) NEXT I FOR I = 1 TO 2 IF I = 1 THEN K = 0 IF I = 2 THEN K = 18 U1(K + 1) = KVA(K + 1) + KVA(K + 2) + KVA(K + 3) U1(K + 2) = KVA(K + 4) + KVA(K + 5) + KVA(K + 6) U1(K + 3) = KVA(K + 7) + KVA(K + 8) + KVA(K + 9) U1(K + 4) = KVA(K + 10) + KVA(K + 11) + KVA(K + 12) U1(K + 5) = KVA(K + 13) + KVA(K + 14) + KVA(K + 15) U1(K + 6) = U1(K + 1) - U1(K + 2) - U1(K + 3) - U1(K + 4) - U1(K + 5) U2(K + 1) = KW(K + 1) + KW(K + 2) + KW(K + 3) U2(K + 2) = KW(K + 4) + KW(K + 5) + KW(K + 6) U2(K + 3) = KW(K + 7) + KW(K + 8) + KW(K + 9) U2(K + 4) = KW(K + 10) + KW(K + 11) + KW(K + 12) U2(K + 5) = KW(K + 13) + KW(K + 14) + KW(K + 15) U2(K + 6) = U2(K + 1) - U2(K + 2) - U2(K + 3) - U2(K + 4) - U2(K + 5) U3(K + 1) = 0: IF U1(K + 1) > U2(K + 1) AND U1(K + 1) > 0 AND U2(K + 1) > 0 THEN U3(K + 1) = (U1(K + 1) ^ 2 - U2(K + 1) ^ 2) ^ .5 U3(K + 2) = 0: IF U1(K + 2) > U2(K + 2) AND U1(K + 2) > 0 AND U2(K + 2) > 0 THEN U3(K + 2) = (U1(K + 2) ^ 2 - U2(K + 2) ^ 2) ^ .5 U3(K + 3) = 0: IF U1(K + 3) > U2(K + 3) AND U1(K + 3) > 0 AND U2(K + 3) > 0 THEN U3(K + 3) = (U1(K + 3) ^ 2 - U2(K + 3) ^ 2) ^ .5 U3(K + 4) = 0: IF U1(K + 4) > U2(K + 4) AND U1(K + 4) > 0 AND U2(K + 4) > 0 THEN U3(K + 4) = (U1(K + 4) ^ 2 - U2(K + 4) ^ 2) ^ .5 U3(K + 5) = 0: IF U1(K + 5) > U2(K + 5) AND U1(K + 5) > 0 AND U2(K + 5) > 0 THEN U3(K + 5) = (U1(K + 5) ^ 2 - U2(K + 5) ^ 2) ^ .5 U3(K + 6) = 0: IF U1(K + 6) > U2(K + 6) AND U1(K + 6) > 0 AND U2(K + 6) > 0 THEN U3(K + 6) = (U1(K + 6) ^ 2 - U2(K + 6) ^ 2) ^ .5 U4(K + 1) = 0: IF U1(K + 1) > 0 THEN U4(K + 1) = U2(K + 1) / U1(K + 1) U4(K + 2) = 0: IF U1(K + 2) > 0 THEN U4(K + 2) = U2(K + 2) / U1(K + 2) U4(K + 3) = 0: IF U1(K + 3) > 0 THEN U4(K + 3) = U2(K + 3) / U1(K + 3) U4(K + 4) = 0: IF U1(K + 4) > 0 THEN U4(K + 4) = U2(K + 4) / U1(K + 4) U4(K + 5) = 0: IF U1(K + 5) > 0 THEN U4(K + 5) = U2(K + 5) / U1(K + 5) U4(K + 6) = 0: IF U1(K + 6) > 0 THEN U4(K + 6) = U2(K + 6) / U1(K + 6) NEXT I LIN = 6 + DTL * 10 FOR I = 1 TO LIN IF DTL = 0 THEN PRINT DT$(I); IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## ####.## ####.#" KWH1 = U2(I) * MINU / 60 KWH2 = KW(I) * MINU / 60 IF DTL = 0 THEN PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #5, U1(I); U2(I); U3(I); U4(I); KWH1; IF DTL = 1 THEN PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #5, KVA(I); KW(I); KVAR(I); PE(I); KWH2; NEXT I IF DTL = 1 AND SKIP = 0 THEN INPUT x$: CLS : PRINT : PRINT : PRINT PRINT PRINT PO$ PRINT #4, " " PRINT #5, PAG0 PRINT #4, PO$ LIN = 6 + DTL * 10 FOR I = 1 TO LIN J = I + 18 IF DTL = 0 THEN PRINT DT$(I); IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## ####.## ####.#" KWH1 = U2(J) * MINU / 60 KWH2 = KW(J) * MINU / 60 PCT1 = 0: IF U2(I) > 0 THEN PCT1 = U2(J) / U2(I) * 100 - 100 PCT2 = 0: IF KW(I) > 0 THEN PCT2 = KW(J) / KW(I) * 100 - 100 IF PCT1 > 99 OR PCT1 < -99 THEN PCT1 = 0 IF PCT2 > 99 OR PCT2 < -99 THEN PCT2 = 0 IF DTL = 0 THEN PRINT USING US$; I; U1(J); U2(J); U3(J); U4(J); KWH1; PCT1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(J); U2(J); U3(J); U4(J); KWH1; PCT1 IF DTL = 0 THEN PRINT #6, U1(J); U2(J); U3(J); U4(J); KWH1; IF DTL = 1 THEN PRINT USING US$; I; KVA(J); KW(J); KVAR(J); PE(J); KWH2; PCT2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(J); KW(J); KVAR(J); PE(J); KWH2; PCT2 IF DTL = 1 THEN PRINT #6, KVA(J); KW(J); KVAR(J); PE(J); KWH2; NEXT I PRINT PRINT #4, " " PRINT #6, PAG0 IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 IF xx$ = "X" THEN STOP LOCATE (1) IF EFSW <> 1 THEN GOTO S300 S400: CLOSE CLS END 'THREEPHF microMETER data - CJC 8/16/1996 (C) DIM KVA(38), KW(38), DT$(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1: DTL = 0: EFSW = 0: DT2 = 0 CK$(17) = "System Total " PRINT "THREEPHF D for detail (or xUT223y010)" IF MID$(COMMAND$, 1, 1) = "D" THEN DTL = 1 IF MID$(COMMAND$, 1, 1) = "d" THEN DTL = 1: DT2 = 1 IF LEN(COMMAND$) > 5 THEN DFN$ = MID$(COMMAND$, 2, 5): V200$ = MID$(COMMAND$, 7, 1): MINU = VAL(MID$(COMMAND$, 8, 3)): GOTO S091 INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT225" INPUT "v2.00? (y/n)"; V200$ S090: INPUT "Enter minutes 10 30 60 or 120 ", MINU S091: MIN2 = MINU IF MINU < 10 THEN MINU = 10 IF MINU = 10 THEN GOTO S100 IF MINU = 15 THEN GOTO S100 IF MINU = 30 THEN GOTO S100 IF MINU = 60 THEN GOTO S100 IF MINU = 10 THEN GOTO S100 IF MINU > 990 THEN MINU = 1440: '1440=24*60 S100: INDX = 6 * MINU IF DFN$ = "" THEN DFN$ = "USAGE" CLS CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.15 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" OPEN "O", #5, "SHEET.TXT" PL$ = "CIRCUIT LOAD KVA KW KVAR PF KWH " SS1$ = " KVA KW KVAR PF KWH " SS2$ = SS1$ + SS1$ + SS1$ + SS1$ + SS1$ + SS1$ PRINT #5, SS2$ + " ENTRY" FIRST = 1: SKIP = 0 DT$(1) = CK$(1) DT$(2) = CK$(4) DT$(3) = CK$(7) DT$(4) = CK$(10) DT$(5) = CK$(13) DT$(6) = CK$(16) S300: FOR I = 1 TO 38 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" 'DTOFF$ = "" DTONSW = 0 'DTOFFSW = 0 EUT = 0 FOR I = 1 TO INDX S310: IF EOF(2) THEN EFSW = 1 IF EOF(3) THEN EFSW = 1 IF EFSW = 1 THEN GOTO S311 INPUT #2, A, B, C, D, E LINE INPUT #3, X$ 'IF VAL(MID$(X$, 5, 1)) > 0 AND I = 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 S311: FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = X$ IF Y$ = "" THEN Y$ = X$ 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use ' 0 4 8 12 with new threeph5 ' 4 is meaningless with tph5 EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 OR E = 255 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 EUT = EUT + EUS IF I = 1 THEN DTON$ = X$ AA = A + 0 * EUS: 'DISPLACE USES OFF BY 18 IF AA > 38 THEN AA = 38 FF = 1 IF EUS = 0 THEN FF = C01 IF V200$ = "y" THEN EAP = 2 IF V200$ = "Y" THEN EAP = 2 IF V200$ = "x" THEN EAP = 3 IF V200$ = "X" THEN EAP = 3 IF EAP = 0 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 1 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 IF EAP = 2 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 3 THEN KW(AA) = FF * C + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 2 THEN KVA(AA) = FF * C + KVA(AA): CNT2(AA) = CNT2(AA) + 1 IF EAP = 3 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 NEXT I FOR I = 1 TO 38 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I TEMP = 0 PG$ = "Page " + STR$(PAGE) + " Degree Day Temp (F) = " + STR$(TEMP) PAG0 = PAGE PAGE = PAGE + 1 'PO$ = "off at: " + MID$(DTOFF$, 1, 22) STAT$ = "mixed " E45 = 45 * MINU / 10 E15 = 15 * MINU / 10 IF EUT > E45 THEN STAT$ = "USES off" IF EUT < E15 THEN STAT$ = "USES on " PN$ = "Start: " + MID$(DTON$, 1, 22) + " " + STAT$ PRINT PG$ PRINT P0$ PRINT PN$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, PN$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) NEXT I FOR I = 1 TO 1 IF I = 1 THEN K = 0 IF I = 2 THEN K = 18 U1(K + 1) = KVA(K + 1) + KVA(K + 2) + KVA(K + 3) U1(K + 2) = KVA(K + 4) + KVA(K + 5) + KVA(K + 6) U1(K + 3) = KVA(K + 7) + KVA(K + 8) + KVA(K + 9) U1(K + 4) = KVA(K + 10) + KVA(K + 11) + KVA(K + 12) U1(K + 5) = KVA(K + 13) + KVA(K + 14) + KVA(K + 15) U1(K + 6) = U1(K + 1) - U1(K + 2) - U1(K + 3) - U1(K + 4) - U1(K + 5) U2(K + 1) = KW(K + 1) + KW(K + 2) + KW(K + 3) U2(K + 2) = KW(K + 4) + KW(K + 5) + KW(K + 6) U2(K + 3) = KW(K + 7) + KW(K + 8) + KW(K + 9) U2(K + 4) = KW(K + 10) + KW(K + 11) + KW(K + 12) U2(K + 5) = KW(K + 13) + KW(K + 14) + KW(K + 15) U2(K + 6) = U2(K + 1) - U2(K + 2) - U2(K + 3) - U2(K + 4) - U2(K + 5) U3(K + 1) = 0: IF U1(K + 1) > U2(K + 1) AND U1(K + 1) > 0 AND U2(K + 1) > 0 THEN U3(K + 1) = (U1(K + 1) ^ 2 - U2(K + 1) ^ 2) ^ .5 U3(K + 2) = 0: IF U1(K + 2) > U2(K + 2) AND U1(K + 2) > 0 AND U2(K + 2) > 0 THEN U3(K + 2) = (U1(K + 2) ^ 2 - U2(K + 2) ^ 2) ^ .5 U3(K + 3) = 0: IF U1(K + 3) > U2(K + 3) AND U1(K + 3) > 0 AND U2(K + 3) > 0 THEN U3(K + 3) = (U1(K + 3) ^ 2 - U2(K + 3) ^ 2) ^ .5 U3(K + 4) = 0: IF U1(K + 4) > U2(K + 4) AND U1(K + 4) > 0 AND U2(K + 4) > 0 THEN U3(K + 4) = (U1(K + 4) ^ 2 - U2(K + 4) ^ 2) ^ .5 U3(K + 5) = 0: IF U1(K + 5) > U2(K + 5) AND U1(K + 5) > 0 AND U2(K + 5) > 0 THEN U3(K + 5) = (U1(K + 5) ^ 2 - U2(K + 5) ^ 2) ^ .5 U3(K + 6) = 0: IF U1(K + 6) > U2(K + 6) AND U1(K + 6) > 0 AND U2(K + 6) > 0 THEN U3(K + 6) = (U1(K + 6) ^ 2 - U2(K + 6) ^ 2) ^ .5 U4(K + 1) = 0: IF U1(K + 1) > 0 THEN U4(K + 1) = U2(K + 1) / U1(K + 1) U4(K + 2) = 0: IF U1(K + 2) > 0 THEN U4(K + 2) = U2(K + 2) / U1(K + 2) U4(K + 3) = 0: IF U1(K + 3) > 0 THEN U4(K + 3) = U2(K + 3) / U1(K + 3) U4(K + 4) = 0: IF U1(K + 4) > 0 THEN U4(K + 4) = U2(K + 4) / U1(K + 4) U4(K + 5) = 0: IF U1(K + 5) > 0 THEN U4(K + 5) = U2(K + 5) / U1(K + 5) U4(K + 6) = 0: IF U1(K + 6) > 0 THEN U4(K + 6) = U2(K + 6) / U1(K + 6) NEXT I LIN = 6 + DTL * 10 FOR I = 1 TO LIN IF DTL = 0 THEN PRINT DT$(I); IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" KWH1 = U2(I) * MINU / 60 KWH2 = KW(I) * MINU / 60 IF DTL = 0 THEN PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #5, U1(I); U2(I); U3(I); U4(I); KWH1; IF DTL = 1 THEN PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DT2 = 1 AND I < 3 THEN GOTO S390 IF DT2 = 1 AND I = 3 THEN KVA(I) = U1(I): KW(I) = U2(I): KVAR(I) = U3(I): PE(I) = U4(I): KWH2 = KWH1 IF DTL = 1 THEN PRINT #5, KVA(I); KW(I); KVAR(I); PE(I); KWH2; S390: NEXT I PRINT PRINT #4, " " PRINT #5, PAG0 IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 IF xx$ = "X" THEN STOP LOCATE (1) IF EFSW <> 1 THEN GOTO S300 S400: CLOSE CLS END 'THREEPHF microMETER data - CJC 8/16/1996 (C) DIM KVA(38), KW(38), DT$(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1: DTL = 0 PRINT "Use THREEPH5 data with matching time." PRINT "THREEPHF D for detail" IF COMMAND$ = "D" THEN DTL = 1 CK$(17) = " System Total " INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT225" S090: INPUT "Enter minutes 10 30 60 or 120 ", MINU IF MINU < 10 THEN MINU = 10 IF MINU = 10 THEN GOTO S100 IF MINU = 15 THEN GOTO S100 IF MINU = 30 THEN GOTO S100 IF MINU = 60 THEN GOTO S100 IF MINU = 10 THEN GOTO S100 'GOTO S090 S100: INDX = 6 * MINU 'INDX = INDX - 1 IF DFN$ = "" THEN DFN$ = "USAGE" CLS CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "CIRCUIT LOAD KVA KW KVAR PF KWH " FIRST = 1: SKIP = 0 DT$(1) = CK$(1) DT$(2) = CK$(4) DT$(3) = CK$(7) DT$(4) = CK$(10) DT$(5) = CK$(13) DT$(6) = CK$(16) S300: FOR I = 1 TO 38 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" DTOFF$ = "" DTONSW = 0 DTOFFSW = 0 EUT = 0 ' 180 = 15 MIN FOR I = 1 TO INDX S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF EOF(3) THEN GOTO S400 IF VAL(MID$(x$, 5, 1)) > 0 AND I = 1 THEN GOTO S310 'F FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ 'DT$(A) = Y$ 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 IF E = 255 THEN EAP = 1 EUT = EUT + EUS 'IF MINU = 10 AND E > 50 THEN EUS = 1: 'TEST 'IF MINU = 10 AND I > INDX / 2 THEN EAP = 1: 'TEST 'IF E > 7 AND I = 1 THEN DTONSW = 0 'IF E < 8 AND I = 1 THEN DTOFFSW = 0 'IF DTOFFSW = 0 AND EUS = 1 THEN DTOFF$ = x$: DTOFFSW = 1 'IF DTONSW = 0 AND EUS = 0 THEN DTON$ = x$: DTONSW = 1 IF I = 1 THEN DTON$ = x$ AA = A + 0 * EUS: 'DISPLACE USES OFF BY 18 IF AA > 38 THEN AA = 38 FF = 1 IF EUS = 0 THEN FF = C2 IF EAP = 0 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 1 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 NEXT I FOR I = 1 TO 38 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I PG$ = "Page " + STR$(PAGE) PAGE = PAGE + 1 PO$ = "off at: " + MID$(DTOFF$, 1, 22) STAT$ = "mixed " E45 = 45 * MINU / 10 E15 = 15 * MINU / 10 IF EUT > E45 THEN STAT$ = "USES off" IF EUT < E15 THEN STAT$ = "USES on " PN$ = "Start: " + MID$(DTON$, 1, 22) + " " + STAT$ PRINT PG$ PRINT P0$ PRINT PN$ PRINT " " PRINT PL$ PRINT #4, PG$ PRINT #4, P0$ PRINT #4, PN$ PRINT #4, " " PRINT #4, PL$ FOR I = 1 TO 16 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) 'J = I + 18 'KVA(J) = KVA(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) 'KW(J) = KW(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 'KVAR(J) = 0 'IF KVA(J) > KW(J) AND KW(J) > 0 THEN KVAR(J) = (KVA(J) ^ 2 - KW(J) ^ 2) ^ .5: N3(J) = N3(J) + 1: T3(J) = T3(J) + KVAR(J) 'PE(J) = 0 'IF KVA(J) > 0 THEN PE(J) = KW(J) / KVA(J): N1(J) = N1(J) + 1: T1(J) = T1(J) + KVA(J) 'IF KW(J) > 0 THEN N2(J) = N2(J) + 1: T2(J) = T2(J) + KW(J) NEXT I FOR I = 1 TO 1 IF I = 1 THEN K = 0 IF I = 2 THEN K = 18 U1(K + 1) = KVA(K + 1) + KVA(K + 2) + KVA(K + 3) U1(K + 2) = KVA(K + 4) + KVA(K + 5) + KVA(K + 6) U1(K + 3) = KVA(K + 7) + KVA(K + 8) + KVA(K + 9) U1(K + 4) = KVA(K + 10) + KVA(K + 11) + KVA(K + 12) U1(K + 5) = KVA(K + 13) + KVA(K + 14) + KVA(K + 15) U1(K + 6) = U1(K + 1) - U1(K + 2) - U1(K + 3) - U1(K + 4) - U1(K + 5) U2(K + 1) = KW(K + 1) + KW(K + 2) + KW(K + 3) U2(K + 2) = KW(K + 4) + KW(K + 5) + KW(K + 6) U2(K + 3) = KW(K + 7) + KW(K + 8) + KW(K + 9) U2(K + 4) = KW(K + 10) + KW(K + 11) + KW(K + 12) U2(K + 5) = KW(K + 13) + KW(K + 14) + KW(K + 15) U2(K + 6) = U2(K + 1) - U2(K + 2) - U2(K + 3) - U2(K + 4) - U2(K + 5) U3(K + 1) = 0: IF U1(K + 1) > U2(K + 1) AND U1(K + 1) > 0 THEN U3(K + 1) = (U1(K + 1) ^ 2 - U2(K + 1) ^ 2) ^ .5 U3(K + 2) = 0: IF U1(K + 2) > U2(K + 2) AND U1(K + 2) > 0 THEN U3(K + 2) = (U1(K + 2) ^ 2 - U2(K + 2) ^ 2) ^ .5 U3(K + 3) = 0: IF U1(K + 3) > U2(K + 3) AND U1(K + 3) > 0 THEN U3(K + 3) = (U1(K + 3) ^ 2 - U2(K + 3) ^ 2) ^ .5 U3(K + 4) = 0: IF U1(K + 4) > U2(K + 4) AND U1(K + 4) > 0 THEN U3(K + 4) = (U1(K + 4) ^ 2 - U2(K + 4) ^ 2) ^ .5 U3(K + 5) = 0: IF U1(K + 5) > U2(K + 5) AND U1(K + 5) > 0 THEN U3(K + 5) = (U1(K + 5) ^ 2 - U2(K + 5) ^ 2) ^ .5 U3(K + 6) = 0: IF U1(K + 6) > U2(K + 6) AND U1(K + 6) > 0 THEN U3(K + 6) = (U1(K + 6) ^ 2 - U2(K + 6) ^ 2) ^ .5 U4(K + 1) = 0: IF U1(K + 1) > 0 THEN U4(K + 1) = U2(K + 1) / U1(K + 1) U4(K + 2) = 0: IF U1(K + 2) > 0 THEN U4(K + 2) = U2(K + 2) / U1(K + 2) U4(K + 3) = 0: IF U1(K + 3) > 0 THEN U4(K + 3) = U2(K + 3) / U1(K + 3) U4(K + 4) = 0: IF U1(K + 4) > 0 THEN U4(K + 4) = U2(K + 4) / U1(K + 4) U4(K + 5) = 0: IF U1(K + 5) > 0 THEN U4(K + 5) = U2(K + 5) / U1(K + 5) U4(K + 6) = 0: IF U1(K + 6) > 0 THEN U4(K + 6) = U2(K + 6) / U1(K + 6) NEXT I LIN = 6 + DTL * 10 FOR I = 1 TO LIN IF DTL = 0 THEN PRINT DT$(I); IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" KWH1 = U2(I) * MINU / 60 KWH2 = KW(I) * MINU / 60 IF DTL = 0 THEN PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 1 THEN PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 NEXT I 'IF DTL = 1 AND SKIP = 0 THEN INPUT x$: CLS : PRINT : PRINT : PRINT 'PRINT 'PRINT PO$ 'PRINT #4, " " 'PRINT #4, PO$ 'LIN = 6 + DTL * 10 'FOR I = 1 TO LIN 'J = I + 18 'IF DTL = 0 THEN PRINT DT$(I); 'IF DTL = 0 THEN PRINT #4, DT$(I); 'IF DTL = 1 THEN PRINT CK$(I); 'IF DTL = 1 THEN PRINT #4, CK$(I); 'US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" 'IF DTL = 0 THEN PRINT USING US$; I; U1(J); U2(J); U3(J); U4(J) 'IF DTL = 0 THEN PRINT #4, USING US$; I; U1(J); U2(J); U3(J); U4(J) 'IF DTL = 1 THEN PRINT USING US$; I; KVA(J); KW(J); KVAR(J); PE(J) 'IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(J); KW(J); KVAR(J); PE(J) 'NEXT I PRINT PRINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 IF xx$ = "X" THEN STOP LOCATE (1) GOTO S300 S400: CLS STOP PG$ = "Page " + STR$(PAGE) PRINT PG$ PRINT P0$ PRINT " " PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " MID$(PL$, 67, 10) = "KWH " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 S1(I) = T1(I) S2(I) = T2(I) IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) PFC = T4(I) IF PFC = 0 THEN PFC = 1 S3(I) = S1(I) * PFC + S2(I) S4(I) = S3(I) * .0445 * 2390.625 / SCA2 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) CK$(2) = CK$(4) CK$(3) = CK$(7) CK$(4) = CK$(10) CK$(5) = CK$(13) CK$(6) = CK$(13) U1(1) = T1(1) + T1(2) + T1(3) U1(2) = T1(4) + T1(5) + T1(6) U1(3) = T1(7) + T1(8) + T1(9) U1(4) = T1(10) + T1(11) + T1(12) U1(5) = T1(13) + T1(14) + T1(15) U1(6) = U1(1) - U1(2) - U1(3) - U1(4) - U1(5) U2(1) = T2(1) + T2(2) + T2(3) U2(2) = T2(4) + T2(5) + T2(6) U2(3) = T2(7) + T2(8) + T2(9) U2(4) = T2(10) + T2(11) + T2(12) U2(5) = T2(13) + T2(14) + T2(15) U2(6) = U2(1) - U2(2) - U2(3) - U2(4) - U2(5) U3(1) = T3(1) + T3(2) + T3(3) U3(2) = T3(4) + T3(5) + T3(6) U3(3) = T3(7) + T3(8) + T3(9) U3(4) = T3(10) + T3(11) + T3(12) U3(5) = T3(13) + T3(14) + T3(15) U3(6) = U3(1) - U3(2) - U3(3) - U3(4) - U3(5) U4(1) = (T4(1) + T4(2) + T4(3)) / 3 U4(2) = (T4(4) + T4(5) + T4(6)) / 3 U4(3) = (T4(7) + T4(8) + T4(9)) / 3 U4(4) = (T4(10) + T4(11) + T4(12)) / 3 U4(5) = (T4(13) + T4(14) + T4(15)) / 3 U4(6) = (U4(2) + U4(3) + U4(4) + U4(5)) / 4 S1(1) = S4(1) + S4(2) + S4(3) S1(2) = S4(4) + S4(5) + S4(6) S1(3) = S4(7) + S4(8) + S4(9) S1(4) = S4(10) + S4(11) + S4(12) S1(5) = S4(13) + S4(14) + S4(15) S1(6) = S1(1) - S1(2) - S1(3) - S1(4) - S1(5) FOR I = 1 TO 6 DOL = S1(I) * PRICE / 100 'PRINT MID$(CK$(I), 2, 20); PRINT " "; PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) 'PRINT #4, MID$(CK$(I), 2, 20); PRINT #4, " "; PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) NEXT I PRINT PRINT #4, " " CLOSE END 'THREEPHF microMETER data - CJC 8/16/1996 (C) DIM KVA(38), KW(38), DT$(38), KVAR(38), PE(38) DIM T1(38), T2(38), T3(38), T4(38), S1(18), S2(18), S3(18), S4(18) DIM U1(38), U2(38), U3(38), U4(38) DIM N1(38), N2(38), N3(38), N4(38), N5(38) DIM CNT1(38), CNT2(38) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CLS : JK = 0: DFT = 1: PAGE = 1: DTL = 0 PRINT "Use THREEPH5 data with matching time." PRINT "THREEPHF D for detail" IF COMMAND$ = "D" THEN DTL = 1 CK$(17) = " System Total " INPUT "Enter file name+day e.g. UT123 ", DFN$ 'DFN$ = "UT225" S090: INPUT "Enter minutes 10 30 60 or 120 ", MINU IF MINU < 10 THEN MINU = 10 IF MINU = 10 THEN GOTO S100 IF MINU = 15 THEN GOTO S100 IF MINU = 30 THEN GOTO S100 IF MINU = 60 THEN GOTO S100 IF MINU = 10 THEN GOTO S100 'GOTO S090 S100: INDX = 6 * MINU 'INDX = INDX - 1 IF DFN$ = "" THEN DFN$ = "USAGE" CLS CLOSE OPEN "I", #1, "MICRO.TXT" LINE INPUT #1, P0$ CLOSE OPEN "I", #1, "MICRO.DAT" INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C1, C2, C3, C4 INPUT #1, C5, C6, C7, C8 INPUT #1, C9, C10, V1, V2 CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 BK(17) = BK(17) + BK(I) NEXT I CLOSE P1$ = " x=exit " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.06 " + CHR$(176) LOCATE (25) PRINT P1$ LOCATE 1 OPEN "I", #2, DFN$ + ".CAP" OPEN "I", #3, DFN$ + ".DTE" OPEN "O", #4, "PRINT.TXT" PL$ = "CIRCUIT LOAD KVA KW KVAR PF KWH " FIRST = 1: SKIP = 0 DT$(1) = CK$(1) DT$(2) = CK$(4) DT$(3) = CK$(7) DT$(4) = CK$(10) DT$(5) = CK$(13) DT$(6) = CK$(16) S300: FOR I = 1 TO 38 KVA(I) = 0 KW(I) = 0 KVAR(I) = 0 PE(I) = 0 CNT1(I) = 0 CNT2(I) = 0 NEXT I DTON$ = "" DTOFF$ = "" DTONSW = 0 DTOFFSW = 0 EUT = 0 ' 180 = 15 MIN FOR I = 1 TO INDX S310: IF EOF(2) THEN GOTO S400 INPUT #2, A, B, C, D, E LINE INPUT #3, x$ IF EOF(3) THEN GOTO S400 IF VAL(MID$(x$, 5, 1)) > 0 AND I = 1 THEN GOTO S310 'F FIRST = 1 AND A <> 1 THEN GOTO S310 IF A = 0 THEN GOTO S310 FIRST = 0 F = 0 F = I / 2 G = INT(I / 2) IF F = G THEN Y$ = x$ IF Y$ = "" THEN Y$ = x$ 'DT$(A) = Y$ 'Valid E values 0 1 2 4 5 6 8 9 10 12 13 14 ' ap use ap+use EAP = 0 EUS = 0 IF E = 4 OR E = 5 OR E = 6 THEN EAP = 1 IF E = 8 OR E = 9 OR E = 10 THEN EUS = 1 IF E = 12 OR E = 13 OR E = 14 THEN EAP = 1: EUS = 1 EUT = EUT + EUS 'IF MINU = 10 AND E > 50 THEN EUS = 1: 'TEST 'IF MINU = 10 AND I > INDX / 2 THEN EAP = 1: 'TEST 'IF E > 7 AND I = 1 THEN DTONSW = 0 'IF E < 8 AND I = 1 THEN DTOFFSW = 0 'IF DTOFFSW = 0 AND EUS = 1 THEN DTOFF$ = x$: DTOFFSW = 1 'IF DTONSW = 0 AND EUS = 0 THEN DTON$ = x$: DTONSW = 1 IF I = 1 THEN DTON$ = x$ AA = A + 0 * EUS: 'DISPLACE USES OFF BY 18 IF AA > 38 THEN AA = 38 FF = 1 IF EUS = 0 THEN FF = C2 IF EAP = 0 THEN KW(AA) = FF * B + KW(AA): CNT1(AA) = CNT1(AA) + 1 IF EAP = 1 THEN KVA(AA) = FF * B + KVA(AA): CNT2(AA) = CNT2(AA) + 1 NEXT I FOR I = 1 TO 38 IF CNT2(I) > 0 THEN KVA(I) = KVA(I) / CNT2(I) IF CNT1(I) > 0 THEN KW(I) = KW(I) / CNT1(I) NEXT I PG$ = "Page " + STR$(PAGE) PAGE = PAGE + 1 PO$ = "off at: " + MID$(DTOFF$, 1, 22) STAT$ = "mixed " E45 = 45 * MINU / 10 E15 = 15 * MINU / 10 IF EUT > E45 THEN STAT$ = "USES off" IF EUT < E15 THEN STAT$ = "USES on " PN$ = "Start: " + MID$(DTON$, 1, 22) + " " + STAT$ PRINT PG$ PRINT P0$ PRINT PN$ PRINT " " PRINT PL$ 'PRINT #4, PG$ 'PRINT #4, P0$ 'PRINT #4, PN$ 'PRINT #4, " " 'PRINT #4, PL$ FOR I = 1 TO 16 KVA(I) = KVA(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) KW(I) = KW(I) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 KVAR(I) = 0 IF KVA(I) > KW(I) AND KW(I) > 0 THEN KVAR(I) = (KVA(I) ^ 2 - KW(I) ^ 2) ^ .5: N3(I) = N3(I) + 1: T3(I) = T3(I) + KVAR(I) PE(I) = 0 IF KVA(I) > 0 THEN PE(I) = KW(I) / KVA(I): N1(I) = N1(I) + 1: T1(I) = T1(I) + KVA(I) IF KW(I) > 0 THEN N2(I) = N2(I) + 1: T2(I) = T2(I) + KW(I) 'J = I + 18 'KVA(J) = KVA(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) 'KW(J) = KW(J) * BK(I) / 20 * LV(I) / SCAL / 1000 * PF(I) * V3 / 120 'KVAR(J) = 0 'IF KVA(J) > KW(J) AND KW(J) > 0 THEN KVAR(J) = (KVA(J) ^ 2 - KW(J) ^ 2) ^ .5: N3(J) = N3(J) + 1: T3(J) = T3(J) + KVAR(J) 'PE(J) = 0 'IF KVA(J) > 0 THEN PE(J) = KW(J) / KVA(J): N1(J) = N1(J) + 1: T1(J) = T1(J) + KVA(J) 'IF KW(J) > 0 THEN N2(J) = N2(J) + 1: T2(J) = T2(J) + KW(J) NEXT I FOR I = 1 TO 1 IF I = 1 THEN K = 0 IF I = 2 THEN K = 18 U1(K + 1) = KVA(K + 1) + KVA(K + 2) + KVA(K + 3) U1(K + 2) = KVA(K + 4) + KVA(K + 5) + KVA(K + 6) U1(K + 3) = KVA(K + 7) + KVA(K + 8) + KVA(K + 9) U1(K + 4) = KVA(K + 10) + KVA(K + 11) + KVA(K + 12) U1(K + 5) = KVA(K + 13) + KVA(K + 14) + KVA(K + 15) U1(K + 6) = U1(K + 1) - U1(K + 2) - U1(K + 3) - U1(K + 4) - U1(K + 5) U2(K + 1) = KW(K + 1) + KW(K + 2) + KW(K + 3) U2(K + 2) = KW(K + 4) + KW(K + 5) + KW(K + 6) U2(K + 3) = KW(K + 7) + KW(K + 8) + KW(K + 9) U2(K + 4) = KW(K + 10) + KW(K + 11) + KW(K + 12) U2(K + 5) = KW(K + 13) + KW(K + 14) + KW(K + 15) U2(K + 6) = U2(K + 1) - U2(K + 2) - U2(K + 3) - U2(K + 4) - U2(K + 5) U3(K + 1) = 0: IF U1(K + 1) > U2(K + 1) AND U1(K + 1) > 0 THEN U3(K + 1) = (U1(K + 1) ^ 2 - U2(K + 1) ^ 2) ^ .5 U3(K + 2) = 0: IF U1(K + 2) > U2(K + 2) AND U1(K + 2) > 0 THEN U3(K + 2) = (U1(K + 2) ^ 2 - U2(K + 2) ^ 2) ^ .5 U3(K + 3) = 0: IF U1(K + 3) > U2(K + 3) AND U1(K + 3) > 0 THEN U3(K + 3) = (U1(K + 3) ^ 2 - U2(K + 3) ^ 2) ^ .5 U3(K + 4) = 0: IF U1(K + 4) > U2(K + 4) AND U1(K + 4) > 0 THEN U3(K + 4) = (U1(K + 4) ^ 2 - U2(K + 4) ^ 2) ^ .5 U3(K + 5) = 0: IF U1(K + 5) > U2(K + 5) AND U1(K + 5) > 0 THEN U3(K + 5) = (U1(K + 5) ^ 2 - U2(K + 5) ^ 2) ^ .5 U3(K + 6) = 0: IF U1(K + 6) > U2(K + 6) AND U1(K + 6) > 0 THEN U3(K + 6) = (U1(K + 6) ^ 2 - U2(K + 6) ^ 2) ^ .5 U4(K + 1) = 0: IF U1(K + 1) > 0 THEN U4(K + 1) = U2(K + 1) / U1(K + 1) U4(K + 2) = 0: IF U1(K + 2) > 0 THEN U4(K + 2) = U2(K + 2) / U1(K + 2) U4(K + 3) = 0: IF U1(K + 3) > 0 THEN U4(K + 3) = U2(K + 3) / U1(K + 3) U4(K + 4) = 0: IF U1(K + 4) > 0 THEN U4(K + 4) = U2(K + 4) / U1(K + 4) U4(K + 5) = 0: IF U1(K + 5) > 0 THEN U4(K + 5) = U2(K + 5) / U1(K + 5) U4(K + 6) = 0: IF U1(K + 6) > 0 THEN U4(K + 6) = U2(K + 6) / U1(K + 6) NEXT I LIN = 6 + DTL * 10 FOR I = 1 TO LIN IF DTL = 0 THEN PRINT DT$(I); 'IF DTL = 0 THEN PRINT #4, DT$(I); IF DTL = 1 THEN PRINT CK$(I); 'IF DTL = 1 THEN PRINT #4, CK$(I); US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" KWH1 = U2(I) * MINU / 60 KWH2 = KW(I) * MINU / 60 IF I > 1 THEN GOTO SKIP01 IF DTL = 0 THEN PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 0 THEN PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); KWH1 IF DTL = 1 THEN PRINT USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(I); KW(I); KVAR(I); PE(I); KWH2 SKIP01: NEXT I 'IF DTL = 1 AND SKIP = 0 THEN INPUT x$: CLS : PRINT : PRINT : PRINT 'PRINT 'PRINT PO$ 'PRINT #4, " " 'PRINT #4, PO$ 'LIN = 6 + DTL * 10 'FOR I = 1 TO LIN 'J = I + 18 'IF DTL = 0 THEN PRINT DT$(I); 'IF DTL = 0 THEN PRINT #4, DT$(I); 'IF DTL = 1 THEN PRINT CK$(I); 'IF DTL = 1 THEN PRINT #4, CK$(I); 'US$ = " ###. #####.# #####.# #####.# ####.## #####.## #######" 'IF DTL = 0 THEN PRINT USING US$; I; U1(J); U2(J); U3(J); U4(J) 'IF DTL = 0 THEN PRINT #4, USING US$; I; U1(J); U2(J); U3(J); U4(J) 'IF DTL = 1 THEN PRINT USING US$; I; KVA(J); KW(J); KVAR(J); PE(J) 'IF DTL = 1 THEN PRINT #4, USING US$; I; KVA(J); KW(J); KVAR(J); PE(J) 'NEXT I PRINT 'PRINT #4, " " IF SKIP = 0 THEN INPUT xx$ IF xx$ = "x" THEN SKIP = 1 IF xx$ = "X" THEN STOP LOCATE (1) GOTO S300 S400: CLS STOP PG$ = "Page " + STR$(PAGE) PRINT PG$ PRINT P0$ PRINT " " PRINT #4, PG$ PRINT #4, P0$ PRINT #4, " " MID$(PL$, 1, 16) = "averages: " MID$(PL$, 67, 10) = "KWH " PRINT PL$ PRINT #4, PL$ FOR I = 1 TO 16 S1(I) = T1(I) S2(I) = T2(I) IF N1(I) > 0 THEN T1(I) = T1(I) / N1(I) IF N2(I) > 0 THEN T2(I) = T2(I) / N2(I) IF N3(I) > 0 THEN T3(I) = T3(I) / N3(I) IF T1(I) > 0 THEN T4(I) = T2(I) / T1(I) PFC = T4(I) IF PFC = 0 THEN PFC = 1 S3(I) = S1(I) * PFC + S2(I) S4(I) = S3(I) * .0445 * 2390.625 / SCA2 T1(17) = T1(17) + T1(I) T2(17) = T2(17) + T2(I) T3(17) = T3(17) + T3(I) NEXT I IF T1(17) > 0 THEN T4(17) = T2(17) / T1(17) DT$(17) = DT$(16) CK$(2) = CK$(4) CK$(3) = CK$(7) CK$(4) = CK$(10) CK$(5) = CK$(13) CK$(6) = CK$(13) U1(1) = T1(1) + T1(2) + T1(3) U1(2) = T1(4) + T1(5) + T1(6) U1(3) = T1(7) + T1(8) + T1(9) U1(4) = T1(10) + T1(11) + T1(12) U1(5) = T1(13) + T1(14) + T1(15) U1(6) = U1(1) - U1(2) - U1(3) - U1(4) - U1(5) U2(1) = T2(1) + T2(2) + T2(3) U2(2) = T2(4) + T2(5) + T2(6) U2(3) = T2(7) + T2(8) + T2(9) U2(4) = T2(10) + T2(11) + T2(12) U2(5) = T2(13) + T2(14) + T2(15) U2(6) = U2(1) - U2(2) - U2(3) - U2(4) - U2(5) U3(1) = T3(1) + T3(2) + T3(3) U3(2) = T3(4) + T3(5) + T3(6) U3(3) = T3(7) + T3(8) + T3(9) U3(4) = T3(10) + T3(11) + T3(12) U3(5) = T3(13) + T3(14) + T3(15) U3(6) = U3(1) - U3(2) - U3(3) - U3(4) - U3(5) U4(1) = (T4(1) + T4(2) + T4(3)) / 3 U4(2) = (T4(4) + T4(5) + T4(6)) / 3 U4(3) = (T4(7) + T4(8) + T4(9)) / 3 U4(4) = (T4(10) + T4(11) + T4(12)) / 3 U4(5) = (T4(13) + T4(14) + T4(15)) / 3 U4(6) = (U4(2) + U4(3) + U4(4) + U4(5)) / 4 S1(1) = S4(1) + S4(2) + S4(3) S1(2) = S4(4) + S4(5) + S4(6) S1(3) = S4(7) + S4(8) + S4(9) S1(4) = S4(10) + S4(11) + S4(12) S1(5) = S4(13) + S4(14) + S4(15) S1(6) = S1(1) - S1(2) - S1(3) - S1(4) - S1(5) FOR I = 1 TO 6 DOL = S1(I) * PRICE / 100 'PRINT MID$(CK$(I), 2, 20); PRINT " "; PRINT USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) 'PRINT #4, MID$(CK$(I), 2, 20); PRINT #4, " "; PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) PRINT #4, USING US$; I; U1(I); U2(I); U3(I); U4(I); S1(I) NEXT I PRINT PRINT #4, " " CLOSE END 'TPH5 microMETER data - CJC 9/29/1996 (C) 'Switch every 10,30,60 min, cycle tp / ap; phase from CT.DAT 'New timing firmware - read pair of same channel values and write as one '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht x,7,0 DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM TM$(17), DT$(17) SYNCU = 0 CLOSE FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 CLOSE CLS : JK = 0: JS = -1: JU = -1 FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.20 " + CHR$(176) + " TPH5" P2$ = "CIRCUIT KVA KW KVAR PF KWH STATUS TIME" US$ = " #####.# #####.# #####.# ###.## #####.#" LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 PRINT "10,30,60 or 120 minute switching, 0 off, 999 on - Use with V2.00 firmware only." PRINT " e.g. TPH5 2 010" IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 3)): PRINT CP, MINU: GOTO S142 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S140: INPUT "Please enter minutes 10,30,60 or 120 "; MINU S142: MIN2 = MINU IF MINU = 10 THEN GOTO S150 IF MINU = 30 THEN GOTO S150 IF MINU = 60 THEN GOTO S150 IF MINU = 120 THEN GOTO S150 IF MINU = 0 THEN MIN2 = 60: GOTO S150 IF MINU > 990 THEN MIN2 = 60: GOTO S150 GOTO S140 S150: 'JJ = 6 * MINU 'JJ1 = JJ - 1 DFN$ = "US" J = 0 K = 0 S160: J = -1 OUT 888, JK LOCATE (25) COLOR 1, 0, 0 PRINT PL$ LOCATE 1 COLOR 7, 0, 0 GOSUB T800 GOSUB T805 GOSUB T120 'DDHALF = INT(DD / 2) 'DDODD = 0 'IF DD - 2 * DDHALF > .5 THEN DDODD = 1 IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 PRINT #1, "0"; LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "mM synchronized. " IF C3 = 3 THEN PRINT "PC: time date mM: CT#, B, C, D, E" INPUT #1, A, B, C, D INPUT #1, E, F, G, H IF C3 <> 3 THEN PRINT P2$ IF A = E THEN GOTO S300 INPUT #1, E, F, G, H: 'GET PAIRS SYNCHRONIZED S300: 'MAIN LOOP INPUT #1, A, B, C, D: 'TRUE POWER JU = 1 GOSUB S500 OUT 888, JK INPUT #1, E, F, G, H: 'APPARENT JU = -1 GOSUB S500 OUT 888, JK IF A <> E THEN PRINT "SYNC ERROR S300": ' STOP IF C00 <> 1 THEN GOTO S301 H = F: 'REVERSE INPUTS FOR ERCI RELAY F = B B = H S301: C = F: 'STORE IN C IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 HZ$ = "" IF C3 = 0 THEN GOTO S330 IF C3 <> 1 THEN GOTO S310 'ACQUTEK - GET 1 SET OF VALUES SHELL "EDASCALL" OPEN "I", #4, "ACQUTEK1.OUT" LINE INPUT #4, HZ$ CLOSE #4 S310: IF C3 <> 2 THEN GOTO S330 'MIM - GET ONE SET OF VALUES 'JK = JK + 16 'OUT 888, JK S330: IF C3 = 3 THEN PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK PRINT #2, A; ","; B; ","; C; ","; D; ","; JK PRINT #3, TIME$; " "; DATE$; " "; HZ$ FF = 1 IF JS < 0 THEN FF = C01 IF FF < .95 THEN FF = .95 IF FF > 1.1 THEN FF = 1.1 KW = B KVA = C KVA = KVA * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A) * FF KW = KW * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A) * V3 / 120 * FF KVAR = 0 IF KVA > KW AND KW > 0 THEN KVAR = (KVA ^ 2 - KW ^ 2) ^ .5 PE = 0 IF KVA > 0 THEN PE = KW / KVA KWH = KW * MIN2 / 60 IF C3 = 3 THEN GOTO S335 IF A = 1 THEN PRINT P2$ COLOR 3, 0, 0 PRINT CK$(A); COLOR 7, 0, 0 PRINT USING US$; KVA; KW; KVAR; PE; KWH; 'COLOR 6, 0, 0 IF JS > 0 THEN COLOR 4, 0, 0: PRINT " OFF "; : COLOR 6, 0, 0: PRINT TIME$ IF JS < 0 THEN COLOR 2, 0, 0: PRINT " ON "; : COLOR 6, 0, 0: PRINT TIME$ COLOR 7, 0, 0 'PRINT S335: I = I + 1 J = J + 1 K = K + 1 SYNC2 = VAL(MID$(TIME$, 5, 1)): 'minute units SYNC3 = VAL(MID$(TIME$, 4, 2)): 'minutes SYNC4 = VAL(MID$(TIME$, 1, 2)): 'hours SYNC5 = 0 IF SYNC4 = 0 OR SYNC4 = 2 OR SYNC4 = 4 OR SYNC4 = 6 THEN SYNC5 = 1 IF SYNC4 = 8 OR SYNC4 = 10 OR SYNC4 = 12 OR SYNC4 = 14 THEN SYNC5 = 1 IF SYNC4 = 16 OR SYNC4 = 18 OR SYNC4 = 20 OR SYNC4 = 22 THEN SYNC5 = 1 IF SYNC2 = 5 THEN SYNCU = 0 IF SYNCU = 1 THEN GOTO S380 IF MINU = 10 AND SYNC2 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 30 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 60 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 120 AND SYNC3 = 0 AND SYNC5 = 1 THEN JS = JS * -1: SYNCU = 1 'NEXT CODE TO LOCK ON OR OFF, OR TOGGLE EACH DAY, OR REVERSE TOGGLE EACH DAY. DDHALF = INT(DD / 2) DDODD = 0 IF DD - 2 * DDHALF > .5 THEN DDODD = 1 IF MINU = 0 THEN JS = 1 IF MINU = 999 THEN JS = -1 IF MINU = 998 AND DDODD = 0 THEN JS = 1 IF MINU = 998 AND DDODD = 1 THEN JS = -1 IF MINU = 997 AND DDODD = 0 THEN JS = -1 IF MINU = 997 AND DDODD = 1 THEN JS = 1 S380: IF K > 15 THEN K = 0 IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 COLOR 7, 0, 0 PRINT I; " readings" OUT 888, 0 CLOSE END S500: 'Aph Bph Cph A/P USES J1 = 0: J2 = 1: J3 = 2: J4 = 4: J5 = 8 J0 = A + 1 IF J0 > 16 THEN J0 = 1 JK = 0 IF JU > 0 THEN JK = JK + J4 IF JS > 0 THEN JK = JK + J5 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 SYNCU = 0: JK = 0: JU = -1: JS = -1 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" CK$(I) = MID$(T$(I), 1, 17) BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN 'USAG2 - plot microMETER data - CJC 1995 (C) DIM A0$(60), A1$(60), A2$(60), A3$(60), A4$(60) DIM A5$(60), A6$(60), A7$(60), A8$(60), A9$(60) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) CK$(17) = "Entire System ": BMX = 0 KEY OFF: CLS : II = 0: NN = 0: REC = 0 OPT$ = "": IF LEN(COMMAND$) > 0 THEN OPT$ = COMMAND$ DFN$ = "USAGE" IF OPT$ = "T" THEN INPUT "File? e.g. UT123 ", DFN$ CLOSE OPEN "I", #1, "CT.DAT" FOR I = 1 TO 16 LINE INPUT #1, T$(I) CK$(I) = MID$(T$(I), 1, 20) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) IF LV(I) = 0 THEN LV(I) = 120 BK(17) = BK(17) + BK(I) NEXT I CLOSE FOR CT = 1 TO 17 IF CT = 1 THEN FILE$ = "USAGE.P01" IF CT = 2 THEN FILE$ = "USAGE.P02" IF CT = 3 THEN FILE$ = "USAGE.P03" IF CT = 4 THEN FILE$ = "USAGE.P04" IF CT = 5 THEN FILE$ = "USAGE.P05" IF CT = 6 THEN FILE$ = "USAGE.P06" IF CT = 7 THEN FILE$ = "USAGE.P07" IF CT = 8 THEN FILE$ = "USAGE.P08" IF CT = 9 THEN FILE$ = "USAGE.P09" IF CT = 10 THEN FILE$ = "USAGE.P10" IF CT = 11 THEN FILE$ = "USAGE.P11" IF CT = 12 THEN FILE$ = "USAGE.P12" IF CT = 13 THEN FILE$ = "USAGE.P13" IF CT = 14 THEN FILE$ = "USAGE.P14" IF CT = 15 THEN FILE$ = "USAGE.P15" IF CT = 16 THEN FILE$ = "USAGE.P16" IF CT = 17 THEN FILE$ = "USAGE.P17" S21: OPEN "I", #1, DFN$ + ".CAP" OPEN "O", #2, FILE$ PRINT "Processing "; CK$(CT) S22: 'LOOP1: IF EOF(1) <> 0 THEN GOTO S99 IF OPT$ = "" THEN INPUT #1, A, B, C, D IF OPT$ = "T" THEN INPUT #1, A, B, C, D, E REC = REC + 1 IF A <> CT AND CT <> 17 THEN GOTO S22 B3 = B * BK(A) / 20 * LV(A) / 120 / 12.75 IF CT <> 17 THEN GOTO S33 'SYSTEM ONLY II = II + 1 B2 = B3 + B2 IF II < 16 THEN GOTO S22 II = 0 B3 = B2 B2 = 0 'SINGLE AND SYSTEM S33: L = L + 1: J = J + 1 PRINT #2, B3 NN = NN + 1 GOTO S22 S99: CLOSE NEXT CT BEEP 'TPH5 microMETER data - CJC 9/29/1996 (C) 'Switch every 10,30,60 min, cycle tp / ap; phase from CT.DAT 'New timing firmware - read pair of same channel values and write as one '0 blk 1 blu 2 grn 3 cya 4 red 5 mag 6 yel 7 wht x,7,0 DIM TXT$(10), DY(12), DA(16) DY(1) = 0: DY(2) = 31: DY(3) = 59: DY(4) = 90: DY(5) = 120: DY(6) = 151 DY(7) = 181: DY(8) = 212: DY(9) = 243: DY(10) = 273: DY(11) = 304: DY(12) = 334 DIM HI(18), LO(18) DIM BK(17), PF(17), LV(17), T$(17), CK$(17) DIM TM$(17), DT$(17) SYNCU = 0 CLOSE FILE$ = "MICRO.DAT" FIL2$ = "CT.DAT" GOSUB F400 GOSUB F330 V3 = 120: IF V1 > 100 THEN V3 = V1 V4 = 120: IF V2 > 100 THEN V4 = V2 CLOSE CLS : JK = 0: JS = -1: JU = -1 FOR I = 1 TO 17: HI(I) = 255: NEXT I PL$ = " " + CHR$(176) + " (C) 1996 - microMETER Corp. - v 1.19 " + CHR$(176) + " TPH5" P2$ = "CIRCUIT KVA KW KVAR PF KWH STATUS TIME" US$ = " #####.# #####.# #####.# ###.## #####.#" LOCATE (25) PRINT PL$: MID$(PL$, 2, 6) = "x=exit" I = 0 LOCATE 1 PRINT "10,30,60 or 120 minute switching, 0 off, 999 on - Use with V2.00 firmware only." PRINT " e.g. TPH5 2 010" IF LEN(COMMAND$) > 0 THEN CP = VAL(MID$(COMMAND$, 1, 1)): MINU = VAL(MID$(COMMAND$, 3, 3)): PRINT CP, MINU: GOTO S142 S130: INPUT "Please enter COM port (1 or 2) "; CP IF CP <> 1 AND CP <> 2 THEN GOTO S130 S140: INPUT "Please enter minutes 10,30,60 or 120 "; MINU S142: MIN2 = MINU IF MINU = 10 THEN GOTO S150 IF MINU = 30 THEN GOTO S150 IF MINU = 60 THEN GOTO S150 IF MINU = 120 THEN GOTO S150 IF MINU = 0 THEN MIN2 = 60: GOTO S150 IF MINU > 990 THEN MIN2 = 60: GOTO S150 GOTO S140 S150: 'JJ = 6 * MINU 'JJ1 = JJ - 1 DFN$ = "US" J = 0 K = 0 S160: J = -1 OUT 888, JK LOCATE (25) COLOR 1, 0, 0 PRINT PL$ LOCATE 1 COLOR 7, 0, 0 GOSUB T800 GOSUB T805 GOSUB T120 DD = 5 DDHALF = INT(DD / 2) DDODD = 0 IF DD - 2 * DDHALF > .5 THEN DDODD = 1 ' IF CP = 1 THEN OPEN "COM1:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 ' IF CP = 2 THEN OPEN "COM2:300,N,8,,CS,DS,CD,LF" FOR RANDOM AS #1 ' PRINT #1, "0"; ' LINE INPUT #1, XX$: 'DISCARD FIRST READING PRINT "mM synchronized. " IF C3 = 3 THEN PRINT "PC: time date mM: CT#, B, C, D, E" ' INPUT #1, A, B, C, D ' INPUT #1, E, F, G, H IF C3 <> 3 THEN PRINT P2$ IF A = E THEN GOTO S300 ' INPUT #1, E, F, G, H: 'GET PAIRS SYNCHRONIZED S300: 'MAIN LOOP ' INPUT #1, A, B, C, D: 'TRUE POWER JU = 1 GOSUB S500 OUT 888, JK ' INPUT #1, E, F, G, H: 'APPARENT JU = -1 GOSUB S500 OUT 888, JK PRINT DDODD, MINU, DD IF A <> E THEN PRINT "SYNC ERROR S300": ' STOP IF C00 <> 1 THEN GOTO S301 H = F: 'REVERSE INPUTS FOR ERCI RELAY F = B B = H S301: C = F: 'STORE IN C IF A = 1 THEN GOSUB T800: GOSUB T805: GOSUB T160 HZ$ = "" IF C3 = 0 THEN GOTO S330 IF C3 <> 1 THEN GOTO S310 'ACQUTEK - GET 1 SET OF VALUES SHELL "EDASCALL" OPEN "I", #4, "ACQUTEK1.OUT" LINE INPUT #4, HZ$ CLOSE #4 S310: IF C3 <> 2 THEN GOTO S330 'MIM - GET ONE SET OF VALUES 'JK = JK + 16 'OUT 888, JK S330: IF C3 = 3 THEN PRINT TIME$; " "; DATE$; " "; A; ","; B; ","; C; ","; D; ","; JK PRINT #2, A; ","; B; ","; C; ","; D; ","; JK PRINT #3, TIME$; " "; DATE$; " "; HZ$ FF = 1 IF JS < 0 THEN FF = C01 IF FF < .95 THEN FF = .95 IF FF > 1.1 THEN FF = 1.1 KW = B KVA = C KVA = KVA * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A) * FF KW = KW * BK(A) / 20 * LV(A) / SCAL / 1000 * PF(A) * V3 / 120 * FF KVAR = 0 IF KVA > KW AND KW > 0 THEN KVAR = (KVA ^ 2 - KW ^ 2) ^ .5 PE = 0 IF KVA > 0 THEN PE = KW / KVA KWH = KW * MIN2 / 60 IF C3 = 3 THEN GOTO S335 IF A = 1 THEN PRINT P2$ COLOR 3, 0, 0 PRINT CK$(A); COLOR 7, 0, 0 PRINT USING US$; KVA; KW; KVAR; PE; KWH; 'COLOR 6, 0, 0 IF JS > 0 THEN COLOR 4, 0, 0: PRINT " OFF "; : COLOR 6, 0, 0: PRINT TIME$ IF JS < 0 THEN COLOR 2, 0, 0: PRINT " ON "; : COLOR 6, 0, 0: PRINT TIME$ COLOR 7, 0, 0 'PRINT S335: I = I + 1 J = J + 1 K = K + 1 SYNC2 = VAL(MID$(TIME$, 5, 1)): 'minute units SYNC3 = VAL(MID$(TIME$, 4, 2)): 'minutes SYNC4 = VAL(MID$(TIME$, 1, 2)): 'hours SYNC5 = 0 IF SYNC4 = 0 OR SYNC4 = 2 OR SYNC4 = 4 OR SYNC4 = 6 THEN SYNC5 = 1 IF SYNC4 = 8 OR SYNC4 = 10 OR SYNC4 = 12 OR SYNC4 = 14 THEN SYNC5 = 1 IF SYNC4 = 16 OR SYNC4 = 18 OR SYNC4 = 20 OR SYNC4 = 22 THEN SYNC5 = 1 IF SYNC2 = 5 THEN SYNCU = 0 IF SYNCU = 1 THEN GOTO S380 IF MINU = 10 AND SYNC2 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 30 THEN JS = JS * -1: SYNCU = 1 IF MINU = 30 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 60 AND SYNC3 = 0 THEN JS = JS * -1: SYNCU = 1 IF MINU = 120 AND SYNC3 = 0 AND SYNC5 = 1 THEN JS = JS * -1: SYNCU = 1 'NEXT CODE TO LOCK ON OR OFF, OR TOGGLE EACH DAY, OR REVERSE TOGGLE EACH DAY. IF MINU = 0 THEN JS = 1 IF MINU = 999 THEN JS = -1 IF MINU = 998 AND DDODD = 0 THEN JS = 1 IF MINU = 998 AND DDODD = 1 THEN JS = -1 IF MINU = 997 AND DDODD = 0 THEN JS = -1 IF MINU = 997 AND DDODD = 1 THEN JS = 1 S380: IF K > 15 THEN K = 0 IF INKEY$ = "x" THEN GOTO S400 GOTO S300 S400: GOSUB T950 COLOR 7, 0, 0 PRINT I; " readings" OUT 888, 0 CLOSE END S500: 'Aph Bph Cph A/P USES J1 = 0: J2 = 1: J3 = 2: J4 = 4: J5 = 8 J0 = A + 1 IF J0 > 16 THEN J0 = 1 JK = 0 IF JU > 0 THEN JK = JK + J4 IF JS > 0 THEN JK = JK + J5 S510: RETURN T120: 'NEW FILENAME LOOP FIL2$ = DFN$ + DV$ + ".CAP" FIL3$ = DFN$ + DV$ + ".DTE" OPEN "A", #2, FIL2$ OPEN "A", #3, FIL3$ PRINT #2, "START " + DATE$ + " " + TIME$ PRINT #3, "START " + DATE$ + " " + TIME$ T160: 'IF MIDNITE, START A NEW FILE IF HH > 0 THEN SET = 0: GOTO T500 IF SET = 1 THEN GOTO T500 SET = 1 GOSUB T800 GOSUB T805 PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE #2 CLOSE #3 SYNCU = 0: JK = 0: JU = -1: JS = -1 GOTO T120 T500: RETURN T800: 'PARSE DATE AND TIME DT$ = DATE$: TM$ = TIME$ HH = VAL(MID$(TM$, 1, 2)) MN = VAL(MID$(TM$, 4, 2)) SS = VAL(MID$(TM$, 7, 2)) YY = VAL(MID$(DT$, 7, 4)) MM = VAL(MID$(DT$, 1, 2)) DD = VAL(MID$(DT$, 4, 2)) S1 = ASC(MID$(TM$, 7, 1)) S2 = ASC(MID$(TM$, 8, 1)) M1 = ASC(MID$(TM$, 4, 1)) M2 = ASC(MID$(TM$, 5, 1)) H1 = ASC(MID$(TM$, 1, 1)) H2 = ASC(MID$(TM$, 2, 1)) RETURN T805: 'GET DV$ DV = (YY - 1996) * 365 + DY(MM) + DD IF YY > 1996 THEN DV = DV + 1: '1996 LEAP - GOOD TILL SEPT 1998 DV$ = MID$(STR$(DV), 2, 3) IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ IF LEN(DV$) < 3 THEN DV$ = "0" + DV$ RETURN T950: PRINT #2, "ENDED " + DATE$ + " " + TIME$ PRINT #3, "ENDED " + DATE$ + " " + TIME$ CLOSE CLS RETURN F330: 'load1 - global CLOSE OPEN "I", #1, FILE$ INPUT #1, SCAL INPUT #1, SCA2 INPUT #1, PRICE INPUT #1, COL INPUT #1, C00, C01, C02, C03 INPUT #1, C04, C05, C06, C07 INPUT #1, C2, C3, V1, V2 RETURN F400: 'load2 - ordered files CLOSE OPEN "I", #1, FIL2$ FOR I = 1 TO 16 LINE INPUT #1, T$(I) IF MID$(T$(I), 27, 1) = "," THEN MID$(T$(I), 27, 1) = "0" CK$(I) = MID$(T$(I), 1, 17) BK(I) = VAL(MID$(T$(I), 27, 4)) PF(I) = VAL(MID$(T$(I), 32, 4)) LV(I) = VAL(MID$(T$(I), 37, 3)) TM$(I) = MID$(T$(I), 40, 5) DT$(I) = MID$(T$(I), 46, 10) NEXT I RETURN