feat: 25 Norm-Pflichtmassnahmen (Mandatory=true)

Neue Kategorie: Massnahmen die durch harmonisierte Normen VORGESCHRIEBEN
sind. Abweichung = Verlust der Konformitaetsvermutung.

Pressen: Zweihandschaltung, Stoesselabsturzsicherung, Schutztuere
Roboter/Cobot: Kraft-/Geschwindigkeitsbegrenzung, Sicherheitsscanner
Aufzuege: Fangvorrichtung, Geschwindigkeitsbegrenzer, Puffer
Gabelstapler: Redundante Lastaufnahme, Kippschutz
Holz: Spaltkeil, Saegeblattschutzhaube
Krane: Ueberlastsicherung, Endschalter
Allgemein: Not-Halt, Hauptschalter, Schutzleiter, PL/SIL-Nachweis
AGV: Personenerkennung, Notbremse
Kettensaege: Kettenbremse
Fahrtreppe: Kammplatte
Druckgeraete: Sicherheitsventil
Schweissen: Leerlaufspannungsbegrenzung

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-09 07:39:43 +02:00
parent 1502ac6d8f
commit e5dcb5a2dc
3 changed files with 68 additions and 0 deletions
@@ -11,6 +11,7 @@ func GetProtectiveMeasureLibrary() []ProtectiveMeasureEntry {
all = append(all, getDesignMeasures()...)
all = append(all, getProtectiveMeasures()...)
all = append(all, getInformationMeasures()...)
all = append(all, GetMandatoryNormMeasures()...) // Norm-Pflichtmassnahmen
return all
}
@@ -0,0 +1,61 @@
package iace
// GetMandatoryNormMeasures returns protective measures that are REQUIRED
// by specific harmonized standards. These are not optional risk reductions
// but mandatory requirements that must be implemented when the referenced
// norm is applied. Deviating from these requires the manufacturer to
// independently prove equivalent safety (loss of presumption of conformity).
func GetMandatoryNormMeasures() []ProtectiveMeasureEntry {
return []ProtectiveMeasureEntry{
// ── Pressen (EN 692, EN 693, ISO 16092) ─────────────────────
{ID: "MN001", ReductionType: "protective", SubType: "safety_control", Name: "Zweihandschaltung Typ IIIC", Description: "Zweihandschaltung nach EN 574 Typ IIIC fuer Pressen mit Handbeschickung.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 692 Kap. 5.3.3", NormReferences: []string{"EN 692", "EN 574"}},
{ID: "MN002", ReductionType: "protective", SubType: "safety_control", Name: "Stoesselabsturzsicherung", Description: "Mechanische oder hydraulische Stoesselabsturzsicherung bei vertikalen Pressen.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 693 Kap. 5.3.7", NormReferences: []string{"EN 693", "EN 692"}},
{ID: "MN003", ReductionType: "protective", SubType: "movable_guard", Name: "Schutztuere mit Zuhaltung (Presse)", Description: "Bewegliche trennende Schutzeinrichtung mit Zuhaltung am Werkzeugeinbauraum.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 692 Kap. 5.3.2", NormReferences: []string{"EN 692", "ISO 14119"}},
// ── Roboter/Cobot (ISO 10218, ISO/TS 15066) ─────────────────
{ID: "MN004", ReductionType: "protective", SubType: "safety_control", Name: "Kraft-/Geschwindigkeitsbegrenzung Cobot", Description: "Begrenzung von Kontaktkraft und TCP-Geschwindigkeit gemaess ISO/TS 15066 Tabelle A.2.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "ISO/TS 15066 Kap. 5.5.4", NormReferences: []string{"ISO/TS 15066", "ISO 10218-1"}},
{ID: "MN005", ReductionType: "protective", SubType: "safety_control", Name: "Sicherheitsbewerteter Stopp (Roboter)", Description: "Sicherheitsbewerteter ueberwachter Stopp bei Personeneintritt in den Arbeitsraum.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "ISO 10218-1 Kap. 5.5.2", NormReferences: []string{"ISO 10218-1", "ISO 10218-2"}},
{ID: "MN006", ReductionType: "protective", SubType: "electro_sensitive", Name: "Sicherheitsscanner Cobot-Arbeitsraum", Description: "Optoelektronische Raumüberwachung fuer Geschwindigkeitsreduzierung bei Annaeherung.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "ISO 10218-2 Kap. 5.11", NormReferences: []string{"ISO 10218-2", "IEC 61496-3"}},
// ── Aufzuege (EN 81-20) ──────────────────────────────────────
{ID: "MN007", ReductionType: "protective", SubType: "safety_control", Name: "Fangvorrichtung Aufzug", Description: "Mechanische Fangvorrichtung die den Fahrkorb bei Seilbruch oder Uebergeschwindigkeit stoppt.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 81-20 Kap. 5.6", NormReferences: []string{"EN 81-20"}},
{ID: "MN008", ReductionType: "protective", SubType: "safety_control", Name: "Geschwindigkeitsbegrenzer Aufzug", Description: "Geschwindigkeitsbegrenzer der bei Uebergeschwindigkeit die Fangvorrichtung ausloest.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 81-20 Kap. 5.6.2", NormReferences: []string{"EN 81-20"}},
{ID: "MN009", ReductionType: "protective", SubType: "safety_control", Name: "Puffer im Aufzugsschacht", Description: "Energieabsorbierende Puffer am Schachtboden und -decke als letzte Sicherung.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 81-20 Kap. 5.8", NormReferences: []string{"EN 81-20"}},
// ── Flurfoerderzeuge (EN 1726, EN ISO 3691) ──────────────────
{ID: "MN010", ReductionType: "protective", SubType: "safety_control", Name: "Redundante Lastaufnahme (Gabelstapler)", Description: "Zweifache Lastaufhaengung: Jede Kette/Gurt muss einzeln die volle Last tragen koennen.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 1726-1 Kap. 5.3", NormReferences: []string{"EN 1726-1", "EN ISO 3691-1"}},
{ID: "MN011", ReductionType: "protective", SubType: "safety_control", Name: "Kippschutz Gabelstapler", Description: "Standsicherheitsnachweis bei max. Nennlast und maximaler Hubhoehe.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 1726-1 Kap. 5.2", NormReferences: []string{"EN 1726-1"}},
// ── Holzbearbeitung (EN 1870, EN 848) ────────────────────────
{ID: "MN012", ReductionType: "protective", SubType: "fixed_guard", Name: "Spaltkeil Kreissaege", Description: "Spaltkeil hinter dem Saegeblatt verhindert Rueckschlag.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 1870-1 Kap. 5.3.3", NormReferences: []string{"EN 1870-1"}},
{ID: "MN013", ReductionType: "protective", SubType: "fixed_guard", Name: "Saegeblattschutzhaube", Description: "Schutzhaube ueber dem nicht arbeitenden Teil des Saegeblatts.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 1870-1 Kap. 5.3.2", NormReferences: []string{"EN 1870-1"}},
// ── Krane (EN 15011, EN 13000) ───────────────────────────────
{ID: "MN014", ReductionType: "protective", SubType: "safety_control", Name: "Ueberlastsicherung Kran", Description: "Automatische Lastmomentbegrenzung die Hub bei Ueberschreitung der Nennlast sperrt.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 15011 Kap. 5.3", NormReferences: []string{"EN 15011", "EN 13000"}},
{ID: "MN015", ReductionType: "protective", SubType: "safety_control", Name: "Endschalter Kran (Hub/Fahrt)", Description: "Begrenzungsschalter fuer Hubbewegung, Katzfahrt und Kranfahrt.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 15011 Kap. 5.2.6", NormReferences: []string{"EN 15011"}},
// ── Allgemein (ISO 13850, EN 60204-1) ────────────────────────
{ID: "MN016", ReductionType: "protective", SubType: "emergency_stop", Name: "Not-Halt Kategorie 0 oder 1", Description: "Not-Halt-Einrichtung an jeder Bedienstelle, gut sichtbar und erreichbar.", HazardCategory: "safety_function", Mandatory: true, MandatoryNorm: "ISO 13850 Kap. 4.1", NormReferences: []string{"ISO 13850", "EN 60204-1"}},
{ID: "MN017", ReductionType: "protective", SubType: "electrical_protection", Name: "Hauptschalter absperrbar", Description: "Hauptschalter muss in Aus-Stellung abschliessbar sein (Lockout).", HazardCategory: "electrical", Mandatory: true, MandatoryNorm: "EN 60204-1 Kap. 5.3", NormReferences: []string{"EN 60204-1"}},
{ID: "MN018", ReductionType: "protective", SubType: "electrical_protection", Name: "Schutzleiteranschluss", Description: "Alle leitfaehigen Gehaeuseteile muessen mit dem Schutzleiter verbunden sein.", HazardCategory: "electrical", Mandatory: true, MandatoryNorm: "EN 60204-1 Kap. 8", NormReferences: []string{"EN 60204-1"}},
// ── AGV (EN ISO 3691-4) ──────────────────────────────────────
{ID: "MN019", ReductionType: "protective", SubType: "safety_control", Name: "Personenerkennung AGV", Description: "Sicherheitssensor (Laserscanner) zur Personenerkennung im Fahrweg des AGV.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN ISO 3691-4 Kap. 4.7", NormReferences: []string{"EN ISO 3691-4"}},
{ID: "MN020", ReductionType: "protective", SubType: "safety_control", Name: "Notbremseinrichtung AGV", Description: "Automatische Bremsung bei Hinderniserkennung, manueller Not-Halt am Fahrzeug.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN ISO 3691-4 Kap. 4.4", NormReferences: []string{"EN ISO 3691-4"}},
// ── Kettensaege (ISO 11681) ──────────────────────────────────
{ID: "MN021", ReductionType: "protective", SubType: "safety_control", Name: "Kettenbremse (Kettensaege)", Description: "Kettenbremse die bei Rueckschlag die Kette innerhalb von 0,12s stoppt.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "ISO 11681-1 Kap. 4.11", NormReferences: []string{"ISO 11681-1"}},
// ── Fahrtreppen (EN 115-1) ───────────────────────────────────
{ID: "MN022", ReductionType: "protective", SubType: "safety_control", Name: "Kammplatte Fahrtreppe", Description: "Kammplatten am Zu- und Abgang verhindern Einklemmen von Schuhwerk und Kleidung.", HazardCategory: "mechanical", Mandatory: true, MandatoryNorm: "EN 115-1 Kap. 5.6", NormReferences: []string{"EN 115-1"}},
// ── Sicherheitsfunktionen allgemein (ISO 13849-1) ────────────
{ID: "MN023", ReductionType: "protective", SubType: "safety_control", Name: "Sicherheitsfunktion PL/SIL-konform", Description: "Jede Sicherheitsfunktion muss das per Risikograph ermittelte PL/SIL nachweislich erreichen.", HazardCategory: "safety_function", Mandatory: true, MandatoryNorm: "ISO 13849-1 Kap. 4", NormReferences: []string{"ISO 13849-1", "IEC 62061"}},
// ── Druckgeraete (EN ISO 4126-1) ─────────────────────────────
{ID: "MN024", ReductionType: "protective", SubType: "fluid_protection", Name: "Sicherheitsventil Druckbehaelter", Description: "Jeder Druckbehaelter muss mit einem Sicherheitsventil gegen unzulaessigen Ueberdruck gesichert sein.", HazardCategory: "pneumatic_hydraulic", Mandatory: true, MandatoryNorm: "EN ISO 4126-1 Kap. 4", NormReferences: []string{"EN ISO 4126-1"}},
// ── Schweissen (EN 60974-1) ──────────────────────────────────
{ID: "MN025", ReductionType: "protective", SubType: "electrical_protection", Name: "Leerlaufspannungsbegrenzung Schweissgeraet", Description: "Leerlaufspannung bei Lichtbogenhandschweissgeraeten max. 113V Spitze (AC) bzw. 113V (DC).", HazardCategory: "electrical", Mandatory: true, MandatoryNorm: "EN 60974-1 Kap. 7.3", NormReferences: []string{"EN 60974-1"}},
}
}
@@ -179,6 +179,12 @@ type ProtectiveMeasureEntry struct {
Examples []string `json:"examples,omitempty"`
NormReferences []string `json:"norm_references,omitempty"`
Tags []string `json:"tags,omitempty"`
// Mandatory indicates this measure is REQUIRED by a harmonized standard.
// When true, the measure must be implemented if the referenced norm is applied.
// The norm creates a "presumption of conformity" — deviating requires the
// manufacturer to independently prove equivalent safety.
Mandatory bool `json:"mandatory,omitempty"`
MandatoryNorm string `json:"mandatory_norm,omitempty"` // e.g. "EN 1726-1 Kap. 5.3"
}
// ValidateMitigationHierarchyRequest is the request for hierarchy validation