Baffle timestamp: ' . date("r", $timestamp ) . ''; //placeText(560, 1395, "LN2 Tank", 130, 5, "#000000"); $link = $adeiChannel[15][6] . "," . $adeiChannel[15][7]; //placePicWithLink(563,1367, "LN2tank.png", 45, "LN2 tank", $link); $value = $adeiValue[15][6]*0.77+0.83; $link = $adeiChannel[15][6]; $text = sprintf('%.0F', $value) . " %"; //placeTextWithLink(590, 1395, $text, 70, 4, "#000000", "LN2 tank level", $link); $value = $adeiValue[15][7]-1.86; $link = $adeiChannel[15][7]; $text = sprintf('%.1F', $value) . " bar"; //placeTextWithLink(590, 1450, $text, 70, 4, "#000000", "LN2 tank pressure", $link); for ($id = 0; $id < 3; $id++) { $value = $adeiValue[15][$id]; $pic = "ice.png"; $text = "---"; if ($value < 800) { $text = sprintf('%.0F', $value) . " K"; if ($value > $max[$id]) $pic = "iceOff.png"; else { $value = $adeiValue[15][$id + 3]; if ($value > 0.1 && $value <= 100.0) $pic = "iceOn.png"; else $pic = "iceBlink.gif"; } } $pos = $id; if ($id == 0) $pos = 1; else if ($id == 1) $pos = 0; $link = $adeiChannel[15][$id] . "," . $adeiChannel[15][$id + 3]; placePicWithLink(410 + $pos * 50, 1375, $pic, 30, "status baffle PP" . ($id + 1) . " blue: cooled, red: warmed, blinking: warming, grey: undefined", $link); placeTextWithLink(437 + $pos * 50, 1355, $text, 70, 4, "#000000", "temperature baffle PP" . ($id + 1), $link); } // ########## PRESSURES ########## // CC2320 $value = $adeiValue[7][0]; $pic = "cc"; $text = "---"; if ($value > 1E+2) { $pic = $pic; $text = "OFF"; } else if ($value > 2E-5) { $pic = $pic . "Off"; $text = "high"; } else if ($value <= 1E-4 && $value >= 1E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } else if ($value < 1E-11) { $text = "LOW"; } placePicWithLink(410, 1435, $pic . ".png", 30, "status cold cathode gauge CC2320 green: on, red: off, grey: undefined", $adeiChannel[7][0]); placeTextWithLink(439, 1415, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC2320: P = ".sprintf('%.3E mbar;', $value), $adeiChannel[7][0]); $time_conversion_factor = 621355968000000000; // conversion for PCS7 .NET value; $timestamp = ($adeiValue[7][8] - $time_conversion_factor) / 10000000; echo '

Vacuum timestamp: ' . date("r", $timestamp ) . '

'; // CC2345 $value = $adeiValue[7][7]; $pic = "cc"; $text = "---"; if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; } else if ($value <= 1E-4 && $value >= 1E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } else if ($value < 1E-11) { $text = "LOW"; } placePicWithLink(427, 1482, $pic . ".png", 30, "status cold cathode gauge CC2345 green: on, red: off, grey: undefined", $adeiChannel[7][7]); placeTextWithLink(406, 1462, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC2345: P = ".sprintf('%.3E mbar;', $value), $adeiChannel[7][7]); // Ex3110 $value = $adeiValue[8][0]; $pic = "ex"; $text = "---"; if ($value > 2E-5) {$text = "OFF"; {if ($MSmode < 5) $pic = $pic . "Off"; else $pic = $pic;}} else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } placePicWithLink(510, 1435, $pic . ".png", 30, "status extractor ion gauge Ex3110 green: on, red: off, grey: undefined", $adeiChannel[8][0]); placeTextWithLink(539, 1415, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex3110", $adeiChannel[8][0]); // Ex1110 $value = $adeiValue[28][0]; $link = $adeiChannel[28][0]; $pic = "ex"; $text = "---"; if ($value > 2E-5) {$text = "OFF"; {if ($MSmode < 5) $pic = $pic . "Off"; else $pic = $pic;}} else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value);} placePicWithLink(460, 1435, $pic.".png", 30, "status extractor ion gauge Ex1110 green: off, blinking: on, grey: undefined", $link); placeTextWithLink(489, 1415, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex1110", $link); // Ex0096 $value = $adeiValue[9][2]; $link = $adeiChannel[9][2]; $pic = "ex"; $text = "---"; if ($value > 1E+2) {$text = "OFF"; {if ($MSmode < 5) $pic = $pic . "Off"; else $pic = $pic;}} else if ($value > 2E-5) { $pic = $pic . "Off"; $text = "OFF"; } else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value);} placePicWithLink(230, 1220, $pic.".png", 30, "status extractor ion gauge 0096 green: off, blinking: on, grey: undefined", $link); placeTextWithLink(259, 1200, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge 0096", $link); // CC FPD $value = $adeiValue[6][1]; $pic = "cc"; $text = "---"; if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; } if ($value < 1E-11) { $pic = $pic . "Off"; $text = "OFF"; } else if ($value <= 1E-4 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } placePicWithLink(188, 1475, $pic . ".png", 30, "status FPD cold cathode gauge green: on, red: off, grey: undefined", $adeiChannel[6][1]); placeTextWithLink(217, 1455, $text, 70, 4, "#000000", "pressure [mbar] FPD cold cathode gauge", $adeiChannel[6][1]); // Gauge Baffle $value = $adeiValue[4][0]; $link = $adeiChannel[4][0]; $color = "#000000"; $pic = "gauge"; $text = "---"; if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; } // standard cold blue "#0026FF" , ice cold blue "#107BC7" if ($value < 2E-6 && $value > 1E-9) { $pic ="gaugeOn"; $color ="#107BC7"; $text = sprintf('%.1E', $value); } else if ($value >= 1E-6 && $value < 1e-1) { $pic = "gaugeOff"; $color = "FF0000"; $text = sprintf('%.1E', $value); } placePicWithLink(460, 1315, $pic . ".png", 30, "status baffle insulation vacuum gauge gray: off, green: on, red: too high Should be < 5e-6 mbar for HV operation!!!", $link); placeTextWithLink(460+29, 1295, $text, 70, 4, $color, "pressure [mbar] baffle insulation vacuum gauge", $link); // PS CC1232 $value = $adeiValue[27][0]; $link = $adeiChannel[27][0]; $pic = "cc"; $text = "---"; if ($value >= 9.9E-5) { $pic = $pic . "Off"; $text = "OFF"; } else if ($value < 1E-4 && $value > 1.2E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } placePicWithLink(370, 240, $pic . ".png", 30, "status cold cathode gauge CC1232 green: on, red: off, grey: undefined", $link); placeTextWithLink(399, 220, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC1232", $link); // PS Ex1221 $value = $adeiValue[27][5]; $link = $adeiChannel[27][5]; $pic = "ex"; $text = "---"; if ($value >= 9.9E-5) {$text = "OFF"; {if ($PSmode < 5) $pic = $pic . "Off"; else $pic = $pic;}} else if ($value < 1E-4 && $value > 7E-13) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); } placePicWithLink(188, 141, $pic . ".png", 30, "status extractor ion gauge Ex1221 green: on, red: off, grey: undefined", $link); placeTextWithLink(217, 121, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex1221", $link); // ########## VACUUM PUMPS ########## // MS TMP Temperatures //Tmax $value = max($adeiValue[25][0], $adeiValue[25][1], $adeiValue[25][2]); $link = $adeiChannel[25][0] . "," . $adeiChannel[25][1] . "," . $adeiChannel[25][2]; $color = "#000000"; if ($value < 10) $color = "#0026FF"; else if ($value > 50) $color = "#FF0000"; placeTextWithLink(435, 1625, sprintf('%.1F °C', $value), 70, 3, $color, "TMP max temperature PP2", $link); $value = max($adeiValue[26][0], $adeiValue[26][1], $adeiValue[26][2]); $link = $adeiChannel[26][0] . "," . $adeiChannel[26][1] . "," . $adeiChannel[26][2]; $color = "#000000"; if ($value < 10) $color = "#0026FF"; else if ($value > 50) $color = "#FF0000"; placeTextWithLink(535, 1625, sprintf('%.1F °C', $value), 70, 3, $color, "TMP max temperature PP3", $link); // TMPs (PP2 + PP3) for ($pp = 0; $pp < 2; $pp++) { for ($id = 0; $id < 3; $id++) { $value = $adeiValue[$pp + 7][$id + 1]; $pic = "tmp"; $text = "---"; if ($value < 30) { If ($MSmode < 5) $pic = $pic . "Off"; } else if ($value >= 30 && $value < 520) { $text = sprintf('%.0F', $value); if ($value > 500) { $value = $adeiValue[$pp + 7][$id + 4]; //$pic = $pic . "On"; if ($value == 1) $pic = $pic . "On"; else if ($value == 0) $pic = $pic . "Closed"; } else if ($value > 220) { $value = $adeiValue[$pp + 7][$id + 4]; //$pic = $pic . "On"; if ($value == 1) $pic = $pic . "Standby"; else if ($value == 0) $pic = $pic . "Standby"; } } if (($id == 2) & ($pp == 0)) $pic = "tmp"; placePicWithLink(410 + $pp * 100, 1528 + $id * 35, $pic . ".png", 30, "status turbo-molecular pump TMP" . ($pp + 2) . ($id + 4) . "20 green: on, yellow: on but isolated, red: off, grey: undefined", $adeiChannel[$pp + 7][$id + 1]); placeTextWithLink(439 + $pp * 100, 1518 + $id * 35, $text, 50, 4, "#000000", "rotational speed [Hz] turbo-molecular pump TMP" . ($pp + 2) . ($id + 4) . "20", $adeiChannel[$pp + 7][$id + 1]); } } // PS TMPs for ($id = 0; $id < 2; $id++) { $value = $adeiValue[27][$id + 1]; $link = $adeiChannel[27][$id + 1]; $pic = "tmp"; $text = "---"; if ($value < 50) { If ($PSmode < 5) $pic = $pic . "Off"; } else if ($value >= 50 && $value < 700) { $text = sprintf('%.0F', $value); if ($value > 570) { $value = $adeiValue[27][$id + 3]; //$pic = $pic . "On"; if ($value == 1) $pic = $pic . "On"; else if ($value == 0) $pic = $pic . "Standby"; } } placePicWithLink(370, 157 + $id * 35, $pic . ".png", 30, "status turbo-molecular pump TMP" . (1122 + $id) . " green: on, yellow: on but isolated, red: off, grey: undefined", $link); placeTextWithLink(399, 148 + $id * 35, $text, 50, 4, "#000000", "rotational speed [Hz] turbo-molecular pump TMP" . (1122 + $id), $link); } // FPD CP $value = $adeiValue[6][3]; $pic = "cp"; $text = "---"; if ($value > 20) { $pic = $pic . "Off"; } else if ($value <= 20 && $value > 5) { $text = sprintf('%.0F K', $value); $value = $adeiValue[6][12]; if ($value == 1) { $pic = $pic . "On"; } else if ($value == 0) { $pic = $pic . "Standby"; } } placePicWithLink(345, 1480, $pic . ".png", 30, "status FPD UHV cryo pump green: on, yellow: on but isolated, red: off, grey: undefined", $adeiChannel[6][3]); placeTextWithLink(375, 1460, $text, 70, 3, "#000000", "temperature FPD UHV cryo pump", $adeiChannel[6][3]); // ########## FPD SOURCES ########## $pic = "source"; $text = "---"; if ($adeiValue[6][9] == 1 && $adeiValue[6][10] == 1) { $pic = $pic . "On"; $text = "OUT"; } else if ($adeiValue[6][9] == 1 && $adeiValue[6][10] == 0) { $pic = $pic . "EIn"; $text = "IN"; } else if ($adeiValue[6][9] == 0 && $adeiValue[6][10] == 1) { $pic = $pic . "GIn"; $text = "IN"; } else if ($adeiValue[6][9] == 0 && $adeiValue[6][10] == 0) { $pic = $pic . "Off"; $text = "IN"; } $link = $adeiChannel[6][9] . "," . $adeiChannel[6][10]; placePicWithLink(345, 1525, $pic . ".png", 30, "status FPD sources (electron and gamma source) green: retracted (out), red: inserted (in), grey: undefined", $link); placeTextWithLink(375, 1505, $text, 70, 3, "#000000", "status FPD sources (electron and gamma source)", $link); // ########## AIR COILS ########## // LFCS $tol = 0.3; $text = "Unkn"; $color = "#FFD800"; $lfcs_array_offset = 2; $lfcs_config = -1; // store config for emcs later in loop for ($pp = 0; $pp < sizeof($aircoil_settings); $pp++) { for ($id = 0; $id < 22; $id++) // still old air coil number { $tol = abs($tol); if ($id == 20) {$lfcs_array_offset = -19; } if ($id == 21) {$lfcs_array_offset = -21; } if (abs($adeiValue[0][$id + $lfcs_array_offset] - $aircoil_settings[$pp][$id + 1]) < $tol) { if ($id == 19) { $text = $aircoil_settings[$pp][0]; $lfcs_config = $pp; $color = "#FF9300"; } if ($id == 21) { $color = "#4CFF00"; } } else break; } if ($lfcs_config > -1) break; } if ($text == "All Off") { $text = "OFF"; $color = "#FF0000"; } $mace_setting["LFCS"]=$text; placeText(-15, 232, "LFCS", 85, 5, "#000000"); placeBox(10, 230, $text, 85, 3, $color); // EMCS $tol = 0.2; $text = "???"; $color = "#FFD800"; $EMCShor = $aircoil_settings[$lfcs_config][21]; $EMCSver = $aircoil_settings[$lfcs_config][22]; if ($adeiValue[0][0] > $EMCSver - $tol && $adeiValue[0][0] < $EMCSver + $tol && $adeiValue[0][1] > $EMCShor - $tol && $adeiValue[0][1] < $EMCShor + $tol) { $text = "On OK"; $color = "#4CFF00"; } else if ($adeiValue[0][0] > $tol || $adeiValue[0][1] > $tol) { $text = "Unkn"; $color = "#FFD800"; } else { $text = "ERR ".$lfcs[$lfcs_config][16]; $color = "#FF0000"; } if ($adeiValue[0][0] < $tol && $adeiValue[0][1] < $tol && $adeiValue[0][0] > -$tol && $adeiValue[0][1] > -$tol) { $text = "OFF"; $color = "#FF0000"; } $mace_setting["EMCS"]=$text; placeText(50, 232, "EMCS", 85, 5, "#000000"); placeBox(75, 230, $text, 85, 3, $color); // print current values $tol = 0.5; for ($coil = 0; $coil < 22; $coil++) { $current = $adeiValue[0][$coil]; $voltage = $adeiValue[1][$coil]; $voltage = sprintf('%.1F', $voltage); $color = "#000000"; if (abs($current) < $adeiValue[21][$coil] - $tol || abs($current) > $adeiValue[21][$coil] + $tol) $color = "#FF0000"; if ($current < -$tol && $adeiValue[22][$coil] != 1) $color = "#FF0000"; if ($current > $tol && $adeiValue[22][$coil] != 0) $color = "#FF0000"; $current = sprintf('%.1F', $current); if ($current <= -100 || $current >= 100) $current = sprintf('%.0F', $current); if ($current >= -0.1 && $current <= 0.1) $current = sprintf('%.1F', 0.0); $vpos = -26; $pos = 609 + ($coil - 4) * 42.9; if ($coil == 0) {$pos = 320; $vpos = 56;} // pos for EMCS VER else if ($coil == 1) {$pos = 378; $vpos = 56;} // pos for EMCS HOR else if ($coil == 21) {$pos = $pos + 4;} // for coil 21 $lem = $adeiValue[2][$coil]; $color = "#006400"; if ($lem == 1) $current = "LEM"; $label = ($coil - 1); if ($coil == 0) $label = "VER"; else if ($coil == 1) $label = "HOR"; // add value label //if ($coil == 2) { // placeText($vpos+2, $pos-30, "I [A] =", 50, 2, "#888888"); // placeText($vpos+17, $pos-30, "U [V] =", 47, 1, "#888888"); //} // add air coil numbers here placeText($vpos+32, $pos, $label, 70, 2, "#000000"); // print voltage value of air coil placeTextWithLink($vpos+18, $pos, $voltage, 70, 1, $color, "air-coil voltage [V]", $adeiChannel[1][$coil]); // print current value of air coil placeTextWithLink($vpos, $pos, $current, 70, 4, $color, "air-coil current [A] LEM: DCCT offline", $adeiChannel[0][$coil]); } // ######### HV Divider Temp Monitoring if ($MSmode == 5) { // only display in MS operation mode High-Voltage $K35_temp = $adeiValue[10][26]; $K35_link = $adeiChannel[10][26]; $K65_temp = $adeiValue[10][27]; $K65_link = $adeiChannel[10][27]; $divider_temp_spec = 25.0; $tol_div = 0.2; $color = "#FFFFFF"; if (abs($K35_temp - $divider_temp_spec) > $tol_div) $color = "#FF0000"; if (abs($K35_temp) < 1) $color = "#ABABAB"; placeBox(586, 322,sprintf('%.1F °C', $K35_temp), 50, 2, $color); placePicWithLink(536,324, "K35_drawing.png", 50, "K35 temperature status", $K35_link); $color = "#FFFFFF"; if (abs($K65_temp - $divider_temp_spec) > $tol_div) $color = "#FF0000"; if (abs($K65_temp) < 1) $color = "#ABABAB"; placeBox(586, 378,sprintf('%.1F °C', $K65_temp), 50, 2, $color); placePicWithLink(536,379, "K65_drawing.png", 50, "K65 temperature status", $K65_link); } // ########## HIGH VOLTAGE ########## if (($MSmode == 5) or ($MSmode == 4)) { // only display in MS operation mode High-Voltage or baking // ##### path to patch panel configuration file if (file_exists("patchpanel/data/activeIEconfig.txt")) {$path_to_patchpanel = "patchpanel/data/activeIEconfig.txt"; }// only for KAAS server else {$path_to_patchpanel = "patchpanel/ringstoadei.txt"; } // for IKP dev server // load patch-panel configuration $handle = fopen($path_to_patchpanel, "r"); $ringsToAdei = array(); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $buffer = trim($buffer); $ringsToAdei[count($ringsToAdei)] = $buffer; } fclose($handle); } // labels $posY = 8; // offset between labels and voltages (13) $posX = 10; // down/bottom (7) if ($MSmode == 5) { // only display in MS operation mode High-Voltage $K35_value = $adeiValue[30][0]; $K35_link = $adeiChannel[30][0]; $K35_TS = $adeiValue[30][1]; $K35_RunFlag = $adeiValue[30][2]; $K35_text = "not connected"; $APR_value = $adeiValue[10][32]; $APR_link = $adeiChannel[10][32]; $APR_text = "not connected"; $K65_value = $adeiValue[30][3]; $K65_link = $adeiChannel[30][3]; $K65_TS = $adeiValue[30][4]; $K65_RunFlag = $adeiValue[30][5]; // Kal1 = DVM at IE Common voltage for SuperKrypton 2021 $Kal1_value = $adeiValue[30][6]; $Kal1_link = $adeiChannel[30][6]; $Kal1_TS = $adeiValue[30][7]; $Kal1_RunFlag = $adeiValue[30][8]; $Kal1_text = "DVM @ IE Common"; // Kal2 = JRL at PS vessel voltage $Kal2_value = $adeiValue[30][9]; $Kal2_link = $adeiChannel[30][9]; $Kal2_TS = $adeiValue[30][10]; $Kal2_RunFlag = $adeiValue[30][11]; $Kal2_text = "JRL @ PS(IE)"; $time_conversion_factor = 2082844800; $most_recent_TS = max($K35_TS,$K65_TS,$Kal1_TS); if (max($K35_RunFlag,$K65_RunFlag,$Kal1_RunFlag) > 0) { $timestamp = ($most_recent_TS - $time_conversion_factor); echo '

HV meas. timestamp: ' . date("r", $timestamp ) . '

'; } else echo ' HV meas. OFFLINE
'; //############# HV Monitoring K35 ################# // HV switch for K35 $hv_switch1103_k35 = $adeiValue[35][2]; $K35_text = "K35 readout"; if ($hv_switch1103_k35 == 1) $K35_text = "K35 @ MoS Voltage"; else if ($hv_switch1103_k35 == 0) $K35_text = "K35 @ MS Voltage + IE"; // voltage monitoring readout K35 $color = "#000000"; $factor_m = 1972.462; $factor_m_rel_error = 1.0e-6; $offset = 4.62e-06; $offset_error = 5e-07; $gain = 0.99999889; $gain_error = 1e-07; $value = ($K35_value - $offset) * $gain * $factor_m; $voltage_error = abs($value * $factor_m_rel_error * 1e3); // in mV if ($voltage_error*100 < 1) { $voltage_error = 0.2; } // voltage display K35 $link = $K35_link; $text = "K35 divider readout 436-REU-0-0201-0001, since KNM10 connected to main spectrometer precision voltage."; // coordinate offset on display $Xoffset = 660; $Yoffset = 320; // if (($K35_RunFlag > 0) && $local) if (($K35_RunFlag > 0) & ($value < 1)) { placeTextWithLink($Yoffset+20, $Xoffset-54, "U0 = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error ) .") V" , 270, 5, $color, $text, $link); } //display stability indicators { if ((sizeof($REU0201) > 2) & ($value < 1000)) { placeText($Yoffset+45, $Xoffset+11, $K35_text, 140, 2, $color); // K35 voltage reading if ($REU0201[0]['ppmdev'] <= 2e-6) $color1 = "lightgreen"; if ($REU0201[1]['ppmdev'] <= 2e-6) $color2 = "lightgreen"; if ($REU0201[2]['ppmdev'] <= 2e-6) $color3 = "lightgreen"; if ($REU0201[3]['ppmdev'] <= 2e-6) $color4 = "lightgreen"; if ($REU0201[0]['ppmdev'] > 2e-6) $color1 = "orange"; if ($REU0201[1]['ppmdev'] > 2e-6) $color2 = "orange"; if ($REU0201[2]['ppmdev'] > 2e-6) $color3 = "orange"; if ($REU0201[3]['ppmdev'] > 2e-6) $color4 = "orange"; if ($REU0201[0]['ppmdev'] > 5e-6) $color1 = "#FFA0A0"; if ($REU0201[1]['ppmdev'] > 5e-6) $color2 = "#FFA0A0"; if ($REU0201[2]['ppmdev'] > 5e-6) $color3 = "#FFA0A0"; if ($REU0201[3]['ppmdev'] > 5e-6) $color4 = "#FFA0A0"; placeBox($Yoffset+60, $Xoffset+115, "10s", 35, 1, $color1,0); placeBox($Yoffset+60, $Xoffset+80, "20s", 35, 1, $color2,0); placeBox($Yoffset+60, $Xoffset+45, "1m", 35, 1, $color3,0); placeBox($Yoffset+60, $Xoffset+10, "5m", 35, 1, $color4,0); echo '

HV status timestamp 0201: ' . $extraction_time_HV . '

'; } else placeText($Yoffset+45, $Xoffset+11, $K35_text, 140, 2, $color); // K35 voltage reading } //############# HV Monitoring K65 ################# // HV switch for K65 $hv_switch1102_k65 = $adeiValue[35][1]; $K65_text = "K65 readout"; if ($hv_switch1102_k65 == 1) $K65_text = "K65 @ MoS Voltage"; else if ($hv_switch1102_k65 == 0) $K65_text = "K65 @ MS Voltage + IE"; // calibration from KDB: [ -2.43e-06, 0.999999697, -3636.269 ] // voltage monitoring readout K65 $color = "#000000"; $factor_m = 3636.261; $factor_m_rel_error = 1.0e-6; // including calibration, gain and offset error $offset = 6.01e-06; $offset_error = 5e-7; $gain = 0.99999789; $gain_error = 1e-7; $value = ($K65_value - $offset) * $gain * $factor_m; $voltage_error = abs($value * $factor_m_rel_error * 1e3); // in mV if ($voltage_error < 1) { $voltage_error = 1; } // voltage display K65 $link = $K65_link; $text = "K65 divider channel 436-REU-0-0301-0001, precision voltage value, KNM5 calibration, in 2022 connected to K35"; $Xoffset = 930; $Yoffset = 320; if (($K65_RunFlag > 0) & ($value < 1)) { if (($value < -19724.6) & ($value > -19724.7)) placeText(340, 796, "calibration in progress", 170, 2, "green"); // calibration ongoing placeTextWithLink($Yoffset+20, $Xoffset-54, "U0 = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error ) .") V" , 270, 5, $color, $text, $link); } //display stability indicators { if ((sizeof($REU0301) > 2) & ($value < 1000)) { placeText($Yoffset+45, $Xoffset+11, $K65_text, 140, 2, $color); // K65 voltage reading if ($REU0301[0]['ppmdev'] <= 2e-6) $color1 = "lightgreen"; if ($REU0301[1]['ppmdev'] <= 2e-6) $color2 = "lightgreen"; if ($REU0301[2]['ppmdev'] <= 2e-6) $color3 = "lightgreen"; if ($REU0301[3]['ppmdev'] <= 2e-6) $color4 = "lightgreen"; if ($REU0301[0]['ppmdev'] > 2e-6) $color1 = "orange"; if ($REU0301[1]['ppmdev'] > 2e-6) $color2 = "orange"; if ($REU0301[2]['ppmdev'] > 2e-6) $color3 = "orange"; if ($REU0301[3]['ppmdev'] > 2e-6) $color4 = "orange"; if ($REU0301[0]['ppmdev'] > 5e-6) $color1 = "#FFA0A0"; if ($REU0301[1]['ppmdev'] > 5e-6) $color2 = "#FFA0A0"; if ($REU0301[2]['ppmdev'] > 5e-6) $color3 = "#FFA0A0"; if ($REU0301[3]['ppmdev'] > 5e-6) $color4 = "#FFA0A0"; placeBox($Yoffset+60, $Xoffset+115, "10s", 35, 1, $color1,0); placeBox($Yoffset+60, $Xoffset+80, "20s", 35, 1, $color2,0); placeBox($Yoffset+60, $Xoffset+45, "1m", 35, 1, $color3,0); placeBox($Yoffset+60, $Xoffset+10, "5m", 35, 1, $color4,0); echo '

HV status timestamp 0301: ' . $extraction_time_HV . '

'; } else placeText($Yoffset+45, $Xoffset+11, $K65_text, 140, 2, $color); // K65 voltage reading } //############# HV Monitoring Kal_U1 ################# // voltage monitoring readout Kal1 // in 2021 used for IE Common monitoring $color = "#000000"; //$factor_m = 5000.1021; //$offset = 4.529e-6; //$gain = 0.999997525656185; $factor_m = 1.0; $offset = 0.0; $gain = 1.0; $value = ($Kal1_value - $offset) * $gain * $factor_m; // $voltage_error = abs($value * 2e-3); $voltage_error = abs($value * 20 * 10e-6); //if ($voltage_error*100 < 1) { $voltage_error = 0.2; } if ($voltage_error*100 < 0.002) { $voltage_error = 0.002; } // voltage display $link = $Kal1_link; // $text = "JRL divider at Kal1 monitoring input 436-REU-0-0501-0001, precision voltage value"; $text = "DVM at IE Common, 436-REU-0-0401-0001, precision voltage value"; if ($Kal1_RunFlag > 0) { placeText(304, 815, $Kal1_text, 130, 2, $color); // Kal1 voltage reading if (abs($value) > 36000) placeText(490, 116, "calibration in progress", 170, 2, "green"); // calibration ongoing placeTextWithLink(284, 765, "UIE = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error*100 ) .") V" , 230, 4, $color, $text, $link); } //############# HV Monitoring Kal_U2 ################# // voltage monitoring readout Kal2 // from 2024 on used for PS monitoring $color = "#000000"; $factor_m = 5004.2; $offset = 0.0; $gain = 1.0; $value = ($Kal2_value - $offset) * $gain * $factor_m; // $voltage_error = abs($value * 2e-3); $voltage_error = abs($value * 75 * 1e-6); if ($voltage_error < 0.1) { $voltage_error = 0.1; } // voltage display $link = $Kal2_link; // $text = "JRL divider at Kal1 monitoring input 436-REU-0-0501-0001, precision voltage value"; $text = "DVM at PS IE, 436-REU-0-0101-0001, precision voltage value"; if ($Kal2_RunFlag > 0) { placeText(460, 135, $Kal2_text, 130, 2, $color); // Kal2 voltage reading placeTextWithLink(440, 85, "UPS = ".sprintf('%.1F', $value ) . "(" . sprintf('%.0F', $voltage_error*10 ) .") V" , 230, 4, $color, $text, $link); } // Post Regulation Current Monitor $U_ist = abs($adeiValue[10][0]); $APR_on = abs($adeiValue[10][29]); $PID_setpoint = abs($adeiValue[10][30]); $I_PR = abs($adeiValue[10][31]); $P_PR = $U_ist * $I_PR/1000; // low voltage U < 25 kV, high voltage up to 33 kV, not higher. // set limits to make sure not to exceed 28W limit or 0.95 mA for low voltages // at high voltages limit to 24W or 0,7 mA for stable operation $pic = "postreg"; if ($I_PR >= 0.1) { if ($I_PR < 0.46) {$pic = $pic."Warn";} else if (($I_PR >= 0.46) && ($I_PR <= 0.95) && ($P_PR < 28)) {$pic = $pic."On";} else if (($I_PR > 0.95) | ($P_PR >= 28)) {$pic = $pic."Alarm";} } else $pic = $pic."Off"; $pos_y = 501; $pos_x = 455; $color = "#000000"; placePic($pos_y,$pos_x, $pic.".png", 30, "Status of HV post regulation green = normal operation gray = off red = current or power too high orange = current too low"); if ($I_PR < 0.1) { placeText($pos_y+31,$pos_x-15, "OFF", 60, 2, $color, "HV post regulation offline."); } else { placeTextWithLink($pos_y+31,$pos_x-15, sprintf('%.2F mA', $I_PR), 60, 2, $color, "Current through post regulation triode shunt. 0.46-0.95 mA as long as power < 28 W for optimal performance.", $adeiChannel[10][28]); placeTextWithLink($pos_y+45,$pos_x-14, sprintf('%2.0F W', $P_PR), 60, 2, $color, "Power consumption of post regulation triode shunt. Must be < 28 W to prevent damage to triode.", $adeiChannel[10][28]); if ($APR_on) { if ($PID_setpoint < 9.0) { $APR_text = "APR ON"; $color = "#40AA40"; } else { $APR_text = "APR HIGH"; $color = "#FF0000"; } placeTextWithLink($pos_y+57,$pos_x-9, $APR_text, 50, 0, $color, "Advanced Post Regulation (APR) status. Correction at ".sprintf('%.2F %', 10*$PID_setpoint).". Keep below 90 % at all times.", $adeiChannel[10][30]); } } //############# HV PID set point display ################# $APR_text = "APR set point"; // voltage monitoring readout K35 used for APR target value calculation $color = "#777777"; $factor_m = 1972.462; $factor_m_rel_error = 1.0e-6; $offset = 0;//4.97e-06; // ORCA does not use offset for defining APR $offset_error = 3.4e-07; $gain = 1;//0.999999323; // ORCA does not use gain for defining APR $gain_error = 8.9e-08; $value = ($APR_value - $offset) * $gain * $factor_m; $voltage_error = abs($value * $factor_m_rel_error * 1e3); // in mV if ($voltage_error*100 < 1) { $voltage_error = 0.2; } // voltage display APR $link = $APR_link; $text = "APR target voltage 436-CFB-0-1500-0033, only valid if K35 is used for APR control."; // coordinate offset on display $Xoffset = 660; $Yoffset = 373; // only show in case K35 is active if (($K35_RunFlag > 0) & ($APR_on > 0)) { placeTextWithLink($Yoffset+20, $Xoffset-54, "Uset = ".sprintf('%.3F', $value ) ." V" , 270, 4, $color, $text, $link); } } // end of PCS7 mode switch //placeText(180, 845, "MS WEST IE", 70, 2,"#808080"); // west IE being displayed in loop below //placeText(450, 845, "MS EAST IE", 70, 2,"#808080"); // east IE placeText(265, 815, "MS IE COMMON", 130, 2, "#000000"); // mainspec IE Common // MS Tank from Precision HCP Supply or Standard HCN $text = "MS TANK"; $ms_hcp_soll = $adeiValue[10][1]; //flipped 2021-02-16 for new HCP device $ms_hcn_soll = $adeiValue[10][25]; if ($ms_hcn_soll > 1) { // next two lines are only for the HNC 40 kV power supply operation $adeiValue[10][0] = $adeiValue[10][24]; $adeiValue[10][1] = $adeiValue[10][25]; } $HCP = true; if ($ms_hcn_soll == 0) { if ($ms_hcp_soll == 0) { $text = $text . " OFF";} else { $text = $text . " HCP"; $HCP = true; } } else { $text = $text . " HCN"; $HCP = false; } placeText(70, 830, $text, 100, 2, "#000000"); // mainspec tank // switch values here between HCN and HCP in Value and Channel Array !!! //if ($HCP) { $adeiValue[10][0] = -$adeiValue[10][24]; $adeiValue[10][1] = $adeiValue[10][25]; $adeiChannel[10][0] = $adeiChannel[10][24]; $adeiChannel[10][1] = $adeiChannel[10][25]; } if ($HCP) { $adeiValue[10][0] = -$adeiValue[10][0];} placeText(110-$posY, 845, "W7-11", 70, 2, "#000000"); // w7-11 placeText(503+$posY+$posX, 845, "E7-11", 70, 2, "#000000"); // e7-11 placeText(126-$posY, 600, "W6", 70, 2, "#000000"); // w6 placeText(487+$posY+$posX, 600, "E6", 70, 2, "#000000"); // e6 placeText(126-$posY, 1090, "W12", 70, 2, "#000000"); // w12 placeText(487+$posY+$posX, 1090, "E12", 70, 2, "#000000"); // e12 placeText(161-$posY, 516, "W5", 70, 2, "#000000"); // w5 placeText(452+$posY+$posX, 516, "E5", 70, 2, "#000000"); // e5 placeText(161-$posY, 1174, "W13", 70, 2, "#000000"); // w13 placeText(452+$posY+$posX, 1174, "E13", 70, 2, "#000000"); // e13 placeText(194-$posY, 434, "W4", 70, 2, "#000000"); // w4 placeText(419+$posY+$posX, 434, "E4", 70, 2, "#000000"); // e4 placeText(194-$posY, 1256, "W14", 70, 2, "#000000"); // w14 placeText(419+$posY+$posX, 1256, "E14", 70, 2, "#000000"); // e14 placeText(225-$posY, 385, "W3", 70, 2, "#000000"); // w3 placeText(388+$posY+$posX, 385, "E3", 70, 2, "#000000"); // e3 placeText(225-$posY, 1305, "W15", 70, 2, "#000000"); // w15 placeText(388+$posY+$posX, 1305, "E15", 70, 2, "#000000"); // e15 placeText(273-$posY, 352, "W2", 70, 2, "#000000"); // w2 placeText(340+$posY+$posX, 352, "E2", 70, 2, "#000000"); // e2 placeText(273-$posY, 1338, "W16", 70, 2, "#000000"); // w16 placeText(340+$posY+$posX, 1338, "E16", 70, 2, "#000000"); // e16 if ($adeiValue[10][8] > 10.0) placeText(309, 359, "APE", 70, 2, "#000000"); // ape south if ($adeiValue[10][10] > 10.0) placeText(309, 1331, "APE", 70, 2, "#000000"); // ape north // offset voltages $posY = 16; // offset between outer and inner voltages $ringsPosY = array( 275, 275+$posY, 227, 227+$posY, 196, 196+$posY, 163, 163+$posY, 128, 128+$posY, 112, 112+$posY, 128, 128+$posY, 163, 163+$posY, 196, 196+$posY, 227, 227+$posY, 275, 275+$posY, 342, 342-$posY, 390, 390-$posY, 421, 421-$posY, 454, 454-$posY, 489, 489-$posY, 505, 505-$posY, 489, 489-$posY, 454, 454-$posY, 421, 421-$posY, 390, 390-$posY, 342, 342-$posY ); $ringsPosX = array( 352, 352, 385, 385, 434, 434, 516, 516, 600, 600, 845, 845, 1090, 1090, 1174, 1174, 1256, 1256, 1305, 1305, 1338, 1338, 352, 352, 385, 385, 434, 434, 516, 516, 600, 600, 845, 845, 1090, 1090, 1174, 1174, 1256, 1256, 1305, 1305, 1338, 1338 ); $tol = 0.2; $ringNames = array( "W2", "W2i", "W3", "W3i", "W4", "W4i", "W5", "W5i", "W6", "W6i", "W7-11", "W7-11i", "W12", "W12i", "W13", "W13i", "W14", "W14i", "W15", "W15i", "W16", "W16i", "E2", "E2i", "E3", "E3i", "E4", "E4i", "E5", "E5i", "E6", "E6i", "E7-11", "E7-11i", "E12", "E12i", "E13", "E13i", "E14", "E14i", "E15", "E15i", "E16", "E16i"); for ($pp = 0; $pp < 2; $pp++) // west (0), east (1) { for ($id = 0; $id < 22; $id++) // rings: o, i, o, i, ... { // show voltage if not shorted to IE if ($ringsToAdei[$id + 22*$pp] != "IE" && $ringsToAdei[$id + 22*$pp] != "") { // color if ( ($adeiValue[11 + 2*$pp][$ringsToAdei[$id + 22*$pp]] > $adeiValue[12 + 2*$pp][$ringsToAdei[$id + 22*$pp]] - $tol) && ($adeiValue[11 + 2*$pp][$ringsToAdei[$id + 22*$pp]] < $adeiValue[12 + 2*$pp][$ringsToAdei[$id + 22*$pp]] + $tol) ) $color = "#000000"; else $color = "#FF0000"; // show voltage if ( ($id % 2 == 0) || ($id % 2 == 1 && $ringsToAdei[$id + 22*$pp] != $ringsToAdei[$id + 22*$pp - 1]) ) { $value = $adeiValue[11 + 2*$pp][$ringsToAdei[$id + 22*$pp]]; $mace_setting[$ringNames[$id + 22*$pp]]=$value; placeTextWithLink($ringsPosY[$id + 22*$pp], $ringsPosX[$id + 22*$pp], "+" . sprintf('%.1F', $value), 70, 4, $color, "relative voltage offset", $adeiChannel[11 + 2*$pp][$ringsToAdei[$id + 22*$pp]]); } } } } // tank, ie, dipole, ape $ringsPosY = array( 52, 247, 155, 425, 306, 306, 0, 240, 300, 285, 300, 315 ); $ringsPosX = array( 805, 805, 805, 805, 319, 1371, 0, 150, 160, 190, 220, 190 ); $tolA = array ( 15, 2, 1, 1, 1, 1, 0, 250, 2, 2, 2, 2); // MS voltages for ($pp = 0; $pp < 6; $pp++) // tank (0), ie (1), ie west (2), ie east (3), ape south (4), ape north (5) { // color if ( ($adeiValue[10][2*$pp] > $adeiValue[10][2*$pp + 1] - $tolA[$pp]) && ($adeiValue[10][2*$pp] < $adeiValue[10][2*$pp + 1] + $tolA[$pp]) ) $color = "#000000"; else $color = "#FF0000"; // show voltage $value = $adeiValue[10][2*$pp]; $link = $adeiChannel[10][2*$pp]; $dipolestatus = $adeiValue[2][16]; $dipolelink = $adeiChannel[2][16]; if ($pp == 0) { $text = "absolute tank potential HCN:436-EHV-0-1001-0002 HCP:436-EHV-0-1002-0002"; } else if ($pp == 1) { $text = "IE common offset potential, 436-EHV-0-1003-0002"; } else if ($pp == 2) { $text = "relative voltage potential west IE"; } else if ($pp == 3) { $text = "relative voltage potential east IE"; } else if ($pp == 4) { $text = "relative voltage potential south APE"; } else if ($pp == 5) { $text = "relative voltage potential north APE"; } if ($pp == 2 || $pp == 3) { if ($dipolestatus == 1) // dipole enabled { $color = "#990000"; $value = $adeiValue[10][2*$pp]; if ($pp == 2) { placeText($ringsPosY[$pp] + 40, $ringsPosX[$pp], "DIPOLE", 150, 4, "#CC0000" ); } else if ($pp == 3) { placeText($ringsPosY[$pp] + 40, $ringsPosX[$pp], "DIPOLE", 150, 4, "#CC0000"); } } else { $value = $adeiValue[10][2*$pp]; // dipole disabled $color = "#909090"; } if ($pp == 2) placeText(180, 825, "MS WEST IE", 110, 2, $color); // west IE else if ($pp == 3) placeText(450, 825, "MS EAST IE", 110, 2, $color); // east IE $link = $adeiChannel[10][2*$pp+1] . "," . $adeiChannel[10][2*$pp] . "," . $dipolelink; } // tank potential if ($pp == 0) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.1F V', -$value), 150, 4, $color, $text, $link); // IE common else if ($pp == 1) { if ($Kal1_RunFlag == 0) $digits = '%.2F V'; else $digits = '%.1F V'; placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf($digits, -$value), 150, 4, $color, $text, $link); $mace_setting["IECommon"]=-$value; $digits = ''; } // IE dipoles else if ($pp == 2 || $pp == 3) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.2F V', $value), 150, 5, $color, $text, $link); // APE else if ($pp == 4 || $pp == 5) { if ($adeiValue[10][2*$pp] > 10.0) { placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp] , sprintf('%.1F', $value), 70, 4, $color, $text, $link); } } } } // PS voltages (add $pp < 10 for PS IE ) if ($PSmode == 5) { // only display in PS operation mode High-Voltage // only indices 7++ are needed for PS (copy from MS definition) $ringsPosY = array( 52, 247, 155, 425, 306, 306, 0, 240, 300, 285, 300, 315 ); $ringsPosX = array( 805, 805, 805, 805, 319, 1371, 0, 150, 160, 190, 220, 190 ); $tolA = array ( 15, 2, 1, 1, 1, 1, 0, 250, 2, 2, 2, 2); placeText(265, 190, "PS TANK", 70, 2, "#000000"); // prespec tank placeText(330, 160, "PS IE", 120, 2, "#505050"); // prespec IE for ($pp = 7; $pp < 11; $pp++) // PS tank (channel 7 = array entry 14 + 15), IE west (8), IE east (9) { // changed upper limit from 12 to 11 in order to skip IE channel 4 // color and text if ($pp == 7) { $text = "Primary PS tank potential of 416EHV1001"; $color = "#000000";} else if ($pp == 8) { $text = "relative voltage potential PS IE1 Ch1A of 416EHV1002"; $color = "#505050";} else if ($pp == 9) { $text = "relative voltage potential PS IE2 Ch1B of 416EHV1002"; $color = "#505050";} else if ($pp == 10) { $text = "relative voltage potential PS IE3 Ch2A of 416EHV1003"; $color = "#505050";} else if ($pp == 11) { $text = "relative voltage potential PS IE4 Ch2B of 416EHV1003"; $color = "#A0A0A0";} // setpoint mismatch color if ( ($adeiValue[10][2*$pp] > $adeiValue[10][2*$pp + 1] - $tolA[$pp]) && ($adeiValue[10][2*$pp] < $adeiValue[10][2*$pp + 1] + $tolA[$pp]) ) $color = $color; else $color = "#FF0000"; // show voltage $value = $adeiValue[10][2*$pp]; $link = $adeiChannel[10][2*$pp]; if ($pp == 7) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.1F V', -$value), 150, 5, $color, $text, $link); else placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.0F V', -$value), 60, 2, $color, $text, $link); } } // ########## Split Ring Electrodes ########## $srPosX = array( 59, 284, 1420 ); $srPosY = array( 402, 402, 377 ); $srKATRINNumber = array( "418-EEL-3-2150", "418-EEL-3-4150", "438-EEL-3-5150" ); // CPS-PS electrode 418-EEL-2150 // $sr: 0 = cps-ps ; 1 = PS-MS ; 2 = MS-FPD for ($sr = 0; $sr < 3; $sr++) { $splitringON = $adeiValue[36][4*$sr + 3]; $pic = "splitring"; if ($splitringON = 1) { $color = "#000000"; $splitringVal = $adeiValue[36][4*$sr + 4]; $splitringPOL = $adeiValue[36][4*$sr + 5]; $splitringSet = $adeiValue[36][4*$sr + 6]; $link = $adeiChannel[36][$sr*4 + 4]; if (abs($splitringVal) < 25) { $color="#FF0000"; $pic = $pic."Alarm"; $sign = "";} else { if ($splitringPOL == 0) {$sign = "+"; $pic = $pic."On";} if ($splitringPOL == 1) {$sign = ""; $pic = $pic."Warn";} } placePicWithLink($srPosY[$sr]-32,$srPosX[$sr]+16, $pic.".png", 30, "status of split ring electrode (green = polarity pos and OK, gray = off, red = low voltage alarm, orange = polarity neg warning", $link); placeTextWithLink($srPosY[$sr],$srPosX[$sr], $sign.sprintf('%.0F V', $splitringVal), 60, 2, $color, "Voltage on split ring electrode ".$srKATRINNumber[$sr], $link); } else placePicWithLink($srPosY[$sr]-32,$srPosX[$sr]+16, $pic."Off.png", 30, "status of split ring electrode", $link); } // ########## DETECTOR ########## // detector powered $lowVoltage = array( 12, 8, 6, 6, 120 ); $lowVoltageTol = array( 0.2, 0.2, 0.2, 0.2, 0.5); $link = ""; $pic = "fpdOn"; $text = "ON"; for ($id = 0; $id < 5; $id++) { if ($id == 4) // 120V channel is in FAST group, need exception here { $value = $adeiValue[5][0]; $link = $link . $adeiChannel[5][0] . ","; } else { $value = $adeiValue[6][4 + $id]; $link = $link . $adeiChannel[6][4 + $id] . ","; } if (!($value < $lowVoltage[$id] + $lowVoltageTol[$id] && $value > $lowVoltage[$id] - + $lowVoltageTol[$id])) { $pic = "fpdOff"; $text = "OFF"; } } $link = substr($link, 0, strlen($link) - 1); placePicWithLink(345, 1570, $pic . ".png", 30, "status FPD power green: on, red: off, grey: undefined", $link); placeTextWithLink(374, 1550, $text, 70, 4, "#000000", "status FPD power", $link); // carousel $value = $adeiValue[6][11]; $color = "#000000"; if ($value < -95) $value = "---"; else $value = sprintf('%.0F', $adeiValue[6][11]) . " °C"; placeTextWithLink(255, 1565, $value, 100, 4, $color, "temperature FPD carousel/electronics", $adeiChannel[6][11]); placeText(275, 1565, "carousel", 100, 2, "#000000"); // ORCA run number $value = $adeiValue[6][13]; $link = $adeiChannel[6][13]; $color = "#EEEEEE"; $run_number = floor($value); $subrun_number = floor(($value-$run_number)*1000); placePicWithLink(189, 1534, "orca_icon.png", 45, "ORCA run.subrun number [530-CHN-0-0001-0001]", $link); placeBox(188, 1580, " Run: ".$run_number." ", 85, 2, $color); placeBox(203, 1580, "Subrun: ".$subrun_number." ", 85, 2, $color); // ########## MAGNETOMETERS ########## $mag = array(4, 6, 3); // removed 4th entry of south ring, due to disconnection for ($pp = 0; $pp < 3; $pp++) { $bx = 0; $by = 0; $bz = 0; $link = ""; for ($id = 0; $id < $mag[$pp]; $id++) { $bx = $bx + $adeiValue[16 + $pp][3 * $id]; $by = $by + $adeiValue[16 + $pp][3 * $id + 1]; $bz = $bz + $adeiValue[16 + $pp][3 * $id + 2]; $link = $link . $adeiChannel[16 + $pp][3 * $id + 2] . ","; //echo $bx . " " . $by . " " . $bz . "
"; } $bx = $bx / $mag[$pp]; $by = $by / $mag[$pp]; $bz = $bz / $mag[$pp]; $link = substr($link, 0, strlen($link) - 1); $value = sqrt($bx * $bx + $by * $by + $bz * $bz); $text = "averaged field precise magnetometers "; if ($pp == 0) $text = $text . "north "; else if ($pp == 1) $text = $text . "middle "; else if ($pp == 2) $text = $text . "south "; $text = $text . "ring"; placeTextWithLink(553, 1015 - 170 * $pp, sprintf('%.1F G', $value), 80, 5, "#000000", $text, $link); } // ########## SAP MAGNETOMETERS ########## $mag = array(5, 4,); // 5 SAP North Ring, 4 SAP South Ring magnetometers for ($pp = 0; $pp < 2; $pp++) { $bx = 0; $by = 0; $bz = 0; $link = ""; for ($id = 0; $id < $mag[$pp]; $id++) { $bx = $bx + $adeiValue[37 + $pp][3 * $id]; $by = $by + $adeiValue[37 + $pp][3 * $id + 1]; $bz = $bz + $adeiValue[37 + $pp][3 * $id + 2]; $link = $link . $adeiChannel[37 + $pp][37 * $id + 2] . ","; //echo $bx . " " . $by . " " . $bz . "
"; } $bx = $bx / $mag[$pp]; $by = $by / $mag[$pp]; $bz = $bz / $mag[$pp]; $link = substr($link, 0, strlen($link) - 1); // radings in muT, therfore factor 100 for Gauss display $value = 0.01*sqrt($bx * $bx + $by * $by + $bz * $bz); $text = "averaged field precise magnetometers SAP "; if ($pp == 0) $text = $text . "north "; else if ($pp == 1) $text = $text . "south "; $text = $text . "ring"; placeTextWithLink(553, 1240 - 110 * $pp, sprintf('%.1F G', $value), 80, 5, "#000000", $text, $link); } // dipole // $pic = "status"; // if ($pulserId[0] == "dipole" && $daqElapsed[0] > 30) // { // if ($pulserCounts[0] > 0) $pic = $pic . "On"; // else if ($pulserCounts[0] == 0) $pic = $pic . "Off"; // } //placePic($posY + 34 + 25, $posX + 80, $pic . ".png", 17, "status dipole sync pulser green: on, red: off, grey: undefined"); // egun // $pic = "status"; // if ($pulserId[1] == "egun" && $daqElapsed[0] > 30) // { // if ($pulserCounts[1] > 0) $pic = $pic . "On"; // else if ($pulserCounts[1] == 0) $pic = $pic . "Off"; // } //placePic($posY + 34 + 50, $posX + 80, $pic . ".png", 17, "status egun sync pulser green: on, red: off, grey: undefined"); // muon // $pic = "status"; // if ($pulserId[3] == "muon" && $daqElapsed[0] > 30) // { // if ($pulserCounts[3] > 0) $pic = $pic . "On"; // else if ($pulserCounts[3] == 0) $pic = $pic . "Off"; // } // placePic($posY + 34 + 75, $posX + 80, $pic . ".png", 17, "status muon sync pulser green: on, red: off, grey: undefined"); // ########## HIGH PRESSURE MS ########## $value = $adeiValue[9][3]; if ($value > 1.0) { if ($value < 20.0) $pic = "bottleBlinking.gif"; else $pic = "bottleOn.png"; $text = "ON"; $color = "#000000"; if ($adeiValue[9][4] != 64) $color = "#FF0000"; placeTextWithLink(135, 1387, sprintf('%.1F %', $adeiValue[9][3]), 70, 4, $color, "gas flow leak valve", $adeiChannel[9][5]); placeTextWithLink(160, 1387, sprintf('%.1E', $adeiValue[9][0]), 70, 4, $color, "pressure [mbar] MKS Baratron", $adeiChannel[9][3]); } else { $pic = "bottle.png"; $text = "OFF"; } $link = $adeiChannel[9][3] . "," . $adeiChannel[9][0]; placePicWithLink(135, 1358, $pic, 48, "status gas injection system gray: off, blinking: low, green: on Should be off for nominal pressure measurements!!!", $link); placeTextWithLink(180, 1347, $text, 70, 4, "#000000", "status gas injection system", $link); // ########## HIGH PRESSURE PS ########## $value = $adeiValue[27][7]; $posOK = $adeiValue[27][6]; $link = $adeiChannel[27][6].",".$adeiChannel[27][7]; if ($value < 1) { $pic = "bottle.png"; $text = "OFF"; $color = "#909090"; } else if (($value >= 1) && ($value < 15)) { $pic = "bottleBlinking.gif"; $text = "ON"; $color = "#000000"; } else if ($value >= 15) { $pic = "bottleOn.png"; $text = sprintf('%.1F', $value)." %"; $color = "#000000"; if ($posOK == 1) placeBox(418, 107, "Pos OK", 40, 2, "#00FF00"); else placeBox(418, 107, "PosErr", 40, 2, "#FF0000"); } placePicWithLink(370, 113 , $pic, 30, "status PS gas injection system gray: off, blinking: low, green: on Should be off for nominal pressure measurements!!!", $link); placeTextWithLink(402, 99, $text, 60, 2, $color, "status gas injection system", $link); // ########## TLK Wall and LAUDA and PS TEMPERATURE ########## if ($PSmode == 5) { // only display if PS operation mode is HV // mean of 4023, 4033, 4043 $link = $adeiChannel[29][0] . "," . $adeiChannel[29][1] . "," . $adeiChannel[29][2]; $value = ($adeiValue[29][0] + $adeiValue[29][1] + $adeiValue[29][2])/3.0; $color = "#B1B1B1"; if ($value < 800) { $draw_x = 159; $draw_y = 350; placeBoxRight($draw_y, $draw_x,sprintf('%.1F °C', $value), 55, 1, $color,0); placePicWithLink($draw_y, $draw_x+7, "newTemperature.png", 10, "Average temperature of pre spectrometer vessel sensors 4023..33..43.", $link); } } if ($PSmode != 5) { // only display if PS operation mode is Baking $min = 18; $max = 30; // sensor 4100 ID [29][3] $link = $adeiChannel[29][3]; $value = $adeiValue[29][3]; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if ($value < 400) placeTextLeftWithLink(445, 5, "Twall = " . sprintf('%.1F °C', $value), 180, 4, $color, "TLK separation wall temperature of RTP4100", $link); $min = 15; // LAUDA System 5401 [34][0..1] $link = $adeiChannel[34][0].",".$adeiChannel[34][1]; $value = $adeiValue[34][0]; $max = $adeiValue[34][1]+1; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if ($value < 400) placeTextLeftWithLink(475, 5, "TLAUDA = " . sprintf('%.1F °C', $value), 180, 4, $color, "LAUDA System actual temperature value", $link); // ########## PS VESSEL TEMPERATURES ########## $min = 18; $max = 65; // mean of 4023, 4033, 4043 $link = $adeiChannel[29][0] . "," . $adeiChannel[29][1] . "," . $adeiChannel[29][2]; $value = ($adeiValue[29][0] + $adeiValue[29][1] + $adeiValue[29][2])/3.0; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if ($value < 4000) placeTextWithLink(305, 185, sprintf('%.1F °C', $value), 90, 4, $color, "PS mean temperature of 4023..33..43", $link); // mean of 3901, 3902, 3903, 3904 $link = $adeiChannel[29][4] . "," . $adeiChannel[29][5] . "," . $adeiChannel[29][6] . "," . $adeiChannel[29][7]; $value = ($adeiValue[29][4] + $adeiValue[29][5] + $adeiValue[29][6] + $adeiValue[29][7])/4.0; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if ($value < 4000) placeTextWithLink(295, 110, sprintf('%.1F °C', $value), 90, 4, $color, "PS mean temperature of 3902..03..04 upper NEG port", $link); // mean of 3912, 3913, (3914 failed) $link = $adeiChannel[29][8] . "," . $adeiChannel[29][9] . "," . $adeiChannel[29][10] . "," . $adeiChannel[29][11]; // $value = ($adeiValue[29][8] + $adeiValue[29][9] + $adeiValue[29][10] + $adeiValue[29][11])/4.0; $value = ($adeiValue[29][8] + $adeiValue[29][9] + $adeiValue[29][10])/3.0; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if ($value < 4000) placeTextWithLink(315, 110, sprintf('%.1F °C', $value), 90, 4, $color, "PS mean temperature of 3912..13..14 side NEG port", $link); } // ########## MS VESSEL TEMPERATURES ########## $min = 14; $max = 24; // 0066 $value = $adeiValue[20][0]; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if (($value < 400) & ($value > 0)) placeTextWithLink(110, 933, "TIE0066 = " . sprintf('%.1F °C', $value), 170, 4, $color, "IE temperature 0066", $adeiChannel[20][0]); // 0076 $value = $adeiValue[20][1]; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if (($value < 400) & ($value > 0)) placeTextWithLink(110+20, 933, "TIE0076 = " . sprintf('%.1F °C', $value), 170, 4, $color, "IE temperature 0076", $adeiChannel[20][1]); // 0270 $value = $adeiValue[20][2]; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if (($MSmode != 5) & ($value < 400) & ($value > 0)) placeTextWithLink(307, 805, "T0270 = " . sprintf('%.1F °C', $value), 160, 4, $color, "tank temperature 0270", $adeiChannel[20][2]); if (($MSmode == 5) & ($value < 400) & ($value > 0)) placeTextWithLink(110, 677, "T0270 = " . sprintf('%.1F °C', $value), 160, 4, $color, "tank temperature 0270", $adeiChannel[20][2]); // define global tank temperature $global_MS_temperature = $adeiValue[20][2]; // 0283 $value = $adeiValue[20][3]; $color = "#000000"; if ($value < $min) $color = "#0026FF"; else if ($value > $max) $color = "#FF0000"; if (($MSmode != 5) & ($value < 400) & ($value > 0)) placeTextWithLink(307, 963, "T0283 = " . sprintf('%.1F °C', $value), 160, 4, $color, "tank temperature 0283", $adeiChannel[20][3]); if (($MSmode == 5) & ($value < 400) & ($value > 0)) placeTextWithLink(130, 677, "T0283 = " . sprintf('%.1F °C', $value), 160, 4, $color, "tank temperature 0283", $adeiChannel[20][3]); // port 0100 saphire window $value = $adeiValue[19][3]; $color = "#000000"; if ($value > 30) placeTextLeftWithLink(105, 1275, "Tsaphire = " . sprintf('%.1F °C', $value), 160, 4, $color, "port 0100 saphire window temperature", $adeiChannel[19][3]); $color = "#000000"; // ########## STS ########## placeTextLeftWithWebsiteLink(370, 1, "←STS", 60, 5, $color, "Link to STS Status Overview", "https://katrin.kit.edu/status-sts/"); // ########## WebTrium Link ########## placeTextLeftWithWebsiteLink(20, 1450, "→ WebTrium", 155, 4, $color, "Link to WebTrium Overview", "https://webtrium.edm.nat.tum.de/"); // ########## FPD Status ########## placeTextLeftWithWebsiteLink(50, 1450, "→ FPD Status", 155, 4, $color, "Link to FPD Status Overview", "https://iap-katrin-fpd.iap.kit.edu/fpdstatus/"); // ########## Sanshiro Katana Page ########## placeTextLeftWithWebsiteLink(80, 1450, "→ Brew Kaffee Beans and Idle", 275, 4, $color, "Link to Brew Kaffee Beans and Idle page at UW/Seattle", "https://katana.npl.washington.edu/~sanshiro/"); // ########## MoS und HV Status ########## placeTextLeftWithWebsiteLink(110, 1450, "→ MoS and HV Status", 240, 4, $color, "Link to Monitor Spectrometer and High Voltage Status Overview", "https://katrin.kit.edu/bora-mos"); // ########## Magnet Overview ########## placeTextLeftWithWebsiteLink(140, 1450, "→ Magnet Control System", 270, 4, $color, "Link to Magnet Control System Status Page", "https://katrin.kit.edu/bora-mcs"); // ########## PS ########## // placeText(100, 170, "PS", 60, 30, $color); // ########## MAC-E filter configuration display ########## $tol = 0.2; $tol = abs($tol); $color = "#FFD800"; //base color: US school bus yellow for ($pp = 0; $pp < sizeof($mace_configurations); $pp++) // loop over all predefined configurations { for ($id = 1; $id < sizeof($mace_configurations[$pp]); $id++) // loop thru all parameters, but not name in $id=0 { if (($id < 3) & (array_values($mace_configurations[$pp])[$id] != array_values($mace_setting)[$id])) break; if (abs(array_values($mace_configurations[$pp])[$id] - array_values($mace_setting)[$id]) < $tol) { if ($id == 25) { $mace_setting["Config"] = $mace_configurations[$pp]["Config"]; $color = "#4CFF00"; // success color: harlequin green } else { $color = "#FF9300"; // failure color: dark orange } } else break; } if ($color == "#4CFF00") break; } if (($mace_setting["Config"] == "unkn") or ($mace_setting["Config"] == "other")) { $color = "#FFD800"; //unknown config color: US school bus yellow } placeText(115, 232, "MAC-E", 85, 5, "#000000"); placeBox(140, 230, $mace_setting["Config"] , 85, 3, $color); if ($V4_open) { // ########## PS Ion Monitor status display ########## if ($adeiValue[39][1] < 0.5) { $ion_mon_stat = "active"; $color = "#4CFF00"; } else { $ion_mon_stat = "bypassed"; $color = "#FF0000"; placePicWithLink(130, 33, "alarm_flash.gif", 50, "Ion alarm not armed!", $adeiChannel[39][1]); } placeText(115+65, 4, "Ion Mon", 105, 5, "#000000"); placeBox(140+65, 2, $ion_mon_stat , 105, 3, $color); } // ########## PS HIGH VOLTAGE SWITCH ########## $value = $adeiValue[48][0]; $link = $adeiChannel[48][0]; $pic = "ground"; if ($value == 1) placePicWithLink(335, 250, $pic . ".png", 30, "status PS high-voltage grounding switch", $link); // ########## MS HIGH VOLTAGE SWITCH ########## $value = $adeiValue[31][1]; $pic = "switch"; if ($value == 1) $pic = $pic . "Open"; else if ($value == 0) $pic = $pic . "Closed"; placePicWithLink(498, 501, $pic . ".png", 80, "status high-voltage grounding switch", $adeiChannel[31][1]); // ########## EGUN COUPLING SWITCH ########## if ($MSmode == 5) // only display in MS operation mode High-Voltage { $switch_status = $adeiValue[46][0]; $laser_status = $adeiValue[47][0]; $switch_name = "egunSwitch"; $egun_name = "egun"; if ($switch_status == 1) $switch_name = $switch_name . "HV"; else $switch_name = $switch_name . "GND"; placePicWithLink(415, 325, $switch_name . ".png", 90, "status egun coupling switch", $adeiChannel[46][0]); if ($laser_status > 2 ) $egun_name = $egun_name . "On"; else $egun_name = $egun_name . "Off"; placePicWithLink(431, 300, $egun_name . ".png", 30, "status egun operation", $adeiChannel[47][0]); } // ########## MONITOR SPECTROMETR COUPLING STATUS ########## $hv_switch1101_mos = $adeiValue[35][0]; $mos = "beamline_mos.png"; placePicXY(525, 120, $mos, 190, 60, "status monitor spectrometer connection"); if ($hv_switch1101_mos == 1) { $color = "#4CFF00"; // green placeBox(586, 120, "MoS coupled", 190, 2, $color); } else { $color = "#CFCFCF"; // light gray placeBox(586, 120, "MoS separated", 190, 2, $color); } // ########## define global dewpoint max value ########### $global_max_dewpoint = -273.0; // ########## PS Opus weather station ########## $data_index = 40; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; // update dewpoint max value if ($Opus_dewpointC > $global_max_dewpoint) $global_max_dewpoint = $Opus_dewpointC; $location_text = "pre spectrometer"; $draw_x = 0; $draw_y = -15; placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel); placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F °C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel); placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placeTextWithLink($draw_y+25, $draw_x+30, sprintf('%.0F hPa', $Opus_absPressure_hPa), 90, 4, "#000000", "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel); placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F %', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel); placePicWithLink($draw_y+75, $draw_x+5, "newDewpoint.png", 23, "dewpoint at ".$location_text, $Opus_dewpointC_channel); placeTextWithLink($draw_y+75, $draw_x+30, sprintf('%.1F °C', $Opus_dewpointC), 90, 4, "#000000", "dewpoint at ".$location_text , $Opus_dewpointC_channel); // ########## DET Opus weather station ########## $data_index = 41; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; // update dewpoint max value if ($Opus_dewpointC > $global_max_dewpoint) $global_max_dewpoint = $Opus_dewpointC; $location_text = "detector platform"; $draw_x = 1600; $draw_y = -15; placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel); placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F °C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel); placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placeTextWithLink($draw_y+25, $draw_x+30, sprintf('%.0F hPa', $Opus_absPressure_hPa), 90, 4, "#000000", "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel); placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F %', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel); // ########## Detector Platform OLD ########## //placePicWithLink(-135, 1605, "newTemperature.png", 23, "temperature in KATRIN hall", $adeiChannel[19][1]); //placeTextWithLink(-135, 1630, sprintf('%.1F °C', $adeiValue[19][1]), 90, 4, "#000000", "temperature in KATRIN hall", $adeiChannel[19][1]); //placePicWithLink(-110, 1605, "newPressure.png", 23, "atmospheric pressure in KATRIN hall", $adeiChannel[19][0]); //placeTextWithLink(-110, 1630, sprintf('%.0F hPa', $adeiValue[19][0] * 0.0689475729 * 1000.0), 90, 4, "#000000", "atmospheric pressure in KATRIN hall", $adeiChannel[19][0]); //placePicWithLink(-85, 1605, "newHumidity.png", 23, "relative humidity in KATRIN hall", $adeiChannel[19][2]); //placeTextWithLink(-85, 1630, sprintf('%.1F %', $adeiValue[19][2]), 90, 4, "#000000", "relative humidity in KATRIN hall", $adeiChannel[19][2]); // ########## HV Opus weather station ########## $data_index = 42; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; // update dewpoint max value if ($Opus_dewpointC > $global_max_dewpoint) $global_max_dewpoint = $Opus_dewpointC; $location_text = "high-voltage cage"; $draw_x = 434; $draw_y = 586; if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0)) { placeBoxRight($draw_y, $draw_x,sprintf('%.1F °C', $Opus_tempC), 65, 2, $color); placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text.", and rel. humidity is H = ".sprintf('%.1F %', $Opus_relH_percent).", dewpoint Td = ".sprintf('%.1F °C', $Opus_dewpointC).", atm. pressure is p = ".sprintf('%.0F hPa', $Opus_absPressure_hPa).".", $Opus_tempC_channel); } // ########## MS bottom Opus weather station ########## $data_index = 43; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; // update dewpoint max value if ($Opus_dewpointC > $global_max_dewpoint) $global_max_dewpoint = $Opus_dewpointC; $location_text = "main spectrometer basement"; $draw_x = 845; $draw_y = 586; $color = "#CCCCCC"; if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0)) { placeBoxRight($draw_y, $draw_x,sprintf('%.1F °C', $Opus_tempC), 65, 2, $color); placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text.", and rel. humidity is H = ".sprintf('%.1F %', $Opus_relH_percent).", dewpoint Td = ".sprintf('%.1F °C', $Opus_dewpointC).", atm. pressure is p = ".sprintf('%.0F hPa', $Opus_absPressure_hPa).".", $Opus_tempC_channel); } // ########## MS top Opus weather station ########## $data_index = 44; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; // update dewpoint max value if ($Opus_dewpointC > $global_max_dewpoint) $global_max_dewpoint = $Opus_dewpointC; $location_text = "main spectrometer under the roof"; $draw_x = 845; $draw_y = 31; if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0)) { placeBoxRight($draw_y, $draw_x,sprintf('%.1F °C', $Opus_tempC), 65, 2, $color); placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text.", and rel. humidity is H = ".sprintf('%.1F %', $Opus_relH_percent).", dewpoint Td = ".sprintf('%.1F °C', $Opus_dewpointC).", atm. pressure is p = ".sprintf('%.0F hPa', $Opus_absPressure_hPa).".", $Opus_tempC_channel); } // ########## MoS general Opus weather station ########## $data_index = 45; $Opus_tempC = $adeiValue[$data_index][0]; $Opus_tempF = $adeiValue[$data_index][1]; $Opus_dewpointC = $adeiValue[$data_index][2]; $Opus_dewpointF = $adeiValue[$data_index][3]; $Opus_relH_percent = $adeiValue[$data_index][4]; $Opus_relH_gramm = $adeiValue[$data_index][5]; $Opus_absPressure_hPa = $adeiValue[$data_index][6]; $Opus_relPressure_hPa = $adeiValue[$data_index][7]; $Opus_voltage = $adeiValue[$data_index][8]; $Opus_tempC_channel = $adeiChannel[$data_index][0]; $Opus_tempF_channel = $adeiChannel[$data_index][1]; $Opus_dewpointC_channel = $adeiChannel[$data_index][2]; $Opus_dewpointF_channel = $adeiChannel[$data_index][3]; $Opus_relH_percent_channel = $adeiChannel[$data_index][4]; $Opus_relH_gramm_channel = $adeiChannel[$data_index][5]; $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6]; $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7]; $Opus_voltage_channel = $adeiChannel[$data_index][8]; $location_text = "monitor spectrometer building"; $draw_x = 0; $draw_y = 536; placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel); placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F °C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel); placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placeTextWithLink($draw_y+25, $draw_x+30, sprintf('%.0F hPa', $Opus_absPressure_hPa), 90, 4, "#000000", "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel); placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel); placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F %', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel); // ########## MS condensation alert during HV operation ########## if ($MSmode == 5) { if ($global_max_dewpoint - $global_MS_temperature > -1) // check dewpoint 1 °C below tank temperature { placePic(-130+96, 425, "alarm_flash.gif", 25, "Condensation alert, don't operate high voltage!"); $color = "#FFD800"; // yellow placeBox(-130+120, 363, "CONDENSATION ALERT" , 150, 3, $color); } } ?>