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
@@ -24,6 +24,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Quetschungen, Knochenbrueche, innere Verletzungen durch Einklemmen von Koerperteilen.",
AffectedDE: "Bedienpersonal, Einrichter, Wartungspersonal, Reinigungspersonal",
ZoneDE: "Roboterarm, feststehende Anlagenteile innerhalb der Roboterzelle",
ISO12100Section: "6.2.3",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
@@ -39,6 +40,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal, Reinigungspersonal",
ZoneDE: "Schutzzaun-Oberkante, Roboterarm",
ClarificationQuestionsDE: []string{"Ist Dynamic Safety Configuration (DCS) am Roboter konfiguriert und durch den Hersteller validiert?", "Wurde der Reach-Over-Sicherheitsabstand nach EN ISO 13857 anlagenbezogen berechnet?"},
ISO12100Section: "6.3.5.2",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
@@ -53,6 +55,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Quetschungen, Stoss durch anlaufenden Roboter.",
AffectedDE: "Wartungspersonal, Einrichter, Reinigungspersonal",
ZoneDE: "Inneres der Roboterzelle",
ISO12100Section: "6.2.3",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
@@ -68,6 +71,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal in der Naehe des Schutzzauns",
ZoneDE: "Schutzzaun, Bereich um die Roboterzelle",
ClarificationQuestionsDE: []string{"Ist Dynamic Safety Configuration (DCS) am Roboter konfiguriert und durch den Hersteller validiert?", "Ist nach EN ISO 13857 die Tabelle 1 (Niedrigrisiko) anwendbar oder muss Tabelle 2 angewandt werden?"},
ISO12100Section: "6.3.5.2",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
@@ -82,6 +86,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Prellungen, Quetschungen durch Kontakt mit Werkzeug/Greifer am Roboterarm.",
AffectedDE: "Einrichter, Programmierer, Wartungspersonal",
ZoneDE: "Inneres der Roboterzelle, Schwenkbereich Werkzeug/Greifer",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
// ================================================================
@@ -99,6 +104,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Quetschung oder Amputation von Fingern durch Greifkraft.",
AffectedDE: "Bedienpersonal, Einrichter",
ZoneDE: "Greifer des Roboterarms, Werkstueckaufnahme",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
@@ -114,6 +120,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Bereich unterhalb des Greifer/Roboterarms",
ClarificationQuestionsDE: []string{"Welche Druckhalte-Logik ist am Greifer realisiert? (Empfehlung: 5-3 Wegeventil mit Sperrmittelstellung, auch bei Not-Halt)", "Ist nachgewiesen, dass das Werkstueck bei Spannungs- oder Druckluftausfall sicher gehalten wird (Fail-Safe)?"},
ISO12100Section: "6.2.6",
DefaultSeverity: 3, DefaultExposure: 2,
},
{
@@ -129,6 +136,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal in der Naehe der Roboterzelle",
ZoneDE: "Schutzzaun, Bereich um die Roboterzelle",
ClarificationQuestionsDE: []string{"Ist die Lastbemessung der Einhausung auf max. Werkstueckgewicht * max. Roboter-TCP-Geschwindigkeit dokumentiert?", "Sind max. Werkstueckgewicht und Roboter-TCP-Geschwindigkeit in der Betriebsanleitung explizit angegeben?"},
ISO12100Section: "6.2.6",
DefaultSeverity: 3, DefaultExposure: 2,
},
// ================================================================
@@ -147,6 +155,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal, Reinigungspersonal",
ZoneDE: "Foerderbaender, Bandein- und -auslauf",
ClarificationQuestionsDE: []string{"Ist die Bandgeschwindigkeit im manuell zugaenglichen Bereich dokumentiert? (Empfehlung: <= 100 mm/s)", "Sind Quetsch- und Einzugsstellen am Band konstruktiv ausgeschlossen oder durch Lichtschranke gesichert?"},
ISO12100Section: "6.3.5.4",
DefaultSeverity: 2, DefaultExposure: 3,
},
{
@@ -161,6 +170,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Quetschung von Hand oder Arm durch Roboterarm oder bewegte Maschinenteile.",
AffectedDE: "Bedienpersonal",
ZoneDE: "Oeffnung der Foerderbaender im Schutzzaun, Roboterbereich dahinter",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
@@ -176,6 +186,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal am Be-/Entladeplatz",
ZoneDE: "Ende der Transportbaender, Be-/Entladeplatz",
ClarificationQuestionsDE: []string{"Sind mechanische Anschlaege an allen Bandenden vorhanden und auf maximale Werkstueckmasse + Bandgeschwindigkeit dimensioniert?"},
ISO12100Section: "6.2.6",
DefaultSeverity: 2, DefaultExposure: 3,
},
// ================================================================
@@ -193,6 +204,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Schnittwunden an Haenden und Armen.",
AffectedDE: "Bedienpersonal, Wartungspersonal, Reinigungspersonal",
ZoneDE: "Zugaengliche Kanten der Maschine und Einhausung",
ISO12100Section: "6.2.2.2",
DefaultSeverity: 2, DefaultExposure: 3,
},
// ================================================================
@@ -210,6 +222,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Prellungen, Augenverletzungen durch abspringenden Schlauch.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Pneumatikschlaeuche der Automation",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 2, DefaultExposure: 2,
},
{
@@ -224,6 +237,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Person wird von wegfliegenden Teilen oder unkontrolliert loesenden Verbindungen getroffen. Prellungen, Schnittverletzungen.",
AffectedDE: "Wartungspersonal, Einrichter",
ZoneDE: "Pneumatikschlaeuche und -komponenten",
ISO12100Section: "6.2.10",
DefaultSeverity: 2, DefaultExposure: 2,
},
// HP1632 (Bersten) ist semantisch DISTINKT zu HP1630 (Abspringen).
@@ -246,6 +260,7 @@ func GetRobotCellPatterns() []HazardPattern {
"Sind alle Pneumatik-Komponenten (Leitungen, Dichtungen, Verbindungen) auf den Anlagen-Nenndruck nach EN ISO 4414 ausgelegt?",
"Liegen Berstdrucknachweise der Schlauchhersteller fuer den eingesetzten Druckbereich vor?",
},
ISO12100Section: "6.2.10",
DefaultSeverity: 2, DefaultExposure: 2,
},
// ================================================================
@@ -263,6 +278,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Quetschung, Schnittverletzung durch Greiferkanten oder Werkzeug am Roboter.",
AffectedDE: "Einrichter, Programmierer",
ZoneDE: "Inneres der Roboterzelle, Greifer/Werkzeug am Roboterarm",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
@@ -291,6 +307,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Person wird von KSS-Strahl getroffen. Einstichverletzung, Hautreizung, Rutschgefahr.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Druckschlaeuche des Kuehlschmierstoffsystems, Verbindungsstellen",
ISO12100Section: "6.3.5.4",
DefaultSeverity: 2, DefaultExposure: 2,
},
{
@@ -305,6 +322,7 @@ func GetRobotCellPatterns() []HazardPattern {
HarmDE: "Ausrutschen und Sturz, Prellungen, Knochenbrueche.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Boden um Bearbeitungszentrum und Kuehlschmierstoffanlage",
ISO12100Section: "6.3.5.6",
DefaultSeverity: 2, DefaultExposure: 3,
},
{
@@ -353,6 +371,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Wartungspersonal, Einrichter",
ZoneDE: "Zugaengliche Kabel, Klemmen, Schaltschrank",
ClarificationQuestionsDE: []string{"Liegt ein Pruefprotokoll nach EN 60204-1 fuer die Niederspannungs-Isolation vor?", "Sind die Schutzart IP2X bzw. IPXXB an allen niederspannungsfuehrenden Gehaeusen messtechnisch nachgewiesen?"},
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
@@ -369,6 +388,7 @@ func GetRobotCellPatterns() []HazardPattern {
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Beruehrbare leitfaehige Oberflaechen der Anlage",
ClarificationQuestionsDE: []string{"Wurde der Schutzleiterwiderstand an allen leitfaehigen Oberflaechen gemessen und protokolliert?", "Liegen die Ableitstroeme unter 10 mA, oder ist einer der Massnahmen aus EN 60204-1 Ziff. 8.2.6 umgesetzt?"},
ISO12100Section: "6.2.9",
DefaultSeverity: 4, DefaultExposure: 2,
},
{