;{CR10X} *Table 1 Program 01: 900 Execution Interval (seconds) ; ; ********* DESCRIPTION *********** ; ; Jan 05 2010: CP code changes: ; * thermistor strings now 2x16 (incl reference resistor) instead of 3x10 ; * removed offset to water temperature measurement. This leads to ; wrong temperatures and was corrected in post-processing anyways (both 2008, 2009) ; ; Jan 12 2009: CP to correct file name and re-compile to upload to data logger. ; No code changes. ; ; Jan 21 2008: DJP return to 2007 code and check and document ; for Chris Petrich. Removed hydraprobe measurements ; add second snow pinger for melt season measurements. ; ; UAF / AOOS Wireless Mass Balance Site measurments ; Data to be transmitted with Freewave radio back to BASC ; then FTP'd back to FTP.IMS.UAF.EDU ; ; SM4M, AM416 connected to CR10X Bat 12V ; FreeWave Radio Bat 12V ; One snow pinger SonicRanger 50 (Campbell) SW 12V ; Two Benthos UnderWaterSounders PSA-916 SW 12V ; Three Vittel / Stevens HydraProbes SW 12V ; One CS500 rel hum/temp (air) SW 12V ; Three thermistor chains ; One 107 temp probe (water) ; ; Ready to accept three snow pingers, SR50 or SR50a. ; SDI addresses = 0,1,2. ; available: SR50 SID 0: unreliable -- do not deploy ; SR50 SID 2: ok (mast) ; SR50a SID 0 ; SR50a SID 1 ; ; *** CR10X WIRING AND CONTROLS *** ; ; Control Ports ; CP1 - MP Reset (purple) ; CP2 - MP Clock (green) ; CP3 - SW 12 V control (orange) ; CP4 - Benthos UWS1 RTS/DTR (blue) ; CP5 - Benthos UWS1 RX (white) ; CP6 - Benthos UWS2 RTS/DTR (blue) ; CP7 - Benthos UWS2 RX (white) ; CP8 - SR50 panel, connected to SR50/SR50a SID 0,1,2 ; ; Excitation Channels ; E1 - all thermistor strings 1,2. (3 not used since Jan 2010) ; E2 - not used ; E3 - temperature probe 107 (black) ; ; SingleEnded Inputs ; SE1 - COM H1: thermistor string 1 ; SE2 - COM L1: thermistor string 2 ; SE3 - COM H2: thermistor string 3 -- not used starting Jan 2010 (CP) ; SE7 - CS500 Temperature (black) ; SE8 - CS500 Relative Humidity (brown) ; SE12- temperature probe 107 measure (red). ; ; On-panel resistors (10 kOhm) for thermistor bridges ; E1 - SE1; E1 - SE2; E1 - SE3. ; ; Ground Lines - G ; CS500: white, black ; T107: clear ; SR50s: white->white, clear->brown ; ; Analog Ground Lines - AG ; CS500: brown ; T107: purple->brown ; SR50: blue ; MP: COM Shield ; ; Power Supply ; (+12 V, G) - multiplexer ; SW (+12 V, G) - block with underwater sounders, hydraprobes, SR50, CS500. ; ; ; *** MULTIPLEXOR INPUTS (see outputs above) *** ; ; SET 1-16 thermistor strings ; H1 TOP thermistor string 1 (1-15 = top-bottom @ 10 cm) & 16: reference resistor (0.1% tolerance) ; L1 MID thermistor string 2 (1-15 = top-bottom @ 10 cm) & 16: reference resistor (1%(!) tolerance) ; H2 not used ; ; ; *** PROGRAM *** ; ; ********* Turn on Switched 12 V for Sensors ******** 1: Do (P86) 1: 43 Set Port 3 High 2: Excitation with Delay (P22) 1: 2 Ex Channel 2: 0 Delay W/Ex (0.01 sec units) 3: 500 Delay After Ex (0.01 sec units) 4: 0 mV Excitation ; ************* Temps and Batt Volts ********** ; Battery Voltage and DL temperature 3: Batt Voltage (P10) 1: 2 Loc [ V_CR10X ] 4: Internal Temperature (P17) 1: 1 Loc [ T_CR10X ] ; Water temp measurement with 107 probe - automatic output in Celcius ; but with calibration errors. See 107 probe manual. 5: Temp (107) (P11) 1: 1 Reps 2: 12 SE Channel 3: 3 Excite all reps w/E3 4: 3 Loc [ Tw107_C ] 5: 1.0 Multiplier 6: 0.0 Offset ; From ice/bath calibration, need to add 0.45 C ; As of January 2010: add 0.0 C instead -- the temperature measurement of the TW107 ; was ok w/o offset correction in 2009 (maybe 0.05 C but that's irrelevant for ; speed of sound, so move correction to post-processing) ; 6: Z=X+F (P34) 1: 3 X Loc [ Tw107_C ] 2: 0.0 F 3: 3 Z Loc [ Tw107_C ] ; Air temp [Celcius] and relative humidity [%] with CS500 probe 7: Volt (SE) (P1) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 7 SE Channel 4: 5 Loc [ TaCS500_C ] 5: 0.1 Multiplier 6: -40 Offset 8: Z=X+F (P34) 1: 5 X Loc [ TaCS500_C ] 2: 273.15 F 3: 6 Z Loc [ TaCS500_K ] ; Relative Humidity CS500 [percent] 9: Volt (SE) (P1) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 8 SE Channel 4: 4 Loc [ RH_CS500 ] 5: 0.1 Multiplier 6: 0.0 Offset ; ************* Thermistor Chain 1 *********************** Thermistor Chain 1 ********* ; Read thermistor chain 1 with subroutine 1. 10: Do (P86) 1: 41 Set Port 1 High ; now loop count to 16 instead of 10 11: Beginning of Loop (P87) 1: 0 Delay 2: 16 Loop Count 12: Step Loop Index (P90) 1: 1 Step ; Set Therm_num = 1 to measure with SE1 in subroutine 13: Z=F x 10^n (P30) 1: 1 F 2: 00 n, Exponent of 10 3: 10 Z Loc [ Therm_num ] 14: Do (P86) 1: 72 Pulse Port 2 15: Do (P86) 1: 1 Call Subroutine 1 16: Z=X (P31) 1: 9 X Loc [ avemeas ] 2: 11 -- Z Loc [ Therm1_1 ] 17: End (P95) 18: Do (P86) 1: 51 Set Port 1 Low ; ************* Thermistor Chain 2 *********************** Thermistor Chain 2 ********** ; Read thermistor chain 2 with subroutine 1. 19: Do (P86) 1: 41 Set Port 1 High ; now loop to 16 instead of 10 20: Beginning of Loop (P87) 1: 0 Delay 2: 16 Loop Count 21: Step Loop Index (P90) 1: 1 Step ; Set Therm_num = 2 to measure with SE2 in subroutine 22: Z=F x 10^n (P30) 1: 2 F 2: 00 n, Exponent of 10 3: 10 Z Loc [ Therm_num ] 23: Do (P86) 1: 72 Pulse Port 2 24: Do (P86) 1: 1 Call Subroutine 1 25: Z=X (P31) 1: 9 X Loc [ avemeas ] 2: 27 -- Z Loc [ Therm2_1 ] 26: End (P95) 27: Do (P86) 1: 51 Set Port 1 Low ; ************* Snow Pinger 0 ******************************* Snow Pinger 0 ********** ; Snow depth measurment with SR50(a). Internal hardware switch: SDI address = 0 ; SR_meters is temperature-compensated distance to snow. 28: SDI-12 Recorder (P105) 1: 0 SDI-12 Address 2: 0 Start Measurement (aM!) 3: 8 Port 4: 74 Loc [ SR_meas ] 5: 1 Multiplier 6: 0.0 Offset 29: Z=F x 10^n (P30) 1: 273.15 F 2: 00 n, Exponent of 10 3: 75 Z Loc [ SR_Tref ] 30: Z=X/Y (P38) 1: 6 X Loc [ TaCS500_K ] 2: 75 Y Loc [ SR_Tref ] 3: 76 Z Loc [ SR_Tratio ] 31: Z=SQRT(X) (P39) 1: 76 X Loc [ SR_Tratio ] 2: 76 Z Loc [ SR_Tratio ] 32: Z=X*Y (P36) 1: 76 X Loc [ SR_Tratio ] 2: 74 Y Loc [ SR_meas ] 3: 70 Z Loc [ SR0_meter ] ; ************* Snow Pinger 1 ******************************* Snow Pinger 1 ********** ; Snow depth measurment with SR50(a). Internal hardware switch: SDI address = 1 ; SR_meters is temperature-compensated distance to snow. 33: SDI-12 Recorder (P105) 1: 1 SDI-12 Address 2: 0 Start Measurement (aM!) 3: 8 Port 4: 74 Loc [ SR_meas ] 5: 1 Multiplier 6: 0.0 Offset 34: Z=F x 10^n (P30) 1: 273.15 F 2: 00 n, Exponent of 10 3: 75 Z Loc [ SR_Tref ] 35: Z=X/Y (P38) 1: 6 X Loc [ TaCS500_K ] 2: 75 Y Loc [ SR_Tref ] 3: 76 Z Loc [ SR_Tratio ] 36: Z=SQRT(X) (P39) 1: 76 X Loc [ SR_Tratio ] 2: 76 Z Loc [ SR_Tratio ] 37: Z=X*Y (P36) 1: 76 X Loc [ SR_Tratio ] 2: 74 Y Loc [ SR_meas ] 3: 71 Z Loc [ SR1_meter ] ; ************* Snow Pinger 2 ******************************* Snow Pinger 2 ********** ; Snow depth measurment with SR50(a). Internal hardware switch: SDI address = 2 ; SR_meters is temperature-compensated distance to snow. 38: SDI-12 Recorder (P105) 1: 2 SDI-12 Address 2: 0 Start Measurement (aM!) 3: 8 Port 4: 74 Loc [ SR_meas ] 5: 1 Multiplier 6: 0.0 Offset 39: Z=F x 10^n (P30) 1: 273.15 F 2: 00 n, Exponent of 10 3: 75 Z Loc [ SR_Tref ] 40: Z=X/Y (P38) 1: 6 X Loc [ TaCS500_K ] 2: 75 Y Loc [ SR_Tref ] 3: 76 Z Loc [ SR_Tratio ] 41: Z=SQRT(X) (P39) 1: 76 X Loc [ SR_Tratio ] 2: 76 Z Loc [ SR_Tratio ] 42: Z=X*Y (P36) 1: 76 X Loc [ SR_Tratio ] 2: 74 Y Loc [ SR_meas ] 3: 72 Z Loc [ SR2_meter ] ; ************* UnderWaterSounder 1 *********************** UnderWaterSounder 1 ********** ; Set Port4 to set trigger high on Benthos sounder 43: Do (P86) 1: 44 Set Port 4 High ; Reset read ascii values to 00000 44: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 110 Z Loc [ U1ascii_0 ] 45: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 111 Z Loc [ U1ascii_1 ] 46: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 112 Z Loc [ U1ascii_2 ] 47: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 113 Z Loc [ U1ascii_3 ] 48: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 114 Z Loc [ U1ascii_4 ] 49: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 115 Z Loc [ U1ascii_5 ] 50: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 116 Z Loc [ U1ascii_6 ] ; Set port 4 low to trigger measurement with UnderWaterSoundr1 51: Do (P86) 1: 54 Set Port 4 Low ; Read Benthos PSA-916 RS232 output. Derived from CRREL, Bruce Elder code ; ; P15 uses CP4 as DTR, CP5 as RX. ; Receives ascii string as binary RS232, 1200 baud (set inside sounder ; with dip switches). Term char 13 = . Output is"Rxx.xx(E)" ; i.e. 8(9) characters (the E and 9 if no echo rec'd). ; P63 identifies 82 (Ascii R) as leading tag, ; P15 identifies as end tag. ; Five values xx.xx (Ascii . = 46) read into 5 input locations from U#ascii_1 52: Port Serial I/O (P15) 1: 1 Reps 2: 21 8-Bit, RS-232 Binary, 1200 Baud 3: 1 Delay (0.01 sec units) before TX 4: 4 C4 RTS/DTR 5: 100 Start Loc for TX [ TX_NULL ] 6: 0 Number of Locs to TX 7: 13 Termination Character for RX 8: 9 Max Characters to RX 9: 200 Time Out for CTS (TX) and/or RX (0.01 sec units) 10: 111 Start Loc for RX [ U1ascii_1 ] 11: 1.0 Multiplier for RX 12: 0.0 Offset for RX 53: Extended Parameters (P63) 1: 82 Option 2: 00 Option 3: 00 Option 4: 00 Option 5: 00 Option 6: 00 Option 7: 00 Option 8: 00 Option ; Set port 4 high to end measure mode UWS1 54: Do (P86) 1: 44 Set Port 4 High ; Conversion from ascii (Uascii_1 .. _5) to decimal (Udec_1.._5) ; Using subroutine 3 for conversion digit by digit ; First put all readings in same format xx.xx If x.xx (because ; leading zeros are dropped, then insert a leading zero after ; bumping digits along one place. ; Test by checking that 2nd digit is 46 - ascii ".". 55: If (X<=>F) (P89) 1: 112 X Loc [ U1ascii_2 ] 2: 1 = 3: 46 F 4: 30 Then Do 56: Z=X (P31) 1: 114 X Loc [ U1ascii_4 ] 2: 115 Z Loc [ U1ascii_5 ] 57: Z=X (P31) 1: 113 X Loc [ U1ascii_3 ] 2: 114 Z Loc [ U1ascii_4 ] 58: Z=X (P31) 1: 112 X Loc [ U1ascii_2 ] 2: 113 Z Loc [ U1ascii_3 ] 59: Z=X (P31) 1: 111 X Loc [ U1ascii_1 ] 2: 112 Z Loc [ U1ascii_2 ] 60: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 111 Z Loc [ U1ascii_1 ] 61: End (P95) ; Now do digit by digit conversion. First run with y ; in yx.xx ; Set mult = 10 for this digit. This is divided by 10 ; for each digit inside subroutine 3 in order to sum ; contributions to total distance. 62: Z=X (P31) 1: 111 X Loc [ U1ascii_1 ] 2: 101 Z Loc [ num_ascii ] 63: Z=F x 10^n (P30) 1: 10 F 2: 0 n, Exponent of 10 3: 103 Z Loc [ mult ] 64: Do (P86) 1: 2 Call Subroutine 2 ; This takes num_bin value and converts from bin -> dec also ; using mult to output num_dec. ; This is saved as U#_meters to which next digits are added ; in next decimal place via decrease in 'mult' by factor of 10. 65: Z=X (P31) 1: 102 X Loc [ num_dec ] 2: 50 Z Loc [ U1_meters ] ; Now second digit 66: Z=X (P31) 1: 112 X Loc [ U1ascii_2 ] 2: 101 Z Loc [ num_ascii ] 67: Do (P86) 1: 2 Call Subroutine 2 68: Z=X+Y (P33) 1: 50 X Loc [ U1_meters ] 2: 102 Y Loc [ num_dec ] 3: 50 Z Loc [ U1_meters ] ; Now third digit - skipping decimal point (Uascii_3) 69: Z=X (P31) 1: 114 X Loc [ U1ascii_4 ] 2: 101 Z Loc [ num_ascii ] 70: Do (P86) 1: 2 Call Subroutine 2 71: Z=X+Y (P33) 1: 50 X Loc [ U1_meters ] 2: 102 Y Loc [ num_dec ] 3: 50 Z Loc [ U1_meters ] ; Now fourth digit 72: Z=X (P31) 1: 115 X Loc [ U1ascii_5 ] 2: 101 Z Loc [ num_ascii ] 73: Do (P86) 1: 2 Call Subroutine 2 74: Z=X+Y (P33) 1: 50 X Loc [ U1_meters ] 2: 102 Y Loc [ num_dec ] 3: 50 Z Loc [ U1_meters ] ; U#_meters is depth from UnderWaterSounder# to reflector in [m] ; using a speed of sounds in water: 1500 m/s. Now convert using ratio ; c_ratio = c / 1500 where c[m/s] = 1449 + 4.6 T[C] ; ( MacKenzie, JASA vol 70, 1981, 807 ) ; ; c(D,S,T) = 1448.96 + 4.591*T - 5.304 x 10^-2*T^2 + 2.374 x 10^-4*T^3 + ; ... 1.340*(S-35) + 1.630 x 10^-2*D + 1.675 x 10^-7*D^2 - 1.025 x 10^-2*T*(S-35) - 7.139 x 10^-13*T*D^3 ; ; Fresh water linear fit for: ; S[ppt] = 0, D[m] = 0, T = 18 to 28 C, gives ; c(T[C]) = 1434 + 2.86*T 75: If (X<=>F) (P89) 1: 50 X Loc [ U1_meters ] 2: 04 < 3: 99 F 4: 30 Then Do 76: Z=X*F (P37) 1: 3 X Loc [ Tw107_C ] 2: 4.6 F 3: 104 Z Loc [ c_snd_wtr ] 77: Z=X+F (P34) 1: 104 X Loc [ c_snd_wtr ] 2: 1449 F 3: 104 Z Loc [ c_snd_wtr ] 78: Z=X*F (P37) 1: 104 X Loc [ c_snd_wtr ] 2: .000666 F 3: 109 Z Loc [ c_ratio ] 79: Z=X*Y (P36) 1: 50 X Loc [ U1_meters ] 2: 109 Y Loc [ c_ratio ] 3: 50 Z Loc [ U1_meters ] 80: End (P95) ; Set trigger port low. At start of next measurement, it is first ; paused, then triggered to intiate measurment. 81: Do (P86) 1: 54 Set Port 4 Low ; ************* UnderWaterSounder 2 *********************** UnderWaterSounder 2 ********** ; Set CP6 to set trigger high on Benthos sounder 82: Do (P86) 1: 46 Set Port 6 High ; Reset read ascii values to 00000 83: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 120 Z Loc [ U2ascii_0 ] 84: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 121 Z Loc [ U2ascii_1 ] 85: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 122 Z Loc [ U2ascii_2 ] 86: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 123 Z Loc [ U2ascii_3 ] 87: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 124 Z Loc [ U2ascii_4 ] 88: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 125 Z Loc [ U2ascii_5 ] 89: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 126 Z Loc [ U2ascii_6 ] ; Set port 6 low to trigger measurment 90: Do (P86) 1: 56 Set Port 6 Low ; Read Benthos PSA-916 RS232 output. P15 uses CP6 as DTR, CP7 as RX. ; Receives ascii string as binary RS232, 1200 baud (set inside sounder ; with dip switches). Term char 13 = . Output is"Rxx.xx(E)" ; i.e. 8(9) characters (the E and 9 if no echo rec'd). ; P63 identifies 82 (Ascii R) as leading ; tag, and P15 identifies as end tag. Five values xx.xx (Ascii . = 46) ; read into 5 input locations from U#ascii_1 91: Port Serial I/O (P15) 1: 1 Reps 2: 21 8-Bit, RS-232 Binary, 1200 Baud 3: 1 Delay (0.01 sec units) before TX 4: 6 C6 RTS/DTR 5: 100 Start Loc for TX [ TX_NULL ] 6: 0 Number of Locs to TX 7: 13 Termination Character for RX 8: 9 Max Characters to RX 9: 200 Time Out for CTS (TX) and/or RX (0.01 sec units) 10: 121 Start Loc for RX [ U2ascii_1 ] 11: 1.0 Multiplier for RX 12: 0.0 Offset for RX 92: Extended Parameters (P63) 1: 82 Option 2: 00 Option 3: 00 Option 4: 00 Option 5: 00 Option 6: 00 Option 7: 00 Option 8: 00 Option ; Set port 6 high to end measure mode UWS2. 93: Do (P86) 1: 46 Set Port 6 High ; Conversion from binary (Uascii_1 .. _5) to decimal (Udec_1.._5) ; Using subroutine 3 for conversion digit by digit ; First put all readings in same format xx.xx If x.xx (as ; leading zeros are dropped) then insert a leading zero after ; bumping digits along one place. 94: If (X<=>F) (P89) 1: 122 X Loc [ U2ascii_2 ] 2: 1 = 3: 46 F 4: 30 Then Do 95: Z=X (P31) 1: 124 X Loc [ U2ascii_4 ] 2: 125 Z Loc [ U2ascii_5 ] 96: Z=X (P31) 1: 123 X Loc [ U2ascii_3 ] 2: 124 Z Loc [ U2ascii_4 ] 97: Z=X (P31) 1: 122 X Loc [ U2ascii_2 ] 2: 123 Z Loc [ U2ascii_3 ] 98: Z=X (P31) 1: 121 X Loc [ U2ascii_1 ] 2: 122 Z Loc [ U2ascii_2 ] 99: Z=F x 10^n (P30) 1: 48 F 2: 00 n, Exponent of 10 3: 121 Z Loc [ U2ascii_1 ] 100: End (P95) ; Now do digit by digit conversion 101: Z=X (P31) 1: 121 X Loc [ U2ascii_1 ] 2: 101 Z Loc [ num_ascii ] 102: Z=F x 10^n (P30) 1: 10 F 2: 0 n, Exponent of 10 3: 103 Z Loc [ mult ] 103: Do (P86) 1: 2 Call Subroutine 2 ; This takes num_ascii value and converts from ascii -> dec also ; using mult as multiplier (tens/ones/tenths/hundreds) to output num_dec. ; This is saved as U#_meters to which next digits are added after ; appropraite decrease in mult by factor of 10. 104: Z=X (P31) 1: 102 X Loc [ num_dec ] 2: 60 Z Loc [ U2_meters ] ; Now second digit 105: Z=X (P31) 1: 122 X Loc [ U2ascii_2 ] 2: 101 Z Loc [ num_ascii ] 106: Do (P86) 1: 2 Call Subroutine 2 107: Z=X+Y (P33) 1: 60 X Loc [ U2_meters ] 2: 102 Y Loc [ num_dec ] 3: 60 Z Loc [ U2_meters ] ; Now third digit - skipping decimal point (Uascii_3) 108: Z=X (P31) 1: 124 X Loc [ U2ascii_4 ] 2: 101 Z Loc [ num_ascii ] 109: Do (P86) 1: 2 Call Subroutine 2 110: Z=X+Y (P33) 1: 60 X Loc [ U2_meters ] 2: 102 Y Loc [ num_dec ] 3: 60 Z Loc [ U2_meters ] ; Now fourth digit 111: Z=X (P31) 1: 125 X Loc [ U2ascii_5 ] 2: 101 Z Loc [ num_ascii ] 112: Do (P86) 1: 2 Call Subroutine 2 113: Z=X+Y (P33) 1: 60 X Loc [ U2_meters ] 2: 102 Y Loc [ num_dec ] 3: 60 Z Loc [ U2_meters ] ; U#_meters is depth from UnderWaterSounder# to reflector in [m] ; using a speed of sounds in water: 1500 m/s. Now convert using ratio ; c_ratio = c / 1500 where c[m/s] = 1449 + 4.6 T[C] ; ( MacKenzie, JASA vol 70, 1981, 807 ) ; ; c(D,S,T) = 1448.96 + 4.591*T - 5.304 x 10^-2*T^2 + 2.374 x 10^-4*T^3 + ; ... 1.340*(S-35) + 1.630 x 10^-2*D + 1.675 x 10^-7*D^2 - 1.025 x 10^-2*T*(S-35) - 7.139 x 10^-13*T*D^3 ; ; Fresh water linear fit for: ; S[ppt] = 0, D[m] = 0, T = 18 to 28 C, gives ; c(T[C]) = 1434 + 2.86*T 114: If (X<=>F) (P89) 1: 60 X Loc [ U2_meters ] 2: 04 < 3: 99 F 4: 30 Then Do 115: Z=X*F (P37) 1: 3 X Loc [ Tw107_C ] 2: 4.6 F 3: 104 Z Loc [ c_snd_wtr ] 116: Z=X+F (P34) 1: 104 X Loc [ c_snd_wtr ] 2: 1449 F 3: 104 Z Loc [ c_snd_wtr ] 117: Z=X*F (P37) 1: 104 X Loc [ c_snd_wtr ] 2: .000666 F 3: 109 Z Loc [ c_ratio ] 118: Z=X*Y (P36) 1: 60 X Loc [ U2_meters ] 2: 109 Y Loc [ c_ratio ] 3: 60 Z Loc [ U2_meters ] 119: End (P95) ; Set trigger port low. At start of next measurement, it is first ; paused then triggered to intiate measurement. 120: Do (P86) 1: 56 Set Port 6 Low ; ************** OUTPUT ************************** OUTPUT ************************ 121: Do (P86) 1: 10 Set Output Flag High ;Array ID abc : a - # snow pingers (3) ; b - # benthos sounders (2) ; c - # therm strings (2) 122: Set Active Storage Area (P80) 1: 1 Final Storage Area 1 2: 110 Array ID 123: Real Time (P77) 1: 1110 Year,Day,Hour/Minute (midnight = 0000) 124: Resolution (P78) 1: 0 Low Resolution 125: Sample (P70) 1: 5 Reps 2: 1 Loc [ T_CR10X ] 126: Resolution (P78) 1: 1 High Resolution 127: Sample (P70) 1: 3 Reps 2: 70 Loc [ SR0_meter ] 128: Sample (P70) 1: 1 Reps 2: 50 Loc [ U1_meters ] 129: Sample (P70) 1: 1 Reps 2: 60 Loc [ U2_meters ] ; now 16 reps each 130: Sample (P70) 1: 16 Reps 2: 11 Loc [ Therm1_1 ] 131: Sample (P70) 1: 16 Reps 2: 27 Loc [ Therm2_1 ] ; Activate Serial Output: send data to SM4M for storage. 132: Serial Out (P96) 1: 71 Storage Module ; **** Switched 12 V Off **** 133: Do (P86) 1: 53 Set Port 3 Low *Table 2 Program 02: 0 Execution Interval (seconds) ; No table two at this time, 1/2/06 *Table 3 Subroutines End Program ; Two subroutines: SR1 thermistor measurements, ; SR2 ascii -> decimal conversion for benthos meas. ; *** Subroutine 1: Average 10+ve and 10 -ve polarity bridge meas *** ; For all thermistor strings: checking Therm_num for case. 1: Beginning of Subroutine (P85) 1: 1 Subroutine 1 2: Resolution (P78) 1: 1 High Resolution 3: Z=F (P30) 1: 0 F 2: 0 Exponent of 10 3: 8 Z Loc [ totalmeas ] ; Check if Therm String 1 called 4: If (X<=>F) (P89) 1: 10 X Loc [ Therm_num ] 2: 1 = 3: 1 F 4: 30 Then Do 5: Beginning of Loop (P87) 1: 0 Delay 2: 10 Loop Count 6: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 1 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 mV Excitation 7: 7 Loc [ onemeas ] 8: 1 Mult 9: 0.0 Offset 7: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 8: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 1 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 -- mV Excitation 7: 7 Loc [ onemeas ] 8: -1 Mult 9: 0.0 Offset 9: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 10: End (P95) 11: End (P95) ; End case Therm_num = 1 ; Check case Therm_num = 2 12: If (X<=>F) (P89) 1: 10 X Loc [ Therm_num ] 2: 1 = 3: 2 F 4: 30 Then Do 13: Beginning of Loop (P87) 1: 0 Delay 2: 10 Loop Count 14: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 2 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 mV Excitation 7: 7 Loc [ onemeas ] 8: 1 Mult 9: 0.0 Offset 15: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 16: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 2 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 -- mV Excitation 7: 7 Loc [ onemeas ] 8: -1 Mult 9: 0.0 Offset 17: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 18: End (P95) 19: End (P95) ; End case Therm_num = 2 ; Check case Therm_num = 3 20: If (X<=>F) (P89) 1: 10 X Loc [ Therm_num ] 2: 1 = 3: 3 F 4: 30 Then Do 21: Beginning of Loop (P87) 1: 0 Delay 2: 10 Loop Count 22: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 3 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 mV Excitation 7: 7 Loc [ onemeas ] 8: 1 Mult 9: 0.0 Offset 23: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 24: Excite-Delay (SE) (P4) 1: 1 Reps 2: 5 2500 mV Slow Range 3: 3 SE Channel 4: 1 Excite all reps w/Exchan 1 5: 1 Delay (units 0.01 sec) 6: 2500 -- mV Excitation 7: 7 Loc [ onemeas ] 8: -1 Mult 9: 0.0 Offset 25: Z=X+Y (P33) 1: 7 X Loc [ onemeas ] 2: 8 Y Loc [ totalmeas ] 3: 8 Z Loc [ totalmeas ] 26: End (P95) 27: End (P95) ; End case Therm_num = 3 28: Z=X*F (P37) 1: 8 X Loc [ totalmeas ] 2: 0.05 F 3: 9 Z Loc [ avemeas ] 29: End (P95) ; ********* Subroutine 2 convert ascii -> decimal ***** ; ; Benthos sounders return depth in ascii. Convert digit-by-digit ; to decimal here, then save as one number [num_dec] for output. 30: Beginning of Subroutine (P85) 1: 2 Subroutine 2 31: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 48 F 4: 30 Then Do 32: Z=F x 10^n (P30) 1: 0 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 33: End (P95) 34: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 49 F 4: 30 Then Do 35: Z=F x 10^n (P30) 1: 1 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 36: End (P95) 37: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 50 F 4: 30 Then Do 38: Z=F x 10^n (P30) 1: 2 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 39: End (P95) 40: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 51 F 4: 30 Then Do 41: Z=F x 10^n (P30) 1: 3 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 42: End (P95) 43: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 52 F 4: 30 Then Do 44: Z=F x 10^n (P30) 1: 4 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 45: End (P95) 46: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 53 F 4: 30 Then Do 47: Z=F x 10^n (P30) 1: 5 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 48: End (P95) 49: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 54 F 4: 30 Then Do 50: Z=F x 10^n (P30) 1: 6 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 51: End (P95) 52: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 55 F 4: 30 Then Do 53: Z=F x 10^n (P30) 1: 7 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 54: End (P95) 55: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 56 F 4: 30 Then Do 56: Z=F x 10^n (P30) 1: 8 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 57: End (P95) 58: If (X<=>F) (P89) 1: 101 X Loc [ num_ascii ] 2: 1 = 3: 57 F 4: 30 Then Do 59: Z=F x 10^n (P30) 1: 9 F 2: 00 n, Exponent of 10 3: 102 Z Loc [ num_dec ] 60: End (P95) 61: Z=X*Y (P36) 1: 102 X Loc [ num_dec ] 2: 103 Y Loc [ mult ] 3: 102 Z Loc [ num_dec ] ; divide mult unit by 10 for next digit to be converted 62: Z=X*F (P37) 1: 103 X Loc [ mult ] 2: 0.1 F 3: 103 Z Loc [ mult ] 63: End (P95) 1 [ T_CR10X ] RW-- 1 1 ----- ------ --- 2 [ V_CR10X ] RW-- 1 1 ----- ------ --- 3 [ Tw107_C ] RW-- 3 2 ----- ------ --- 4 [ RH_CS500 ] -W-- 0 1 ----- ------ --- 5 [ TaCS500_C ] -W-- 0 1 ----- ------ --- 6 [ TaCS500_K ] RW-- 3 1 ----- ------ --- 7 [ onemeas ] RW-- 6 6 ----- ------ --- 8 [ totalmeas ] RW-- 7 7 ----- ------ --- 9 [ avemeas ] RW-- 2 1 ----- ------ --- 10 [ Therm_num ] RW-- 3 2 ----- ------ --- 11 [ Therm1_1 ] RW-- 1 1 ----- ------ --- 12 [ _________ ] ---- 0 0 ----- ------ --- 13 [ _________ ] ---- 0 0 ----- ------ --- 14 [ _________ ] ---- 0 0 ----- ------ --- 15 [ _________ ] ---- 0 0 ----- ------ --- 16 [ _________ ] ---- 0 0 ----- ------ --- 17 [ _________ ] ---- 0 0 ----- ------ --- 18 [ _________ ] ---- 0 0 ----- ------ --- 19 [ _________ ] ---- 0 0 ----- ------ --- 20 [ _________ ] ---- 0 0 ----- ------ --- 21 [ _________ ] ---- 0 0 ----- ------ --- 22 [ _________ ] ---- 0 0 ----- ------ --- 23 [ _________ ] ---- 0 0 ----- ------ --- 24 [ _________ ] ---- 0 0 ----- ------ --- 25 [ _________ ] ---- 0 0 ----- ------ --- 26 [ _________ ] ---- 0 0 ----- ------ --- 27 [ Therm2_1 ] RW-- 1 1 ----- ------ --- 28 [ _________ ] R--- 1 0 ----- ------ --- 29 [ _________ ] R--- 1 0 ----- ------ --- 30 [ _________ ] R--- 1 0 ----- ------ --- 31 [ _________ ] R--- 1 0 ----- ------ --- 32 [ _________ ] R--- 1 0 ----- ------ --- 33 [ _________ ] R--- 1 0 ----- ------ --- 34 [ _________ ] R--- 1 0 ----- ------ --- 35 [ _________ ] R--- 1 0 ----- ------ --- 36 [ _________ ] R--- 1 0 ----- ------ --- 37 [ _________ ] R--- 1 0 ----- ------ --- 38 [ _________ ] R--- 1 0 ----- ------ --- 39 [ _________ ] R--- 1 0 ----- ------ --- 40 [ _________ ] R--- 1 0 ----- ------ --- 41 [ _________ ] R--- 1 0 ----- ------ --- 42 [ _________ ] R--- 1 0 ----- ------ --- 43 [ _________ ] ---- 0 0 ----- ------ --- 44 [ _________ ] ---- 0 0 ----- ------ --- 45 [ _________ ] ---- 0 0 ----- ------ --- 46 [ _________ ] ---- 0 0 ----- ------ --- 47 [ _________ ] ---- 0 0 ----- ------ --- 50 [ U1_meters ] RW-- 7 6 ----- ------ --- 59 [ _________ ] ---- 0 0 ----- ------ --- 60 [ U2_meters ] RW-- 5 5 ----- ------ --- 70 [ SR0_meter ] RW-- 1 1 ----- ------ --- 71 [ SR1_meter ] RW-- 1 1 ----- ------ --- 72 [ SR2_meter ] RW-- 1 1 ----- ------ --- 73 [ _________ ] ---- 0 0 ----- ------ --- 74 [ SR_meas ] RW-- 3 3 ----- ------ --- 75 [ SR_Tref ] RW-- 3 3 ----- ------ --- 76 [ SR_Tratio ] RW-- 6 6 ----- ------ --- 77 [ _________ ] ---- 0 0 ----- ------ --- 93 [ _________ ] ---- 0 0 ----- ------ --- 94 [ _________ ] ---- 0 0 ----- ------ --- 95 [ _________ ] ---- 0 0 ----- ------ --- 100 [ TX_NULL ] R--- 2 0 ----- ------ --- 101 [ num_ascii ] RW-- 10 8 ----- ------ --- 102 [ num_dec ] RW-- 9 11 ----- ------ --- 103 [ mult ] RW-- 2 3 ----- ------ --- 104 [ c_snd_wtr ] RW-- 4 4 ----- ------ --- 109 [ c_ratio ] RW-- 3 2 ----- ------ --- 110 [ U1ascii_0 ] -W-- 0 2 ----- ------ --- 111 [ U1ascii_1 ] RW-- 2 4 ----- ------ --- 112 [ U1ascii_2 ] RW-- 3 2 ----- ------ --- 113 [ U1ascii_3 ] RW-- 1 2 ----- ------ --- 114 [ U1ascii_4 ] RW-- 2 2 ----- ------ --- 115 [ U1ascii_5 ] R--- 1 0 ----- ------ --- 116 [ U1ascii_6 ] -W-- 0 1 ----- ------ --- 117 [ _________ ] ---- 0 0 ----- ------ --- 118 [ _________ ] ---- 0 0 ----- ------ --- 119 [ _________ ] ---- 0 0 ----- ------ --- 120 [ U2ascii_0 ] -W-- 0 1 ----- ------ --- 121 [ U2ascii_1 ] RW-- 2 3 ----- ------ --- 122 [ U2ascii_2 ] RW-- 2 2 ----- ------ --- 123 [ U2ascii_3 ] -W-- 0 2 ----- ------ --- 124 [ U2ascii_4 ] RW-- 1 2 ----- ------ --- 125 [ U2ascii_5 ] -W-- 0 2 ----- ------ --- 126 [ U2ascii_6 ] -W-- 0 1 ----- ------ --- 127 [ _________ ] ---- 0 0 ----- ------ --- 128 [ _________ ] ---- 0 0 ----- ------ --- 129 [ _________ ] ---- 0 0 ----- ------ --- 130 [ Hmeas ] RW-- 2 2 ----- ------ --- 131 [ _________ ] ---- 0 0 ----- ------ --- 132 [ _________ ] ---- 0 0 ----- ------ --- 133 [ _________ ] ---- 0 0 ----- ------ --- 134 [ _________ ] ---- 0 0 ----- ------ --- 135 [ Htot ] RW-- 2 2 ----- ------ --- 136 [ Have ] RW-- 1 1 ----- ------ --- 137 [ _________ ] ---- 0 0 ----- ------ --- 138 [ _________ ] ---- 0 0 ----- ------ --- 139 [ _________ ] ---- 0 0 ----- ------ --- 140 [ HP1_V_1 ] -W-- 0 1 ----- ------ --- 141 [ HP1_V_2 ] ---- 0 0 ----- ------ --- 142 [ HP1_V_3 ] ---- 0 0 ----- ------ --- 143 [ HP1_V_4 ] ---- 0 0 ----- ------ --- 144 [ HP2_V_1 ] ---- 0 0 ----- ------ --- 145 [ HP2_V_2 ] ---- 0 0 ----- ------ --- 146 [ HP2_V_3 ] ---- 0 0 ----- ------ --- 147 [ HP2_V_4 ] ---- 0 0 ----- ------ --- 148 [ HP3_V_1 ] ---- 0 0 ----- ------ --- 149 [ HP3_V_2 ] ---- 0 0 ----- ------ --- 150 [ HP3_V_3 ] ---- 0 0 ----- ------ --- 151 [ HP3_V_4 ] ---- 0 0 ----- ------ --- 152 [ SR_mas ] ---- 0 0 ----- ------ --- 153 [ SR50_meas ] ---- 0 0 ----- ------ --- 154 [ Tw107_K ] ---- 0 0 ----- ------ ---