Compare commits
7 commits
995addbabc
...
bd40c4f8df
Author | SHA1 | Date | |
---|---|---|---|
|
bd40c4f8df | ||
|
d5c42a4899 | ||
|
637f8748a8 | ||
|
1e21222705 | ||
|
7a56b0fe70 | ||
|
f4339e54ef | ||
|
f2c0d67eed |
|
@ -11,4 +11,8 @@ So far, the connectors seem to match up with the ones shown in the SEM schematic
|
||||||
|
|
||||||
There is also a Z80 based system + an EEPROM on the board.
|
There is also a Z80 based system + an EEPROM on the board.
|
||||||
|
|
||||||
|
## Front Side
|
||||||

|

|
||||||
|
|
||||||
|
## Back Side
|
||||||
|

|
||||||
|
|
BIN
modules/ph00524/ph00524-2-back.jpg
(Stored with Git LFS)
Normal file
BIN
modules/ph00524/ph00524-2-back.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -52,15 +52,42 @@ td > span {
|
||||||
height: 10em;
|
height: 10em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.graph-container {
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.main-grid {
|
.main-grid {
|
||||||
margin: 2em;
|
margin-top: 2em;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
max-width: 160em;
|
||||||
clear: both;
|
clear: both;
|
||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(50em, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(54em, 1fr));
|
||||||
column-gap: 2em;
|
column-gap: 2em;
|
||||||
row-gap: 2em;
|
row-gap: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.has-hidden .hidden-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-hidden:hover .hidden-text {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
@media only screen and (max-width: 700px) {
|
||||||
|
body {
|
||||||
|
font-size: 6px;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="logo"><img src="/favicon.png" /></div>
|
<div class="logo"><img src="/favicon.png" /></div>
|
||||||
|
@ -95,13 +122,13 @@ td > span {
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th rowspan="2">Pirani Gauge</th>
|
<th>Pirani Pressure</th>
|
||||||
<th>Voltage</th>
|
<td class="has-hidden">
|
||||||
<td id="volts">{{ .Pirani.Volts }}</td>
|
<div id="mbar">{{ .Pirani.Mbar }}</div>
|
||||||
</tr>
|
<div class="hidden-text" style="color: #606060;">
|
||||||
<tr>
|
<span>Voltage: </span><span id="volts">{{ .Pirani.Volts }}</span>
|
||||||
<th>Pressure</th>
|
</div>
|
||||||
<td id="mbar">{{ .Pirani.Mbar }}</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -136,9 +163,9 @@ td > span {
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>
|
<div class="graph-container">
|
||||||
<canvas id="graph" width="1024" height="512" style="max-width: 100%;"></canvas>
|
<canvas id="graph" width="1024" height="512" style="max-width: 100%;"></canvas>
|
||||||
</p>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p style="font-style: italic; font-size: 12px; margin-top: 5em;">
|
<p style="font-style: italic; font-size: 12px; margin-top: 5em;">
|
||||||
|
@ -170,7 +197,7 @@ let historicalDraw = (w, h) => {
|
||||||
// coordinate calculation.
|
// coordinate calculation.
|
||||||
|
|
||||||
canvas.clearRect(0, 0, w, h);
|
canvas.clearRect(0, 0, w, h);
|
||||||
canvas.fillStyle = "#f0f0f0";
|
canvas.fillStyle = "#e8e8e8";
|
||||||
canvas.fillRect(0, 0, w, h);
|
canvas.fillRect(0, 0, w, h);
|
||||||
|
|
||||||
// Margins of the main graph window.
|
// Margins of the main graph window.
|
||||||
|
@ -297,6 +324,14 @@ window.addEventListener("load", (_) => {
|
||||||
let rpoff = document.querySelector("#rpoff");
|
let rpoff = document.querySelector("#rpoff");
|
||||||
canvas = document.querySelector("#graph").getContext("2d");
|
canvas = document.querySelector("#graph").getContext("2d");
|
||||||
|
|
||||||
|
let colors = {
|
||||||
|
default: "background-color: #e8e8e8",
|
||||||
|
highlightNeutral: "background-color: #8282ff",
|
||||||
|
highlightCaution: "background-color: #ff941a",
|
||||||
|
highlightFault: "background-color: #f06060",
|
||||||
|
highlightGood: "background-color: #60f060",
|
||||||
|
};
|
||||||
|
|
||||||
// TODO(q3k): unhardcode this.
|
// TODO(q3k): unhardcode this.
|
||||||
historicalDraw(1024, 512);
|
historicalDraw(1024, 512);
|
||||||
|
|
||||||
|
@ -318,7 +353,7 @@ window.addEventListener("load", (_) => {
|
||||||
connected = true;
|
connected = true;
|
||||||
console.log("Socket connected!");
|
console.log("Socket connected!");
|
||||||
status.innerHTML = "Online";
|
status.innerHTML = "Online";
|
||||||
status.style = "background-color: #60f060;";
|
status.style = colors.default;
|
||||||
});
|
});
|
||||||
socket.addEventListener("message", (event) => {
|
socket.addEventListener("message", (event) => {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
|
@ -326,47 +361,47 @@ window.addEventListener("load", (_) => {
|
||||||
mbar.innerHTML = data.Pirani.Mbar;
|
mbar.innerHTML = data.Pirani.Mbar;
|
||||||
if (data.Safety.Failsafe) {
|
if (data.Safety.Failsafe) {
|
||||||
failsafe.innerHTML = "ON";
|
failsafe.innerHTML = "ON";
|
||||||
failsafe.style = "background-color: #f06060";
|
failsafe.style = colors.highlightFault;
|
||||||
} else {
|
} else {
|
||||||
failsafe.innerHTML = "OFF";
|
failsafe.innerHTML = "OFF";
|
||||||
failsafe.style = "background-color: #60f060";
|
failsafe.style = colors.default;
|
||||||
}
|
}
|
||||||
if (data.Safety.HighPressure) {
|
if (data.Safety.HighPressure) {
|
||||||
highpressure.innerHTML = "ON";
|
highpressure.innerHTML = "ON";
|
||||||
highpressure.style = "background-color: #f06060";
|
highpressure.style = colors.default;
|
||||||
} else {
|
} else {
|
||||||
highpressure.innerHTML = "OFF";
|
highpressure.innerHTML = "OFF";
|
||||||
highpressure.style = "background-color: #60f060";
|
highpressure.style = colors.default;
|
||||||
}
|
}
|
||||||
if (data.Pumps.RPOn) {
|
if (data.Pumps.RPOn) {
|
||||||
rp.innerHTML = "ON";
|
rp.innerHTML = "ON";
|
||||||
rp.style = "background-color: #60f060";
|
rp.style = colors.default;
|
||||||
} else {
|
} else {
|
||||||
rp.innerHTML = "OFF";
|
rp.innerHTML = "OFF";
|
||||||
rp.style = "background-color: #f06060";
|
rp.style = colors.highlightNeutral;
|
||||||
}
|
}
|
||||||
if (data.Pumps.DPOn) {
|
if (data.Pumps.DPOn) {
|
||||||
dp.innerHTML = "ON";
|
dp.innerHTML = "ON";
|
||||||
dp.style = "background-color: #60f060";
|
dp.style = colors.highlightCaution;
|
||||||
} else {
|
} else {
|
||||||
dp.innerHTML = "OFF";
|
dp.innerHTML = "OFF";
|
||||||
dp.style = "background-color: #f06060";
|
dp.style = colors.default;
|
||||||
}
|
}
|
||||||
|
|
||||||
let t = [];
|
let t = [];
|
||||||
if (data.Feedback.RoughReached) {
|
if (data.Feedback.RoughReached) {
|
||||||
trough.innerHTML = "OK";
|
trough.innerHTML = "OK";
|
||||||
trough.style = "background-color: #60f060";
|
trough.style = colors.highlightGood;
|
||||||
} else {
|
} else {
|
||||||
trough.innerHTML = "NOK";
|
trough.innerHTML = "NOK";
|
||||||
trough.style = "background-color: #f06060";
|
trough.style = colors.default;
|
||||||
}
|
}
|
||||||
if (data.Feedback.HighReached) {
|
if (data.Feedback.HighReached) {
|
||||||
thigh.innerHTML = "OK";
|
thigh.innerHTML = "OK";
|
||||||
thigh.style = "background-color: #60f060";
|
thigh.style = colors.highlightGood;
|
||||||
} else {
|
} else {
|
||||||
thigh.innerHTML = "NOK";
|
thigh.innerHTML = "NOK";
|
||||||
thigh.style = "background-color: #f06060";
|
thigh.style = colors.default;
|
||||||
}
|
}
|
||||||
load.innerHTML = data.LoopLoad.toString() + "%";
|
load.innerHTML = data.LoopLoad.toString() + "%";
|
||||||
historicalPush(data.Pirani.MbarFloat);
|
historicalPush(data.Pirani.MbarFloat);
|
||||||
|
@ -374,7 +409,16 @@ window.addEventListener("load", (_) => {
|
||||||
});
|
});
|
||||||
socket.addEventListener("close", (event) => {
|
socket.addEventListener("close", (event) => {
|
||||||
status.innerHTML = "Offline";
|
status.innerHTML = "Offline";
|
||||||
status.style = "background-color: #f06060;";
|
status.style = colors.highlightFault;
|
||||||
|
|
||||||
|
// Indicate all process values as unknown
|
||||||
|
|
||||||
|
[failsafe, highpressure, rp, dp, trough, thigh, volts, mbar].forEach((el) => {
|
||||||
|
if (!el.innerHTML.includes("??")) {
|
||||||
|
el.innerHTML += "??";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (connected) {
|
if (connected) {
|
||||||
console.log("Socket dead, reconnecting...");
|
console.log("Socket dead, reconnecting...");
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ var (
|
||||||
flagFake bool
|
flagFake bool
|
||||||
flagListenHTTP string
|
flagListenHTTP string
|
||||||
flagPressureThresholdRough = ScientificNotationValue(1e-1)
|
flagPressureThresholdRough = ScientificNotationValue(1e-1)
|
||||||
flagPressureThresholdRoughHysteresis = ScientificNotationValue(2e-2)
|
flagPressureThresholdRoughHysteresis = ScientificNotationValue(3e-2)
|
||||||
flagPressureThresholdHigh = ScientificNotationValue(1e-4)
|
flagPressureThresholdHigh = ScientificNotationValue(1e-4)
|
||||||
flagPressureThresholdHighHysteresis = ScientificNotationValue(2e-5)
|
flagPressureThresholdHighHysteresis = ScientificNotationValue(2e-5)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue