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
|
|
@ -1,159 +1,109 @@
|
|||
# Leitungsberechnung (Cable-Sizing-Modul)
|
||||
# Leitungsberechnung
|
||||
|
||||
Optionales, abgegrenztes Rechenmodul für die Querschnittsempfehlung eines
|
||||
Stromkreises. Es wurde als eigenständiges Modul vereinbart, das an die
|
||||
Stromkreisliste angedockt ist. Es **schreibt keine Projektdaten selbst**: Ein
|
||||
Ergebnis wird erst durch ausdrückliches „Übernehmen“ über den bestehenden
|
||||
Befehl `circuit.update` in den Stromkreis geschrieben. Revisionen und
|
||||
Undo/Redo bleiben damit unverändert gültig.
|
||||
Das optionale Modul gibt für einen einzelnen Stromkreis eine prüfbare
|
||||
Querschnittsempfehlung aus. Es schreibt selbst keine Projektdaten. Erst die
|
||||
ausdrückliche Aktion **Übernehmen** aktualisiert `cableCrossSection`,
|
||||
`cableType` und `cableLength` über den vorhandenen Befehl `circuit.update`.
|
||||
Revisionen sowie Undo/Redo bleiben dadurch erhalten.
|
||||
|
||||
Die vollständige, automatische Bemessung aller Stromkreise (siehe
|
||||
`docs/spec/06-future-sizing-and-calculations.md`) ist weiterhin **nicht**
|
||||
Teil dieses Moduls.
|
||||
Eine automatische Bemessung aller Stromkreise ist weiterhin nicht Bestandteil
|
||||
des Moduls.
|
||||
|
||||
## Aufbau und Andockpunkte
|
||||
## Aufbau
|
||||
|
||||
```
|
||||
src/cable-sizing/domain/cable-sizing-calculation.ts reine Berechnung + Tabellen
|
||||
src/cable-sizing/domain/cable-sizing-contracts.ts Zod-Schema der API
|
||||
```text
|
||||
src/cable-sizing/domain/cable-sizing-calculation.ts Berechnung und Tabellen
|
||||
src/cable-sizing/domain/cable-sizing-contracts.ts API-Validierung
|
||||
src/server/controllers/cable-sizing.controller.ts zustandslose Endpunkte
|
||||
src/server/routes/cable-sizing.routes.ts Router unter /api/cable-sizing
|
||||
src/server/routes/cable-sizing.routes.ts Router
|
||||
src/frontend/components/cable-sizing-api.ts Fetch-Client
|
||||
src/frontend/components/cable-sizing-defaults.ts Vorbelegung aus dem Stromkreis
|
||||
src/frontend/components/cable-sizing-defaults.ts Vorbelegung
|
||||
src/frontend/components/cable-sizing-modal.tsx Dialog
|
||||
tests/cable-sizing-calculation.test.ts Tabellen, Rechnung, Vorbelegung
|
||||
tests/cable-sizing-calculation.test.ts Tabellen und Grenzfälle
|
||||
```
|
||||
|
||||
Das Domänenmodul importiert nichts aus `db/`, `server/` oder `frontend/`.
|
||||
Außerhalb dieser Dateien gibt es genau zwei Andockpunkte:
|
||||
Das Domänenmodul hängt weder von Datenbank, Server noch React ab. Die API ist
|
||||
zustandslos. Im Stromkreis-Editor öffnet ein Rechner-Symbol den Dialog; die
|
||||
Kabelzellen behalten ihr übliches Spreadsheet-Verhalten.
|
||||
|
||||
1. `src/server/index.ts`: `app.use("/api/cable-sizing", cableSizingRouter)`.
|
||||
2. `src/frontend/components/circuit-tree-editor.tsx`: Zustand für den
|
||||
geöffneten Dialog, ein Button **Leitungsberechnung** (Rechner-Icon) in der
|
||||
Aktionsspalte jeder Stromkreiszeile, der Dialog selbst und
|
||||
`handleApplyCableSizing`, das über `updateCircuitById` den regulären
|
||||
`circuit.update`-Befehl ausführt.
|
||||
## Eingaben
|
||||
|
||||
Der Aufruf liegt bewusst **nicht** auf einer Tabellenzelle: Klick, Doppelklick,
|
||||
Enter, F2 und Tippen in den Kabelspalten verhalten sich wie in jeder anderen
|
||||
Zelle (Spreadsheet-Regel in `AGENTS.md`). Es gibt keine eigene Datenbanktabelle
|
||||
und keine Migration.
|
||||
Aus dem Stromkreis werden Leistung, Phasen, Spannung, leistungsgewichtetes
|
||||
cos φ, Leitungslänge und ein vorhandenes Überstromschutzorgan vorbelegt. Der
|
||||
Planer wählt Verlegeart, Isolierstoff, Leitermaterial, Temperatur, Häufung,
|
||||
zulässigen Spannungsfall und bei Drehstrom den Anteil der dritten Harmonischen.
|
||||
|
||||
## Eingaben und Vorbelegung
|
||||
Eine Leitungslänge von `0 m` ist zulässig. Der Dialog weist sichtbar darauf
|
||||
hin, dass dann kein Spannungsfall angesetzt wird.
|
||||
|
||||
| Eingabe | Vorbelegung |
|
||||
|---|---|
|
||||
| Leistung | `circuitTotalPower` des Stromkreises (mit Geräte-GZF), nicht editierbar |
|
||||
| Phasen | 3~, wenn die Stromkreisgruppe 3-phasig ist oder eine Gerätezeile `three_phase` hat, sonst 1~ |
|
||||
| Spannung | `circuit.voltage` (aus den Projekteinstellungen abgeleitet); bei manuell abweichender Phasenzahl die jeweilige Projektspannung |
|
||||
| cos φ | leistungsgewichtet aus den Gerätezeilen: P / Σ(P_Zeile / cos φ_Zeile), fehlendes cos φ = 1; änderbar |
|
||||
| Länge | `cableLength` des Stromkreises |
|
||||
| Schutzorgan | Schutzgerät des Stromkreises: LS, FI/LS, AFDD = Leitungsschutzschalter; D0/NH = Sicherung gG; FI ohne Überstromauslöser wird nicht berücksichtigt |
|
||||
| Verlegeart, Isolierstoff, Leitermaterial, Temperatur, Häufung, max. ΔU, Oberschwingungen | Planereingaben |
|
||||
## Normative Grundlage und Grenzen
|
||||
|
||||
Kabeltyp und Querschnitt lassen sich im Dialog auch ohne Berechnung direkt
|
||||
eintragen. Weicht der Eintrag von der Empfehlung oder dem
|
||||
Praxis-Mindestquerschnitt ab, erscheint nur ein Hinweis.
|
||||
Die Strombelastbarkeiten und Korrekturfaktoren wurden gegen
|
||||
**DIN VDE 0298-4 (VDE 0298-4):2023-06** einschließlich
|
||||
**Berichtigung 1:2023-10** geprüft:
|
||||
|
||||
- Strombelastbarkeit: Tabellen 3 bis 6.
|
||||
- Temperaturfaktoren: Tabellen 17 und 20.
|
||||
- Häufung A1 bis C: Tabelle 22 nach der korrigierten Zuordnung.
|
||||
- Häufung D: Tabelle 26 für sich berührende Rohre oder Kanäle im Erdreich.
|
||||
- Oberschwingungen: Anhang B, insbesondere Tabelle B.1.
|
||||
|
||||
Unterstützt werden A1, A2, B1, B2, C, D und E. D bezeichnet ausschließlich
|
||||
mehradrige Kabel oder Mantelleitungen im Rohr beziehungsweise Kanal im
|
||||
Erdreich. Direkte Erdverlegung wird nicht angeboten, weil DIN VDE 0298-4 dafür
|
||||
auf die Kabel-Produktnorm DIN VDE 0276-603 verweist.
|
||||
|
||||
Für Verlegeart E hängen Häufungsfaktoren von Trägerart, Abstand und Anzahl der
|
||||
Kabelpritschen ab. Diese Angaben gehören noch nicht zum Eingabemodell. Daher
|
||||
ist E nur für einen einzelnen Stromkreis berechenbar. Für D sind höchstens
|
||||
sechs gehäufte Stromkreise durch die verwendete Tabellenzeile abgedeckt.
|
||||
|
||||
Aluminium wird erst ab 25 mm² angeboten, weil die verwendeten Tabellen keine
|
||||
kleineren Aluminiumquerschnitte enthalten. Bei mehr als 33 % dritter
|
||||
Harmonischer ist der Neutralleiterstrom Bemessungsgrundlage. Solange dieser
|
||||
nicht als Zahlenwert eingegeben und berechnet wird, liefert das Modul keine
|
||||
Empfehlung.
|
||||
|
||||
Die Berechnung des Spannungsfalls ist eine vereinfachte Ergänzung mit
|
||||
Leitfähigkeit bei Betriebstemperatur; Reaktanz wird vernachlässigt. Ihre
|
||||
Planungsgrenzen folgen nicht allein aus DIN VDE 0298-4. Auch die Koordination
|
||||
mit Leitungsschutzschaltern und gG-Sicherungen gehört zur
|
||||
Überstromschutzbemessung und ist getrennt von der Strombelastbarkeit zu
|
||||
beurteilen. Der Dialog bezeichnet diese Ergebnisse deshalb nicht als vollständig
|
||||
normative Leitungsbemessung.
|
||||
|
||||
## Rechenweg
|
||||
|
||||
1. Betriebsstrom I_B aus Leistung, Spannung, cos φ und Phasenzahl.
|
||||
2. Erforderliche Belastbarkeit: ohne Schutzorgan I_B; mit Schutzorgan
|
||||
max(I_B, I_n, I₂/1,45) nach IEC 60364-4-43 (I_n ≤ I_z und I₂ ≤ 1,45 · I_z).
|
||||
I₂/I_n: Leitungsschutzschalter 1,45; Sicherung gG 2,1 (I_n ≤ 4 A),
|
||||
1,9 (4 A < I_n < 16 A), 1,6 (I_n ≥ 16 A).
|
||||
3. Tabellenwert I_z je Querschnitt × Temperaturfaktor × Häufungsfaktor
|
||||
(× 0,86 bei 15–33 % 3. Harmonischer im Drehstromkreis).
|
||||
4. Spannungsfall ΔU = k · L · I_B · cos φ / (κ · A · U) mit k = 2 (1~) bzw.
|
||||
√3 (3~), κ = 48 (Cu) bzw. 30 (Al) m/(Ω·mm²) bei Betriebstemperatur;
|
||||
Reaktanz wird vernachlässigt.
|
||||
5. Empfehlung = größerer Querschnitt aus Belastbarkeit und Spannungsfall;
|
||||
1-phasige Stromkreise werden auf den Praxis-Mindestquerschnitt 2,5 mm²
|
||||
angehoben (Planungskonvention aus `docs/spec/06-…`, keine Rechenanforderung).
|
||||
6. Zusätzlich: maximale Länge für den zulässigen Spannungsfall.
|
||||
1. Betriebsstrom `I_B` aus Leistung, Spannung, cos φ und Phasenzahl.
|
||||
2. Erforderliche Belastbarkeit aus `I_B` und gegebenenfalls dem vorhandenen
|
||||
Schutzorgan.
|
||||
3. Tabellenwert `I_z` multipliziert mit Temperatur-, Häufungs- und gegebenenfalls
|
||||
Oberschwingungsfaktor.
|
||||
4. Vereinfachter Spannungsfall für jeden verfügbaren Querschnitt.
|
||||
5. Empfehlung als größerer Querschnitt aus Belastbarkeit und Spannungsfall.
|
||||
6. Bei einphasigen Stromkreisen Anhebung auf den vereinbarten praktischen
|
||||
Mindestquerschnitt von 2,5 mm².
|
||||
|
||||
Temperaturen und Häufungen **zwischen** Tabellenwerten werden auf den nächsten
|
||||
ungünstigeren Tabellenwert gerundet (höhere Temperatur, mehr Stromkreise).
|
||||
Werte **außerhalb** der Tabellen liefern kein Ergebnis und eine Meldung – es
|
||||
wird nie stillschweigend mit Faktor 1 gerechnet.
|
||||
|
||||
## Datenbasis und Prüfnachweis
|
||||
|
||||
Grundlage ist **IEC 60364-5-52:2009, Anhang B**. Alle Werte wurden am
|
||||
26.09.2026 zeilenweise mit öffentlich zugänglichen Wiedergaben abgeglichen:
|
||||
TiSoft ElectricalDesign-Hilfe zu IEC 60364-5-52
|
||||
(`ti-soft.com/en/support/help/electricaldesign/standards/iec-60364-5-52/…`)
|
||||
und ECalPro (`ecalpro.com/standards/iec-60364/…`). Wo die Quellen voneinander
|
||||
abweichen, ist der kleinere, sichere Wert eingetragen.
|
||||
|
||||
| Tabelle | Inhalt | Abgleich | Abweichungen |
|
||||
|---|---|---|---|
|
||||
| B.52.2 | PVC, 2 belastete Adern, Cu/Al, A1–D2 | TiSoft; Cu A1–C zusätzlich ECalPro | Cu A1 240 mm²: 321 / 320 → 320 |
|
||||
| B.52.3 | VPE, 2 belastete Adern, Cu/Al, A1–D2 | TiSoft | – |
|
||||
| B.52.4 | PVC, 3 belastete Adern, Cu/Al, A1–D2 | TiSoft | – |
|
||||
| B.52.5 | VPE, 3 belastete Adern, Cu/Al, A1–D2 | TiSoft | – |
|
||||
| B.52.10 / .11 | PVC, Verlegeart E, mehradrig, Cu / Al | TiSoft; Cu 2 Adern zusätzlich ECalPro | Cu 3 Adern 70 / 120 mm²: 198 / 278 bzw. 196 / 276 → 196 / 276 |
|
||||
| B.52.12 / .13 | VPE, Verlegeart E, mehradrig, Cu / Al | TiSoft | – |
|
||||
| B.52.14 | Temperatur Luft, PVC / VPE | TiSoft, ECalPro | – |
|
||||
| B.52.15 | Temperatur Erde, PVC / VPE | TiSoft | – |
|
||||
| B.52.17 | Häufung Luft, Zeile 1 (gebündelt) | TiSoft, ECalPro | – |
|
||||
| B.52.18 | Häufung Erde direkt, Kabel berührend | TiSoft | – |
|
||||
| B.52.19 A | Häufung mehradrige Kabel in berührenden Rohren im Erdreich | TiSoft | – |
|
||||
|
||||
Anwendung der Tabellen:
|
||||
|
||||
- Verlegearten A1, A2, B1, B2, C, E in Luft (Bezug 30 °C), D1 und D2 im
|
||||
Erdreich (Bezug 20 °C, Bodenwärmewiderstand 2,5 K·m/W). Nach Tabelle B.52.1
|
||||
ist **D1 = Leitung im Rohr/Kabelschutzrohr im Erdreich** und **D2 = Kabel
|
||||
direkt im Erdreich**.
|
||||
- Häufung in Luft immer nach B.52.17 Zeile 1, auch für Verlegeart E; das ist
|
||||
die ungünstigste Anordnung (einlagig auf Pritschen wären höhere Faktoren
|
||||
zulässig). D1 nach B.52.19 A, D2 nach B.52.18 jeweils „berührend“.
|
||||
- Aluminium nur mit den echten Aluminiumwerten (ab 2,5 mm², D2 ab 16 mm²);
|
||||
Querschnitte ohne Tabellenwert werden nie empfohlen.
|
||||
- Die Verlegearten F und G (Einzeladern mit Abstand) sind nicht enthalten.
|
||||
|
||||
**Vor produktivem Einsatz:** Die nationalen Tabellen der DIN VDE 0298-4
|
||||
können in einzelnen Werten abweichen. Der Planer muss die Tabellen gegen den
|
||||
Normtext prüfen. Die Prüfung ist in `tests/cable-sizing-calculation.test.ts`
|
||||
über Stichwerte und eine Monotonieprüfung jeder Tabellenzeile abgesichert.
|
||||
Temperaturen und Häufungen zwischen Tabellenwerten werden zum nächsten
|
||||
ungünstigeren Tabellenwert gerundet. Außerhalb des belegten Tabellenbereichs
|
||||
wird keine Empfehlung ausgegeben. Ein abweichender Querschnitt kann weiterhin
|
||||
manuell eingetragen und bewusst übernommen werden.
|
||||
|
||||
## Nicht enthalten
|
||||
|
||||
- Kurzschlussfestigkeit, Abschaltbedingungen (Schleifenimpedanz) und
|
||||
Selektivität
|
||||
- Bodenwärmewiderstand ≠ 2,5 K·m/W, Häufung mit Abstand, Verlegearten F/G
|
||||
- Bemessung des Neutralleiters bei > 33 % 3. Harmonischer (nur Hinweis)
|
||||
- automatische Bemessung oder Prüfung aller Stromkreise
|
||||
- direkte Erdverlegung
|
||||
- detaillierte Anordnung mehrerer Kabel bei Verlegeart E
|
||||
- Neutralleiterbemessung bei mehr als 33 % dritter Harmonischer
|
||||
- Kurzschlussfestigkeit, Schleifenimpedanz, Abschaltbedingungen und Selektivität
|
||||
- abweichender Bodenwärmewiderstand sowie Verlegearten F und G
|
||||
- automatische Berechnung oder Änderung mehrerer Stromkreise
|
||||
|
||||
## API
|
||||
|
||||
`POST /api/cable-sizing/calculate` – zustandslos, liest und schreibt keine
|
||||
Projektdaten.
|
||||
`POST /api/cable-sizing/calculate` berechnet zustandslos. Die Verlegeart ist
|
||||
`A1 | A2 | B1 | B2 | C | D | E`; `lengthM` darf `0` sein. Das Ergebnis enthält
|
||||
`supported: false` und einen der Gründe `temperature`, `grouping` oder
|
||||
`harmonics`, wenn keine belastbare Empfehlung möglich ist.
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"phase": 1, // 1 | 3
|
||||
"mode": "power", // "power" | "current"
|
||||
"powerKw": 4.2, // bei mode "power"
|
||||
"currentA": 18.3, // bei mode "current"
|
||||
"cosPhi": 0.95, // 0,1 … 1
|
||||
"voltage": 230,
|
||||
"lengthM": 23.5,
|
||||
"layingMethod": "C", // A1 | A2 | B1 | B2 | C | D1 | D2 | E
|
||||
"conductorMaterial": "copper", // copper | aluminum
|
||||
"insulation": "pvc", // pvc | xlpe
|
||||
"ambientTemperatureC": 30, // Luft; bei D1/D2 Bodentemperatur
|
||||
"groupingCircuits": 1, // 1 … 100, Tabellen bis 20
|
||||
"maxVoltageDropPercent": 3,
|
||||
"harmonicNeutralLoad": "none", // none | 15to33Percent | over33Percent
|
||||
"existingProtection": { "ratedCurrentA": 16, "kind": "breaker" }, // optional; kind: breaker | fuse
|
||||
"circuitCategory": "single_phase" // optional
|
||||
}
|
||||
```
|
||||
|
||||
Antwort: `{ "result": CableSizingResult, "alerts": CableSizingAlert[] }`.
|
||||
`result.supported = false` mit `unsupportedReason` (`temperature` oder
|
||||
`grouping`), wenn die Eingaben außerhalb der Tabellen liegen.
|
||||
`GET /api/cable-sizing/laying-methods` und `GET /api/cable-sizing/insulation-materials`
|
||||
liefern die Auswahllisten.
|
||||
`GET /api/cable-sizing/laying-methods` und
|
||||
`GET /api/cable-sizing/insulation-materials` liefern die Auswahllisten.
|
||||
|
|
|
|||
|
|
@ -433,14 +433,15 @@ read nor write project data; applying a result uses `circuit.update` through
|
|||
|
||||
- `POST /cable-sizing/calculate`
|
||||
- request: phase, mode (`power` | `current`), powerKw or currentA, cosPhi,
|
||||
voltage, lengthM, layingMethod (`A1` | `A2` | `B1` | `B2` | `C` | `D1` |
|
||||
`D2` | `E`), conductorMaterial, insulation (`pvc` | `xlpe`),
|
||||
voltage, lengthM, layingMethod (`A1` | `A2` | `B1` | `B2` | `C` | `D` |
|
||||
`E`), conductorMaterial, insulation (`pvc` | `xlpe`),
|
||||
ambientTemperatureC, groupingCircuits, maxVoltageDropPercent,
|
||||
harmonicNeutralLoad, optional `existingProtection`
|
||||
(`{ ratedCurrentA, kind: "breaker" | "fuse" }`) and circuitCategory
|
||||
- returns `{ "result": { ... }, "alerts": [ ... ] }`; `result.supported`
|
||||
is `false` with `unsupportedReason` when temperature or grouping lie
|
||||
outside the tables
|
||||
outside the tables or the neutral current needed above 33 % third
|
||||
harmonic is unavailable
|
||||
- unknown fields are rejected (`400`)
|
||||
- `GET /cable-sizing/laying-methods`
|
||||
- `GET /cable-sizing/insulation-materials`
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@
|
|||
- The global device library supports basic CRUD and copy operations, but has no
|
||||
versioning, permissions or controlled synchronization model.
|
||||
- There is no automatic sizing of all circuits. The optional cable sizing
|
||||
module suggests a cross-section for one circuit on demand (IEC 60364-5-52
|
||||
Annex B tables; no short-circuit, disconnection-time or selectivity checks,
|
||||
no methods F/G, soil resistivity fixed at 2.5 K·m/W) and does not validate
|
||||
manually entered cable values. National tables (DIN VDE 0298-4) must be
|
||||
checked by the planner; see `docs/cable-sizing-module.md`.
|
||||
module suggests a cross-section for one circuit on demand using
|
||||
DIN VDE 0298-4:2023-06 with Berichtigung 1:2023-10. It excludes direct
|
||||
burial, grouped method E and neutral-current sizing above 33 % third
|
||||
harmonic, and it does not check short-circuit withstand, disconnection time
|
||||
or selectivity. See `docs/cable-sizing-module.md`.
|
||||
- Sorting is view-only until users explicitly apply sorted order.
|
||||
- Complete-circuit drag supports one circuit at a time between groups of the
|
||||
same category. Cross-category moves and multi-circuit moves across group
|
||||
|
|
|
|||
|
|
@ -507,8 +507,10 @@ Kopieren in ein Projekt erzeugt ein eigenständiges Projektgerät.
|
|||
## Leitungsberechnung
|
||||
|
||||
Das optionale Modul `src/cable-sizing` berechnet auf Anforderung eine
|
||||
Querschnittsempfehlung für einen Stromkreis (IEC 60364-5-52 Anhang B:
|
||||
Belastbarkeit, Temperatur, Häufung, Spannungsfall, Schutzorgan). Die
|
||||
Querschnittsempfehlung für einen Stromkreis. Strombelastbarkeit, Temperatur
|
||||
und Häufung beruhen auf DIN VDE 0298-4:2023-06 einschließlich
|
||||
Berichtigung 1:2023-10; Spannungsfall und Schutzorgan werden ergänzend und mit
|
||||
den in der Moduldokumentation beschriebenen Grenzen geprüft. Die
|
||||
Domänenlogik ist rein, `POST /api/cable-sizing/calculate` ist zustandslos und
|
||||
es gibt keine eigene Tabelle. Der Editor öffnet den Dialog über den Button
|
||||
„Leitungsberechnung“ in der Aktionsspalte; „Übernehmen“ schreibt Kabeltyp,
|
||||
|
|
|
|||
|
|
@ -47,8 +47,9 @@ requirements and intended sequencing, not proof of implementation.
|
|||
- [x] Phase F: documentation and full GUI verification.
|
||||
- [ ] Keep full electrical sizing and cable-dimensioning rules separate until
|
||||
the planner supplies the calculation requirements. The optional per-circuit
|
||||
cable sizing module (`docs/cable-sizing-module.md`) exists; its tables must
|
||||
be confirmed by the planner against DIN VDE 0298-4.
|
||||
cable sizing module (`docs/cable-sizing-module.md`) exists; its supported
|
||||
tables were confirmed against DIN VDE 0298-4:2023-06 with
|
||||
Berichtigung 1:2023-10. Unsupported arrangements stay explicitly blocked.
|
||||
- Detailed specification:
|
||||
`docs/spec/09-distribution-board-components-and-protection-groups.md`
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue