'DMS20.dmc - 08-04-11 #AUTO JS#DMSINIT JP#DMSMAIN EN '****************************INITIALIZE #DMSINIT MG"INITIALIZING..." ' SET ANALOG INPUTS TO +/-5V AQ0,1;AQ1,1;AQ2,1;AQ3,1 AQ4,1;AQ5,1;AQ6,1;AQ7,1 ' SET ANALOG OUTPUT TO +/-5V DQ0,3 OP$00; 'TURN OFF GREEN LEDS CB10;CB12;CB14;'TURN OFF ALARM LEDS '****THESE ARE CONTROL VARIABLES CYCL=2000; 'CYCLE TIME: 1000 = 1 SEC MG"CYCLE TIME = ",(CYCL/1000){F1.1},` " SEC." ' LETS HOW LONG BEFORE MOVING ON TO ' NEXT CHANNEL - REMEMBER, PANEL ' METER TAKES TIME TO READ ITS INPUT WARM=0.05; '5 C THRESHOLD FOR WARMING MG"WARM UP = ",(WARM*100){F1.1},` " DEGREES C" BNTIME=3000; 'HOW LONG RESET BUTTON 'NEEDS TO BE HELD FOR FULL RESET MG"RESET TIME = ",(BNTIME/1000){F1.1},` " SEC." ' ALRMFLG=$00;RSFLG=$00;CHFLG=$00 TEMPPTR=0; 'GLOBAL USED TO POINT AT GTEMP=0; ' GLOBAL RETURNED TEMPERATURE HOT=9.9999;'USED AS INIT COLD POINT 'SETUP TEMPERATURE ARRAY........... HXSIZE=8;HYSIZE=7;HSIZE=HXSIZE*HYSIZE DM HIST[HSIZE] 'SETUP PARAMETER ARRAY PSIZE=HXSIZE*5 DM PARAM[PSIZE] ' OFFSET POINTERS INTO PARAM ARRAY ACTV=0; 'ACTIVE CHANNELS OFFSET=1 SLOPE=2 'EMPIRICAL OFFSETS PARAM[8]=.8393;PARAM[9]=.8535 PARAM[10]=.8447;PARAM[11]=.8684 PARAM[12]=.8588;PARAM[13]=.8584 PARAM[14]=.8496;PARAM[15]=.8732 'CALCULATED SLOPES PARAM[16]=.5798;PARAM[17]=.5659 PARAM[18]=.5798;PARAM[19]=.5659 PARAM[20]=.5798;PARAM[21]=.5659 PARAM[22]=.5798;PARAM[23]=.5659 ' BIT MASK ARRAY DM BMASK[8] 'GENERAL BITMASK VALUES BMASK[0]=$01;BMASK[1]=$02;BMASK[2]=$04 BMASK[3]=$08;BMASK[4]=$10;BMASK[5]=$20 BMASK[6]=$40;BMASK[7]=$080 DM CMASK[8] CMASK[0]=$FE;CMASK[1]=$FD;CMASK[2]=$FB CMASK[3]=$F7;CMASK[4]=$EF;CMASK[5]=$DF CMASK[6]=$BF;CMASK[7]=$7F ' SETUP EMAIL FOR ALARM NOTIFICATIONS MA128,114,23,233 MD barry@ucolick.org MS dewar-monitor-no-reply@ucolick.org II1,1,12 II2,0,11 XQ#IMALIVE,1 XQ#FLASH,2 T1=TIME;MAINCT=0 JS#CKCONNS JS#SETARY;JS#SETARY EN '********************FILL HISTORY ARRAY #SETARY CTI=0;CTJ=0 #ZEROAVG HISTPTR=CTI+CTJ IF (CTI1 HISTPTR=(2*HXSIZE)+CHAN TEMPPTR=CHAN JS#CVTEMP HIST[HISTPTR]=GTEMP JS#DISPTMP #WTMORE LPNOW=TIME;'FINISH n SEC DELAY #WT4RS JP#WT4RS,RSFLG<>$00 JP#WTMORE,LPNOW<(LPTIME+CYCL) JS#AVGCHAN; 'RESET CHANNEL AVERAGE JS#CKWARM; 'IS IT TOO HOT? CBCHAN; 'TURN OFF CHANNEL LED ENDIF CHAN=CHAN+1 JP#TLOOP,CHAN5.0);GTEMP=5.0;ENDIF IF(GTEMP<-5.0);GTEMP=5.0;ENDIF AO 0,GTEMP EN '***********************RESET INTERRUPT #ININT1 'MG"INTERRUPT 1!... RESET" INTIME=TIME RSFLG=ALRMFLG;'SIGNAL TO MAIN PROGRAM OP$FF; 'TURN ON GREEN LEDS SB10;SB12;SB14; 'TURN ON ALARM LEDS #CLR0 JP#CLR0,@IN[12]=1; 'WAIT TIL RELEASED IF(ALRMFLG = 0) WT10;OP$00; 'TURN OFF GREEN LEDS CB10;CB12;CB14;'TURN OFF ALARM LEDS RI; 'LEAVE, NO ALARMS SET ENDIF ' CHECK TO SEE IF BUTTON HELD ' MORE THAN 4 SECONDS OUTTIME=TIME IF(OUTTIME>(INTIME+BNTIME) JS#SETARY RSFLG=$00;'CLEAR SIGNAL JP#RSOUT ENDIF 'FILL ARRAY FOR SELECTED CHANNEL SELCH=_TI1 & $07 SELCH=7-SELCH; 'PADDLE SW NUMBER OLDPTR=TEMPPTR; 'SAVE FOR NOW OLDTEMP=GTEMP; 'SAVE FOR NOW' 'CHECK FOR ALARM IF(ALRMFLG&BMASK[SELCH]>0) FILLCT=1; 'OVERWRITE AVERAGE TOO TEMPPTR=SELCH GTEMP=@AN[TEMPPTR] JS#CVTEMP 'SHOVE INTO ALL TEMPS FOR THIS CHAN #REFILL FILLPTR=(HXSIZE*FILLCT)+SELCH HIST[FILLPTR]=GTEMP FILLCT=FILLCT+1 JP#REFILL,FILLCT0);SBFCT;WT25 ELSE;CBFCT;WT10 ENDIF ENDIF FCT=FCT+1 JP#FLOOP,FCT<8 JP#FLASH EN '**************** COMMAND ERROR ROUTINE #CMDERR MG"An error occured at line",_ED TC1;ZS OP$FF; 'TURN ON GREEN LEDS HX1; 'STOP I'M ALIVE THREAD HX2; 'STOP FLASH THREAD EN