SDS_status_main.php 69 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698
  1. <?php
  2. // display network localization
  3. if ($onsite) placeBox(-135, 1190, "Inside KIT CN network", 250, 2, "#DDDDDD");
  4. if (substr($ip, 0, 7) == "134.107") placeBox(25, 10, "MPP Munich network", 250, 2, "#FFFFFF");
  5. if (substr($ip, 0, 7) == "128.176") placeBox(25, 10, "WWU Muenster network", 250, 2, "#FFFFFF");
  6. // ##### global variable for PS and MS operation mode
  7. $PSmode = $adeiValue[32][0];
  8. $MSmode = $adeiValue[33][0];
  9. $tol = 0.5;
  10. $local = false;
  11. if (substr($ip, 0, 13) == "141.52.12.52")
  12. {
  13. placeBox(-60, 1190, "local dev computer", 250, 2, "#FFFFFF");
  14. $local = true;
  15. $MSmode = 5;
  16. }
  17. // ########## PS PCS7 operation mode ##########
  18. $OpModeText = "PS mode: ";
  19. $color = "#FFFFFF";
  20. if ($PSmode == 0) { $OpModeText = $OpModeText." commissioning"; $color="#FFA0A0"; }
  21. else if ($PSmode == 1) $OpModeText = $OpModeText.$PSmode." pump down";
  22. else if ($PSmode == 2) $OpModeText = $OpModeText.$PSmode." venting";
  23. else if ($PSmode == 3) $OpModeText = $OpModeText.$PSmode." pumping";
  24. else if ($PSmode == 4) $OpModeText = $OpModeText.$PSmode." baking";
  25. else if ($PSmode == 5) { $OpModeText = $OpModeText.$PSmode." high voltage"; $color="#B0FFB0"; }
  26. placeBox(-110, 1190, $OpModeText, 250, 2, $color);
  27. // ########## PS PCS7 operation mode ##########
  28. $OpModeText = "MS mode: ";
  29. $color = "#FFFFFF";
  30. if ($MSmode == 0) { $OpModeText = $OpModeText." commissioning"; $color="#FFA0A0"; }
  31. else if ($MSmode == 1) $OpModeText = $OpModeText.$PSmode." pump down";
  32. else if ($MSmode == 2) $OpModeText = $OpModeText.$PSmode." venting";
  33. else if ($MSmode == 3) $OpModeText = $OpModeText.$PSmode." pumping";
  34. else if ($MSmode == 4) $OpModeText = $OpModeText.$PSmode." baking";
  35. else if ($MSmode == 5) { $OpModeText = $OpModeText.$PSmode." high voltage"; $color="#B0FFB0"; }
  36. placeBox(-85, 1190, $OpModeText, 250, 2, $color);
  37. // ########## VALVES ##########
  38. // V4
  39. $value = $adeiValue[36][1];
  40. $clearance = $adeiValue[36][0];
  41. $pic = "valve";
  42. $V4_open = false;
  43. if (($value == 1) && ($clearance == 1)) {$pic = $pic . "On"; $V4_open = true;}
  44. else if (($value == 0) && ($clearance == 0)) $pic = $pic . "Off";
  45. else if (($value == 0) && ($clearance == 1)) $pic = $pic . "FREE";
  46. else if (($value == 1) && ($clearance == 0)) $pic = $pic . "Error";
  47. placePicWithLink(303, 60, $pic . ".png", 30, "status CPS-PS gate vlave V4 &#10;purple: clearance to open, red: no clearance, grey: undefined", $adeiChannel[36][0].",".$adeiChannel[36][1]);
  48. // PS-MS flapper valve VMO 4110
  49. $value_open = $adeiValue[9][8];
  50. $value_closed = $adeiValue[9][9];
  51. $pic = "valve";
  52. if (($value_open == 1) && ($value_closed == 0)) $pic = $pic . "On";
  53. else if (($value_open == 0) && ($value_closed == 1)) $pic = $pic . "Off";
  54. placePicWithLink(303, 283, $pic . ".png", 30, "status PS-MS beam-line gate valve VMO-4110 &#10;green: open, red: closed, grey: undefined", $adeiChannel[9][8].",".$adeiChannel[9][9]);
  55. // FPD gate valve
  56. $value = $adeiValue[36][2];
  57. $clearance = $adeiValue[31][0];
  58. $pic = "valve";
  59. if (($value == 1) && ($clearance == 1)) $pic = $pic . "On";
  60. else if (($value == 0) && ($clearance == 0)) $pic = $pic . "Off";
  61. else if (($value == 0) && ($clearance == 1)) $pic = $pic . "FREE";
  62. else if (($value == 1) && ($clearance == 0)) $pic = $pic . "Error";
  63. placePicWithLink(303, 1466, $pic . ".png", 30, "status FPD beam-line gate valve&#10;green: open, red: closed, grey: undefined", $adeiChannel[36][2].",".$adeiChannel[31][0]);
  64. // ########## MAGNETS ##########
  65. // CPS
  66. $NlCPS = 20550 / 0.9133;
  67. $BfieldCPS = 1.26e-6 * $adeiValue[24][0] * $NlCPS; // mu0 * I * N/l
  68. if ($BfieldCPS < 0.1) { $value = "OFF"; $color = "#FF0000"; }
  69. else { $value = sprintf('%.1F T', $BfieldCPS); $color = "#000000"; }
  70. placeTextWithLink(240, 2, $value, 60, 5, $color, "field of CPS behind separation wall derived from current", $adeiChannel[24][0]);
  71. placeText(265, 2, "CPS", 60, 2, "#000000");
  72. // PS1
  73. if ($adeiValue[3][3] == 0) { $value = "LEM"; $color = "#FF0000"; }
  74. else { $value = sprintf('%.1F T', $adeiValue[3][1] / 157.0 * 4.5); $color = "#000000"; }
  75. placeTextWithLink(240, 66, $value, 70, 5, $color, "stand-alone center field PS1 magnet", $adeiChannel[3][1]);
  76. placeText(265, 66, "PS1", 70, 2, "#000000");
  77. // PS2
  78. if ($adeiValue[3][2] == 0) { $value = "LEM"; $color = "#FF0000"; }
  79. else { $value = sprintf('%.1F T', $adeiValue[3][0] / 157.0 * 4.5); $color = "#000000"; }
  80. placeTextWithLink(240, 274, $value, 70, 5, $color, "stand-alone center field PS2 magnet", $adeiChannel[3][0]);
  81. placeText(265, 274, "PS2", 70, 2, "#000000");
  82. // Pinch
  83. placeTextWithLink(240, 1420, sprintf('%.1F', $adeiValue[4][0] / 86.98 * 6.0) . " T", 70, 5, "#000000", "stand-alone center field PCH magnet", $adeiChannel[4][0]);
  84. placeText(265, 1420, "PCH", 70, 2, "#000000");
  85. // Detector
  86. placeTextWithLink(240, 1495, sprintf('%.1F', $adeiValue[4][1] / 93.59 * 6.0) . " T", 70, 5, "#000000", "stand-alone center field DET magnet", $adeiChannel[4][1]);
  87. placeText(265, 1495, "DET", 70, 2, "#000000");
  88. // ########## PAE ##########
  89. placeTextWithLink(303, 1553, sprintf('%.1F', $adeiValue[6][2]) . " kV", 90, 5, "#000000", "PAE potential", $adeiChannel[6][2]);
  90. placeText(328, 1553, "PAE", 90, 2, "#000000");
  91. // ########## PUMP PORTS ##########
  92. placeText(416, 1623, "PP2", 50, 2, "#000000");
  93. placeText(466, 1623, "PP1", 50, 2, "#000000");
  94. placeText(516, 1623, "PP3", 50, 2, "#000000");
  95. // ########## BAFFLE ##########
  96. $max = array( 90, 94, 88 );
  97. $time_conversion_factor = 621355968000000000; // conversion for PCS7 .NET value;
  98. $timestamp = ($adeiValue[15][8] - $time_conversion_factor) / 10000000;
  99. echo '<br><font size="4" color="#000000">&nbsp;Baffle timestamp: ' . date("r", $timestamp ) . ' </font><br>';
  100. //placeText(560, 1395, "LN<sub>2</sub> Tank", 130, 5, "#000000");
  101. $link = $adeiChannel[15][6] . "," . $adeiChannel[15][7];
  102. //placePicWithLink(563,1367, "LN2tank.png", 45, "LN2 tank", $link);
  103. $value = $adeiValue[15][6]*0.77+0.83;
  104. $link = $adeiChannel[15][6];
  105. $text = sprintf('%.0F', $value) . " %";
  106. //placeTextWithLink(590, 1395, $text, 70, 4, "#000000", "LN2 tank level", $link);
  107. $value = $adeiValue[15][7]-1.86;
  108. $link = $adeiChannel[15][7];
  109. $text = sprintf('%.1F', $value) . " bar";
  110. //placeTextWithLink(590, 1450, $text, 70, 4, "#000000", "LN2 tank pressure", $link);
  111. for ($id = 0; $id < 3; $id++)
  112. {
  113. $value = $adeiValue[15][$id];
  114. $pic = "ice.png";
  115. $text = "---";
  116. if ($value < 800)
  117. {
  118. $text = sprintf('%.0F', $value) . " K";
  119. if ($value > $max[$id]) $pic = "iceOff.png";
  120. else
  121. {
  122. $value = $adeiValue[15][$id + 3];
  123. if ($value > 0.1 && $value < 100.0) $pic = "iceOn.png";
  124. else $pic = "iceBlink.gif";
  125. }
  126. }
  127. $pos = $id;
  128. if ($id == 0) $pos = 1;
  129. else if ($id == 1) $pos = 0;
  130. $link = $adeiChannel[15][$id] . "," . $adeiChannel[15][$id + 3];
  131. placePicWithLink(410 + $pos * 50, 1375, $pic, 30, "status baffle PP" . ($id + 1) . "&#10;blue: cooled, red: warmed, blinking: warming, grey: undefined", $link);
  132. placeTextWithLink(437 + $pos * 50, 1355, $text, 70, 4, "#000000", "temperature baffle PP" . ($id + 1), $link);
  133. }
  134. // ########## PRESSURES ##########
  135. // CC2320
  136. $value = $adeiValue[7][0];
  137. $pic = "cc";
  138. $text = "---";
  139. if ($value > 1E+2) { $pic = $pic; $text = "OFF"; }
  140. else if ($value > 2E-5) { $pic = $pic . "Off"; $text = "high"; }
  141. else if ($value <= 1E-4 && $value >= 1.334E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  142. else if ($value < 1.334E-11) { $text = "LOW"; }
  143. placePicWithLink(410, 1435, $pic . ".png", 30, "status cold cathode gauge CC2320&#10;green: on, red: off, grey: undefined", $adeiChannel[7][0]);
  144. placeTextWithLink(439, 1415, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC2320", $adeiChannel[7][0]);
  145. $time_conversion_factor = 621355968000000000; // conversion for PCS7 .NET value;
  146. $timestamp = ($adeiValue[7][8] - $time_conversion_factor) / 10000000;
  147. echo '<font size="4" color="#000000">&nbsp;Vacuum timestamp: ' . date("r", $timestamp ) . ' </font><br>';
  148. // CC2345
  149. $value = $adeiValue[7][7];
  150. $pic = "cc";
  151. $text = "---";
  152. if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; }
  153. else if ($value <= 1E-4 && $value >= 1.334E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  154. else if ($value < 1.334E-11) { $text = "LOW"; }
  155. placePicWithLink(427, 1482, $pic . ".png", 30, "status cold cathode gauge CC2345&#10;green: on, red: off, grey: undefined", $adeiChannel[7][7]);
  156. placeTextWithLink(406, 1462, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC2345", $adeiChannel[7][7]);
  157. // Ex3110
  158. $value = $adeiValue[8][0];
  159. $pic = "ex";
  160. $text = "---";
  161. if ($value > 2E-5) { $pic = $pic . "Off"; $text = "OFF"; }
  162. else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  163. placePicWithLink(510, 1435, $pic . ".png", 30, "status extractor ion gauge Ex3110&#10;green: on, red: off, grey: undefined", $adeiChannel[8][0]);
  164. placeTextWithLink(539, 1415, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex3110", $adeiChannel[8][0]);
  165. // Ex1110
  166. $value = $adeiValue[28][0];
  167. $link = $adeiChannel[28][0];
  168. $pic = "ex";
  169. $text = "---";
  170. if ($value > 2E-5) { $pic = $pic . "Off"; $text = "OFF"; }
  171. else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value);}
  172. placePicWithLink(460, 1435, $pic.".png", 30, "status extractor ion gauge Ex1110&#10;green: off, blinking: on, grey: undefined", $link);
  173. placeTextWithLink(489, 1415, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex1110", $link);
  174. // Ex0096
  175. $value = $adeiValue[9][2];
  176. $link = $adeiChannel[9][2];
  177. $pic = "ex";
  178. $text = "---";
  179. if ($value > 1E+2) { $pic = $pic; $text = "OFF"; }
  180. else if ($value > 2E-5) { $pic = $pic . "Off"; $text = "OFF"; }
  181. else if ($value <= 2E-5 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value);}
  182. placePicWithLink(230, 1220, $pic.".png", 30, "status extractor ion gauge 0096&#10;green: off, blinking: on, grey: undefined", $link);
  183. placeTextWithLink(259, 1200, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge 0096", $link);
  184. // CC FPD
  185. $value = $adeiValue[6][1];
  186. $pic = "cc";
  187. $text = "---";
  188. if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; }
  189. if ($value < 1E-11) { $pic = $pic . "Off"; $text = "OFF"; }
  190. else if ($value <= 1E-4 && $value > 1E-12) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  191. placePicWithLink(188, 1475, $pic . ".png", 30, "status FPD cold cathode gauge&#10;green: on, red: off, grey: undefined", $adeiChannel[6][1]);
  192. placeTextWithLink(217, 1455, $text, 70, 4, "#000000", "pressure [mbar] FPD cold cathode gauge", $adeiChannel[6][1]);
  193. // Gauge Baffle
  194. $value = $adeiValue[5][0];
  195. $link = $adeiChannel[5][0];
  196. $color = "#000000";
  197. $pic = "gauge";
  198. $text = "---";
  199. if ($value > 1E-4) { $pic = $pic . "Off"; $text = "OFF"; }
  200. // standard cold blue "#0026FF" , ice cold blue "#107BC7"
  201. if ($value < 2E-6 && $value > 1E-9) { $pic ="gaugeOn"; $color ="#107BC7"; $text = sprintf('%.1E', $value); }
  202. else if ($value >= 1E-6 && $value < 1e-1) { $pic = "gaugeOff"; $color = "FF0000"; $text = sprintf('%.1E', $value); }
  203. placePicWithLink(460, 1315, $pic . ".png", 30, "status baffle insulation vacuum gauge&#10;gray: off, green: on, red: too high&#10Should be < 5e-6 mbar for HV operation!!!", $link);
  204. placeTextWithLink(460+29, 1295, $text, 70, 4, $color, "pressure [mbar] baffle insulation vacuum gauge", $link);
  205. // PS CC1232
  206. $value = $adeiValue[27][0];
  207. $link = $adeiChannel[27][0];
  208. $pic = "cc";
  209. $text = "---";
  210. if ($value >= 9.9E-5) { $pic = $pic . "Off"; $text = "OFF"; }
  211. else if ($value < 1E-4 && $value > 1.2E-11) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  212. placePicWithLink(370, 240, $pic . ".png", 30, "status cold cathode gauge CC1232&#10;green: on, red: off, grey: undefined", $link);
  213. placeTextWithLink(399, 220, $text, 70, 4, "#000000", "pressure [mbar] cold cathode gauge CC1232", $link);
  214. // PS Ex1221
  215. $value = $adeiValue[27][5];
  216. $link = $adeiChannel[27][5];
  217. $pic = "ex";
  218. $text = "---";
  219. if ($value >= 9.9E-5) { $pic = $pic . "Off"; $text = "OFF"; }
  220. else if ($value < 1E-4 && $value > 7E-13) { $pic = $pic . "On"; $text = sprintf('%.1E', $value); }
  221. placePicWithLink(188, 141, $pic . ".png", 30, "status extractor ion gauge Ex1221&#10;green: on, red: off, grey: undefined", $link);
  222. placeTextWithLink(217, 121, $text, 70, 4, "#000000", "pressure [mbar] extractor ion gauge Ex1221", $link);
  223. // ########## VACUUM PUMPS ##########
  224. // MS TMP Temperatures
  225. //T<sub>max</sub>
  226. $value = max($adeiValue[25][0], $adeiValue[25][1], $adeiValue[25][2]);
  227. $link = $adeiChannel[25][0] . "," . $adeiChannel[25][1] . "," . $adeiChannel[25][2];
  228. $color = "#000000";
  229. if ($value < 10) $color = "#0026FF";
  230. else if ($value > 50) $color = "#FF0000";
  231. placeTextWithLink(435, 1625, sprintf('%.1F &#176;C', $value), 70, 3, $color, "TMP max temperature PP2", $link);
  232. $value = max($adeiValue[26][0], $adeiValue[26][1], $adeiValue[26][2]);
  233. $link = $adeiChannel[26][0] . "," . $adeiChannel[26][1] . "," . $adeiChannel[26][2];
  234. $color = "#000000";
  235. if ($value < 10) $color = "#0026FF";
  236. else if ($value > 50) $color = "#FF0000";
  237. placeTextWithLink(535, 1625, sprintf('%.1F &#176;C', $value), 70, 3, $color, "TMP max temperature PP3", $link);
  238. // TMPs (PP2 + PP3)
  239. for ($pp = 0; $pp < 2; $pp++)
  240. {
  241. for ($id = 0; $id < 3; $id++)
  242. {
  243. $value = $adeiValue[$pp + 7][$id + 1];
  244. $pic = "tmp";
  245. $text = "---";
  246. if ($value < 50)
  247. {
  248. $pic = $pic . "Off";
  249. }
  250. else if ($value >= 50 && $value < 500)
  251. {
  252. $text = sprintf('%.0F', $value);
  253. if ($value > 450)
  254. {
  255. $value = $adeiValue[$pp + 7][$id + 4];
  256. //$pic = $pic . "On";
  257. if ($value == 1) $pic = $pic . "On";
  258. else if ($value == 0) $pic = $pic . "Closed";
  259. }
  260. else if ($value > 240)
  261. {
  262. $value = $adeiValue[$pp + 7][$id + 4];
  263. //$pic = $pic . "On";
  264. if ($value == 1) $pic = $pic . "Standby";
  265. else if ($value == 0) $pic = $pic . "Standby";
  266. }
  267. }
  268. placePicWithLink(410 + $pp * 100, 1528 + $id * 35, $pic . ".png", 30, "status turbo-molecular pump TMP" . ($pp + 2) . ($id + 4) . "20&#10;green: on, yellow: on but isolated, red: off, grey: undefined", $adeiChannel[$pp + 7][$id + 1]);
  269. 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]);
  270. }
  271. }
  272. // PS TMPs
  273. for ($id = 0; $id < 2; $id++)
  274. {
  275. $value = $adeiValue[27][$id + 1];
  276. $link = $adeiChannel[27][$id + 1];
  277. $pic = "tmp";
  278. $text = "---";
  279. if ($value < 50)
  280. {
  281. $pic = $pic . "Off";
  282. }
  283. else if ($value >= 50 && $value < 700)
  284. {
  285. $text = sprintf('%.0F', $value);
  286. if ($value > 570)
  287. {
  288. $value = $adeiValue[27][$id + 3];
  289. //$pic = $pic . "On";
  290. if ($value == 1) $pic = $pic . "On";
  291. else if ($value == 0) $pic = $pic . "Standby";
  292. }
  293. }
  294. placePicWithLink(370, 157 + $id * 35, $pic . ".png", 30, "status turbo-molecular pump TMP" . (1123 - $id) . "&#10;green: on, yellow: on but isolated, red: off, grey: undefined", $link);
  295. placeTextWithLink(399, 148 + $id * 35, $text, 50, 4, "#000000", "rotational speed [Hz] turbo-molecular pump TMP" . (1123 - $id), $link);
  296. }
  297. // FPD CP
  298. $value = $adeiValue[6][3];
  299. $pic = "cp";
  300. $text = "---";
  301. if ($value > 20)
  302. {
  303. $pic = $pic . "Off";
  304. }
  305. else if ($value <= 20 && $value > 5)
  306. {
  307. $text = sprintf('%.0F K', $value);
  308. $value = $adeiValue[6][12];
  309. if ($value == 1) { $pic = $pic . "On"; }
  310. else if ($value == 0) { $pic = $pic . "Standby"; }
  311. }
  312. placePicWithLink(368-30, 1475, $pic . ".png", 30, "status FPD UHV cryo pump&#10;green: on, yellow: on but isolated, red: off, grey: undefined", $adeiChannel[6][3]);
  313. placeTextWithLink(368, 1455, $text, 70, 3, "#000000", "temperature FPD UHV cryo pump", $adeiChannel[6][3]);
  314. // ########## FPD SOURCES ##########
  315. $pic = "source";
  316. $text = "---";
  317. if ($adeiValue[6][9] == 1 && $adeiValue[6][10] == 1) { $pic = $pic . "On"; $text = "OUT"; }
  318. else if ($adeiValue[6][9] == 1 && $adeiValue[6][10] == 0) { $pic = $pic . "EIn"; $text = "IN"; }
  319. else if ($adeiValue[6][9] == 0 && $adeiValue[6][10] == 1) { $pic = $pic . "GIn"; $text = "IN"; }
  320. else if ($adeiValue[6][9] == 0 && $adeiValue[6][10] == 0) { $pic = $pic . "Off"; $text = "IN"; }
  321. $link = $adeiChannel[6][9] . "," . $adeiChannel[6][10];
  322. placePicWithLink(368-30, 1510, $pic . ".png", 30, "status FPD sources (electron and gamma source)&#10;green: retracted (out), red: inserted (in), grey: undefined", $link);
  323. placeTextWithLink(368, 1490, $text, 70, 3, "#000000", "status FPD sources (electron and gamma source)", $link);
  324. // ########## AIR COILS ##########
  325. // LFCS
  326. $tol = 0.3;
  327. $text = "Unkn";
  328. $color = "#FFD800";
  329. $lfcs_array_offset = 2;
  330. $lfcs_config = -1; // store config for emcs later in loop
  331. for ($pp = 0; $pp < sizeof($aircoil_settings); $pp++)
  332. {
  333. for ($id = 0; $id < 22; $id++) // still old air coil number
  334. {
  335. $tol = abs($tol);
  336. if ($id == 20) {$lfcs_array_offset = -19; }
  337. if ($id == 21) {$lfcs_array_offset = -21; }
  338. if (abs($adeiValue[0][$id + $lfcs_array_offset] - $aircoil_settings[$pp][$id + 1]) < $tol)
  339. {
  340. if ($id == 19) { $text = $aircoil_settings[$pp][0]; $lfcs_config = $pp; $color = "#FF9300"; }
  341. if ($id == 21) { $color = "#4CFF00"; } }
  342. else break;
  343. }
  344. if ($lfcs_config > -1) break;
  345. }
  346. if ($text == "All Off") { $text = "OFF"; $color = "#FF0000"; }
  347. $mace_setting["LFCS"]=$text;
  348. placeText(-15, 232, "LFCS", 85, 5, "#000000");
  349. placeBox(10, 230, $text, 85, 3, $color);
  350. // EMCS
  351. $tol = 0.2;
  352. $text = "???";
  353. $color = "#FFD800";
  354. $EMCShor = $aircoil_settings[$lfcs_config][21];
  355. $EMCSver = $aircoil_settings[$lfcs_config][22];
  356. 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"; }
  357. else if ($adeiValue[0][0] > $tol || $adeiValue[0][1] > $tol) { $text = "Unkn"; $color = "#FFD800"; }
  358. else { $text = "ERR ".$lfcs[$lfcs_config][16]; $color = "#FF0000"; }
  359. if ($adeiValue[0][0] < $tol && $adeiValue[0][1] < $tol && $adeiValue[0][0] > -$tol && $adeiValue[0][1] > -$tol) { $text = "OFF"; $color = "#FF0000"; }
  360. $mace_setting["EMCS"]=$text;
  361. placeText(50, 232, "EMCS", 85, 5, "#000000");
  362. placeBox(75, 230, $text, 85, 3, $color);
  363. // print current values
  364. $tol = 0.5;
  365. for ($coil = 0; $coil < 22; $coil++)
  366. {
  367. $current = $adeiValue[0][$coil];
  368. $voltage = $adeiValue[1][$coil];
  369. $voltage = sprintf('%.1F', $voltage);
  370. $color = "#000000";
  371. if (abs($current) < $adeiValue[21][$coil] - $tol || abs($current) > $adeiValue[21][$coil] + $tol) $color = "#FF0000";
  372. if ($current < -$tol && $adeiValue[22][$coil] != 1) $color = "#FF0000";
  373. if ($current > $tol && $adeiValue[22][$coil] != 0) $color = "#FF0000";
  374. $current = sprintf('%.1F', $current);
  375. if ($current <= -100 || $current >= 100) $current = sprintf('%.0F', $current);
  376. if ($current >= -0.1 && $current <= 0.1) $current = sprintf('%.1F', 0.0);
  377. $vpos = -26;
  378. $pos = 609 + ($coil - 4) * 42.9;
  379. if ($coil == 0) {$pos = 320; $vpos = 56;} // pos for EMCS VER
  380. else if ($coil == 1) {$pos = 378; $vpos = 56;} // pos for EMCS HOR
  381. else if ($coil == 21) {$pos = $pos + 4;} // for coil 21
  382. $lem = $adeiValue[2][$coil];
  383. $color = "#006400";
  384. if ($lem == 1) $current = "LEM";
  385. $label = ($coil - 1);
  386. if ($coil == 0) $label = "VER";
  387. else if ($coil == 1) $label = "HOR";
  388. // add value label
  389. //if ($coil == 2) {
  390. // placeText($vpos+2, $pos-30, "I [A] =", 50, 2, "#888888");
  391. // placeText($vpos+17, $pos-30, "U [V] =", 47, 1, "#888888");
  392. //}
  393. // add air coil numbers here
  394. placeText($vpos+32, $pos, $label, 70, 2, "#000000");
  395. // print voltage value of air coil
  396. placeTextWithLink($vpos+18, $pos, $voltage, 70, 1, $color, "air-coil voltage [V]", $adeiChannel[1][$coil]);
  397. // print current value of air coil
  398. placeTextWithLink($vpos, $pos, $current, 70, 4, $color, "air-coil current [A]&#10;LEM: DCCT offline", $adeiChannel[0][$coil]);
  399. }
  400. // ######### HV Divider Temp Monitoring
  401. if ($MSmode == 5)
  402. { // only display in MS operation mode High-Voltage
  403. $K35_temp = $adeiValue[10][26];
  404. $K35_link = $adeiChannel[10][26];
  405. $K65_temp = $adeiValue[10][27];
  406. $K65_link = $adeiChannel[10][27];
  407. $divider_temp_spec = 25.0;
  408. $tol_div = 0.2;
  409. $color = "#FFFFFF";
  410. if (abs($K35_temp - $divider_temp_spec) > $tol_div) $color = "#FF0000";
  411. placeBox(586, 322,sprintf('%.1F &#176;C', $K35_temp), 50, 2, $color);
  412. placePicWithLink(536,324, "K35_drawing.png", 50, "K35 temperature status", $K35_link);
  413. $color = "#FFFFFF";
  414. if (abs($K65_temp - $divider_temp_spec) > $tol_div) $color = "#FF0000";
  415. placeBox(586, 378,sprintf('%.1F &#176;C', $K65_temp), 50, 2, $color);
  416. placePicWithLink(536,379, "K65_drawing.png", 50, "K65 temperature status", $K65_link);
  417. }
  418. // ########## HIGH VOLTAGE ##########
  419. if (($MSmode == 5) or ($MSmode == 4))
  420. { // only display in MS operation mode High-Voltage or baking
  421. // ##### path to patch panel configuration file
  422. if (file_exists("patchpanel/data/activeIEconfig.txt"))
  423. {$path_to_patchpanel = "patchpanel/data/activeIEconfig.txt"; }// only for KAAS server
  424. else {$path_to_patchpanel = "patchpanel/ringstoadei.txt"; } // for IKP dev server
  425. // load patch-panel configuration
  426. $handle = fopen($path_to_patchpanel, "r");
  427. $ringsToAdei = array();
  428. if ($handle)
  429. {
  430. while (($buffer = fgets($handle, 4096)) !== false)
  431. {
  432. $buffer = trim($buffer);
  433. $ringsToAdei[count($ringsToAdei)] = $buffer;
  434. }
  435. fclose($handle);
  436. }
  437. // labels
  438. $posY = 8; // offset between labels and voltages (13)
  439. $posX = 10; // down/bottom (7)
  440. if ($MSmode == 5)
  441. { // only display in MS operation mode High-Voltage
  442. $K35_value = $adeiValue[30][0];
  443. $K35_link = $adeiChannel[30][0];
  444. $K35_TS = $adeiValue[30][1];
  445. $K35_RunFlag = $adeiValue[30][2];
  446. $K35_text = "not connected";
  447. $K65_value = $adeiValue[30][3];
  448. $K65_link = $adeiChannel[30][3];
  449. $K65_TS = $adeiValue[30][4];
  450. $K65_RunFlag = $adeiValue[30][5];
  451. // Kal1 = JRL at PS vessel voltage
  452. // Kal1 = DVM at IE Common voltage for SuperKrypton 2021
  453. $Kal1_value = $adeiValue[30][6];
  454. $Kal1_link = $adeiChannel[30][6];
  455. $Kal1_TS = $adeiValue[30][7];
  456. $Kal1_RunFlag = $adeiValue[30][8];
  457. $Kal1_text = "DVM @ IE Common";
  458. $time_conversion_factor = 2082844800;
  459. $most_recent_TS = max($K35_TS,$K65_TS,$Kal1_TS);
  460. if (max($K35_RunFlag,$K65_RunFlag,$Kal1_RunFlag) > 0)
  461. {
  462. $timestamp = ($most_recent_TS - $time_conversion_factor);
  463. echo '<font size="4" color="#000000">&nbsp;HV meas. timestamp: ' . date("r", $timestamp ) . ' </font><br>';
  464. }
  465. else echo '<font size="4" color="#000000">&nbsp;HV meas. OFFLINE </font><br>';
  466. // HV switch for K35
  467. $hv_switch1103_k35 = $adeiValue[35][2];
  468. if ($hv_switch1103_k35 == 1) $K35_text = "K35 @ MoS Voltage";
  469. else if ($hv_switch1103_k35 == 0) $K35_text = "K35 @ MS Voltage";
  470. // voltage monitoring readout K35
  471. $color = "#000000";
  472. $factor_m = 1972.462;
  473. $factor_m_rel_error = 2.4e-6;
  474. $offset = 2.56e-06;
  475. $gain = 0.999999826;
  476. $value = ($K35_value - $offset) * $gain * $factor_m;
  477. $voltage_error = abs($value * $factor_m_rel_error * 1e3); // in mV
  478. if ($voltage_error*100 < 1) { $voltage_error = 0.2; }
  479. // voltage display K35
  480. $link = $K35_link;
  481. $text = "K35 divider readout 436-REU-0-0201-0001, precision voltage value";
  482. if ($K35_RunFlag > 0)
  483. {
  484. placeText(321, 811, $K35_text, 140, 2, $color); // K35 voltage reading
  485. placeTextWithLink(293, 746, "U<sub>0</sub> = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error ) .") V" , 270, 5, $color, $text, $link);
  486. if (($value < -19724.6) & ($value > -19724.7)) placeText(280, 796, "calibration in progress", 170, 2, "green"); // calibration ongoing
  487. }
  488. // HV switch for K65
  489. $hv_switch1102_k65 = $adeiValue[35][1];
  490. //$K65_text = "K65 @ MS Tank + IE";
  491. $K65_text = "K35 @ MS Tank + IE";
  492. //if ($hv_switch1102_k65 == 1) $K65_text = "K65 @ MoS Voltage";
  493. //if ($hv_switch1102_k65 == 0) $K65_text = "K65 @ MS Voltage";
  494. // voltage monitoring readout K65
  495. $color = "#000000";
  496. //$factor_m = 1818.108;
  497. //$factor_m_rel_error = 0.02/$factor_m;
  498. //$offset = -4.1e-6;
  499. //$gain = 1.00000136;
  500. $factor_m = 1972.462;
  501. $factor_m_rel_error = 2.4e-6; // including calibration, gain and offset error
  502. $offset = 3.38e-6;
  503. $offset_error = 3.6e-7;
  504. $gain = 0.999999633;
  505. $gain_error = 8.4e-8;
  506. $value = ($K65_value - $offset) * $gain * $factor_m;
  507. $voltage_error = abs($value * $factor_m_rel_error * 1e3); // in mV
  508. if ($voltage_error < 1) { $voltage_error = 1; }
  509. // voltage display K65
  510. $link = $K65_link;
  511. $text = "K65 divider channel 436-REU-0-0301-0001, precision voltage value, KNM5 calibration, in 2021 used for K35 at 436-REU-0-0201-0001";
  512. //$text = "K65 divider channel 436-REU-0-0301-0001, precision voltage value, KNM5 calibration, in 2021 used for 436-REU-0-0201-0001 as long as K35 is down.";
  513. if ($K65_RunFlag > 0)
  514. {
  515. if (($value < -19724.6) & ($value > -19724.7)) placeText(340, 796, "calibration in progress", 170, 2, "green"); // calibration ongoing
  516. placeTextWithLink(353, 746, "U<sub>0</sub> = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error ) .") V" , 270, 5, $color, $text, $link);
  517. //display stability indicators
  518. //if ($local)
  519. {
  520. if (sizeof($flukeE) > 2)
  521. {
  522. placeText(381, 811, $K65_text, 140, 2, $color); // K65 voltage reading
  523. if ($flukeE[0]['ppmdev'] <= 2e-6) $color1 = "lightgreen";
  524. if ($flukeE[1]['ppmdev'] <= 2e-6) $color2 = "lightgreen";
  525. if ($flukeE[2]['ppmdev'] <= 2e-6) $color3 = "lightgreen";
  526. if ($flukeE[3]['ppmdev'] <= 2e-6) $color4 = "lightgreen";
  527. if ($flukeE[0]['ppmdev'] > 2e-6) $color1 = "orange";
  528. if ($flukeE[1]['ppmdev'] > 2e-6) $color2 = "orange";
  529. if ($flukeE[2]['ppmdev'] > 2e-6) $color3 = "orange";
  530. if ($flukeE[3]['ppmdev'] > 2e-6) $color4 = "orange";
  531. if ($flukeE[0]['ppmdev'] > 5e-6) $color1 = "#FFA0A0";
  532. if ($flukeE[1]['ppmdev'] > 5e-6) $color2 = "#FFA0A0";
  533. if ($flukeE[2]['ppmdev'] > 5e-6) $color3 = "#FFA0A0";
  534. if ($flukeE[3]['ppmdev'] > 5e-6) $color4 = "#FFA0A0";
  535. placeBox(396, 915, "10s", 35, 1, $color1);
  536. placeBox(396, 880, "20s", 35, 1, $color2);
  537. placeBox(396, 845, "1m", 35, 1, $color3);
  538. placeBox(396, 810, "5m", 35, 1, $color4);
  539. echo '<font size="4" color="#000000">&nbsp;HV status timestamp: ' . $extraction_time_HV . ' </font><br>';
  540. }
  541. else placeText(381, 811, $K65_text, 140, 2, $color); // K65 voltage reading
  542. }
  543. }
  544. // voltage monitoring readout Kal1 e.g. JRL at PS
  545. // in 2021 used for IE Common monitoring
  546. $color = "#000000";
  547. //$factor_m = 5000.1021;
  548. //$offset = 4.529e-6;
  549. //$gain = 0.999997525656185;
  550. $factor_m = 1.0;
  551. $offset = 0.0;
  552. $gain = 1.0;
  553. $value = ($Kal1_value - $offset) * $gain * $factor_m;
  554. // $voltage_error = abs($value * 2e-3);
  555. $voltage_error = abs($value * 20 * 10e-6);
  556. //if ($voltage_error*100 < 1) { $voltage_error = 0.2; }
  557. if ($voltage_error*100 < 0.002) { $voltage_error = 0.002; }
  558. // voltage display K35
  559. $link = $Kal1_link;
  560. // $text = "JRL divider at Kal1 monitoring input 436-REU-0-0501-0001, precision voltage value";
  561. $text = "DVM at IE Common, precision voltage value";
  562. if ($Kal1_RunFlag > 0)
  563. {
  564. placeText(310, 815, $Kal1_text, 130, 2, $color); // Kal1 voltage reading
  565. if (abs($value) > 36000) placeText(490, 116, "calibration in progress", 170, 2, "green"); // calibration ongoing
  566. placeTextWithLink(290, 765, "U<sub>IE</sub> = ".sprintf('%.3F', $value ) . "(" . sprintf('%.0F', $voltage_error*100 ) .") V" , 230, 4, $color, $text, $link);
  567. }
  568. // Post Regulation Current Monitor
  569. $U_ist = abs($adeiValue[10][0]);
  570. $I_ist = abs($adeiValue[10][28]);
  571. $hv_switch1102_k65 = $adeiValue[35][1];
  572. $hv_switch1103_k35 = $adeiValue[35][2];
  573. $R_K65 = 54.5e6;
  574. $R_K35 = 58.65e6;
  575. $R_ges = (1-$hv_switch1103_k35)*$R_K35+(1-$hv_switch1102_k65)*$R_K65;
  576. $I_noPR = $U_ist / $R_ges * 1000.0;
  577. $I_PR = $I_ist - $I_noPR;
  578. $APR_on = abs($adeiValue[10][29]);
  579. $verbose = false; // switch for status outputs, dev mode
  580. // 28W limit, 33 kV mit 0,7 mA ist Maximum für stabilen Betrieb
  581. $P_PR = 0.0;
  582. If ($I_PR > 0.01) { $P_PR = $U_ist * $I_PR/1000; }
  583. else $I_PR = 0.0;
  584. $pic = "postreg";
  585. if ($verbose) echo '<br><br><br>';
  586. if ($I_PR < 0.1) { if ($verbose) echo 'PR off<br>'; $pic = $pic."Off";}
  587. else { if ($I_PR < 0.46) { if ($verbose) echo 'PR_current low'; $pic = $pic."Warn";}
  588. else if (($I_PR >= 0.46) && ($I_PR <= 0.8)) { if ($verbose) echo 'PR_current OK'; $pic = $pic."On";}
  589. else if ($I_PR > 0.8) { if ($verbose) echo 'PR_current overload'; $pic = $pic."Alarm";}
  590. if ($verbose) {
  591. echo '<br>';
  592. if ($P_PR < 23) echo " PR_wattage in range";
  593. else if ($P_PR < 28) echo " PR_wattage high";
  594. else if ($P_PR > 28) echo " PR_wattage CRITICAL";
  595. echo '<br>';
  596. }
  597. }
  598. if ($verbose) {
  599. echo '<br>';
  600. echo 'R_Divider = '.$U_ist/($I_ist*1000).' MOhm, ';
  601. echo 'I_ist = '.$I_ist.' mA, ';
  602. echo 'I_noPR = '.$I_noPR.' mA, ';
  603. echo 'I_PR = '.$I_PR.' mA, ';
  604. echo 'P_PR = '.$P_PR.' W<br>';
  605. }
  606. $color = "#000000";
  607. placePic(435,339, $pic.".png", 30, "Estimated status of HV post regulation &#010green = normal operation &#010gray = off &#010red = current too high &#010orange = current too low");
  608. if ($I_PR < 0.1)
  609. {
  610. placeText(466,324, "OFF", 60, 2, $color, "HV post regulation offline.");
  611. }
  612. else
  613. {
  614. placeTextWithLink(466,325, sprintf('%.2F mA', $I_PR), 60, 2, $color, "Estimated current through post regulation triode shunt. 0.46-0.8 mA for optimal performance.", $adeiChannel[10][28]);
  615. placeTextWithLink(480,325, sprintf('%2.0F W', $P_PR), 60, 2, $color, "Estimated power consumption of post regulation triode shunt. Must be < 28 W.", $adeiChannel[10][28]);
  616. if ($APR_on) placeTextWithLink(491,335, "APR", 40, 0, "#40AA40", "Advanced Post Regulation (APR) status.", $adeiChannel[10][29]);
  617. }
  618. } // end of PCS7 mode switch
  619. //placeText(180, 845, "MS WEST IE", 70, 2,"#808080"); // west IE being displayed in loop below
  620. //placeText(450, 845, "MS EAST IE", 70, 2,"#808080"); // east IE
  621. placeText(265, 815, "MS IE COMMON", 130, 2, "#000000"); // mainspec IE Common
  622. // MS Tank from Precision HCP Supply or Standard HCN
  623. $text = "MS TANK";
  624. $ms_hcp_soll = $adeiValue[10][1]; //flipped 2021-02-16 for new HCP device
  625. $ms_hcn_soll = $adeiValue[10][25];
  626. $HCP = true;
  627. if ($ms_hcn_soll == 0) {
  628. if ($ms_hcp_soll == 0) { $text = $text . " OFF";}
  629. else { $text = $text . " HCP"; $HCP = true; }
  630. } else { $text = $text . " HCN"; $HCP = false; }
  631. placeText(70, 830, $text, 100, 2, "#000000"); // mainspec tank
  632. // switch values here between HCN and HCP in Value and Channel Array !!!
  633. //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]; }
  634. if ($HCP) { $adeiValue[10][0] = -$adeiValue[10][0];}
  635. placeText(110-$posY, 845, "W7-11", 70, 2, "#000000"); // w7-11
  636. placeText(503+$posY+$posX, 845, "E7-11", 70, 2, "#000000"); // e7-11
  637. placeText(126-$posY, 600, "W6", 70, 2, "#000000"); // w6
  638. placeText(487+$posY+$posX, 600, "E6", 70, 2, "#000000"); // e6
  639. placeText(126-$posY, 1090, "W12", 70, 2, "#000000"); // w12
  640. placeText(487+$posY+$posX, 1090, "E12", 70, 2, "#000000"); // e12
  641. placeText(161-$posY, 516, "W5", 70, 2, "#000000"); // w5
  642. placeText(452+$posY+$posX, 516, "E5", 70, 2, "#000000"); // e5
  643. placeText(161-$posY, 1174, "W13", 70, 2, "#000000"); // w13
  644. placeText(452+$posY+$posX, 1174, "E13", 70, 2, "#000000"); // e13
  645. placeText(194-$posY, 434, "W4", 70, 2, "#000000"); // w4
  646. placeText(419+$posY+$posX, 434, "E4", 70, 2, "#000000"); // e4
  647. placeText(194-$posY, 1256, "W14", 70, 2, "#000000"); // w14
  648. placeText(419+$posY+$posX, 1256, "E14", 70, 2, "#000000"); // e14
  649. placeText(225-$posY, 385, "W3", 70, 2, "#000000"); // w3
  650. placeText(388+$posY+$posX, 385, "E3", 70, 2, "#000000"); // e3
  651. placeText(225-$posY, 1305, "W15", 70, 2, "#000000"); // w15
  652. placeText(388+$posY+$posX, 1305, "E15", 70, 2, "#000000"); // e15
  653. placeText(273-$posY, 352, "W2", 70, 2, "#000000"); // w2
  654. placeText(340+$posY+$posX, 352, "E2", 70, 2, "#000000"); // e2
  655. placeText(273-$posY, 1338, "W16", 70, 2, "#000000"); // w16
  656. placeText(340+$posY+$posX, 1338, "E16", 70, 2, "#000000"); // e16
  657. if ($adeiValue[10][8] > 10.0) placeText(309, 359, "APE", 70, 2, "#000000"); // ape south
  658. if ($adeiValue[10][10] > 10.0) placeText(309, 1331, "APE", 70, 2, "#000000"); // ape north
  659. // offset voltages
  660. $posY = 16; // offset between outer and inner voltages
  661. $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 );
  662. $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 );
  663. $tol = 0.2;
  664. $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");
  665. for ($pp = 0; $pp < 2; $pp++) // west (0), east (1)
  666. {
  667. for ($id = 0; $id < 22; $id++) // rings: o, i, o, i, ...
  668. {
  669. // show voltage if not shorted to IE
  670. if ($ringsToAdei[$id + 22*$pp] != "IE" && $ringsToAdei[$id + 22*$pp] != "")
  671. {
  672. // color
  673. 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) )
  674. $color = "#000000";
  675. else
  676. $color = "#FF0000";
  677. // show voltage
  678. if ( ($id % 2 == 0) || ($id % 2 == 1 && $ringsToAdei[$id + 22*$pp] != $ringsToAdei[$id + 22*$pp - 1]) )
  679. {
  680. $value = $adeiValue[11 + 2*$pp][$ringsToAdei[$id + 22*$pp]];
  681. $mace_setting[$ringNames[$id + 22*$pp]]=$value;
  682. 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]]);
  683. }
  684. }
  685. }
  686. }
  687. // tank, ie, dipole, ape
  688. $ringsPosY = array( 52, 247, 155, 425, 306, 306, 0, 240, 300, 285, 300, 315 );
  689. $ringsPosX = array( 805, 805, 805, 805, 319, 1371, 0, 150, 160, 190, 220, 190 );
  690. $tolA = array ( 15, 2, 1, 1, 1, 1, 0, 250, 2, 2, 2, 2);
  691. // MS voltages
  692. for ($pp = 0; $pp < 6; $pp++) // tank (0), ie (1), ie west (2), ie east (3), ape south (4), ape north (5)
  693. {
  694. // color
  695. if ( ($adeiValue[10][2*$pp] > $adeiValue[10][2*$pp + 1] - $tolA[$pp]) && ($adeiValue[10][2*$pp] < $adeiValue[10][2*$pp + 1] + $tolA[$pp]) )
  696. $color = "#000000";
  697. else
  698. $color = "#FF0000";
  699. // show voltage
  700. $value = $adeiValue[10][2*$pp];
  701. $link = $adeiChannel[10][2*$pp];
  702. $dipolestatus = $adeiValue[2][16];
  703. $dipolelink = $adeiChannel[2][16];
  704. if ($pp == 0) { $text = "absolute tank potential HCN:436-EHV-0-1001-0002 HCP:436-EHV-0-1002-0002"; }
  705. else if ($pp == 1) { $text = "IE common offset potential, 436-EHV-0-1003-0002"; }
  706. else if ($pp == 2) { $text = "relative voltage potential west IE"; }
  707. else if ($pp == 3) { $text = "relative voltage potential east IE"; }
  708. else if ($pp == 4) { $text = "relative voltage potential south APE"; }
  709. else if ($pp == 5) { $text = "relative voltage potential north APE"; }
  710. if ($pp == 2 || $pp == 3)
  711. {
  712. if ($dipolestatus == 1) // dipole enabled
  713. {
  714. $color = "#990000";
  715. $value = $adeiValue[10][2*$pp];
  716. if ($pp == 2)
  717. {
  718. placeText($ringsPosY[$pp] + 40, $ringsPosX[$pp], "DIPOLE", 150, 4, "#CC0000" );
  719. }
  720. else if ($pp == 3)
  721. {
  722. placeText($ringsPosY[$pp] + 40, $ringsPosX[$pp], "DIPOLE", 150, 4, "#CC0000");
  723. }
  724. }
  725. else
  726. {
  727. $value = $adeiValue[10][2*$pp]; // dipole disabled
  728. $color = "#909090";
  729. }
  730. if ($pp == 2) placeText(180, 825, "MS WEST IE", 110, 2, $color); // west IE
  731. else if ($pp == 3) placeText(450, 825, "MS EAST IE", 110, 2, $color); // east IE
  732. $link = $adeiChannel[10][2*$pp+1] . "," . $adeiChannel[10][2*$pp] . "," . $dipolelink;
  733. }
  734. // tank potential
  735. if ($pp == 0) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.1F V', -$value), 150, 4, $color, $text, $link);
  736. // IE common
  737. else if ($pp == 1)
  738. {
  739. if ($Kal1_RunFlag == 0) $digits = '%.2F V'; else $digits = '%.1F V';
  740. placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf($digits, -$value), 150, 4, $color, $text, $link);
  741. $mace_setting["IECommon"]=-$value;
  742. $digits = '';
  743. }
  744. // IE dipoles
  745. else if ($pp == 2 || $pp == 3) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.2F V', $value), 150, 5, $color, $text, $link);
  746. // APE
  747. else if ($pp == 4 || $pp == 5)
  748. {
  749. if ($adeiValue[10][2*$pp] > 10.0) { placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp] , sprintf('%.1F', $value), 70, 4, $color, $text, $link); }
  750. }
  751. }
  752. }
  753. // PS voltages (add $pp < 10 for PS IE )
  754. if ($PSmode == 5)
  755. { // only display in PS operation mode High-Voltage
  756. placeText(265, 190, "PS TANK", 70, 2, "#000000"); // prespec tank
  757. placeText(330, 160, "PS IE", 120, 2, "#505050"); // prespec IE
  758. for ($pp = 7; $pp < 12; $pp++) // PS tank (channel 7 = array entry 14 + 15), IE west (8), IE east (9)
  759. {
  760. // color and text
  761. if ($pp == 7) { $text = "Primary PS tank potential of 416EHV1001"; $color = "#000000";}
  762. else if ($pp == 8) { $text = "relative voltage potential PS IE1 Ch1A of 416EHV1002"; $color = "#505050";}
  763. else if ($pp == 9) { $text = "relative voltage potential PS IE2 Ch1B of 416EHV1002"; $color = "#505050";}
  764. else if ($pp == 10) { $text = "relative voltage potential PS IE3 Ch2A of 416EHV1003"; $color = "#505050";}
  765. else if ($pp == 11) { $text = "relative voltage potential PS IE4 Ch2B of 416EHV1003"; $color = "#A0A0A0";}
  766. // setpoint mismatch color
  767. if ( ($adeiValue[10][2*$pp] > $adeiValue[10][2*$pp + 1] - $tolA[$pp]) && ($adeiValue[10][2*$pp] < $adeiValue[10][2*$pp + 1] + $tolA[$pp]) )
  768. $color = $color;
  769. else
  770. $color = "#FF0000";
  771. // show voltage
  772. $value = $adeiValue[10][2*$pp];
  773. $link = $adeiChannel[10][2*$pp];
  774. if ($pp == 7) placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.1F V', -$value), 150, 5, $color, $text, $link);
  775. else placeTextWithLink($ringsPosY[$pp], $ringsPosX[$pp], sprintf('%.1F V', -$value), 60, 2, $color, $text, $link);
  776. }
  777. }
  778. // ########## Split Ring Electrodes ##########
  779. $srPosX = array( 59, 284, 1420 );
  780. $srPosY = array( 402, 402, 370 );
  781. $srKATRINNumber = array( "418-EEL-3-2150", "418-EEL-3-4150", "438-EEL-3-5150" );
  782. // CPS-PS electrode 418-EEL-2150
  783. // $sr: 0 = cps-ps ; 1 = PS-MS ; 2 = MS-FPD
  784. for ($sr = 0; $sr < 3; $sr++)
  785. {
  786. $splitringON = $adeiValue[36][4*$sr + 3];
  787. $pic = "splitring";
  788. if ($splitringON = 1)
  789. {
  790. $color = "#000000";
  791. $splitringVal = $adeiValue[36][4*$sr + 4];
  792. $splitringPOL = $adeiValue[36][4*$sr + 5];
  793. $splitringSet = $adeiValue[36][4*$sr + 6];
  794. $link = $adeiChannel[36][$sr*4 + 4];
  795. if (abs($splitringVal) < 25) { $color="#FF0000"; $pic = $pic."Alarm"; $sign = "";}
  796. else {
  797. if ($splitringPOL == 0) {$sign = "+"; $pic = $pic."On";}
  798. if ($splitringPOL == 1) {$sign = ""; $pic = $pic."Warn";}
  799. }
  800. 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);
  801. placeTextWithLink($srPosY[$sr],$srPosX[$sr], $sign.sprintf('%.0F V', $splitringVal), 60, 2, $color, "Voltage on split ring electrode ".$srKATRINNumber[$sr], $link);
  802. }
  803. else placePicWithLink($srPosY[$sr]-32,$srPosX[$sr]+16, $pic."Off.png", 30, "status of split ring electrode", $link);
  804. }
  805. // ########## DETECTOR ##########
  806. // detector powered
  807. $lowVoltage = array( 12, 8, 6, 6, 120 );
  808. $link = "";
  809. $pic = "fpdOn";
  810. $text = "ON";
  811. for ($id = 0; $id < 5; $id++)
  812. {
  813. $value = $adeiValue[6][4 + $id];
  814. if (!($value < $lowVoltage[$id] + 0.2 && $value > $lowVoltage[$id] - 0.2))
  815. {
  816. $pic = "fpdOff";
  817. $text = "OFF";
  818. }
  819. $link = $link . $adeiChannel[6][4 + $id] . ",";
  820. }
  821. $link = substr($link, 0, strlen($link) - 1);
  822. placePicWithLink(200, 1600, $pic . ".png", 30, "status FPD power&#10;green: on, red: off, grey: undefined", $link);
  823. placeTextWithLink(227, 1580, $text, 70, 4, "#000000", "status FPD power", $link);
  824. // carousel
  825. $value = $adeiValue[6][11];
  826. $color = "#000000";
  827. if ($value < -95) $value = "---";
  828. else $value = sprintf('%.0F', $adeiValue[6][11]) . " &#176;C";
  829. placeTextWithLink(255, 1565, $value, 100, 4, $color, "temperature FPD carousel/electronics", $adeiChannel[6][11]);
  830. placeText(275, 1565, "carousel", 100, 2, "#000000");
  831. // ########## MAGNETOMETERS ##########
  832. $mag = array(4, 6, 3); // removed 4th entry of south ring, due to disconnection
  833. for ($pp = 0; $pp < 3; $pp++)
  834. {
  835. $bx = 0;
  836. $by = 0;
  837. $bz = 0;
  838. $link = "";
  839. for ($id = 0; $id < $mag[$pp]; $id++)
  840. {
  841. $bx = $bx + $adeiValue[16 + $pp][3 * $id];
  842. $by = $by + $adeiValue[16 + $pp][3 * $id + 1];
  843. $bz = $bz + $adeiValue[16 + $pp][3 * $id + 2];
  844. $link = $link . $adeiChannel[16 + $pp][3 * $id + 2] . ",";
  845. //echo $bx . " " . $by . " " . $bz . "<br>";
  846. }
  847. $bx = $bx / $mag[$pp];
  848. $by = $by / $mag[$pp];
  849. $bz = $bz / $mag[$pp];
  850. $link = substr($link, 0, strlen($link) - 1);
  851. $value = sqrt($bx * $bx + $by * $by + $bz * $bz);
  852. $text = "averaged field precise magnetometers ";
  853. if ($pp == 0) $text = $text . "north ";
  854. else if ($pp == 1) $text = $text . "middle ";
  855. else if ($pp == 2) $text = $text . "south ";
  856. $text = $text . "ring";
  857. placeTextWithLink(553, 1015 - 170 * $pp, sprintf('%.1F G', $value), 80, 5, "#000000", $text, $link);
  858. }
  859. // ########## SAP MAGNETOMETERS ##########
  860. $mag = array(5, 4,); // 5 SAP North Ring, 4 SAP South Ring magnetometers
  861. for ($pp = 0; $pp < 2; $pp++)
  862. {
  863. $bx = 0;
  864. $by = 0;
  865. $bz = 0;
  866. $link = "";
  867. for ($id = 0; $id < $mag[$pp]; $id++)
  868. {
  869. $bx = $bx + $adeiValue[37 + $pp][3 * $id];
  870. $by = $by + $adeiValue[37 + $pp][3 * $id + 1];
  871. $bz = $bz + $adeiValue[37 + $pp][3 * $id + 2];
  872. $link = $link . $adeiChannel[37 + $pp][37 * $id + 2] . ",";
  873. //echo $bx . " " . $by . " " . $bz . "<br>";
  874. }
  875. $bx = $bx / $mag[$pp];
  876. $by = $by / $mag[$pp];
  877. $bz = $bz / $mag[$pp];
  878. $link = substr($link, 0, strlen($link) - 1);
  879. // radings in muT, therfore factor 100 for Gauss display
  880. $value = 0.01*sqrt($bx * $bx + $by * $by + $bz * $bz);
  881. $text = "averaged field precise magnetometers SAP ";
  882. if ($pp == 0) $text = $text . "north ";
  883. else if ($pp == 1) $text = $text . "south ";
  884. $text = $text . "ring";
  885. placeTextWithLink(553, 1240 - 110 * $pp, sprintf('%.1F G', $value), 80, 5, "#000000", $text, $link);
  886. }
  887. // dipole
  888. // $pic = "status";
  889. // if ($pulserId[0] == "dipole" && $daqElapsed[0] > 30)
  890. // {
  891. // if ($pulserCounts[0] > 0) $pic = $pic . "On";
  892. // else if ($pulserCounts[0] == 0) $pic = $pic . "Off";
  893. // }
  894. //placePic($posY + 34 + 25, $posX + 80, $pic . ".png", 17, "status dipole sync pulser&#10;green: on, red: off, grey: undefined");
  895. // egun
  896. // $pic = "status";
  897. // if ($pulserId[1] == "egun" && $daqElapsed[0] > 30)
  898. // {
  899. // if ($pulserCounts[1] > 0) $pic = $pic . "On";
  900. // else if ($pulserCounts[1] == 0) $pic = $pic . "Off";
  901. // }
  902. //placePic($posY + 34 + 50, $posX + 80, $pic . ".png", 17, "status egun sync pulser&#10;green: on, red: off, grey: undefined");
  903. // muon
  904. // $pic = "status";
  905. // if ($pulserId[3] == "muon" && $daqElapsed[0] > 30)
  906. // {
  907. // if ($pulserCounts[3] > 0) $pic = $pic . "On";
  908. // else if ($pulserCounts[3] == 0) $pic = $pic . "Off";
  909. // }
  910. // placePic($posY + 34 + 75, $posX + 80, $pic . ".png", 17, "status muon sync pulser&#10;green: on, red: off, grey: undefined");
  911. // ########## HIGH PRESSURE MS ##########
  912. $value = $adeiValue[9][3];
  913. if ($value > 1.0)
  914. {
  915. if ($value < 20.0) $pic = "bottleBlinking.gif";
  916. else $pic = "bottleOn.png";
  917. $text = "ON";
  918. $color = "#000000";
  919. if ($adeiValue[9][4] != 64) $color = "#FF0000";
  920. placeTextWithLink(135, 1387, sprintf('%.1F &#037;', $adeiValue[9][3]), 70, 4, $color, "gas flow leak valve", $adeiChannel[9][5]);
  921. placeTextWithLink(160, 1387, sprintf('%.1E', $adeiValue[9][0]), 70, 4, $color, "pressure [mbar] MKS Baratron", $adeiChannel[9][3]);
  922. }
  923. else
  924. {
  925. $pic = "bottle.png";
  926. $text = "OFF";
  927. }
  928. $link = $adeiChannel[9][3] . "," . $adeiChannel[9][0];
  929. placePicWithLink(135, 1358, $pic, 48, "status gas injection system&#10;gray: off, blinking: low, green: on&#10Should be off for nominal pressure measurements!!!", $link);
  930. placeTextWithLink(180, 1347, $text, 70, 4, "#000000", "status gas injection system", $link);
  931. // ########## HIGH PRESSURE PS ##########
  932. $value = $adeiValue[27][7];
  933. $posOK = $adeiValue[27][6];
  934. $link = $adeiChannel[27][6].",".$adeiChannel[27][7];
  935. if ($value < 1)
  936. {
  937. $pic = "bottle.png";
  938. $text = "OFF";
  939. $color = "#909090";
  940. }
  941. else if (($value >= 1) && ($value < 15))
  942. {
  943. $pic = "bottleBlinking.gif";
  944. $text = "ON";
  945. $color = "#000000";
  946. }
  947. else if ($value >= 15)
  948. {
  949. $pic = "bottleOn.png";
  950. $text = sprintf('%.1F', $value)." %";
  951. $color = "#000000";
  952. if ($posOK == 1) placeBox(418, 107, "Pos OK", 40, 2, "#00FF00");
  953. else placeBox(418, 107, "PosErr", 40, 2, "#FF0000");
  954. }
  955. placePicWithLink(370, 113 , $pic, 30, "status PS gas injection system&#10;gray: off, blinking: low, green: on&#10Should be off for nominal pressure measurements!!!", $link);
  956. placeTextWithLink(402, 99, $text, 60, 2, $color, "status gas injection system", $link);
  957. // ########## TLK Wall and LAUDA TEMPERATURE ##########
  958. if ($PSmode == 5)
  959. { // only display if PS operation mode is HV
  960. // mean of 4023, 4033, 4043
  961. $link = $adeiChannel[29][0] . "," . $adeiChannel[29][1] . "," . $adeiChannel[29][2];
  962. $value = ($adeiValue[29][0] + $adeiValue[29][1] + $adeiValue[29][2])/3.0;
  963. $color = "#000000";
  964. if ($value < 4000) placeTextWithLink(440, 145, "T<sub>PS</sub> = " . sprintf('%.1F &#176;C', $value), 120, 4, $color, "PS mean temperature of 4023..33..43", $link);
  965. }
  966. if ($PSmode != 5)
  967. { // only display if PS operation mode is Baking
  968. $min = 18;
  969. $max = 30;
  970. // sensor 4100 ID [29][3]
  971. $link = $adeiChannel[29][3];
  972. $value = $adeiValue[29][3];
  973. $color = "#000000";
  974. if ($value < $min) $color = "#0026FF";
  975. else if ($value > $max) $color = "#FF0000";
  976. if ($value < 400) placeTextLeftWithLink(445, 5, "T<sub>wall</sub> = " . sprintf('%.1F &#176;C', $value), 180, 4, $color, "TLK separation wall temperature of RTP4100", $link);
  977. $min = 15;
  978. // LAUDA System 5401 [34][0..1]
  979. $link = $adeiChannel[34][0].",".$adeiChannel[34][1];
  980. $value = $adeiValue[34][0];
  981. $max = $adeiValue[34][1]+1;
  982. $color = "#000000";
  983. if ($value < $min) $color = "#0026FF";
  984. else if ($value > $max) $color = "#FF0000";
  985. if ($value < 400) placeTextLeftWithLink(475, 5, "T<sub>LAUDA</sub> = " . sprintf('%.1F &#176;C', $value), 180, 4, $color, "LAUDA System actual temperature value", $link);
  986. // ########## PS VESSEL TEMPERATURES ##########
  987. $min = 18;
  988. $max = 65;
  989. // mean of 4023, 4033, 4043
  990. $link = $adeiChannel[29][0] . "," . $adeiChannel[29][1] . "," . $adeiChannel[29][2];
  991. $value = ($adeiValue[29][0] + $adeiValue[29][1] + $adeiValue[29][2])/3.0;
  992. $color = "#000000";
  993. if ($value < $min) $color = "#0026FF";
  994. else if ($value > $max) $color = "#FF0000";
  995. if ($value < 4000) placeTextWithLink(305, 185, sprintf('%.1F &#176;C', $value), 90, 4, $color, "PS mean temperature of 4023..33..43", $link);
  996. // mean of 3901, 3902, 3903, 3904
  997. $link = $adeiChannel[29][4] . "," . $adeiChannel[29][5] . "," . $adeiChannel[29][6] . "," . $adeiChannel[29][7];
  998. $value = ($adeiValue[29][4] + $adeiValue[29][5] + $adeiValue[29][6] + $adeiValue[29][7])/4.0;
  999. $color = "#000000";
  1000. if ($value < $min) $color = "#0026FF";
  1001. else if ($value > $max) $color = "#FF0000";
  1002. if ($value < 4000) placeTextWithLink(295, 110, sprintf('%.1F &#176;C', $value), 90, 4, $color, "PS mean temperature of 3902..03..04 upper NEG port", $link);
  1003. // mean of 3912, 3913, (3914 failed)
  1004. $link = $adeiChannel[29][8] . "," . $adeiChannel[29][9] . "," . $adeiChannel[29][10] . "," . $adeiChannel[29][11];
  1005. // $value = ($adeiValue[29][8] + $adeiValue[29][9] + $adeiValue[29][10] + $adeiValue[29][11])/4.0;
  1006. $value = ($adeiValue[29][8] + $adeiValue[29][9] + $adeiValue[29][10])/3.0;
  1007. $color = "#000000";
  1008. if ($value < $min) $color = "#0026FF";
  1009. else if ($value > $max) $color = "#FF0000";
  1010. if ($value < 4000) placeTextWithLink(315, 110, sprintf('%.1F &#176;C', $value), 90, 4, $color, "PS mean temperature of 3912..13..14 side NEG port", $link);
  1011. }
  1012. // ########## MS VESSEL TEMPERATURES ##########
  1013. $min = 14;
  1014. $max = 24;
  1015. // 0066
  1016. $value = $adeiValue[20][0];
  1017. $color = "#000000";
  1018. if ($value < $min) $color = "#0026FF";
  1019. else if ($value > $max) $color = "#FF0000";
  1020. if (($value < 400) & ($value > 0)) placeTextWithLink(110, 933, "T<sub>IE0066</sub> = " . sprintf('%.1F &#176;C', $value), 170, 4, $color, "IE temperature 0066", $adeiChannel[20][0]);
  1021. // 0076
  1022. $value = $adeiValue[20][1];
  1023. $color = "#000000";
  1024. if ($value < $min) $color = "#0026FF";
  1025. else if ($value > $max) $color = "#FF0000";
  1026. if (($value < 400) & ($value > 0)) placeTextWithLink(110+20, 933, "T<sub>IE0076</sub> = " . sprintf('%.1F &#176;C', $value), 170, 4, $color, "IE temperature 0076", $adeiChannel[20][1]);
  1027. // 0270
  1028. $value = $adeiValue[20][2];
  1029. $color = "#000000";
  1030. if ($value < $min) $color = "#0026FF";
  1031. else if ($value > $max) $color = "#FF0000";
  1032. if (($MSmode != 5) & ($value < 400) & ($value > 0)) placeTextWithLink(307, 805, "T<sub>0270</sub> = " . sprintf('%.1F &#176;C', $value), 160, 4, $color, "tank temperature 0270", $adeiChannel[20][2]);
  1033. if (($MSmode == 5) & ($value < 400) & ($value > 0)) placeTextWithLink(110, 677, "T<sub>0270</sub> = " . sprintf('%.1F &#176;C', $value), 160, 4, $color, "tank temperature 0270", $adeiChannel[20][2]);
  1034. // 0283
  1035. $value = $adeiValue[20][3];
  1036. $color = "#000000";
  1037. if ($value < $min) $color = "#0026FF";
  1038. else if ($value > $max) $color = "#FF0000";
  1039. if (($MSmode != 5) & ($value < 400) & ($value > 0)) placeTextWithLink(307, 963, "T<sub>0283</sub> = " . sprintf('%.1F &#176;C', $value), 160, 4, $color, "tank temperature 0283", $adeiChannel[20][3]);
  1040. if (($MSmode == 5) & ($value < 400) & ($value > 0)) placeTextWithLink(130, 677, "T<sub>0283</sub> = " . sprintf('%.1F &#176;C', $value), 160, 4, $color, "tank temperature 0283", $adeiChannel[20][3]);
  1041. // port 0100 saphire window
  1042. $value = $adeiValue[19][3];
  1043. $color = "#000000";
  1044. if ($value > 30) placeTextLeftWithLink(105, 1275, "T<sub>saphire</sub> = " . sprintf('%.1F &#176;C', $value), 160, 4, $color, "port 0100 saphire window temperature", $adeiChannel[19][3]);
  1045. $color = "#000000";
  1046. // ########## STS ##########
  1047. placeTextLeftWithWebsiteLink(370, 1, "&larr;STS", 60, 5, $color, "Link to STS Status Overview", "https://katrin.kit.edu/status-sts/");
  1048. // ########## WebTrium Link ##########
  1049. placeTextLeftWithWebsiteLink(20, 1450, "&rarr; WebTrium", 155, 4, $color, "Link to WebTrium Overview", "https://webtrium.mpp.mpg.de");
  1050. // ########## FPD Status ##########
  1051. placeTextLeftWithWebsiteLink(50, 1450, "&rarr; FPD Status", 155, 4, $color, "Link to FPD Status Overview", "https://ikp-katrin-fpd.ikp.kit.edu/fpdstatus/");
  1052. // ########## Sanshiro Katana Page ##########
  1053. placeTextLeftWithWebsiteLink(80, 1450, "&rarr; Brew Kaffee Beans and Idle", 275, 4, $color, "Link to Brew Kaffee Beans and Idle page at UW/Seattle", "http://katana.npl.washington.edu/~sanshiro/");
  1054. // ########## MoS und HV Status ##########
  1055. placeTextLeftWithWebsiteLink(110, 1450, "&rarr; MoS and HV Status", 240, 4, $color, "Link to Monitor Spectrometer and High Voltage Status Overview", "https://katrin.kit.edu/bora-mos");
  1056. // ########## Magnet Overview ##########
  1057. placeTextLeftWithWebsiteLink(140, 1450, "&rarr; Magnet Control System", 270, 4, $color, "Link to Magnet Control System Status Page", "https://katrin.kit.edu/bora-mcs");
  1058. // ########## PS ##########
  1059. // placeText(100, 170, "PS", 60, 30, $color);
  1060. // ########## MAC-E filter configuration display ##########
  1061. $tol = 0.2;
  1062. $tol = abs($tol);
  1063. $color = "#FFD800"; //base color: US school bus yellow
  1064. for ($pp = 0; $pp < sizeof($mace_configurations); $pp++) // loop over all predefined configurations
  1065. {
  1066. for ($id = 1; $id < sizeof($mace_configurations[$pp]); $id++) // loop thru all parameters, but not name in $id=0
  1067. {
  1068. if (($id < 3) & (array_values($mace_configurations[$pp])[$id] != array_values($mace_setting)[$id])) break;
  1069. if (abs(array_values($mace_configurations[$pp])[$id] - array_values($mace_setting)[$id]) < $tol)
  1070. {
  1071. if ($id == 25) {
  1072. $mace_setting["Config"] = $mace_configurations[$pp]["Config"];
  1073. $color = "#4CFF00"; // success color: harlequin green
  1074. }
  1075. else
  1076. {
  1077. $color = "#FF9300"; // failure color: dark orange
  1078. }
  1079. }
  1080. else break;
  1081. }
  1082. if ($color == "#4CFF00") break;
  1083. }
  1084. if (($mace_setting["Config"] == "unkn") or ($mace_setting["Config"] == "other"))
  1085. {
  1086. $color = "#FFD800"; //unknown config color: US school bus yellow
  1087. }
  1088. placeText(115, 232, "MAC-E", 85, 5, "#000000");
  1089. placeBox(140, 230, $mace_setting["Config"] , 85, 3, $color);
  1090. if ($V4_open) {
  1091. // ########## PS Ion Monitor status display ##########
  1092. if ($adeiValue[39][1] < 0.5)
  1093. {
  1094. $ion_mon_stat = "active";
  1095. $color = "#4CFF00";
  1096. }
  1097. else
  1098. {
  1099. $ion_mon_stat = "bypassed";
  1100. $color = "#FF0000";
  1101. placePicWithLink(130, 33, "alarm_flash.gif", 50, "Ion alarm not armed!", $adeiChannel[39][1]);
  1102. }
  1103. placeText(115+65, 4, "Ion Mon", 105, 5, "#000000");
  1104. placeBox(140+65, 2, $ion_mon_stat , 105, 3, $color);
  1105. }
  1106. // ########## HIGH VOLTAGE SWITCH ##########
  1107. $value = $adeiValue[31][1];
  1108. $pic = "switch";
  1109. if ($value == 1) $pic = $pic . "Open";
  1110. else if ($value == 0) $pic = $pic . "Closed";
  1111. placePicWithLink(474, 440, $pic . ".png", 80, "status high-voltage grounding switch", $adeiChannel[31][1]);
  1112. // ########## MONITOR SPECTROMETR COUPLING STATUS ##########
  1113. $hv_switch1101_mos = $adeiValue[35][0];
  1114. $mos = "beamline_mos.png";
  1115. placePicXY(525, 120, $mos, 190, 60, "status monitor spectrometer connection");
  1116. if ($hv_switch1101_mos == 1)
  1117. {
  1118. $color = "#4CFF00"; // green
  1119. placeBox(586, 120, "MoS coupled", 190, 2, $color);
  1120. }
  1121. else
  1122. {
  1123. $color = "#CFCFCF"; // light gray
  1124. placeBox(586, 120, "MoS separated", 190, 2, $color);
  1125. }
  1126. // ########## PS Opus weather station ##########
  1127. $data_index = 40;
  1128. $Opus_tempC = $adeiValue[$data_index][0];
  1129. $Opus_tempF = $adeiValue[$data_index][1];
  1130. $Opus_dewpointC = $adeiValue[$data_index][2];
  1131. $Opus_dewpointF = $adeiValue[$data_index][3];
  1132. $Opus_relH_percent = $adeiValue[$data_index][4];
  1133. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1134. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1135. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1136. $Opus_voltage = $adeiValue[$data_index][8];
  1137. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1138. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1139. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1140. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1141. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1142. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1143. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1144. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1145. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1146. $location_text = "pre spectrometer";
  1147. $draw_x = 0;
  1148. $draw_y = -15;
  1149. placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel);
  1150. placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1151. placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1152. 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);
  1153. placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1154. placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1155. // ########## DET Opus weather station ##########
  1156. $data_index = 41;
  1157. $Opus_tempC = $adeiValue[$data_index][0];
  1158. $Opus_tempF = $adeiValue[$data_index][1];
  1159. $Opus_dewpointC = $adeiValue[$data_index][2];
  1160. $Opus_dewpointF = $adeiValue[$data_index][3];
  1161. $Opus_relH_percent = $adeiValue[$data_index][4];
  1162. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1163. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1164. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1165. $Opus_voltage = $adeiValue[$data_index][8];
  1166. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1167. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1168. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1169. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1170. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1171. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1172. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1173. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1174. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1175. $location_text = "detector platform";
  1176. $draw_x = 1600;
  1177. $draw_y = -15;
  1178. placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel);
  1179. placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1180. placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1181. 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);
  1182. placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1183. placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1184. // ########## Detector Platform OLD ##########
  1185. //placePicWithLink(-135, 1605, "newTemperature.png", 23, "temperature in KATRIN hall", $adeiChannel[19][1]);
  1186. //placeTextWithLink(-135, 1630, sprintf('%.1F &#176;C', $adeiValue[19][1]), 90, 4, "#000000", "temperature in KATRIN hall", $adeiChannel[19][1]);
  1187. //placePicWithLink(-110, 1605, "newPressure.png", 23, "atmospheric pressure in KATRIN hall", $adeiChannel[19][0]);
  1188. //placeTextWithLink(-110, 1630, sprintf('%.0F hPa', $adeiValue[19][0] * 0.0689475729 * 1000.0), 90, 4, "#000000", "atmospheric pressure in KATRIN hall", $adeiChannel[19][0]);
  1189. //placePicWithLink(-85, 1605, "newHumidity.png", 23, "relative humidity in KATRIN hall", $adeiChannel[19][2]);
  1190. //placeTextWithLink(-85, 1630, sprintf('%.1F &#037;', $adeiValue[19][2]), 90, 4, "#000000", "relative humidity in KATRIN hall", $adeiChannel[19][2]);
  1191. // ########## HV Opus weather station ##########
  1192. $data_index = 42;
  1193. $Opus_tempC = $adeiValue[$data_index][0];
  1194. $Opus_tempF = $adeiValue[$data_index][1];
  1195. $Opus_dewpointC = $adeiValue[$data_index][2];
  1196. $Opus_dewpointF = $adeiValue[$data_index][3];
  1197. $Opus_relH_percent = $adeiValue[$data_index][4];
  1198. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1199. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1200. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1201. $Opus_voltage = $adeiValue[$data_index][8];
  1202. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1203. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1204. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1205. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1206. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1207. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1208. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1209. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1210. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1211. $location_text = "high-voltage cage";
  1212. $draw_x = 434;
  1213. $draw_y = 590;
  1214. if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0))
  1215. {
  1216. placeBoxRight($draw_y, $draw_x,sprintf('%.1F &#176;C', $Opus_tempC), 65, 2, $color);
  1217. placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text, $Opus_tempC_channel);
  1218. //placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel);
  1219. //placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1220. //placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1221. //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);
  1222. //placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1223. //placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1224. }
  1225. // ########## MS bottom Opus weather station ##########
  1226. $data_index = 43;
  1227. $Opus_tempC = $adeiValue[$data_index][0];
  1228. $Opus_tempF = $adeiValue[$data_index][1];
  1229. $Opus_dewpointC = $adeiValue[$data_index][2];
  1230. $Opus_dewpointF = $adeiValue[$data_index][3];
  1231. $Opus_relH_percent = $adeiValue[$data_index][4];
  1232. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1233. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1234. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1235. $Opus_voltage = $adeiValue[$data_index][8];
  1236. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1237. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1238. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1239. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1240. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1241. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1242. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1243. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1244. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1245. $location_text = "main spectrometer basement";
  1246. $draw_x = 845;
  1247. $draw_y = 586;
  1248. $color = "#CCCCCC";
  1249. if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0))
  1250. {
  1251. placeBoxRight($draw_y, $draw_x,sprintf('%.1F &#176;C', $Opus_tempC), 65, 2, $color);
  1252. placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text.", and &#010rel. humidity is H = ".sprintf('%.1F &#037;', $Opus_relH_percent).",&#010atm. pressure is p = ".sprintf('%.0F hPa', $Opus_absPressure_hPa).".", $Opus_tempC_channel);
  1253. //placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1254. //placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1255. //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);
  1256. //placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1257. //placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1258. }
  1259. // ########## MS top Opus weather station ##########
  1260. $data_index = 44;
  1261. $Opus_tempC = $adeiValue[$data_index][0];
  1262. $Opus_tempF = $adeiValue[$data_index][1];
  1263. $Opus_dewpointC = $adeiValue[$data_index][2];
  1264. $Opus_dewpointF = $adeiValue[$data_index][3];
  1265. $Opus_relH_percent = $adeiValue[$data_index][4];
  1266. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1267. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1268. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1269. $Opus_voltage = $adeiValue[$data_index][8];
  1270. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1271. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1272. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1273. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1274. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1275. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1276. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1277. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1278. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1279. $location_text = "main spectrometer under the roof";
  1280. $draw_x = 845;
  1281. $draw_y = 31;
  1282. if (($Opus_tempC > 0) && (($Opus_tempC < 99)) && ($Opus_absPressure_hPa > 0))
  1283. {
  1284. placeBoxRight($draw_y, $draw_x,sprintf('%.1F &#176;C', $Opus_tempC), 65, 2, $color);
  1285. placePicWithLink($draw_y+2, $draw_x+5, "newTemperature.png", 15, "temperature at ".$location_text, $Opus_tempC_channel);
  1286. //placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel);
  1287. //placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1288. //placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1289. //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);
  1290. //placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1291. //placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1292. }
  1293. // ########## MoS general Opus weather station ##########
  1294. $data_index = 45;
  1295. $Opus_tempC = $adeiValue[$data_index][0];
  1296. $Opus_tempF = $adeiValue[$data_index][1];
  1297. $Opus_dewpointC = $adeiValue[$data_index][2];
  1298. $Opus_dewpointF = $adeiValue[$data_index][3];
  1299. $Opus_relH_percent = $adeiValue[$data_index][4];
  1300. $Opus_relH_gramm = $adeiValue[$data_index][5];
  1301. $Opus_absPressure_hPa = $adeiValue[$data_index][6];
  1302. $Opus_relPressure_hPa = $adeiValue[$data_index][7];
  1303. $Opus_voltage = $adeiValue[$data_index][8];
  1304. $Opus_tempC_channel = $adeiChannel[$data_index][0];
  1305. $Opus_tempF_channel = $adeiChannel[$data_index][1];
  1306. $Opus_dewpointC_channel = $adeiChannel[$data_index][2];
  1307. $Opus_dewpointF_channel = $adeiChannel[$data_index][3];
  1308. $Opus_relH_percent_channel = $adeiChannel[$data_index][4];
  1309. $Opus_relH_gramm_channel = $adeiChannel[$data_index][5];
  1310. $Opus_absPressure_hPa_channel = $adeiChannel[$data_index][6];
  1311. $Opus_relPressure_hPa_channel = $adeiChannel[$data_index][7];
  1312. $Opus_voltage_channel = $adeiChannel[$data_index][8];
  1313. $location_text = "monitor spectrometer building";
  1314. $draw_x = 0;
  1315. $draw_y = 536;
  1316. placePicWithLink($draw_y, $draw_x+5, "newTemperature.png", 23, "temperature at ".$location_text, $Opus_tempC_channel);
  1317. placeTextWithLink($draw_y, $draw_x+30, sprintf('%.1F &#176;C', $Opus_tempC), 90, 4, "#000000", "temperature at ".$location_text, $Opus_tempC_channel);
  1318. placePicWithLink($draw_y+25, $draw_x+5, "newPressure.png", 23, "atmospheric pressure at ".$location_text, $Opus_absPressure_hPa_channel);
  1319. 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);
  1320. placePicWithLink($draw_y+50, $draw_x+5, "newHumidity.png", 23, "relative humidity at ".$location_text, $Opus_relH_percent_channel);
  1321. placeTextWithLink($draw_y+50, $draw_x+30, sprintf('%.1F &#037;', $Opus_relH_percent), 90, 4, "#000000", "relative humidity at ".$location_text , $Opus_relH_percent_channel);
  1322. ?>