feat(iace): ISO 12100 Anhang B mapping — split noise/vibration + section identifier

Phase 16 of the Klaerungen / risk-assessment polish. Sources from
EN ISO 12100 Anhang B Tabelle B.1 are now first-class:

A) HazardPattern.ISO12100Section identifier (string), persisted only as
   the section number (e.g. "6.3.5.5") — not the norm text. Keeps the
   library urheberrechtlich neutral (DIN/Beuth license). 57 patterns
   labeled today; rest will follow on touch.

B) Category split per ISO 12100 Nr. 4 vs Nr. 5:
   - 16 patterns reclassified noise_vibration -> noise_hazard
   - 7  patterns reclassified noise_vibration -> vibration_hazard
   - 1  pattern (HP228 UV-/Laermexposition) kept multi-cat
   acceptableMeasureCategories now accepts both new aliases plus the
   legacy noise_vibration. Coverage test recognises both as valid.

C) 5 new ISO-12100-Annex-B gap patterns (HP1900-HP1904):
   - HP1900 Vakuum-Verletzung (6.3.5.5)
   - HP1901 Federenergie / elastische Elemente (6.2.10)
   - HP1902 Rutschen/Stolpern auf rauer Oberflaeche (6.3.5.6)
   - HP1903 Hochdruckinjektion (6.3.5.4) — includes clarifying
            "no hand-locating of leaks" question
   - HP1904 Ersticken durch Brustkorbquetschung (6.3.5.2)

The library now mirrors the ISO 12100 Annex B structure for the gaps
the Bremse benchmark surfaced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-17 01:59:16 +02:00
parent b090662524
commit 71d31c914b
23 changed files with 200 additions and 23 deletions
@@ -20,6 +20,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Person ausserhalb wird von Zaunteilen oder dem Roboterarm getroffen.",
AffectedDE: "Bedienpersonal in der Naehe des Schutzzauns",
ZoneDE: "Schutzzaun, Bereich um die Roboterzelle",
ISO12100Section: "6.3.5.2",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
@@ -34,6 +35,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Schwere Quetschungen, Knochenbrueche durch anlaufenden Roboter.",
AffectedDE: "Wartungspersonal, Einrichter, Reinigungspersonal",
ZoneDE: "Inneres der Roboterzelle, Roboterarm",
ISO12100Section: "6.3.5.2",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
@@ -48,6 +50,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Quetschungen, Schnittverletzungen, Prellungen durch Werkzeug/Greifer.",
AffectedDE: "Bedienpersonal, Einrichter",
ZoneDE: "Inneres der Roboterzelle, Greifer/Werkzeug des Roboterarms",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
@@ -62,6 +65,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Quetschungen, Prellungen, Knochenbrueche abhaengig von Werkstueckgewicht.",
AffectedDE: "Bedienpersonal, Einrichter",
ZoneDE: "Inneres der Roboterzelle, Greifer des Roboterarms",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
@@ -80,6 +84,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
"Ist Dual Check Safety (DCS bei FANUC, SafeMove bei ABB, SafeOperation bei KUKA) am Roboter konfiguriert und nach EN ISO 13849-1 PLd/Kat.3 validiert?",
"Ist die Lastbemessung des Schutzzauns auf max. Werkstueck-Gewicht * max. Roboter-TCP-Geschwindigkeit nachgewiesen?",
},
ISO12100Section: "6.2.6",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
@@ -94,6 +99,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Quetschung von Hand oder Arm zwischen Greifer/Werkstueck und feststehenden Teilen.",
AffectedDE: "Bedienpersonal",
ZoneDE: "Schutzzaun-Oberkante, Greifer/Werkstueck am Roboterarm",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 2,
},
// ================================================================
@@ -157,6 +163,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
AffectedDE: "Einrichter, Wartungspersonal",
ZoneDE: "Bearbeitungsraum der Werkzeugmaschine, Achsen, Werkzeug, Spannvorrichtung",
ClarificationQuestionsDE: []string{"Ist die Werkzeugmaschine (z.B. Robodrill) als CE-konformes Subsystem integriert? Herstellererklaerung anfordern.", "Sind sicherer Automatik- und Einrichtbetrieb durch die CE-Erklaerung der WZM abgedeckt oder erforderlich separate Sicherheitsfunktionen?"},
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
// ================================================================
@@ -188,6 +195,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Augenverletzung durch Spaene, Hautverletzung durch Druckluftstoss.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Bearbeitungszelle, Druckluftreinigungsduesen",
ISO12100Section: "6.3.5.6",
DefaultSeverity: 2, DefaultExposure: 3,
},
// ================================================================
@@ -205,6 +213,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Person wird von abspringendem Schlauch getroffen (Peitscheneffekt). KSS-Spritzer unter Druck verletzen Haut und Augen. Rutschgefahr durch austretenden KSS.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Druckschlaeuche des Kuehlschmierstoffsystems",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 2, DefaultExposure: 2,
},
// ================================================================
@@ -240,6 +249,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Beruehrbare leitfaehige Oberflaechen der Anlage",
ClarificationQuestionsDE: []string{"Wurden alle Steckdosenkreise mit Fehlerstromschutzeinrichtung (RCD) ausgestattet und auf Wirksamkeit geprueft?", "Ist das Schutzleitersystem durchgaengig validiert und protokolliert?"},
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
@@ -282,6 +292,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Elektrischer Schlag bei gleichzeitigem Beruehren von Teilen unterschiedlichen Potentials.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Elektrisch leitfaehige Oberflaechen verschiedener Anlagenteile",
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
@@ -296,6 +307,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Person erleidet elektrischen Schlag durch Fehlerstrom. Herzkammerflimmern, potentiell toedlich.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Steckdosen der Maschine, angeschlossene Betriebsmittel",
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
// ================================================================
@@ -378,6 +390,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Gefaehrliche Beruehrungsspannung an beruehrbaren Teilen, Kurzschluss, Brand.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Schaltgeraetekombinationen, elektrische Anschluesse",
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
@@ -392,6 +405,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Unkontrollierte Bewegung von Achsen, Werkzeug oder Roboterarm durch Steuerungsfehler.",
AffectedDE: "Bedienpersonal, Einrichter",
ZoneDE: "Bearbeitungsbereich, sicherheitsrelevante Steuerungen",
ISO12100Section: "6.3.3",
DefaultSeverity: 3, DefaultExposure: 2,
},
// ================================================================
@@ -437,6 +451,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Einstichverletzung durch KSS-Strahl unter Druck, Augenverletzung, Rutschgefahr.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Druckschlaeuche des Kuehlschmierstoffsystems",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 2, DefaultExposure: 2,
},
{
@@ -451,6 +466,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "KSS-Spritzer in Augen oder Gesicht, Rutschgefahr durch austretenden KSS.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Inneres des Bearbeitungszentrums, Bereich vor der Schutztuer",
ISO12100Section: "6.3.5.6",
DefaultSeverity: 1, DefaultExposure: 3,
},
{
@@ -465,6 +481,7 @@ func GetRobotCellPatternsExt() []HazardPattern {
HarmDE: "Person wird durch Brand, Flammen oder toxische Rauchgase verletzt. Verbrennungen, Rauchvergiftung.",
AffectedDE: "Bedienpersonal",
ZoneDE: "Spannungsfuehrende Teile unterhalb/angrenzend von KSS-Leitungen",
ISO12100Section: "6.2.9",
DefaultSeverity: 3, DefaultExposure: 2,
},
}