Align cable sizing with DIN VDE 0298-4

This commit is contained in:
Julian Appel 2026-09-27 17:01:23 +02:00
parent 598003554a
commit 5cbbd3a84a
9 changed files with 262 additions and 244 deletions

View file

@ -11,9 +11,9 @@ import {
LAYING_METHODS,
LAYING_METHOD_GROUP,
LAYING_METHOD_LABELS,
MAX_GROUPING_CIRCUITS,
PRACTICAL_MINIMUM_CROSS_SECTION_MM2,
REFERENCE_TEMPERATURE_C,
maxGroupingCircuits,
temperatureOptions,
type CableSizingAlert,
type CableSizingInput,
@ -100,6 +100,7 @@ export function CableSizingModal({
? threePhaseVoltageV
: singlePhaseVoltageV;
const group = LAYING_METHOD_GROUP[layingMethod];
const groupingMaximum = maxGroupingCircuits(layingMethod);
const availableTemperatures = temperatureOptions(layingMethod, insulation);
const input: CableSizingInput = useMemo(
@ -208,7 +209,7 @@ export function CableSizingModal({
return (
<FormModal
description="Querschnittsempfehlung nach IEC 60364-5-52 Anhang B (Belastbarkeit, Temperatur, Häufung, Spannungsfall, Schutzorgan) oder direkte Eingabe. Die Empfehlung vor der Übernahme fachlich prüfen; nationale Tabellen (DIN VDE 0298-4) können abweichen."
description="Querschnittsempfehlung mit Strombelastbarkeit, Temperatur- und Häufungsfaktoren nach DIN VDE 0298-4:2023-06 einschließlich Berichtigung 1:2023-10. Spannungsfall und Schutzorgan werden ergänzend geprüft. Die Empfehlung vor der Übernahme fachlich prüfen."
isSaving={isSaving}
onClose={onClose}
onSubmit={handleSubmit}
@ -234,6 +235,11 @@ export function CableSizingModal({
type="number"
value={lengthM}
/>
{lengthM === 0 ? (
<div className="form-text text-warning">
Bei 0 m wird kein Spannungsfall angesetzt.
</div>
) : null}
</div>
<div className="col-12 col-md-4">
<label className="form-label" htmlFor="cable-sizing-phase">
@ -279,6 +285,7 @@ export function CableSizingModal({
onChange={(event) => {
const method = event.target.value as LayingMethod;
setLayingMethod(method);
setGroupingCircuits((current) => Math.min(current, maxGroupingCircuits(method)));
applyReferenceTemperature(method, insulation);
resetResult();
}}
@ -362,7 +369,7 @@ export function CableSizingModal({
<input
className="form-control"
id="cable-sizing-grouping"
max={MAX_GROUPING_CIRCUITS}
max={groupingMaximum}
min={1}
onChange={(event) => {
setGroupingCircuits(Math.max(1, Math.round(Number(event.target.value) || 1)));
@ -373,7 +380,10 @@ export function CableSizingModal({
value={groupingCircuits}
/>
<div className="form-text">
Anzahl gemeinsam verlegter Stromkreise, einschließlich dieses.
Anzahl gemeinsam verlegter Stromkreise, einschließlich dieses
{layingMethod === "E"
? "; ohne Angaben zur Kabelpritsche ist nur 1 zulässig."
: `; für diese Verlegeart sind bis ${groupingMaximum} tabelliert.`}
</div>
</div>
{phase === 3 ? (