SDS_status_main.php 73 KB

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