forked from jappel/leistungsbilanz-ts
Align cable sizing with DIN VDE 0298-4
This commit is contained in:
parent
598003554a
commit
5cbbd3a84a
9 changed files with 262 additions and 244 deletions
|
|
@ -2,16 +2,14 @@
|
|||
// the module is an optional calculator attached to the circuit list and never
|
||||
// writes project data itself (see docs/cable-sizing-module.md).
|
||||
//
|
||||
// Reference data: IEC 60364-5-52:2009, Annex B (tables B.52.2 to B.52.5,
|
||||
// B.52.10 to B.52.19). Every value was cross-checked against publicly
|
||||
// available reproductions of these tables; where sources disagreed the lower,
|
||||
// i.e. safer, value is used. The table-by-table verification record is in
|
||||
// docs/cable-sizing-module.md. National tables (DIN VDE 0298-4) may differ in
|
||||
// individual values and must be checked by the planner against the norm text.
|
||||
// Reference data: DIN VDE 0298-4 (VDE 0298-4):2023-06 together with
|
||||
// Berichtigung 1:2023-10. The table-by-table scope and the separate sources
|
||||
// required for voltage drop and protection coordination are documented in
|
||||
// docs/cable-sizing-module.md.
|
||||
|
||||
// -- Reference installation methods (IEC 60364-5-52, Table B.52.1) ----------
|
||||
// -- Reference installation methods (DIN VDE 0298-4, Table 2) ---------------
|
||||
|
||||
export const LAYING_METHODS = ["A1", "A2", "B1", "B2", "C", "D1", "D2", "E"] as const;
|
||||
export const LAYING_METHODS = ["A1", "A2", "B1", "B2", "C", "D", "E"] as const;
|
||||
export type LayingMethod = (typeof LAYING_METHODS)[number];
|
||||
|
||||
export const LAYING_METHOD_GROUP: Record<LayingMethod, "air" | "ground"> = {
|
||||
|
|
@ -21,8 +19,7 @@ export const LAYING_METHOD_GROUP: Record<LayingMethod, "air" | "ground"> = {
|
|||
B2: "air",
|
||||
C: "air",
|
||||
E: "air",
|
||||
D1: "ground",
|
||||
D2: "ground",
|
||||
D: "ground",
|
||||
};
|
||||
|
||||
export const LAYING_METHOD_LABELS: Record<LayingMethod, string> = {
|
||||
|
|
@ -31,8 +28,7 @@ export const LAYING_METHOD_LABELS: Record<LayingMethod, string> = {
|
|||
B1: "B1 – Einzeladern im Rohr auf oder in der Wand",
|
||||
B2: "B2 – Mehradrige Leitung im Rohr auf oder in der Wand",
|
||||
C: "C – Mehradrige Leitung direkt auf oder in der Wand",
|
||||
D1: "D1 – Leitung im Rohr oder Kabelschutzrohr im Erdreich",
|
||||
D2: "D2 – Kabel direkt im Erdreich",
|
||||
D: "D – Mehradriges Kabel im Rohr oder Kanal im Erdreich",
|
||||
E: "E – Mehradrige Leitung frei in Luft",
|
||||
};
|
||||
|
||||
|
|
@ -49,7 +45,7 @@ export const INSULATION_MATERIAL_LABELS: Record<InsulationMaterial, string> = {
|
|||
export const CONDUCTOR_MATERIALS = ["copper", "aluminum"] as const;
|
||||
export type ConductorMaterial = (typeof CONDUCTOR_MATERIALS)[number];
|
||||
|
||||
// -- Harmonic neutral loading (IEC 60364-5-52, Annex E, three-phase only) ---
|
||||
// -- Harmonic neutral loading (DIN VDE 0298-4, Annex B, three-phase only) ---
|
||||
|
||||
export const HARMONIC_NEUTRAL_LOAD_OPTIONS = [
|
||||
"none",
|
||||
|
|
@ -61,7 +57,7 @@ export type HarmonicNeutralLoad = (typeof HARMONIC_NEUTRAL_LOAD_OPTIONS)[number]
|
|||
export const HARMONIC_NEUTRAL_LOAD_LABELS: Record<HarmonicNeutralLoad, string> = {
|
||||
none: "Keine nennenswerte 3. Harmonische (< 15 %) – Standardfall",
|
||||
"15to33Percent": "3. Harmonische 15–33 % – Reduktionsfaktor 0,86",
|
||||
over33Percent: "3. Harmonische > 33 % – Neutralleiter wie Außenleiter dimensionieren",
|
||||
over33Percent: "3. Harmonische > 33 % – ohne Neutralleiterstrom keine Empfehlung",
|
||||
};
|
||||
|
||||
export const HARMONIC_REDUCTION_FACTOR = 0.86;
|
||||
|
|
@ -85,14 +81,13 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
> = {
|
||||
pvc: {
|
||||
copper: {
|
||||
// B.52.2 / B.52.4; E: B.52.10 multi-core. A1 2L 240 mm²: sources 320/321 → 320.
|
||||
// E 3L 70/120 mm²: sources 196/198 and 276/278 → 196 and 276.
|
||||
// DIN VDE 0298-4, tables 3 and 4.
|
||||
A1: {
|
||||
2: [14.5, 19.5, 26, 34, 46, 61, 80, 99, 119, 151, 182, 210, 240, 273, 320],
|
||||
2: [15.5, 19.5, 26, 34, 46, 61, 80, 99, 119, 151, 182, 210, 240, 273, 321],
|
||||
3: [13.5, 18, 24, 31, 42, 56, 73, 89, 108, 136, 164, 188, 216, 245, 286],
|
||||
},
|
||||
A2: {
|
||||
2: [14, 18.5, 25, 32, 43, 57, 75, 92, 110, 139, 167, 192, 219, 248, 291],
|
||||
2: [15.5, 18.5, 25, 32, 43, 57, 75, 92, 110, 139, 167, 192, 219, 248, 291],
|
||||
3: [13, 17.5, 23, 29, 39, 52, 68, 83, 99, 125, 150, 172, 196, 223, 261],
|
||||
},
|
||||
B1: {
|
||||
|
|
@ -107,22 +102,18 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
2: [19.5, 27, 36, 46, 63, 85, 112, 138, 168, 213, 258, 299, 344, 392, 461],
|
||||
3: [17.5, 24, 32, 41, 57, 76, 96, 119, 144, 184, 223, 259, 299, 341, 403],
|
||||
},
|
||||
D1: {
|
||||
D: {
|
||||
2: [22, 29, 37, 46, 60, 78, 99, 119, 140, 173, 204, 231, 261, 292, 336],
|
||||
3: [18, 24, 30, 38, 50, 64, 82, 98, 116, 143, 169, 192, 217, 243, 280],
|
||||
},
|
||||
D2: {
|
||||
2: [22, 28, 38, 48, 64, 83, 110, 132, 156, 192, 230, 261, 293, 331, 382],
|
||||
3: [19, 24, 33, 41, 54, 70, 92, 110, 130, 162, 193, 220, 246, 278, 320],
|
||||
},
|
||||
E: {
|
||||
2: [22, 30, 40, 51, 70, 94, 119, 148, 180, 232, 282, 328, 379, 434, 514],
|
||||
3: [18.5, 25, 34, 43, 60, 80, 101, 126, 153, 196, 238, 276, 319, 364, 430],
|
||||
},
|
||||
},
|
||||
aluminum: {
|
||||
// B.52.2 / B.52.4 aluminium; E: B.52.11. No values below 2.5 mm²
|
||||
// (D2 below 16 mm²).
|
||||
// DIN VDE 0298-4 aluminium values; the normalization below removes all
|
||||
// entries below the first tabulated aluminium size of 25 mm².
|
||||
A1: {
|
||||
2: [n, 15, 20, 26, 36, 48, 63, 77, 93, 118, 142, 164, 189, 215, 252],
|
||||
3: [n, 14, 18.5, 24, 32, 43, 57, 70, 84, 107, 129, 149, 170, 194, 227],
|
||||
|
|
@ -143,14 +134,10 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
2: [n, 21, 28, 36, 49, 66, 83, 103, 125, 160, 195, 226, 261, 298, 352],
|
||||
3: [n, 18.5, 25, 32, 44, 59, 73, 90, 110, 140, 170, 197, 227, 259, 305],
|
||||
},
|
||||
D1: {
|
||||
D: {
|
||||
2: [n, 22, 29, 36, 47, 61, 77, 93, 109, 135, 159, 180, 204, 228, 262],
|
||||
3: [n, 18.5, 24, 30, 39, 50, 64, 77, 91, 112, 132, 150, 169, 190, 218],
|
||||
},
|
||||
D2: {
|
||||
2: [n, n, n, n, n, 63, 82, 98, 117, 145, 173, 200, 224, 255, 298],
|
||||
3: [n, n, n, n, n, 53, 69, 83, 99, 122, 148, 169, 189, 214, 250],
|
||||
},
|
||||
E: {
|
||||
2: [n, 23, 31, 39, 54, 73, 89, 111, 135, 173, 210, 244, 282, 322, 380],
|
||||
3: [n, 19.5, 26, 33, 46, 61, 78, 96, 117, 150, 183, 212, 245, 280, 330],
|
||||
|
|
@ -180,14 +167,10 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
2: [24, 33, 45, 58, 80, 107, 138, 171, 209, 269, 328, 382, 441, 506, 599],
|
||||
3: [22, 30, 40, 52, 71, 96, 119, 147, 179, 229, 278, 322, 371, 424, 500],
|
||||
},
|
||||
D1: {
|
||||
D: {
|
||||
2: [25, 33, 43, 53, 71, 91, 116, 139, 164, 203, 239, 271, 306, 343, 395],
|
||||
3: [21, 28, 36, 44, 58, 75, 96, 115, 135, 167, 197, 223, 251, 281, 324],
|
||||
},
|
||||
D2: {
|
||||
2: [27, 35, 46, 58, 77, 100, 129, 155, 183, 225, 270, 306, 343, 387, 448],
|
||||
3: [23, 30, 39, 49, 65, 84, 107, 129, 153, 188, 226, 257, 287, 324, 375],
|
||||
},
|
||||
E: {
|
||||
2: [26, 36, 49, 63, 86, 115, 149, 185, 225, 289, 352, 410, 473, 542, 641],
|
||||
3: [23, 32, 42, 54, 75, 100, 127, 158, 192, 246, 298, 346, 399, 456, 538],
|
||||
|
|
@ -215,14 +198,10 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
2: [n, 26, 35, 45, 62, 84, 101, 126, 154, 198, 241, 280, 324, 371, 439],
|
||||
3: [n, 24, 32, 41, 57, 76, 90, 112, 136, 174, 211, 245, 283, 323, 382],
|
||||
},
|
||||
D1: {
|
||||
D: {
|
||||
2: [n, 26, 33, 42, 55, 71, 90, 108, 128, 158, 186, 211, 238, 267, 307],
|
||||
3: [n, 22, 28, 35, 46, 59, 75, 90, 106, 130, 154, 174, 197, 220, 253],
|
||||
},
|
||||
D2: {
|
||||
2: [n, n, n, n, n, 76, 98, 117, 139, 170, 204, 233, 261, 296, 343],
|
||||
3: [n, n, n, n, n, 64, 82, 98, 117, 144, 172, 197, 220, 250, 290],
|
||||
},
|
||||
E: {
|
||||
2: [n, 28, 38, 49, 67, 91, 108, 135, 164, 211, 257, 300, 346, 397, 470],
|
||||
3: [n, 24, 32, 42, 58, 77, 97, 120, 146, 187, 227, 263, 304, 347, 409],
|
||||
|
|
@ -231,9 +210,25 @@ export const CURRENT_CAPACITY_A: Record<
|
|||
},
|
||||
};
|
||||
|
||||
// DIN VDE 0298-4 only supplies aluminium current-carrying capacities from
|
||||
// 25 mm² onward. Smaller values from the former IEC data set must therefore
|
||||
// never participate in a recommendation.
|
||||
for (const insulation of INSULATION_MATERIALS) {
|
||||
for (const method of LAYING_METHODS) {
|
||||
for (const coreCount of [2, 3] as const) {
|
||||
const row = CURRENT_CAPACITY_A[insulation].aluminum[method][coreCount] as (number | null)[];
|
||||
CROSS_SECTIONS_MM2.forEach((crossSection, index) => {
|
||||
if (crossSection < 25) {
|
||||
row[index] = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -- Correction factors ------------------------------------------------------
|
||||
|
||||
/** B.52.14 (air, reference 30 °C) and B.52.15 (ground, reference 20 °C). */
|
||||
/** DIN VDE 0298-4 tables 17 (air) and 20 (ground). */
|
||||
export const TEMPERATURE_FACTORS: Record<
|
||||
"air" | "ground",
|
||||
Record<InsulationMaterial, Record<number, number>>
|
||||
|
|
@ -260,26 +255,32 @@ export const REFERENCE_TEMPERATURE_C: Record<"air" | "ground", number> = {
|
|||
};
|
||||
|
||||
/**
|
||||
* Grouping reduction factors for touching circuits/cables:
|
||||
* air (A1–C, E): B.52.17 item 1 "bunched in air, on a surface, embedded or
|
||||
* enclosed" – the most restrictive arrangement, also used for E (single
|
||||
* layers on trays would allow higher factors);
|
||||
* D1: B.52.19 A (multi-core cables in touching ducts);
|
||||
* D2: B.52.18 (cables direct in ground, touching).
|
||||
* Grouping reduction factors according to the corrected references in
|
||||
* DIN VDE 0298-4 Berichtigung 1:2023-10:
|
||||
* A1–C use table 22, row 1 (bundled/touching), D uses table 26 for touching
|
||||
* conduits/ducts in earth. Method E needs details about support, spacing and
|
||||
* number of trays from table 23, which the current input model does not carry;
|
||||
* it is therefore supported only for one circuit.
|
||||
*/
|
||||
export const GROUPING_FACTORS: Record<"air" | "D1" | "D2", Record<number, number>> = {
|
||||
air: { 1: 1.0, 2: 0.8, 3: 0.7, 4: 0.65, 5: 0.6, 6: 0.57, 7: 0.54, 8: 0.52, 9: 0.5, 12: 0.45, 16: 0.41, 20: 0.38 },
|
||||
D1: {
|
||||
1: 1.0, 2: 0.85, 3: 0.75, 4: 0.7, 5: 0.65, 6: 0.6, 7: 0.57, 8: 0.54, 9: 0.52, 10: 0.49,
|
||||
11: 0.47, 12: 0.45, 13: 0.44, 14: 0.42, 15: 0.41, 16: 0.39, 17: 0.38, 18: 0.37, 19: 0.35, 20: 0.34,
|
||||
export const GROUPING_FACTORS: Record<"A1_TO_C" | "D" | "E", Record<number, number>> = {
|
||||
A1_TO_C: {
|
||||
1: 1.0, 2: 0.8, 3: 0.7, 4: 0.65, 5: 0.6, 6: 0.57, 7: 0.54, 8: 0.52,
|
||||
9: 0.5, 10: 0.48, 12: 0.45, 14: 0.43, 16: 0.41, 18: 0.39, 20: 0.38,
|
||||
},
|
||||
D2: { 1: 1.0, 2: 0.75, 3: 0.65, 4: 0.6, 5: 0.55, 6: 0.5, 7: 0.45, 8: 0.43, 9: 0.41, 12: 0.36, 16: 0.32, 20: 0.29 },
|
||||
D: { 1: 1.0, 2: 0.85, 3: 0.75, 4: 0.7, 5: 0.65, 6: 0.6 },
|
||||
E: { 1: 1.0 },
|
||||
};
|
||||
|
||||
export const MAX_GROUPING_CIRCUITS = 20;
|
||||
|
||||
function groupingTableFor(method: LayingMethod) {
|
||||
return method === "D1" ? GROUPING_FACTORS.D1 : method === "D2" ? GROUPING_FACTORS.D2 : GROUPING_FACTORS.air;
|
||||
return method === "D"
|
||||
? GROUPING_FACTORS.D
|
||||
: method === "E"
|
||||
? GROUPING_FACTORS.E
|
||||
: GROUPING_FACTORS.A1_TO_C;
|
||||
}
|
||||
|
||||
export function maxGroupingCircuits(method: LayingMethod): number {
|
||||
return Math.max(...Object.keys(groupingTableFor(method)).map(Number));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -373,7 +374,7 @@ export interface CableSizingInput {
|
|||
layingMethod: LayingMethod;
|
||||
conductorMaterial: ConductorMaterial;
|
||||
insulation: InsulationMaterial;
|
||||
/** Ambient air temperature, or ground temperature for D1/D2. */
|
||||
/** Ambient air temperature, or ground temperature for D. */
|
||||
ambientTemperatureC: number;
|
||||
/** Number of grouped circuits or multi-core cables, including this one. */
|
||||
groupingCircuits: number;
|
||||
|
|
@ -405,7 +406,7 @@ export interface ProtectionCoordinationResult {
|
|||
coordinated: boolean;
|
||||
}
|
||||
|
||||
export type UnsupportedReason = "temperature" | "grouping";
|
||||
export type UnsupportedReason = "temperature" | "grouping" | "harmonics";
|
||||
|
||||
export interface CableSizingResult {
|
||||
/** false: the inputs are outside the tabulated range – no numeric result. */
|
||||
|
|
@ -454,13 +455,23 @@ export function calculateCableSizing(input: CableSizingInput): CableSizingResult
|
|||
input.ambientTemperatureC
|
||||
);
|
||||
const grouping =
|
||||
input.groupingCircuits <= MAX_GROUPING_CIRCUITS
|
||||
input.groupingCircuits <= maxGroupingCircuits(input.layingMethod)
|
||||
? lookupConservative(groupingTableFor(input.layingMethod), Math.max(1, input.groupingCircuits))
|
||||
: null;
|
||||
const harmonicsSupported = !(
|
||||
input.phase === 3 && input.harmonicNeutralLoad === "over33Percent"
|
||||
);
|
||||
const unsupportedReason: UnsupportedReason | null = !temperature
|
||||
? "temperature"
|
||||
: !grouping
|
||||
? "grouping"
|
||||
: !harmonicsSupported
|
||||
? "harmonics"
|
||||
: null;
|
||||
|
||||
const empty: CableSizingResult = {
|
||||
supported: false,
|
||||
unsupportedReason: !temperature ? "temperature" : "grouping",
|
||||
unsupportedReason,
|
||||
operatingCurrentA: ib,
|
||||
designCurrentA,
|
||||
temperatureUsedC: temperature?.key ?? null,
|
||||
|
|
@ -477,7 +488,7 @@ export function calculateCableSizing(input: CableSizingInput): CableSizingResult
|
|||
rows: [],
|
||||
protectionCoordination: null,
|
||||
};
|
||||
if (!temperature || !grouping) {
|
||||
if (unsupportedReason || !temperature || !grouping) {
|
||||
return empty;
|
||||
}
|
||||
|
||||
|
|
@ -586,12 +597,17 @@ export function buildCableSizingAlerts(input: CableSizingInput, result: CableSiz
|
|||
const group = LAYING_METHOD_GROUP[input.layingMethod];
|
||||
|
||||
if (!result.supported) {
|
||||
const groupingMaximum = maxGroupingCircuits(input.layingMethod);
|
||||
alerts.push({
|
||||
kind: "critical",
|
||||
text:
|
||||
result.unsupportedReason === "temperature"
|
||||
? `${group === "air" ? "Umgebungstemperatur" : "Bodentemperatur"} ${input.ambientTemperatureC} °C liegt außerhalb der Tabelle für ${input.insulation === "pvc" ? "PVC" : "VPE"} – keine Berechnung möglich.`
|
||||
: `Häufung mit ${input.groupingCircuits} Stromkreisen liegt außerhalb der Tabelle (max. ${MAX_GROUPING_CIRCUITS}) – keine Berechnung möglich.`,
|
||||
: result.unsupportedReason === "harmonics"
|
||||
? "Bei mehr als 33 % dritter Harmonischer muss nach dem Neutralleiterstrom bemessen werden. Ohne diesen Wert wird keine Querschnittsempfehlung ausgegeben."
|
||||
: input.layingMethod === "E"
|
||||
? "Für Verlegeart E benötigt die Norm bei Häufung Angaben zu Trägerart, Abstand und Anzahl der Kabelpritschen. Ohne diese Angaben ist nur ein einzelner Stromkreis berechenbar."
|
||||
: `Häufung mit ${input.groupingCircuits} Stromkreisen liegt für Verlegeart ${input.layingMethod} außerhalb der verwendeten Tabelle (max. ${groupingMaximum}) – keine Berechnung möglich.`,
|
||||
});
|
||||
return alerts;
|
||||
}
|
||||
|
|
@ -637,10 +653,10 @@ export function buildCableSizingAlerts(input: CableSizingInput, result: CableSiz
|
|||
text: "Reduktionsfaktor 0,86 wegen 15–33 % 3. Harmonischer im Neutralleiter angewendet.",
|
||||
});
|
||||
}
|
||||
if (input.phase === 3 && input.harmonicNeutralLoad === "over33Percent") {
|
||||
if (input.lengthM === 0) {
|
||||
alerts.push({
|
||||
kind: "warn",
|
||||
text: "3. Harmonische > 33 %: Der Neutralleiter ist nach dem Neutralleiterstrom zu bemessen – hier nicht berücksichtigt.",
|
||||
kind: "info",
|
||||
text: "Leitungslänge 0 m: Für diese Berechnung wird kein Spannungsfall angesetzt.",
|
||||
});
|
||||
}
|
||||
if (group === "ground") {
|
||||
|
|
|
|||
|
|
@ -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 ? (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue