feat: Priorisierte Alarmanzeige für "Aderbruch" (>200 MOhm) und "Erdschluss" (<100 kΩ) implementiert

- Zeigt "Aderbruch" bei aktivem kueCableBreak[slotIndex] an, wenn der Isolationswiderstand >200 MOhm beträgt
- Zeigt "Erdschluss" bei aktivem kueGroundFault[slotIndex] an, wenn der Widerstand <100 kΩ beträgt, falls kein Aderbruch vorliegt
- Abwechselnde Anzeige zwischen Alarmtext und Symbol bei Alarmauslösung
- Standardanzeige für Isolationswert bleibt bestehen, wenn kein Alarm aktiv ist
This commit is contained in:
ISA
2024-10-27 15:48:49 +01:00
parent 4c2bab92ef
commit c0bd054bd9
2 changed files with 38 additions and 10 deletions

View File

@@ -22,6 +22,8 @@ function Kue705FO({
"Schleifenwiderstand [kOhm]"
);
const [isoDisplayText, setIsoDisplayText] = useState("Aderbruch");
const [groundFaultDisplayText, setGroundFaultDisplayText] =
useState("Erdschluss");
const [loading, setLoading] = useState(false);
const [currentDisplayValue, setCurrentDisplayValue] = useState(
schleifenwiderstand || "0"
@@ -339,6 +341,26 @@ function Kue705FO({
}, [slotIndex, isolationswert]);
//-------------------------------------------------
useEffect(() => {
if (window.kueGroundFault[slotIndex] === 1) {
const intervalId = setInterval(() => {
setGroundFaultDisplayText((prevText) =>
prevText === "Erdschluss" ? (
<i
className="bi bi-exclamation-triangle"
style={{ fontSize: "24px" }}
></i>
) : (
"Erdschluss"
)
);
}, 2000); // Wechsel alle 2 Sekunden
return () => clearInterval(intervalId);
} else {
setGroundFaultDisplayText(isolationswert || ">200"); // Standardwert, wenn kein Erdschluss vorliegt
}
}, [slotIndex, isolationswert]);
return (
<div className="relative bg-gray-300 w-[116px] h-[390px] border border-gray-400 scale-110 top-3">
@@ -383,24 +405,30 @@ function Kue705FO({
<span className="text-white text-[10px]">Alarm</span>
</div>
</div>
{/* isoDisplay: Zeigt den Isolationswiderstand oder Aderbruch an */}
{/* isoDisplay: Zeigt den Isolationswiderstand, Aderbruch oder Erdschluss an */}
<div className="relative mt-[50px] mx-auto bg-black text-white w-[100px] h-[40px] flex items-center justify-center text-[18px] z-10">
<div className="text-center">
<span
className={
window.kueCableBreak[slotIndex] === 1
? "text-red-500 text-[14px]" // Rot und kleinere Schrift für Aderbruch
window.kueCableBreak[slotIndex] === 1 ||
window.kueGroundFault[slotIndex] === 1
? "text-red-500 text-[14px]" // Rot und kleinere Schrift für Alarme
: ""
}
>
{/* Aderbruch anzeigen, wenn Aderbruch vorhanden ist isoDisplayText*/}
{window.kueCableBreak[slotIndex] === 1
? isoDisplayText
: isolationswert || ">200"}
? isoDisplayText // Anzeige für Aderbruch, wenn aktiv
: window.kueGroundFault[slotIndex] === 1
? groundFaultDisplayText // Anzeige für Erdschluss, wenn aktiv und kein Aderbruch
: isolationswert || ">200"}{" "}
{/* Standardanzeige für Isolationswert */}
</span>
{window.kueCableBreak[slotIndex] !== 1 && (
<div className="text-[8px]">ISO MOhm</div>
)}
{/* Nur anzeigen, wenn kein Alarm aktiv ist */}
{window.kueCableBreak[slotIndex] !== 1 &&
window.kueGroundFault[slotIndex] !== 1 && (
<div className="text-[8px]">ISO MOhm</div>
)}
</div>
</div>

View File

@@ -29,7 +29,7 @@ var kueCableBreak = [
0, 0, 1, 1, 1, 1,
];
var kueGroundFault = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
];
var kueLimit1 = [