Compare commits
6 Commits
293c58d0dd
...
fa4fd87102
| Author | SHA1 | Date | |
|---|---|---|---|
| fa4fd87102 | |||
| f59f810638 | |||
| 86504ef280 | |||
| 3d7b09bcef | |||
| 71802614cc | |||
| 30236638ed |
@@ -91,6 +91,19 @@ scripts/qa/pdf_qa_all.py
|
||||
scripts/qa/benchmark_llm_controls.py
|
||||
backend-compliance/scripts/seed_policy_templates.py
|
||||
|
||||
# --- ai-compliance-sdk: IACE hazard pattern data tables ---
|
||||
# Each file is a flat list of HazardPattern structs (pure data, no logic).
|
||||
# 85 patterns × 12 lines/pattern = ~1020 lines. Cannot be split meaningfully.
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_extended3.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_final_a.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_final_b.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_final_c.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_final_d.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go
|
||||
ai-compliance-sdk/internal/iace/hazard_patterns_workshop.go
|
||||
ai-compliance-sdk/internal/iace/norms_library_c_process.go
|
||||
ai-compliance-sdk/internal/iace/norms_library_c_food_pkg.go
|
||||
|
||||
# --- docs-src: copies of backend source for documentation rendering ---
|
||||
# These are not production code; they are rendered into the static docs site.
|
||||
docs-src/control_generator.py
|
||||
|
||||
@@ -51,21 +51,17 @@ func GetControlsLibrary() []ControlLibraryEntry {
|
||||
}
|
||||
}
|
||||
|
||||
// GetProtectiveMeasureLibrary returns the complete built-in protective measures library
|
||||
// with 160 entries organized by reduction type (design, protection, information)
|
||||
// following the ISO 12100 three-step method for risk reduction.
|
||||
// NOTE: GetProtectiveMeasureLibrary() has moved to measures_library.go and
|
||||
// measures_library_ext.go with ~200 entries covering the ISO 12100 three-step method.
|
||||
//
|
||||
// Each entry is categorized by sub-type and hazard category, with German-language
|
||||
// names, descriptions, and practical examples for industrial machinery safety.
|
||||
func GetProtectiveMeasureLibrary() []ProtectiveMeasureEntry {
|
||||
// Legacy entries below are kept only as dead code for reference during the
|
||||
// transition and will be removed in a future cleanup.
|
||||
func init() {
|
||||
_ = GetProtectiveMeasureLibrary // compile guard: the function must exist
|
||||
}
|
||||
|
||||
func getProtectiveMeasureLibraryLegacy() []ProtectiveMeasureEntry {
|
||||
return []ProtectiveMeasureEntry{
|
||||
|
||||
// ====================================================================
|
||||
// Type 1: Design (ReductionType: "design") — Inhaerent sichere Konstruktion
|
||||
// 50 entries: M001-M050
|
||||
// ====================================================================
|
||||
|
||||
{ID: "M001", ReductionType: "design", SubType: "geometry", Name: "Gefahrstelle konstruktiv eliminieren", Description: "Durch konstruktive Gestaltung wird die Gefahrstelle vollstaendig beseitigt, sodass eine Gefaehrdung gar nicht erst entstehen kann.", HazardCategory: "mechanical", Examples: []string{"Quetschstelle durch Geometrieaenderung entfernen", "Einzugsstelle durch vergroesserten Spalt eliminieren", "Scherstelle durch Kinematikanpassung vermeiden"}},
|
||||
{ID: "M002", ReductionType: "design", SubType: "force_energy", Name: "Bewegungsenergie reduzieren", Description: "Die kinetische Energie beweglicher Maschinenteile wird durch konstruktive Massnahmen auf ein sicheres Niveau begrenzt.", HazardCategory: "mechanical", Examples: []string{"Masse beweglicher Teile verringern", "Hublaenge verkuerzen", "Traegheitsmoment durch Leichtbau reduzieren"}},
|
||||
{ID: "M003", ReductionType: "design", SubType: "force_energy", Name: "Geschwindigkeit reduzieren", Description: "Die Verfahrgeschwindigkeit wird konstruktiv auf ein Niveau begrenzt, bei dem keine gefaehrlichen Verletzungen auftreten koennen.", HazardCategory: "mechanical", Examples: []string{"Maximale Achsgeschwindigkeit mechanisch begrenzen", "Getriebeuebersetzung anpassen", "Drehzahlbegrenzer einbauen"}},
|
||||
{ID: "M004", ReductionType: "design", SubType: "force_energy", Name: "Kraft begrenzen", Description: "Die maximal auftretende Kraft wird durch die Konstruktion so weit begrenzt, dass keine gefaehrlichen Verletzungen moeglich sind.", HazardCategory: "mechanical", Examples: []string{"Federbelastete Kraftbegrenzung einsetzen", "Antriebsdrehmoment begrenzen", "Nachgiebige Elemente verwenden"}},
|
||||
|
||||
@@ -73,7 +73,15 @@ func TestProtectiveMeasures_HazardCategoryNotEmpty(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_Count160 verifies at least 160 measures exist.
|
||||
// TestProtectiveMeasures_Count200 verifies exactly 200 measures exist.
|
||||
func TestProtectiveMeasures_Count200(t *testing.T) {
|
||||
entries := GetProtectiveMeasureLibrary()
|
||||
if len(entries) != 200 {
|
||||
t.Fatalf("got %d protective measures, want exactly 200", len(entries))
|
||||
}
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_Count160 verifies at least 160 measures exist (legacy gate).
|
||||
func TestProtectiveMeasures_Count160(t *testing.T) {
|
||||
entries := GetProtectiveMeasureLibrary()
|
||||
if len(entries) < 160 {
|
||||
@@ -81,6 +89,76 @@ func TestProtectiveMeasures_Count160(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_NormReferencesPopulated verifies most measures have norm refs.
|
||||
func TestProtectiveMeasures_NormReferencesPopulated(t *testing.T) {
|
||||
withRefs := 0
|
||||
for _, e := range GetProtectiveMeasureLibrary() {
|
||||
if len(e.NormReferences) > 0 {
|
||||
withRefs++
|
||||
}
|
||||
}
|
||||
total := len(GetProtectiveMeasureLibrary())
|
||||
threshold := total * 90 / 100
|
||||
if withRefs < threshold {
|
||||
t.Errorf("only %d/%d measures have NormReferences, want at least %d", withRefs, total, threshold)
|
||||
}
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_DesignProtectionInfoDistribution verifies balanced distribution.
|
||||
func TestProtectiveMeasures_DesignProtectionInfoDistribution(t *testing.T) {
|
||||
types := make(map[string]int)
|
||||
for _, e := range GetProtectiveMeasureLibrary() {
|
||||
types[e.ReductionType]++
|
||||
}
|
||||
design := types["design"]
|
||||
protection := types["protection"]
|
||||
information := types["information"]
|
||||
|
||||
if design < 50 {
|
||||
t.Errorf("design measures: %d, want >= 50", design)
|
||||
}
|
||||
if protection < 70 {
|
||||
t.Errorf("protection measures: %d, want >= 70", protection)
|
||||
}
|
||||
if information < 50 {
|
||||
t.Errorf("information measures: %d, want >= 50", information)
|
||||
}
|
||||
t.Logf("Distribution: design=%d, protection=%d, information=%d", design, protection, information)
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_IDSequential verifies IDs run M001-M200 without gaps.
|
||||
func TestProtectiveMeasures_IDSequential(t *testing.T) {
|
||||
entries := GetProtectiveMeasureLibrary()
|
||||
for i, e := range entries {
|
||||
expected := "M" + padID(i+1)
|
||||
if e.ID != expected {
|
||||
t.Errorf("entries[%d]: got ID %q, want %q", i, e.ID, expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func padID(n int) string {
|
||||
if n < 10 {
|
||||
return "00" + itoa(n)
|
||||
}
|
||||
if n < 100 {
|
||||
return "0" + itoa(n)
|
||||
}
|
||||
return itoa(n)
|
||||
}
|
||||
|
||||
func itoa(n int) string {
|
||||
if n == 0 {
|
||||
return "0"
|
||||
}
|
||||
s := ""
|
||||
for n > 0 {
|
||||
s = string(rune('0'+n%10)) + s
|
||||
n /= 10
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// TestProtectiveMeasures_SubTypesPresent verifies subtypes are used.
|
||||
func TestProtectiveMeasures_SubTypesPresent(t *testing.T) {
|
||||
subtypes := make(map[string]int)
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
package iace
|
||||
|
||||
// GetCyberExtendedPatterns2 returns 15 hazard patterns (HP830-HP844)
|
||||
// for AI/ML-specific hazards in industrial automation systems.
|
||||
func GetCyberExtendedPatterns2() []HazardPattern {
|
||||
return []HazardPattern{
|
||||
// ================================================================
|
||||
// KI/ML spezifisch (HP830-HP844)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP830", NameDE: "KI-Modell erkennt Werkstueck nicht — Kollision", NameEN: "AI model fails to detect workpiece — collision",
|
||||
RequiredComponentTags: []string{"has_ai", "sensor_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"false_classification", "mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M102", "M003"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 90,
|
||||
ScenarioDE: "KI-basierte Objekterkennung erkennt Werkstueck oder Hindernis nicht; Roboter oder Maschine kollidiert.",
|
||||
TriggerDE: "Unbekanntes Objekt, ungelernte Beleuchtung, Sensorverschmutzung, Gegenstand ausserhalb Trainingsdaten",
|
||||
HarmDE: "Kollision mit Werkstueck oder Person, mechanische Beschaedigung, Verletzung",
|
||||
AffectedDE: "Bedienpersonal im Arbeitsraum des KI-Systems",
|
||||
ZoneDE: "Arbeitsraum des Roboters, Kamerasichtfeld, Greiferbereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP831", NameDE: "Trainingsdaten-Bias fuehrt zu falscher Klassifikation", NameEN: "Training data bias leads to wrong classification",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"unintended_bias", "false_classification"},
|
||||
SuggestedMeasureIDs: []string{"M101"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "Einseitige Trainingsdaten fuehren dazu, dass das KI-Modell bestimmte Varianten systematisch falsch klassifiziert.",
|
||||
TriggerDE: "Underrepresentation bestimmter Werkstuecktypen, Chargen oder Umgebungsbedingungen im Trainingsdatensatz",
|
||||
HarmDE: "Fehlerhafte Qualitaetsentscheidung, fehlerhafte Teile gelangen in Umlauf",
|
||||
AffectedDE: "Endkunden (fehlerhafte Produkte), Qualitaetsverantwortliche",
|
||||
ZoneDE: "Alle KI-Entscheidungspunkte in der Qualitaetskontrolle",
|
||||
DefaultSeverity: 3, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP832", NameDE: "Adversarial Input taeuscht Bilderkennungssystem", NameEN: "Adversarial input deceives image recognition",
|
||||
RequiredComponentTags: []string{"has_ai", "sensor_part"},
|
||||
RequiredEnergyTags: []string{"ai_model", "cyber"},
|
||||
GeneratedHazardCats: []string{"data_poisoning", "sensor_spoofing"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M116"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15", "E16"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "Gezielt veraenderte Eingabedaten (Adversarial Patches) taeuschen das Bilderkennungssystem und erzwingen Fehlklassifikation.",
|
||||
TriggerDE: "Aufkleben eines Adversarial Patches auf Werkstueck, Manipulation der Kamera-Eingangssignale",
|
||||
HarmDE: "Falsche Klassifikation, defektes Teil als gut erkannt, Sicherheitspruefung umgangen",
|
||||
AffectedDE: "Endnutzer der Produkte, Bedienpersonal",
|
||||
ZoneDE: "Kamerasichtfeld, Bildverarbeitungssystem, Qualitaetskontrollstation",
|
||||
DefaultSeverity: 4, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP833", NameDE: "Model Drift verschlechtert Qualitaet schleichend", NameEN: "Model drift gradually degrades quality",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"model_drift"},
|
||||
SuggestedMeasureIDs: []string{"M103"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "KI-Modell verliert durch veraenderte Prozessbedingungen ueber Wochen schleichend an Genauigkeit.",
|
||||
TriggerDE: "Materialwechsel, Werkzeugverschleiss, saisonale Schwankungen, kein Monitoring der Modellleistung",
|
||||
HarmDE: "Zunehmende Fehlentscheidungen, nicht erkannte Defekte, verzoegerte Erkennung",
|
||||
AffectedDE: "Qualitaetsverantwortliche, Endkunden",
|
||||
ZoneDE: "Alle Entscheidungspunkte des driftenden KI-Modells",
|
||||
DefaultSeverity: 3, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP834", NameDE: "KI ueberschreibt Sicherheitsparameter", NameEN: "AI overwrites safety parameters",
|
||||
RequiredComponentTags: []string{"has_ai", "programmable"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"software_fault", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M104"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E07", "E15"},
|
||||
Priority: 95,
|
||||
RequiresExpertCalculation: true,
|
||||
ExpertHintDE: "KI-System darf keine schreibenden Zugriffe auf Sicherheitsparameter haben; Validierung nach EN ISO 13849 und IEC 61508.",
|
||||
ScenarioDE: "KI-Optimierungsalgorithmus aendert Sicherheitsgrenzen (Geschwindigkeit, Kraft, Druck) ohne menschliche Freigabe.",
|
||||
TriggerDE: "Keine Write-Protection fuer Sicherheitsparameter, fehlende Parameterverriegelung, RL-Agent optimiert Durchsatz",
|
||||
HarmDE: "Ueberschreiten der Sicherheitsgrenzen, gefaehrliche Geschwindigkeit/Kraft, Verletzung oder Tod",
|
||||
AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich",
|
||||
ZoneDE: "Alle sicherheitsrelevanten Achsen und Funktionen",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP835", NameDE: "Fehlende Erklaerbarkeit — Bediener vertraut falsch", NameEN: "Lack of explainability — operator misplaces trust",
|
||||
RequiredComponentTags: []string{"has_ai", "user_interface"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"false_classification"},
|
||||
SuggestedMeasureIDs: []string{"M101"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 70,
|
||||
ScenarioDE: "KI-System gibt Empfehlung ohne Begruendung; Bediener folgt blindlings einer fehlerhaften Empfehlung.",
|
||||
TriggerDE: "Fehlende Explainability, keine Konfidenzanzeige, Automation Bias des Bedieners",
|
||||
HarmDE: "Fehlentscheidung auf Basis falscher KI-Empfehlung, Qualitaetsmangel, Sicherheitsrisiko",
|
||||
AffectedDE: "Bedienpersonal, Qualitaetsverantwortliche",
|
||||
ZoneDE: "HMI des KI-Systems, Entscheidungs-Dashboard",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP836", NameDE: "KI-Entscheidung im Grenzbereich (Edge Case)", NameEN: "AI decision in edge case",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"false_classification"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M102"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "KI trifft bei Eingabedaten nahe der Entscheidungsgrenze unzuverlaessige Entscheidungen mit schwankender Konfidenz.",
|
||||
TriggerDE: "Werkstueck exakt an der Gut/Schlecht-Grenze, unbekannte Kombination von Merkmalen",
|
||||
HarmDE: "Instabile Entscheidungen, abwechselnd gut/schlecht bei identischem Teil, falsche Sortierung",
|
||||
AffectedDE: "Qualitaetsverantwortliche, Endkunden",
|
||||
ZoneDE: "Entscheidungspunkte des KI-Klassifikators",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP837", NameDE: "Reinforcement Learning fuehrt zu unerwartetem Verhalten", NameEN: "Reinforcement learning causes unexpected behavior",
|
||||
RequiredComponentTags: []string{"has_ai", "programmable"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"software_fault"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M102", "M103"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "RL-Agent entdeckt unbeabsichtigte Strategie zur Reward-Maximierung, die gefaehrliches Verhalten einschliesst.",
|
||||
TriggerDE: "Unvollstaendige Reward-Funktion, fehlende Safety Constraints, Agent findet Exploit in Simulation",
|
||||
HarmDE: "Unerwartete Maschinenbewegung, Reward Hacking fuehrt zu gefaehrlicher Aktion",
|
||||
AffectedDE: "Bedienpersonal, Personen im Wirkbereich des RL-gesteuerten Systems",
|
||||
ZoneDE: "Gesamter Aktionsraum des RL-Agenten",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP838", NameDE: "KI verarbeitet personenbezogene Daten (DSGVO-Verstoss)", NameEN: "AI processes personal data (GDPR violation)",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"unintended_bias"},
|
||||
SuggestedMeasureIDs: []string{"M101"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 70,
|
||||
ScenarioDE: "KI-System verarbeitet Kamerabilder mit erkennbaren Personen ohne Einwilligung oder Rechtsgrundlage.",
|
||||
TriggerDE: "Kamera erfasst Gesichter, Kennzeichen oder biometrische Daten; fehlende Anonymisierung",
|
||||
HarmDE: "DSGVO-Bussgeld, Persoenlichkeitsrechtsverletzung, Vertrauensverlust",
|
||||
AffectedDE: "Betroffene Personen (Mitarbeiter, Besucher), Datenschutzbeauftragter",
|
||||
ZoneDE: "Kameraerfassungsbereich, Datenverarbeitungssystem",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP839", NameDE: "KI-System nicht validiert fuer Sicherheitsfunktion", NameEN: "AI system not validated for safety function",
|
||||
RequiredComponentTags: []string{"has_ai", "safety_device"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M104"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E07", "E15"},
|
||||
Priority: 95,
|
||||
RequiresExpertCalculation: true,
|
||||
ExpertHintDE: "KI in Sicherheitsfunktionen erfordert Validierung nach IEC 61508 SIL-Anforderungen und EN ISO 13849 PL-Nachweis.",
|
||||
ScenarioDE: "KI-basierte Sicherheitsfunktion (z. B. Personenerkennung fuer Stopp) wurde nicht nach Sicherheitsnorm validiert.",
|
||||
TriggerDE: "KI als Sicherheitskomponente ohne SIL/PL-Berechnung eingesetzt, fehlende Verifikation",
|
||||
HarmDE: "Sicherheitsfunktion versagt im Anforderungsfall, Person wird nicht erkannt, kein Stopp",
|
||||
AffectedDE: "Bedienpersonal, alle Personen im Schutzbereich",
|
||||
ZoneDE: "Ueberwachungsbereich der KI-Sicherheitsfunktion",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP840", NameDE: "Concept Drift bei veraendertem Prozess", NameEN: "Concept drift from changed process",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"model_drift"},
|
||||
SuggestedMeasureIDs: []string{"M103"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "Grundlegende Aenderung des Produktionsprozesses macht das KI-Modell ungueltig, da es auf alten Zusammenhaengen basiert.",
|
||||
TriggerDE: "Neues Material, neue Maschine, geaenderter Prozessablauf ohne Re-Training des Modells",
|
||||
HarmDE: "Systematische Fehlentscheidungen, alle Teile falsch bewertet, Qualitaetseinbruch",
|
||||
AffectedDE: "Qualitaetsverantwortliche, Endkunden",
|
||||
ZoneDE: "Alle vom KI-Modell ueberwachten Prozessschritte",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP841", NameDE: "KI-Halluzination meldet falschen Zustand", NameEN: "AI hallucination reports false state",
|
||||
RequiredComponentTags: []string{"has_ai", "user_interface"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"false_classification"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M102"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "KI-System meldet einen Zustand mit hoher Konfidenz, der in Wirklichkeit nicht vorliegt (Halluzination).",
|
||||
TriggerDE: "Eingangsdaten ausserhalb des Trainingsbereichs, Ueberanpassung (Overfitting), Sensorrauschen",
|
||||
HarmDE: "Fehlalarm fuehrt zu unnoetigem Stopp oder — schlimmer — falsche Entwarnung bei realem Problem",
|
||||
AffectedDE: "Bedienpersonal, das auf Basis der KI-Meldung handelt",
|
||||
ZoneDE: "HMI-Anzeige, Alarm-Management-System",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP842", NameDE: "Abhaengigkeit von Cloud-Service fuer Sicherheitsfunktion", NameEN: "Dependency on cloud service for safety function",
|
||||
RequiredComponentTags: []string{"has_ai", "networked"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M104", "M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15", "E17"},
|
||||
Priority: 90,
|
||||
ScenarioDE: "Sicherheitsrelevante KI-Funktion benoetigt Cloud-Verbindung; bei Netzwerkausfall ist die Sicherheit nicht gewaehrleistet.",
|
||||
TriggerDE: "Internet-Ausfall, Cloud-Provider-Stoerung, DNS-Fehler, Latenz ueberschreitet Zeitlimit",
|
||||
HarmDE: "Sicherheitsfunktion faellt aus, kein Fallback, Maschine laeuft ohne KI-Ueberwachung weiter",
|
||||
AffectedDE: "Bedienpersonal, Personen im Ueberwachungsbereich",
|
||||
ZoneDE: "Gesamter Schutzbereich der KI-Sicherheitsfunktion, Netzwerkverbindung",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP843", NameDE: "Fehlende Redundanz bei KI-basierter Qualitaetskontrolle", NameEN: "Missing redundancy in AI-based quality control",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"false_classification"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M102"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "KI-System ist alleiniger Qualitaetsgate ohne Backup-Pruefung; bei KI-Ausfall passieren alle Teile unkontrolliert.",
|
||||
TriggerDE: "KI-System faellt aus, kein manueller Rueckfallprozess definiert, Bypass im Stoerfall",
|
||||
HarmDE: "Fehlerhafte Produkte gelangen zum Kunden, Rueckrufaktion, Sicherheitsrisiko bei Sicherheitsteilen",
|
||||
AffectedDE: "Endkunden, Qualitaetsverantwortliche",
|
||||
ZoneDE: "Qualitaetskontrollstation, Auslaufbereich der Produktion",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP844", NameDE: "Bias in Predictive Maintenance — Wartung zu spaet", NameEN: "Bias in predictive maintenance — maintenance too late",
|
||||
RequiredComponentTags: []string{"has_ai"},
|
||||
RequiredEnergyTags: []string{"ai_model"},
|
||||
GeneratedHazardCats: []string{"model_drift"},
|
||||
SuggestedMeasureIDs: []string{"M103"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E15", "E21"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "KI-basierte Wartungsvorhersage unterschaetzt Verschleiss und empfiehlt Wartung zu spaet.",
|
||||
TriggerDE: "Einseitige Trainingsdaten (nur Neuzustand), kein Monitoring der Vorhersagequalitaet, Betriebsbedingungen geaendert",
|
||||
HarmDE: "Unerwarteter Maschinenausfall, Bauteilversagen waehrend Betrieb, Folgeschaeden",
|
||||
AffectedDE: "Bedienpersonal bei ploetzlichem Ausfall, Wartungspersonal",
|
||||
ZoneDE: "Alle ueberwachten Verschleissteile und Lager",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,316 @@
|
||||
package iace
|
||||
|
||||
// GetCyberExtendedPatterns3 returns 20 hazard patterns (HP845-HP864)
|
||||
// for network/communication failures and human-machine interaction (HMI)
|
||||
// hazards in industrial control systems.
|
||||
func GetCyberExtendedPatterns3() []HazardPattern {
|
||||
return []HazardPattern{
|
||||
// ================================================================
|
||||
// Netzwerk / Kommunikation (HP845-HP854)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP845", NameDE: "Feldbusausfall (PROFINET/EtherCAT/Modbus)", NameEN: "Fieldbus failure (PROFINET/EtherCAT/Modbus)",
|
||||
RequiredComponentTags: []string{"networked", "it_component"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M114", "M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "Kompletter Feldbusausfall trennt SPS von allen Antrieben und Sensoren; Maschine verliert Kontrolle.",
|
||||
TriggerDE: "Kabelbruch, Switch-Ausfall, EMV-Stoerung, Stecker oxidiert, Master-Ausfall",
|
||||
HarmDE: "Unkontrollierter Maschinenstillstand, Antriebe im letzten Zustand, Last faellt herab",
|
||||
AffectedDE: "Bedienpersonal, Personen im Maschinenbereich",
|
||||
ZoneDE: "Gesamte Maschine (alle Feldbus-Teilnehmer betroffen)",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP846", NameDE: "Telegrammverlust in Echtzeit-Kommunikation", NameEN: "Telegram loss in real-time communication",
|
||||
RequiredComponentTags: []string{"networked"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M114", "M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "Einzelne Telegramme im Echtzeit-Bussystem gehen verloren; Antrieb erhaelt keinen neuen Sollwert und behlt den alten.",
|
||||
TriggerDE: "EMV-Stoerung, Kabelknicke, Switch-Ueberlast, defekter Busteilnehmer stoert Zyklus",
|
||||
HarmDE: "Antrieb faehrt mit veraltetem Sollwert weiter, Position stimmt nicht mehr, Kollision",
|
||||
AffectedDE: "Bedienpersonal bei Mehrachssystemen",
|
||||
ZoneDE: "Bewegungsbereich der betroffenen Achse, Synchron-Verfahrbereiche",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP847", NameDE: "Jitter in Synchronisation von Achssystem", NameEN: "Jitter in multi-axis synchronization",
|
||||
RequiredComponentTags: []string{"networked", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure", "mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M114"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14", "E17"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "Zeitschwankungen (Jitter) in der Echtzeit-Kommunikation fuehren zu Synchronisationsverlust in Mehrachssystemen.",
|
||||
TriggerDE: "Ungeeigneter Switch (nicht echtzeitfaehig), Cross-Traffic, falsches VLAN-Setup",
|
||||
HarmDE: "Achsen laufen auseinander, mechanische Verspannung, Kollision zwischen Achsen",
|
||||
AffectedDE: "Bedienpersonal an synchronisierten Mehrachssystemen",
|
||||
ZoneDE: "Gesamter Verfahrbereich der synchronisierten Achsen",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP848", NameDE: "Gateway-Ausfall zwischen Feld- und Leitebene", NameEN: "Gateway failure between field and control level",
|
||||
RequiredComponentTags: []string{"networked", "it_component"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 70,
|
||||
ScenarioDE: "Gateway zwischen Feldbus und Leitebene faellt aus; SCADA verliert Sicht auf Prozess, Alarme kommen nicht durch.",
|
||||
TriggerDE: "Hardware-Defekt, Software-Absturz, Speicherueberlauf im Gateway, Firmware-Fehler",
|
||||
HarmDE: "Verlust der Prozessueberwachung, Alarme werden nicht weitergeleitet, Blindflug am Leitstand",
|
||||
AffectedDE: "Leitstand-Personal, SCADA-Betreiber",
|
||||
ZoneDE: "Gateway, Uebergabepunkt Feldbus/Ethernet, SCADA-Server",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP849", NameDE: "Firmware-Inkompatibilitaet nach Update", NameEN: "Firmware incompatibility after update",
|
||||
RequiredComponentTags: []string{"has_software", "networked"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"update_failure", "communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M138", "M146"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "Firmware-Update eines Busteilnehmers ist inkompatibel mit der SPS-Version; Kommunikation bricht zusammen.",
|
||||
TriggerDE: "Teilnehmer einzeln aktualisiert ohne Kompatibilitaetspruefung, Breaking Change in neuer Version",
|
||||
HarmDE: "Busausfall, Antrieb nicht erreichbar, unkontrollierter Zustand",
|
||||
AffectedDE: "Wartungspersonal (Update-Vorgang), anschliessend Bedienpersonal",
|
||||
ZoneDE: "Aktualisierter Busteilnehmer, gesamter Busstrang bei Master-Update",
|
||||
DefaultSeverity: 3, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP850", NameDE: "IP-Konflikt im Maschinennetzwerk", NameEN: "IP conflict in machine network",
|
||||
RequiredComponentTags: []string{"networked"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M114"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 65,
|
||||
ScenarioDE: "Zwei Geraete im Maschinennetzwerk haben dieselbe IP-Adresse; Kommunikation ist unzuverlaessig.",
|
||||
TriggerDE: "Manuelles IP-Management ohne Dokumentation, Ersatzgeraet mit werksseitiger IP, DHCP-Fehler",
|
||||
HarmDE: "Sporadische Kommunikationsausfaelle, Steuerungsbefehle an falsches Geraet, undeterministisches Verhalten",
|
||||
AffectedDE: "Bedienpersonal (schwer erkennbare Stoerung)",
|
||||
ZoneDE: "Maschinennetzwerk, betroffene IP-Teilnehmer",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP851", NameDE: "Zeitsynchronisation verloren — Sequenzfehler", NameEN: "Time synchronization lost — sequence error",
|
||||
RequiredComponentTags: []string{"networked", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure", "software_fault"},
|
||||
SuggestedMeasureIDs: []string{"M114"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14", "E17"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "PTP/NTP-Synchronisation im Netzwerk geht verloren; zeitgesteuerte Aktionen werden asynchron ausgefuehrt.",
|
||||
TriggerDE: "Grand-Master-Clock faellt aus, Kabelbruch zum Zeitserver, Switch ohne PTP-Support",
|
||||
HarmDE: "Achsen bewegen sich nicht mehr synchron, Sequenzen in falscher Reihenfolge",
|
||||
AffectedDE: "Bedienpersonal bei synchronisierten Anlagen",
|
||||
ZoneDE: "Alle zeitgesteuerten Stationen und Achsen",
|
||||
DefaultSeverity: 4, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP852", NameDE: "Bandbreite-Ueberlastung verzoegert Sicherheitsfunktion", NameEN: "Bandwidth overload delays safety function",
|
||||
RequiredComponentTags: []string{"networked", "safety_device"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M114", "M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E07", "E17"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "Netzwerk-Ueberlastung verzoegert sicherheitsrelevante Telegramme ueber die maximale Reaktionszeit hinaus.",
|
||||
TriggerDE: "Datenintensiver Prozess (Vision-System) auf gleichem Netzwerk, Broadcast-Storm, fehlende QoS-Konfiguration",
|
||||
HarmDE: "Sicherheitsfunktion reagiert zu spaet, Nachlaufweg vergroessert sich, Schutzfunktion unwirksam",
|
||||
AffectedDE: "Bedienpersonal im Schutzbereich der verzoegerten Sicherheitsfunktion",
|
||||
ZoneDE: "Netzwerkstrecke zum Safety-Controller, gesamter Schutzbereich",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP853", NameDE: "Fehlerhafte Routing-Konfiguration", NameEN: "Faulty routing configuration",
|
||||
RequiredComponentTags: []string{"networked", "it_component"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M114"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 60,
|
||||
ScenarioDE: "Falsche Routing-Konfiguration leitet Steuerbefehle an falsches Teilnetz oder laesst sie ins Leere laufen.",
|
||||
TriggerDE: "Fehlkonfiguration nach Netzwerkaenderung, falsches Default-Gateway, Route Loop",
|
||||
HarmDE: "Steuerbefehle kommen nicht an, Antriebe reagieren nicht, Fehlzuordnung von Befehlen",
|
||||
AffectedDE: "Bedienpersonal, Netzwerkadministrator",
|
||||
ZoneDE: "Router, Layer-3-Switches, Netzwerksegmentierung",
|
||||
DefaultSeverity: 3, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP854", NameDE: "Switch-Ausfall in Ring-Topologie", NameEN: "Switch failure in ring topology",
|
||||
RequiredComponentTags: []string{"networked", "it_component"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure"},
|
||||
SuggestedMeasureIDs: []string{"M115"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "Managed Switch in Ring-Topologie faellt aus; Ring-Redundanz uebernimmt, aber Umschaltzeit stoert Echtzeit-Kommunikation.",
|
||||
TriggerDE: "Switch-Hardware-Defekt, Spannungsausfall am Switch, Ring-Rekonfiguration dauert zu lange (>Zykluszeit)",
|
||||
HarmDE: "Kurzzeitiger Kommunikationsausfall, Antriebe verlieren Sollwerte, Synchronisationsverlust",
|
||||
AffectedDE: "Bedienpersonal bei zeitkritischen Prozessen",
|
||||
ZoneDE: "Ring-Netzwerk, alle Teilnehmer hinter dem ausgefallenen Switch",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
|
||||
// ================================================================
|
||||
// Mensch-Maschine-Interaktion / HMI (HP855-HP864)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP855", NameDE: "HMI friert ein — Bediener handelt blind", NameEN: "HMI freezes — operator acts blind",
|
||||
RequiredComponentTags: []string{"user_interface", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"software_fault"},
|
||||
SuggestedMeasureIDs: []string{"M103", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "HMI-Bildschirm friert ein und zeigt veraltete Prozesswerte; Bediener trifft Entscheidungen auf Basis falscher Anzeige.",
|
||||
TriggerDE: "Software-Absturz der HMI-Anwendung, Speicherueberlauf, Grafiktreiber-Fehler",
|
||||
HarmDE: "Fehlbedienung aufgrund veralteter Anzeige, Eingriff in falschen Prozess, verpasster Alarm",
|
||||
AffectedDE: "Bedienpersonal am eingefrorenen HMI",
|
||||
ZoneDE: "Leitstand, HMI-Terminal, alle ueberwachten Prozessbereiche",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP856", NameDE: "Alarmueberschwemmung (Alarm Flooding)", NameEN: "Alarm flooding",
|
||||
RequiredComponentTags: []string{"user_interface", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141", "M149"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "Hunderte Alarme erscheinen gleichzeitig; Bediener kann kritischen Alarm nicht identifizieren.",
|
||||
TriggerDE: "Kaskadenartige Stoerung, schlechtes Alarm-Design, keine Alarm-Priorisierung, zu niedrige Schwellwerte",
|
||||
HarmDE: "Kritischer Alarm wird uebersehen, verzoegerte Reaktion, falsche Priorisierung",
|
||||
AffectedDE: "Bedienpersonal am Leitstand",
|
||||
ZoneDE: "Leitstand, Alarm-Management-System",
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP857", NameDE: "Falscher Betriebsartenwahlschalter", NameEN: "Wrong operating mode selector",
|
||||
RequiredComponentTags: []string{"user_interface", "programmable"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"configuration_error"},
|
||||
SuggestedMeasureIDs: []string{"M145", "M121"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "Bediener waehlt falsche Betriebsart (z. B. Automatik statt Einrichten); Maschine startet mit voller Geschwindigkeit.",
|
||||
TriggerDE: "Verwechslung der Betriebsart, Schluesselschalter nicht verriegelt, fehlende Anzeige der aktiven Betriebsart",
|
||||
HarmDE: "Unerwartete Maschinenbewegung bei voller Geschwindigkeit, Quetschung, Kollision",
|
||||
AffectedDE: "Einrichter, Bedienpersonal im Maschinenbereich",
|
||||
ZoneDE: "Gesamte Maschine, insbesondere Bereiche die bei Einrichten zugaenglich sind",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP858", NameDE: "Display zeigt falschen Prozesswert", NameEN: "Display shows wrong process value",
|
||||
RequiredComponentTags: []string{"user_interface", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"software_fault"},
|
||||
SuggestedMeasureIDs: []string{"M101", "M103"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "HMI zeigt falschen Messwert (z. B. falsche Zuordnung von Sensor zu Anzeige) und Bediener reagiert falsch.",
|
||||
TriggerDE: "Programmierfehler in der Visualisierung, falscher Tag zugeordnet, Skalierungsfehler",
|
||||
HarmDE: "Fehlbedienung auf Basis falscher Information, Prozess laeuft aus dem Toleranzbereich",
|
||||
AffectedDE: "Bedienpersonal, das sich auf die Anzeige verlaesst",
|
||||
ZoneDE: "HMI-Display, Prozessabbild auf dem Leitstand",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP859", NameDE: "Bediener umgeht Safety-Login am HMI", NameEN: "Operator bypasses safety login on HMI",
|
||||
RequiredComponentTags: []string{"user_interface", "has_software"},
|
||||
RequiredEnergyTags: []string{"cyber"},
|
||||
GeneratedHazardCats: []string{"unauthorized_access", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M111", "M112"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E16"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "Bediener umgeht Login-Bildschirm am HMI und erlangt Zugang zu sicherheitsrelevanten Parametern.",
|
||||
TriggerDE: "Gemeinsames Passwort, Post-It mit Passwort am Monitor, Auto-Login konfiguriert",
|
||||
HarmDE: "Unberechtigte Aenderung von Sicherheitsparametern, Deaktivierung von Schutzfunktionen",
|
||||
AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich",
|
||||
ZoneDE: "HMI-Terminal, Parameterseiten der Steuerung",
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP860", NameDE: "Touch-Fehlbedienung (nasse Finger/Handschuhe)", NameEN: "Touch misoperation (wet fingers/gloves)",
|
||||
RequiredComponentTags: []string{"user_interface"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
||||
Priority: 65,
|
||||
ScenarioDE: "Touchscreen reagiert auf nasse Finger, Handschuhe oder Wassertropfen und loest unbeabsichtigte Funktion aus.",
|
||||
TriggerDE: "Regen, Schwitzhaende, Oelfilm auf Handschuh, Wasserspritzer auf Display",
|
||||
HarmDE: "Unbeabsichtigtes Starten einer Funktion, Parameterwechsel, Betriebsart-Umschaltung",
|
||||
AffectedDE: "Bedienpersonal mit Handschuhen oder in nassem Umfeld",
|
||||
ZoneDE: "Touch-HMI, Panel-PC, mobile Bediengeraete",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP861", NameDE: "Sprachbarriere bei mehrsprachiger Belegschaft", NameEN: "Language barrier in multilingual workforce",
|
||||
RequiredComponentTags: []string{"user_interface"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E24", "E25"},
|
||||
Priority: 60,
|
||||
ScenarioDE: "Alarmmeldungen und Sicherheitshinweise am HMI sind nur in einer Sprache; Bediener versteht Warnung nicht.",
|
||||
TriggerDE: "Einsprachiges HMI, fremdsprachige Zeitarbeitskraefte, fehlende Piktogramme",
|
||||
HarmDE: "Warnung nicht verstanden, falsche Reaktion auf Alarm, Sicherheitsunterweisung nicht begriffen",
|
||||
AffectedDE: "Nicht-muttersprachliche Bediener, Zeitarbeitskraefte, Leiharbeiter",
|
||||
ZoneDE: "HMI-Terminal, Sicherheitsbeschilderung, Alarmanzeigen",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP862", NameDE: "Nachtschicht-Muedigkeit fuehrt zu Fehlreaktion", NameEN: "Night shift fatigue leads to wrong reaction",
|
||||
RequiredComponentTags: []string{"user_interface"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E25"},
|
||||
Priority: 60,
|
||||
ScenarioDE: "Muedigkeit in der Nachtschicht verzoegert Reaktionszeit und erhoeht Wahrscheinlichkeit fuer Fehlbedienung.",
|
||||
TriggerDE: "Lange Schichtdauer, monotone Ueberwachungsaufgabe, fehlende Pausenregelung",
|
||||
HarmDE: "Verzoegerte Reaktion auf Alarm, Einschlafen am Leitstand, Fehlbedienung",
|
||||
AffectedDE: "Nachtschicht-Personal, alle von der Ueberwachung abhaengigen Personen",
|
||||
ZoneDE: "Leitstand, Ueberwachungsstationen",
|
||||
DefaultSeverity: 3, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP863", NameDE: "Informationsueberlastung am Bedienterminal", NameEN: "Information overload at operator terminal",
|
||||
RequiredComponentTags: []string{"user_interface", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 55,
|
||||
ScenarioDE: "Zu viele Informationen, Trends und Werte auf einem Bildschirm ueberfordern den Bediener kognitiv.",
|
||||
TriggerDE: "Schlechtes UI-Design, zu viele gleichzeitig angezeigte Werte, fehlende Informationshierarchie",
|
||||
HarmDE: "Kritische Information wird uebersehen, verzoegerte Erkennung von Anomalien",
|
||||
AffectedDE: "Bedienpersonal, Leitstand-Operatoren",
|
||||
ZoneDE: "HMI-Bildschirme, SCADA-Oberflaeche, Leitstand",
|
||||
DefaultSeverity: 2, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP864", NameDE: "Fehlende Rueckmeldung — Bediener drueckt erneut", NameEN: "Missing feedback — operator presses again",
|
||||
RequiredComponentTags: []string{"user_interface"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 65,
|
||||
ScenarioDE: "HMI gibt keine Rueckmeldung auf Tastendruck; Bediener drueckt erneut und loest unbeabsichtigte Doppelaktion aus.",
|
||||
TriggerDE: "Fehlende akustische/visuelle Quittierung, langsame HMI-Reaktion, Netzwerk-Latenz",
|
||||
HarmDE: "Doppelter Befehl (z. B. doppelter Zyklus-Start), Maschine startet erneut waehrend Entnahme",
|
||||
AffectedDE: "Bedienpersonal",
|
||||
ZoneDE: "HMI-Taster/Touchscreen, Gesamte Maschine bei Doppelausloesung",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -95,17 +95,18 @@ func TestGetExtendedHazardPatterns_ReferencedEvidenceExist(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestPatternEngine_CombinedCount verifies the engine has both builtin + extended.
|
||||
// TestPatternEngine_CombinedCount verifies the engine has all registered pattern sources.
|
||||
func TestPatternEngine_CombinedCount(t *testing.T) {
|
||||
engine := NewPatternEngine()
|
||||
builtinCount := len(GetBuiltinHazardPatterns())
|
||||
extendedCount := len(GetExtendedHazardPatterns())
|
||||
totalExpected := builtinCount + extendedCount
|
||||
minExpected := builtinCount + extendedCount
|
||||
|
||||
if len(engine.patterns) != totalExpected {
|
||||
t.Errorf("engine has %d patterns, want %d (builtin %d + extended %d)",
|
||||
len(engine.patterns), totalExpected, builtinCount, extendedCount)
|
||||
if len(engine.patterns) < minExpected {
|
||||
t.Errorf("engine has %d patterns, want at least %d (builtin %d + extended %d)",
|
||||
len(engine.patterns), minExpected, builtinCount, extendedCount)
|
||||
}
|
||||
t.Logf("engine has %d total patterns", len(engine.patterns))
|
||||
}
|
||||
|
||||
// TestPatternEngine_ExtendedPatternsMatch verifies extended patterns fire correctly.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,996 @@
|
||||
package iace
|
||||
|
||||
// GetFinalPatternsD returns 81 lifecycle, special-situation, and
|
||||
// residual-risk hazard patterns (HP1255-HP1335).
|
||||
func GetFinalPatternsD() []HazardPattern {
|
||||
return []HazardPattern{
|
||||
// === Beschaffung (5) ===
|
||||
{
|
||||
ID: "HP1255", NameDE: "Konformitaetserklaerung fehlt", NameEN: "Declaration of conformity missing",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Maschine ohne Konformitaetserklaerung in Betrieb",
|
||||
TriggerDE: "Import ohne Pruefung, fehlende Dokumentation", HarmDE: "Unbekannte Restrisiken",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1256", NameDE: "CE-Kennzeichnung fehlt/gefaelscht", NameEN: "CE marking missing/fake",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 75, ScenarioDE: "Maschine ohne gueltige CE-Kennzeichnung im Einsatz",
|
||||
TriggerDE: "Gefaelschtes CE, China Export verwechselt", HarmDE: "Nicht normkonforme Sicherheit",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1257", NameDE: "Betriebsanleitung fehlt/unvollstaendig", NameEN: "Operating manual missing/incomplete",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Keine Anleitung fuer sicheren Betrieb vorhanden",
|
||||
TriggerDE: "Verloren, nicht mitgeliefert, falsche Sprache", HarmDE: "Fehlbedienung, fehlende Warnungen",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1258", NameDE: "Nachruestung ohne Dokumentation", NameEN: "Retrofit without documentation",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Maschine wurde umgebaut ohne Dokumentation",
|
||||
TriggerDE: "Eigenumbau, fehlende Aenderungsdoku", HarmDE: "Unbekannte neue Gefahrstellen",
|
||||
AffectedDE: "Bedienpersonal, Wartung", ZoneDE: "Umgebauter Bereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1259", NameDE: "Gebrauchtmaschine ohne Pruefung", NameEN: "Used machine without inspection",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 75, ScenarioDE: "Gebrauchtmaschine ohne Zustandspruefung eingesetzt",
|
||||
TriggerDE: "Kauf ohne Pruefung, fehlender Sachverstaendiger", HarmDE: "Verdeckte Defekte, Verschleiss",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
// === Konstruktion/Design (5) ===
|
||||
{
|
||||
ID: "HP1260", NameDE: "Scharfe Kante am Maschinengehaeuse", NameEN: "Sharp edge on machine housing",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Person schneidet sich an scharfer Blechkante",
|
||||
TriggerDE: "Unentgratete Kante, fehlende Abdeckung", HarmDE: "Schnittwunde Hand/Arm",
|
||||
AffectedDE: "Bedienpersonal, Wartung", ZoneDE: "Gehaeusekante, Abdeckung",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1261", NameDE: "Stolperstelle am Maschinenfundament", NameEN: "Trip hazard at machine base",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 52, ScenarioDE: "Herausragendes Fundament als Stolperfalle",
|
||||
TriggerDE: "Unmarkierter Sockel, schlechte Beleuchtung", HarmDE: "Sturz, Prellung",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Maschinensockel, Laufweg",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1262", NameDE: "Fehlende Absturzsicherung Wartungsbuehne", NameEN: "Missing fall protection maintenance platform",
|
||||
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{"gravitational"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 82, ScenarioDE: "Wartungsbuehne ohne Gelaender oder Fussleiste",
|
||||
TriggerDE: "Fehlkonstruktion, Gelaender entfernt", HarmDE: "Absturz, schwere Verletzung",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Wartungsbuehne, Laufsteg",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1263", NameDE: "Ungenuegender Zugang fuer Wartung", NameEN: "Insufficient access for maintenance",
|
||||
RequiredComponentTags: []string{"structural_part", "maintenance"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic", "maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 62, ScenarioDE: "Wartungsstelle nur in Zwangshaltung erreichbar",
|
||||
TriggerDE: "Enge Konstruktion, fehlende Wartungsoeffnung", HarmDE: "Fehlhandlung, Ueberlastung",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Wartungsstelle",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1264", NameDE: "Unguenstige Bedienelemente-Anordnung", NameEN: "Poor control layout",
|
||||
RequiredComponentTags: []string{"user_interface", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"hmi_error", "ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 58, ScenarioDE: "Bediener verwechselt Taster durch unguenstige Anordnung",
|
||||
TriggerDE: "Aehnliche Taster nebeneinander, keine Farbcodierung", HarmDE: "Falscher Befehl, Unfall",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Bedienfeld",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
// === Lebensdauer (5) ===
|
||||
{
|
||||
ID: "HP1265", NameDE: "Materialermuedung tragendes Bauteil", NameEN: "Fatigue failure structural part",
|
||||
RequiredComponentTags: []string{"structural_part", "high_force"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 78, ScenarioDE: "Tragendes Bauteil bricht durch Ermuedung",
|
||||
TriggerDE: "Wechsellast, fehlende Pruefung", HarmDE: "Strukturversagen, Einsturz",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Tragstruktur, Rahmen",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1266", NameDE: "Korrosion Tragstruktur", NameEN: "Corrosion load-bearing structure",
|
||||
RequiredComponentTags: []string{"structural_part", "chemical_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Korrosion schwaecht tragende Struktur",
|
||||
TriggerDE: "Feuchte Umgebung, fehlender Korrosionsschutz", HarmDE: "Ploetzliches Versagen",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Rahmen, Stuetzen, Traeger",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1267", NameDE: "Verschleiss sicherheitsrelevantes Teil", NameEN: "Wear of safety-critical part",
|
||||
RequiredComponentTags: []string{"moving_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Verschlissenes Teil versagt im Betrieb",
|
||||
TriggerDE: "Fehlende Inspektion, ueberschrittene Standzeit", HarmDE: "Funktionsverlust, Bruch",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Verschleissteil, Fuehrung",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1268", NameDE: "Alterung Kunststoffbauteil Sproedbruch", NameEN: "Plastic part aging brittle fracture",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 62, ScenarioDE: "Gealtertes Kunststoffteil bricht sproede",
|
||||
TriggerDE: "UV-Einwirkung, Alterung, chemischer Angriff", HarmDE: "Splitter, Funktionsverlust",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Kunststoffabdeckung, Griff",
|
||||
DefaultSeverity: 2, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1269", NameDE: "Alterung Dichtung Leckage", NameEN: "Seal aging leakage",
|
||||
RequiredComponentTags: []string{"hydraulic_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"pneumatic_hydraulic", "maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Gealterte Dichtung versagt und Fluid tritt aus",
|
||||
TriggerDE: "Verhaertung, Rissbildung, Temperaturwechsel", HarmDE: "Leckage, Rutschgefahr, Druckverlust",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Dichtungsstelle, Boden",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
// === Manipulation (5) ===
|
||||
{
|
||||
ID: "HP1270", NameDE: "Schutzeinrichtung entfernt", NameEN: "Protective device removed",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 85, ScenarioDE: "Schutzhaube oder Verkleidung dauerhaft entfernt",
|
||||
TriggerDE: "Bequemlichkeit, schnellerer Zugang", HarmDE: "Direkter Zugang zur Gefahrstelle",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrstelle ohne Schutz",
|
||||
DefaultSeverity: 5, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1271", NameDE: "Bypass an Sicherheitsschalter", NameEN: "Bypass on safety switch",
|
||||
RequiredComponentTags: []string{"structural_part", "sensor_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 85, ScenarioDE: "Sicherheitsschalter wird mit Draht/Magnet ueberbrueckt",
|
||||
TriggerDE: "Produktionsdruck, haeufige Stoerungen", HarmDE: "Sicherheitsfunktion vollstaendig unwirksam",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamter Schutzbereich",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1272", NameDE: "Schalter fixiert in Dauerstellung", NameEN: "Switch fixed in permanent position",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, ScenarioDE: "Schalter mit Klebeband oder Draht fixiert",
|
||||
TriggerDE: "Ergonomieprobleme, Dauerbetrieb", HarmDE: "Sicherheitsfunktion dauerhaft aus",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Bedienfeld",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1273", NameDE: "Sensor abgedeckt/dejustiert", NameEN: "Sensor covered/misaligned",
|
||||
RequiredComponentTags: []string{"sensor_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure", "sensor_fault"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 80, ScenarioDE: "Sicherheitssensor absichtlich abgedeckt oder verdreht",
|
||||
TriggerDE: "Fehlalarme, Produktionsstoerung", HarmDE: "Sicherheitssensor erkennt Gefahr nicht",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Sensorbereich, Gefahrstelle",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1274", NameDE: "Sicherheitssoftware manipuliert", NameEN: "Safety software manipulated",
|
||||
RequiredComponentTags: []string{"has_software", "programmable"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure", "software_fault"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 85, ScenarioDE: "Sicherheitsparameter in Software geaendert",
|
||||
TriggerDE: "Passwort bekannt, Zugang nicht beschraenkt", HarmDE: "Sicherheitsgrenzen unwirksam",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
// === Parallele Arbeiten (5) ===
|
||||
{
|
||||
ID: "HP1275", NameDE: "Zwei Gewerke gleichzeitig am Ort", NameEN: "Two trades working same location",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Schweisser und Elektriker arbeiten gleichzeitig",
|
||||
TriggerDE: "Fehlende Koordination, Zeitdruck", HarmDE: "Gegenseitige Gefaehrdung",
|
||||
AffectedDE: "Beide Gewerke", ZoneDE: "Gemeinsamer Arbeitsbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1276", NameDE: "Arbeiten oben und unten gleichzeitig", NameEN: "Working above and below simultaneously",
|
||||
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{"gravitational"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, ScenarioDE: "Obere Ebene arbeitet waehrend unten Personen sind",
|
||||
TriggerDE: "Fehlende Absperrung, keine Koordination", HarmDE: "Herabfallende Teile treffen Person",
|
||||
AffectedDE: "Personen unterhalb", ZoneDE: "Unterer Arbeitsbereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1277", NameDE: "Innen-/Aussenarbeit gleichzeitig", NameEN: "Inside/outside work simultaneously",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Innen wird gearbeitet waehrend aussen montiert wird",
|
||||
TriggerDE: "Fehlende Kommunikation, keine Absicherung", HarmDE: "Quetschung durch Durchdringung",
|
||||
AffectedDE: "Innenpersonal", ZoneDE: "Wanddurchdringungen, Klappen",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1278", NameDE: "Produktion und Wartung gleichzeitig", NameEN: "Production and maintenance simultaneously",
|
||||
RequiredComponentTags: []string{"moving_part", "maintenance"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 78, ScenarioDE: "Wartung an Teil der Anlage waehrend Rest produziert",
|
||||
TriggerDE: "Teilabschaltung unzureichend, Energietrennung unklar", HarmDE: "Unerwartete Bewegung",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Wartungsbereich neben Produktion",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1279", NameDE: "Bau und Betrieb gleichzeitig", NameEN: "Construction and operation simultaneously",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Bauarbeiten neben laufendem Maschinenbetrieb",
|
||||
TriggerDE: "Erweiterungsbau ohne Betriebsunterbrechung", HarmDE: "Staub, Laerm, herabfallende Teile",
|
||||
AffectedDE: "Bauarbeiter, Bedienpersonal", ZoneDE: "Grenzbereich Bau/Betrieb",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
// === Umgebungseinfluss (5) ===
|
||||
{
|
||||
ID: "HP1280", NameDE: "Erdbeben Strukturversagen", NameEN: "Earthquake structural failure",
|
||||
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Erdbeben bringt Maschine/Regal zum Umstuerzen",
|
||||
TriggerDE: "Seismische Aktivitaet, fehlende Verankerung", HarmDE: "Einsturz, Verschuettung",
|
||||
AffectedDE: "Alle Personen", ZoneDE: "Gesamtes Gebaeude",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1281", NameDE: "Hochwasser Maschinenraum", NameEN: "Flood machine room",
|
||||
RequiredComponentTags: []string{"electrical_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{"electrical_energy"},
|
||||
GeneratedHazardCats: []string{"electrical_hazard", "mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M003"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E06"},
|
||||
Priority: 58, ScenarioDE: "Hochwasser flutet Maschinenraum/Keller",
|
||||
TriggerDE: "Starkregen, Flusshochwasser, Rohrbruch", HarmDE: "Stromschlag, Maschinenschaden",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Keller, erdgeschossige Raeume",
|
||||
DefaultSeverity: 4, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1282", NameDE: "Blitzschlag Ueberspannung", NameEN: "Lightning strike overvoltage",
|
||||
RequiredComponentTags: []string{"electrical_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{"electrical_energy"},
|
||||
GeneratedHazardCats: []string{"electrical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M003"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E06"},
|
||||
Priority: 55, ScenarioDE: "Blitzeinschlag zerstoert Steuerungselektronik",
|
||||
TriggerDE: "Fehlender Blitzschutz, Ueberspannungsschutz", HarmDE: "Steuerungsausfall, Brand",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Anlage",
|
||||
DefaultSeverity: 4, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1283", NameDE: "Sturm beschaedigt Aussenanlage", NameEN: "Storm damages outdoor installation",
|
||||
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Sturmwind reisst Teile los oder wirft Anlage um",
|
||||
TriggerDE: "Ungesicherte Teile, marode Befestigung", HarmDE: "Herabfallende Teile, Einsturz",
|
||||
AffectedDE: "Aussenpersonal", ZoneDE: "Freigelände, Dach",
|
||||
DefaultSeverity: 4, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1284", NameDE: "Temperaturextrem Funktionsausfall", NameEN: "Temperature extreme function failure",
|
||||
RequiredComponentTags: []string{"structural_part", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"thermal_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Extreme Kaelte oder Hitze fuehrt zu Funktionsausfall",
|
||||
TriggerDE: "Ausfall Klimatisierung, extreme Witterung", HarmDE: "Unvorhersehbares Maschinenverhalten",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Anlage",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
// === Verkettung (5) ===
|
||||
{
|
||||
ID: "HP1285", NameDE: "Verkettete Anlage A startet bei B-Wartung", NameEN: "Linked system A starts during B maintenance",
|
||||
RequiredComponentTags: []string{"moving_part", "programmable"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 82, ScenarioDE: "Anlage A faehrt an waehrend an Anlage B gewartet wird",
|
||||
TriggerDE: "Fehlende Verriegelung zwischen Anlagen", HarmDE: "Quetschung, Einzug in Anlage B",
|
||||
AffectedDE: "Wartungspersonal an B", ZoneDE: "Uebergabebereich A-B",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1286", NameDE: "Transfersystem blockiert Rueckstau", NameEN: "Transfer system blocked backlog",
|
||||
RequiredComponentTags: []string{"moving_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Teile stauen sich und Maschine reagiert fehlerhaft",
|
||||
TriggerDE: "Blockade im Transfer, Sensor uebersieht Stau", HarmDE: "Auswurf, Kollision",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Transferstrecke, Pufferzone",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1287", NameDE: "Pufferzone ueberfuellt", NameEN: "Buffer zone overfilled",
|
||||
RequiredComponentTags: []string{"structural_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 58, ScenarioDE: "Pufferzone laeuft ueber, Teile fallen herab",
|
||||
TriggerDE: "Nachfolgende Station steht, Puffer voll", HarmDE: "Herabfallende Teile",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Pufferbereich",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1288", NameDE: "Signal zwischen Anlagen fehlt", NameEN: "Signal between systems missing",
|
||||
RequiredComponentTags: []string{"programmable", "networked"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 75, ScenarioDE: "Sicherheitssignal wird nicht an Nachbaranlage uebertragen",
|
||||
TriggerDE: "Kabelbruch, Softwarefehler, Schnittstellenproblem", HarmDE: "Nachbaranlage erkennt Gefahr nicht",
|
||||
AffectedDE: "Personal an beiden Anlagen", ZoneDE: "Schnittstelle zwischen Anlagen",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1289", NameDE: "Not-Halt wirkt nur lokal", NameEN: "Emergency stop only local effect",
|
||||
RequiredComponentTags: []string{"structural_part", "programmable"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 78, ScenarioDE: "Not-Halt stoppt nur eigene Maschine, nicht verkettete",
|
||||
TriggerDE: "Fehlende Not-Halt-Verkettung, Design-Fehler", HarmDE: "Nachbaranlage laeuft weiter",
|
||||
AffectedDE: "Personal an Nachbaranlage", ZoneDE: "Verkettete Anlagengruppe",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
// === Retrofit/Umbau (5) ===
|
||||
{
|
||||
ID: "HP1290", NameDE: "Aenderung ohne Risikobeurteilung", NameEN: "Modification without risk assessment",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, ScenarioDE: "Maschine wurde umgebaut ohne neue Risikobeurteilung",
|
||||
TriggerDE: "Eigenumbau, fehlende Fachkenntnis", HarmDE: "Neue unerkannte Gefahrstellen",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Umgebauter Bereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1291", NameDE: "Neue Komponente inkompatibel", NameEN: "New component incompatible",
|
||||
RequiredComponentTags: []string{"structural_part", "electrical_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Ersatzkomponente passt nicht zur Sicherheitsarchitektur",
|
||||
TriggerDE: "Falscher Ersatztyp, andere Kennwerte", HarmDE: "Sicherheitsfunktion beeintraechtigt",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Betroffener Maschinenbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1292", NameDE: "Software-Update bricht Sicherheitsfunktion", NameEN: "Software update breaks safety function",
|
||||
RequiredComponentTags: []string{"has_software", "programmable"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"software_fault", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 80, ScenarioDE: "Software-Update veraendert Sicherheitsverhalten",
|
||||
TriggerDE: "Update ohne Validierung, Seiteneffekt", HarmDE: "Sicherheitsfunktion unwirksam",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1293", NameDE: "Erweiterung ohne neue CE-Bewertung", NameEN: "Extension without new CE assessment",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Wesentliche Aenderung ohne neue Konformitaetsbewertung",
|
||||
TriggerDE: "Erweiterung, neuer Betriebsmodus", HarmDE: "Nicht normkonforme Maschine",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Erweiterter Bereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1294", NameDE: "Schutzeinrichtung fuer Umbau demontiert", NameEN: "Guard removed for modification",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 80, ScenarioDE: "Schutzeinrichtung fuer Umbau entfernt und nicht remontiert",
|
||||
TriggerDE: "Vergessen nach Umbau, kein Pruefschritt", HarmDE: "Dauerhaft ungeschuetzte Gefahrstelle",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrstelle ohne Schutz",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
// === Leiharbeit/Zeitarbeit (5) ===
|
||||
{
|
||||
ID: "HP1295", NameDE: "Leiharbeiter ohne Einweisung", NameEN: "Temp worker without instruction",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Leiharbeiter wird ohne Maschineneinweisung eingesetzt",
|
||||
TriggerDE: "Kurzfristiger Einsatz, Personalmangel", HarmDE: "Fehlbedienung, Unfall",
|
||||
AffectedDE: "Leiharbeiter", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1296", NameDE: "Unbekannte Maschine fuer Zeitarbeiter", NameEN: "Unknown machine for temp worker",
|
||||
RequiredComponentTags: []string{"structural_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 70, ScenarioDE: "Zeitarbeiter bedient unbekannten Maschinentyp",
|
||||
TriggerDE: "Haeufiger Einsatzortwechsel, keine Schulung", HarmDE: "Fehlbedienung durch Unkenntnis",
|
||||
AffectedDE: "Zeitarbeiter", ZoneDE: "Bedienbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1297", NameDE: "Sprachproblem bei Sicherheitsunterweisung", NameEN: "Language problem safety briefing",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Sicherheitsunterweisung nicht verstanden",
|
||||
TriggerDE: "Unterweisungssprache nicht beherrscht", HarmDE: "Sicherheitsregeln nicht bekannt",
|
||||
AffectedDE: "Fremdsprachiges Personal", ZoneDE: "Gesamter Betrieb",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1298", NameDE: "Keine PSA fuer Leiharbeiter", NameEN: "No PPE for temp worker",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Leiharbeiter hat keine passende PSA",
|
||||
TriggerDE: "Keine Bereitstellung, falsche Groesse", HarmDE: "Ungeschuetzte Exposition",
|
||||
AffectedDE: "Leiharbeiter", ZoneDE: "Gesamter Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1299", NameDE: "Keine Erfahrung mit Gefahrstoffen", NameEN: "No experience with hazardous substances",
|
||||
RequiredComponentTags: []string{"chemical_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M124", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 72, ScenarioDE: "Person ohne Gefahrstofferfahrung im Chemiebereich",
|
||||
TriggerDE: "Fehlende Ausbildung, kurzfristiger Einsatz", HarmDE: "Exposition, Verwechslung",
|
||||
AffectedDE: "Ungeschultes Personal", ZoneDE: "Gefahrstoffbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
// === Betriebsartwechsel (5) ===
|
||||
{
|
||||
ID: "HP1300", NameDE: "Uebergang Auto zu Manuell unsicher", NameEN: "Auto to manual transition unsafe",
|
||||
RequiredComponentTags: []string{"programmable", "moving_part"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "hmi_error"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 75, ScenarioDE: "Wechsel Auto→Manuell ohne sichere Uebergabe",
|
||||
TriggerDE: "Maschine in Zwischenposition, Achse unter Spannung", HarmDE: "Unkontrollierte Bewegung",
|
||||
AffectedDE: "Einrichter", ZoneDE: "Maschinenarbeitsraum",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1301", NameDE: "Einrichten zu Produktion Restgefahr", NameEN: "Setup to production residual danger",
|
||||
RequiredComponentTags: []string{"moving_part", "programmable"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Schutzeinrichtung nach Einrichten nicht reaktiviert",
|
||||
TriggerDE: "Vergessen, Bypass noch aktiv", HarmDE: "Produktion ohne Schutz",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1302", NameDE: "Tippbetrieb zu Automatik ohne Quittierung", NameEN: "Jog to auto without acknowledgment",
|
||||
RequiredComponentTags: []string{"programmable", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "hmi_error"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 70, ScenarioDE: "Maschine wechselt von Tipp zu Automatik ohne Reset",
|
||||
TriggerDE: "Softwarefehler, fehlende Quittierung", HarmDE: "Ploetzliche Vollgeschwindigkeit",
|
||||
AffectedDE: "Einrichter", ZoneDE: "Maschinenarbeitsraum",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1303", NameDE: "Einzelhub zu Dauerhub ungewollt", NameEN: "Single stroke to continuous unintended",
|
||||
RequiredComponentTags: []string{"moving_part", "high_force"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, ScenarioDE: "Presse wechselt ungewollt in Dauerhub",
|
||||
TriggerDE: "Wahlschalterdefekt, Softwarefehler", HarmDE: "Wiederholtes Quetschen",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Werkzeugraum",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1304", NameDE: "Normal zu Notbetrieb degradiert", NameEN: "Normal to emergency mode degraded",
|
||||
RequiredComponentTags: []string{"programmable", "has_software"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Im Notbetrieb sind Sicherheitsfunktionen reduziert",
|
||||
TriggerDE: "Notbetrieb aktiviert, keine Rueckkehr zu Normal", HarmDE: "Dauerhaft reduzierter Schutz",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
// === Mehrere Bediener (5) ===
|
||||
{
|
||||
ID: "HP1305", NameDE: "Unklare Zustaendigkeit bei Mehrbedienung", NameEN: "Unclear responsibility multi-operator",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Keiner fuehlt sich verantwortlich bei mehreren Bedienern",
|
||||
TriggerDE: "Fehlende Rollenzuweisung", HarmDE: "Doppel- oder Nichthandlung",
|
||||
AffectedDE: "Alle Bediener", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1306", NameDE: "Einer startet waehrend anderer eingreift", NameEN: "One starts while other intervenes",
|
||||
RequiredComponentTags: []string{"moving_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 82, ScenarioDE: "Bediener A startet Maschine waehrend B eingreift",
|
||||
TriggerDE: "Keine Sichtverbindung, fehlende Verriegelung", HarmDE: "Schwere Quetschung Bediener B",
|
||||
AffectedDE: "Bediener im Gefahrbereich", ZoneDE: "Gefahrstelle",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1307", NameDE: "Sichtverbindung zwischen Bedienern fehlt", NameEN: "Line of sight between operators missing",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Bediener kann anderen nicht sehen",
|
||||
TriggerDE: "Grosse Maschine, verdeckter Bereich", HarmDE: "Start trotz Person im Gefahrbereich",
|
||||
AffectedDE: "Verdeckter Bediener", ZoneDE: "Nicht einsehbarer Bereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1308", NameDE: "Kommunikation Bediener unzureichend", NameEN: "Operator communication insufficient",
|
||||
RequiredComponentTags: []string{"structural_part", "noise_source"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Bediener koennen sich nicht verstaendigen",
|
||||
TriggerDE: "Laerm, Distanz, Sprachbarriere", HarmDE: "Fehlkoordination, Unfall",
|
||||
AffectedDE: "Alle Bediener", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1309", NameDE: "Schutzbereiche ueberlappen", NameEN: "Safety zones overlap",
|
||||
RequiredComponentTags: []string{"structural_part", "sensor_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 72, ScenarioDE: "Schutzbereiche zweier Maschinen ueberlappen sich",
|
||||
TriggerDE: "Zu enger Aufstellungsabstand", HarmDE: "Zugang trotz Sicherheitssignal",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Ueberlappungsbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
// === Dritte (5) ===
|
||||
{
|
||||
ID: "HP1310", NameDE: "Besucher im Gefahrenbereich", NameEN: "Visitor in danger zone",
|
||||
RequiredComponentTags: []string{"structural_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Besucher betritt Gefahrenbereich unbemerkt",
|
||||
TriggerDE: "Fehlende Zugangskontrolle, kein Begleiter", HarmDE: "Unfall durch Unkenntnis",
|
||||
AffectedDE: "Besucher", ZoneDE: "Produktionsbereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1311", NameDE: "Reinigungspersonal ohne Unterweisung", NameEN: "Cleaning staff without instruction",
|
||||
RequiredComponentTags: []string{"structural_part", "chemical_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Reinigungskraft reinigt Maschine ohne Sicherheitswissen",
|
||||
TriggerDE: "Fremdfirma, keine Einweisung erhalten", HarmDE: "Kontakt Gefahrstoff, Maschinenverletzung",
|
||||
AffectedDE: "Reinigungspersonal", ZoneDE: "Maschinenumgebung",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1312", NameDE: "Lieferant an Maschine ohne Freigabe", NameEN: "Supplier at machine without clearance",
|
||||
RequiredComponentTags: []string{"structural_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Lieferant arbeitet an Maschine ohne Freigabeverfahren",
|
||||
TriggerDE: "Direkter Zugang, fehlende Koordination", HarmDE: "Verletzung durch laufende Maschine",
|
||||
AffectedDE: "Lieferant/Servicetechniker", ZoneDE: "Maschinenbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1313", NameDE: "Kind im Werkstattbereich", NameEN: "Child in workshop area",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, ScenarioDE: "Kind gelangt unbeaufsichtigt in Werkstatt",
|
||||
TriggerDE: "Fehlende Absperrung, Tag der offenen Tuer", HarmDE: "Schwere Verletzung durch Neugier",
|
||||
AffectedDE: "Kinder", ZoneDE: "Gesamte Werkstatt",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP1314", NameDE: "Haustier in Produktionshalle", NameEN: "Pet in production hall",
|
||||
RequiredComponentTags: []string{"structural_part", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Tier gelangt in Maschinenbereich",
|
||||
TriggerDE: "Offene Tueren, fehlende Absperrung", HarmDE: "Tierverletzung, Maschinenstoerung",
|
||||
AffectedDE: "Tier, Bedienpersonal", ZoneDE: "Produktionshalle",
|
||||
DefaultSeverity: 2, DefaultExposure: 1,
|
||||
},
|
||||
// === Psychische Faktoren (5) ===
|
||||
{
|
||||
ID: "HP1315", NameDE: "Monotonie fuehrt zu Unaufmerksamkeit", NameEN: "Monotony causes inattention",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 62, ScenarioDE: "Monotone Taetigkeit fuehrt zu Unaufmerksamkeit",
|
||||
TriggerDE: "Repetitive Arbeit, fehlende Abwechslung", HarmDE: "Verzoegerte Reaktion auf Gefahr",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP1316", NameDE: "Stress fuehrt zu Fehlhandlung", NameEN: "Stress leads to error",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Stress verursacht hastige oder falsche Handlung",
|
||||
TriggerDE: "Hoher Produktionsdruck, Konflikte", HarmDE: "Bedienungsfehler, Unfall",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1317", NameDE: "Laermmuedigkeit beeintraechtigt Urteil", NameEN: "Noise fatigue impairs judgment",
|
||||
RequiredComponentTags: []string{"noise_source"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 58, ScenarioDE: "Dauerlarm fuehrt zu Ermuedung und Fehlern",
|
||||
TriggerDE: "Hoher Laermpegel ueber viele Stunden", HarmDE: "Nachlassende Konzentration",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Laermbereich",
|
||||
DefaultSeverity: 2, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP1318", NameDE: "Routine fuehrt zu Nachlaessigkeit", NameEN: "Routine leads to complacency",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Erfahrener Bediener unterschaetzt Gefahr aus Routine",
|
||||
TriggerDE: "Jahre ohne Unfall, Gewoehnungseffekt", HarmDE: "Missachtung Sicherheitsregeln",
|
||||
AffectedDE: "Erfahrenes Personal", ZoneDE: "Vertrauter Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1319", NameDE: "Angst fuehrt zu Blockade/Panik", NameEN: "Fear causes freeze/panic",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 60, ScenarioDE: "Person erstarrt oder panikt in Gefahrensituation",
|
||||
TriggerDE: "Ueberraschende Gefahr, fehlende Uebung", HarmDE: "Keine Flucht, falsche Reaktion",
|
||||
AffectedDE: "Bedienpersonal, Besucher", ZoneDE: "Gefahrenbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
// === Nachbarschaft (5) ===
|
||||
{
|
||||
ID: "HP1320", NameDE: "Nachbarmaschine spritzt Fluessigkeit", NameEN: "Neighbor machine sprays fluid",
|
||||
RequiredComponentTags: []string{"structural_part", "chemical_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 58, ScenarioDE: "KSS/Oel von Nachbarmaschine spritzt auf Laufweg",
|
||||
TriggerDE: "Fehlende Spritzschutzwand", HarmDE: "Rutschgefahr, Hautkontakt",
|
||||
AffectedDE: "Personal im Bereich", ZoneDE: "Laufweg zwischen Maschinen",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1321", NameDE: "Kran ueberschwenkt Arbeitsplatz", NameEN: "Crane overshoots workplace",
|
||||
RequiredComponentTags: []string{"moving_part", "gravity_risk", "high_force"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 78, ScenarioDE: "Kran schwenkt Last ueber besetzten Arbeitsplatz",
|
||||
TriggerDE: "Fehlende Endschalter, Unachtsamkeit", HarmDE: "Herabfallende Last",
|
||||
AffectedDE: "Personen darunter", ZoneDE: "Unter Kranschwenkbereich",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1322", NameDE: "Stapler kreuzt Fussgaengerweg", NameEN: "Forklift crosses pedestrian path",
|
||||
RequiredComponentTags: []string{"moving_part", "structural_part"},
|
||||
RequiredEnergyTags: []string{"kinetic"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Gabelstapler faehrt durch Fussgaengerbereich",
|
||||
TriggerDE: "Gemeinsame Verkehrswege, fehlende Markierung", HarmDE: "Anfahren, Ueberfahren",
|
||||
AffectedDE: "Fussgaenger", ZoneDE: "Kreuzungsbereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1323", NameDE: "Schweissfunken fliegen zu Nachbararbeitsplatz", NameEN: "Welding sparks fly to neighboring workplace",
|
||||
RequiredComponentTags: []string{"high_temperature"},
|
||||
RequiredEnergyTags: []string{"thermal"},
|
||||
GeneratedHazardCats: []string{"fire_explosion", "thermal_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M054", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E08"},
|
||||
Priority: 72, ScenarioDE: "Schweissfunken fliegen zu brennbarem Material nebenan",
|
||||
TriggerDE: "Fehlende Abschirmung, offenes Brandgut", HarmDE: "Brand, Verbrennung Nachbar",
|
||||
AffectedDE: "Nachbarpersonal", ZoneDE: "Angrenzender Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1324", NameDE: "Laerm verhindert Warnsignal-Wahrnehmung", NameEN: "Noise masks warning signal",
|
||||
RequiredComponentTags: []string{"noise_source", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic_hazard", "safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Laerm ueberdeckt akustisches Warnsignal",
|
||||
TriggerDE: "Hoher Umgebungslaerm, Signal zu leise", HarmDE: "Warnung wird nicht gehoert",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamter Laermbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
// === Restrisiko-Dokumentation (6) ===
|
||||
{
|
||||
ID: "HP1325", NameDE: "Restrisiko nicht dokumentiert", NameEN: "Residual risk not documented",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Bekanntes Restrisiko nicht in Anleitung aufgefuehrt",
|
||||
TriggerDE: "Fehlende Ruecksprache mit Konstruktion", HarmDE: "Bediener kennt Restrisiko nicht",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Betreffende Gefahrstelle",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1326", NameDE: "Betriebsanleitung unvollstaendig", NameEN: "Operating manual incomplete",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Wichtige Sicherheitsinformationen fehlen in Anleitung",
|
||||
TriggerDE: "Veraltete Anleitung, fehlende Kapitel", HarmDE: "Fehlhandlung durch Unkenntnis",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1327", NameDE: "Sicherheitspiktogramm fehlt", NameEN: "Safety pictogram missing",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 60, ScenarioDE: "Warnsymbol an Gefahrstelle fehlt oder abgeloest",
|
||||
TriggerDE: "Verblasst, abgerissen, nicht angebracht", HarmDE: "Gefahr nicht erkannt",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrstelle",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1328", NameDE: "Warnhinweis unleserlich/verblasst", NameEN: "Warning label illegible/faded",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 55, ScenarioDE: "Warnaufkleber ist nicht mehr lesbar",
|
||||
TriggerDE: "UV-Bleichung, Oel, Abrieb", HarmDE: "Warnung wird ignoriert/nicht gelesen",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrstelle",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1329", NameDE: "Schulung nicht dokumentiert/nachweisbar", NameEN: "Training not documented/provable",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 65, ScenarioDE: "Unterweisung wurde nicht dokumentiert",
|
||||
TriggerDE: "Muendliche Einweisung ohne Nachweis", HarmDE: "Haftungsrisiko, fehlender Nachweis",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamter Betrieb",
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1330", NameDE: "Gefaehrdungsbeurteilung veraltet", NameEN: "Risk assessment outdated",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Gefaehrdungsbeurteilung spiegelt aktuellen Stand nicht wider",
|
||||
TriggerDE: "Aenderungen nicht nachgefuehrt, neue Taetigkeiten", HarmDE: "Neue Gefahren nicht adressiert",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamter Arbeitsplatz",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
// === Remaining to reach 81 total (5) ===
|
||||
{
|
||||
ID: "HP1331", NameDE: "Unzureichende Absaugung Gefahrstoff", NameEN: "Insufficient extraction hazardous substance",
|
||||
RequiredComponentTags: []string{"chemical_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M124"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 72, ScenarioDE: "Absauganlage ist zu schwach oder defekt",
|
||||
TriggerDE: "Verstopfter Filter, defekter Ventilator", HarmDE: "Erhoehte Gefahrstoffkonzentration",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Arbeitsplatz, Absaugung",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1332", NameDE: "Fehlender Lockout/Tagout bei Wartung", NameEN: "Missing LOTO during maintenance",
|
||||
RequiredComponentTags: []string{"maintenance", "electrical_part"},
|
||||
RequiredEnergyTags: []string{"electrical_energy"},
|
||||
GeneratedHazardCats: []string{"electrical_hazard", "mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M003", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E06", "E08"},
|
||||
Priority: 85, ScenarioDE: "Maschine wird gewartet ohne Energietrennung",
|
||||
TriggerDE: "Kein LOTO-Verfahren, Zeitdruck", HarmDE: "Unerwarteter Anlauf, Stromschlag",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1333", NameDE: "Engstelle Quetschgefahr Person-Maschine", NameEN: "Pinch point person-machine gap",
|
||||
RequiredComponentTags: []string{"crush_point", "structural_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Person wird in Engstelle zwischen Maschine und Wand gequetscht",
|
||||
TriggerDE: "Zu geringer Abstand, fehlende Markierung", HarmDE: "Quetschung Koerper",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Engstelle Maschine-Wand",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1334", NameDE: "Statische Aufladung Schuettgut", NameEN: "Static charge bulk material",
|
||||
RequiredComponentTags: []string{"chemical_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{"electrical"},
|
||||
GeneratedHazardCats: []string{"fire_explosion", "electrical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M003"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E06"},
|
||||
Priority: 72, ScenarioDE: "Schuettgut laedt sich auf und Funke zuendet Staub",
|
||||
TriggerDE: "Nicht geerdete Behaelter, trockene Luft", HarmDE: "Staubexplosion, Brand",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Schuettgutstrecke, Silo",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1335", NameDE: "Einschluss in Behaelter/Silo", NameEN: "Entrapment in container/silo",
|
||||
RequiredComponentTags: []string{"structural_part", "chemical_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M054"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 82, ScenarioDE: "Person wird in Behaelter/Silo eingeschlossen",
|
||||
TriggerDE: "Befahrerlaubnis fehlt, Deckel schliesst sich", HarmDE: "Erstickung, Verschuettung",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Behaelter, Silo, Tank",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package iace
|
||||
|
||||
// GetProtectiveMeasureLibrary returns the complete built-in protective measures library
|
||||
// with ~200 entries organized by reduction type (design, protection, information)
|
||||
// following the ISO 12100 three-step method for risk reduction.
|
||||
//
|
||||
// Each entry is categorized by sub-type and hazard category, with German-language
|
||||
// names, descriptions, and practical examples for industrial machinery safety.
|
||||
func GetProtectiveMeasureLibrary() []ProtectiveMeasureEntry {
|
||||
var all []ProtectiveMeasureEntry
|
||||
all = append(all, getDesignMeasures()...)
|
||||
all = append(all, getProtectiveMeasures()...)
|
||||
all = append(all, getInformationMeasures()...)
|
||||
return all
|
||||
}
|
||||
|
||||
// getDesignMeasures returns Step 1: Inherently safe design measures (M001-M060).
|
||||
func getDesignMeasures() []ProtectiveMeasureEntry {
|
||||
return []ProtectiveMeasureEntry{
|
||||
// ── Geometry (M001-M010) ─────────────────────────────────────────────
|
||||
{ID: "M001", ReductionType: "design", SubType: "geometry", Name: "Gefahrstelle konstruktiv eliminieren", Description: "Durch konstruktive Gestaltung wird die Gefahrstelle vollstaendig beseitigt.", HazardCategory: "mechanical", Examples: []string{"Quetschstelle durch Geometrieaenderung entfernen", "Einzugsstelle durch vergroesserten Spalt eliminieren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2"}},
|
||||
{ID: "M002", ReductionType: "design", SubType: "geometry", Name: "Sicherheitsabstaende vergroessern", Description: "Abstaende zwischen Gefahrstellen und zugaenglichen Bereichen werden nach Norm dimensioniert.", HazardCategory: "mechanical", Examples: []string{"Greifabstand an Walzen vergroessern", "Abstand zu heissen Oberflaechen erhoehen"}, NormReferences: []string{"ISO 13857", "ISO 13854"}},
|
||||
{ID: "M003", ReductionType: "design", SubType: "geometry", Name: "Scharfe Kanten entfernen", Description: "Alle zugaenglichen Kanten werden abgerundet oder entgratet.", HazardCategory: "mechanical", Examples: []string{"Radien an Blechkanten anbringen", "Entgratung aller Stanzteile sicherstellen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M004", ReductionType: "design", SubType: "geometry", Name: "Sichere Geometrie", Description: "Die Bauteilgeometrie vermeidet Quetsch-, Scher- und Einzugsstellen.", HazardCategory: "mechanical", Examples: []string{"Abgerundete Formteile statt scharfkantiger verwenden", "Spaltmasse an Fuehrungen einhalten"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M005", ReductionType: "design", SubType: "geometry", Name: "Rotationsbewegung vermeiden", Description: "Rotierende Teile werden durch Alternativloesungen ersetzt.", HazardCategory: "mechanical", Examples: []string{"Linearantrieb statt Drehantrieb verwenden", "Riemenantrieb durch Zahnstange ersetzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M006", ReductionType: "design", SubType: "geometry", Name: "Kollisionsfreie Bewegungsbahnen", Description: "Bewegungsbahnen werden so geplant, dass Kollisionen mit Personen ausgeschlossen sind.", HazardCategory: "mechanical", Examples: []string{"Verfahrwege ausserhalb des Bedienerbereichs legen", "Bewegungsbahnen in der Simulation pruefen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.3"}},
|
||||
{ID: "M007", ReductionType: "design", SubType: "geometry", Name: "Sichere Greiferkonstruktion", Description: "Greifersysteme verhindern unkontrolliertes Freisetzen von Werkstuecken.", HazardCategory: "mechanical", Examples: []string{"Formschluessige Greiferbacken verwenden", "Federbelastete Greifer fuer Fail-Safe"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1", "ISO 10218-2"}},
|
||||
{ID: "M008", ReductionType: "design", SubType: "geometry", Name: "Sichere Werkstueckaufnahme", Description: "Werkstueckaufnahmen verhindern Herausschleudern bei allen Betriebszustaenden.", HazardCategory: "mechanical", Examples: []string{"Spannvorrichtung mit Formschluss", "Automatische Spannkontrolle integrieren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M009", ReductionType: "design", SubType: "geometry", Name: "Sichere Kabelfuehrung", Description: "Elektrische Leitungen werden vor mechanischer Beschaedigung und Hitze geschuetzt.", HazardCategory: "electrical", Examples: []string{"Kabelkanaele mit Deckel verwenden", "Leitungen in Schleppketten fuehren"}, NormReferences: []string{"IEC 60204-1", "ISO 12100:2010 Kap. 6.2.9"}},
|
||||
{ID: "M010", ReductionType: "design", SubType: "geometry", Name: "Sichere Sensorposition", Description: "Sensoren werden zuverlaessig messend und vor mechanischer Beschaedigung geschuetzt positioniert.", HazardCategory: "software_control", Examples: []string{"Sensoren in geschuetzten Nischen montieren", "Sensoren ausserhalb des Gefahrbereichs platzieren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.11.1"}},
|
||||
|
||||
// ── Force / Energy (M011-M022) ──────────────────────────────────────
|
||||
{ID: "M011", ReductionType: "design", SubType: "force_energy", Name: "Bewegungsenergie reduzieren", Description: "Kinetische Energie beweglicher Maschinenteile wird auf ein sicheres Niveau begrenzt.", HazardCategory: "mechanical", Examples: []string{"Masse beweglicher Teile verringern", "Hublaenge verkuerzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M012", ReductionType: "design", SubType: "force_energy", Name: "Geschwindigkeit reduzieren", Description: "Verfahrgeschwindigkeit wird konstruktiv auf ein verletzungssicheres Niveau begrenzt.", HazardCategory: "mechanical", Examples: []string{"Maximale Achsgeschwindigkeit mechanisch begrenzen", "Drehzahlbegrenzer einbauen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M013", ReductionType: "design", SubType: "force_energy", Name: "Kraft begrenzen", Description: "Die maximal auftretende Kraft wird konstruktiv so begrenzt, dass keine Verletzungsgefahr besteht.", HazardCategory: "mechanical", Examples: []string{"Federbelastete Kraftbegrenzung einsetzen", "Antriebsdrehmoment begrenzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2", "ISO/TS 15066"}},
|
||||
{ID: "M014", ReductionType: "design", SubType: "force_energy", Name: "Kinematik aendern", Description: "Bewegungsart oder -richtung wird umgestaltet, sodass die Gefaehrdung entfaellt.", HazardCategory: "mechanical", Examples: []string{"Linearbewegung statt Rotation einsetzen", "Bewegungsrichtung von Bedienerseite wegfuehren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M015", ReductionType: "design", SubType: "force_energy", Name: "Gewicht reduzieren", Description: "Gewicht beweglicher Maschinenteile wird minimiert zur Verringerung der Verletzungsschwere.", HazardCategory: "mechanical", Examples: []string{"Leichtbauwerkstoffe fuer bewegliche Arme", "Hohlprofile statt Vollmaterial"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M016", ReductionType: "design", SubType: "force_energy", Name: "Redundante Konstruktion", Description: "Sicherheitskritische Bauteile sind mehrfach ausgefuehrt fuer Ausfallsicherheit.", HazardCategory: "mechanical", Examples: []string{"Doppelte Tragseile an Hebezeugen", "Redundante Bremssysteme vorsehen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.3", "ISO 13849-1"}},
|
||||
{ID: "M017", ReductionType: "design", SubType: "force_energy", Name: "Mechanische Begrenzung", Description: "Feste mechanische Anschlaege begrenzen den Bewegungsbereich.", HazardCategory: "mechanical", Examples: []string{"Feste Endanschlaege an Linearachsen", "Drehwinkelbegrenzung an Drehachsen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M018", ReductionType: "design", SubType: "force_energy", Name: "Schwerkraftsichere Konstruktion", Description: "Konstruktion verhindert unkontrollierte Bewegung durch Schwerkraft bei Energieausfall.", HazardCategory: "mechanical", Examples: []string{"Lasthalteventile in Hubzylindern", "Federspeicherbremsen an Vertikalachsen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.3", "EN 693"}},
|
||||
{ID: "M019", ReductionType: "design", SubType: "force_energy", Name: "Energiebegrenzung", Description: "Die gesamt verfuegbare Energie im System wird konstruktiv auf ein sicheres Niveau begrenzt.", HazardCategory: "mechanical", Examples: []string{"Kleine Pneumatikzylinder statt grosser verwenden", "Niedrigdruck-Hydraulik einsetzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M020", ReductionType: "design", SubType: "force_energy", Name: "Sichere Energieuebertragung", Description: "Energieleitungen werden so verlegt, dass Leckagen oder Brueche keine Gefaehrdung darstellen.", HazardCategory: "electrical", Examples: []string{"Schleppketten fuer flexible Leitungen", "Doppelwandige Druckleitungen verwenden"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.9"}},
|
||||
{ID: "M021", ReductionType: "design", SubType: "force_energy", Name: "Nachgiebige Elemente", Description: "Maschinenteile im Kontaktbereich werden nachgiebig gestaltet zur Verletzungsminimierung.", HazardCategory: "mechanical", Examples: []string{"Polsterungen an Klemmpunkten", "Federnd gelagerte Anschlaege"}, NormReferences: []string{"ISO/TS 15066", "ISO 12100:2010 Kap. 6.2.2.2"}},
|
||||
{ID: "M022", ReductionType: "design", SubType: "force_energy", Name: "Sichere Kraftuebertragung", Description: "Kraftuebertragungselemente sind gesichert gegen Bruch oder Loesen.", HazardCategory: "mechanical", Examples: []string{"Wellensicherungen gegen Axialverschiebung", "Sicherheitswellen mit Sollbruchstelle"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
|
||||
// ── Material (M023-M028) ────────────────────────────────────────────
|
||||
{ID: "M023", ReductionType: "design", SubType: "material", Name: "Sichere Materialwahl", Description: "Werkstoffe werden so gewaehlt, dass sie keine zusaetzlichen Gefaehrdungen verursachen.", HazardCategory: "material_environmental", Examples: []string{"Nicht-toxische Kunststoffe waehlen", "Korrosionsbestaendige Legierungen einsetzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M024", ReductionType: "design", SubType: "material", Name: "Stabile Konstruktion", Description: "Konstruktion auf ausreichende Festigkeit ausgelegt gegen strukturelles Versagen.", HazardCategory: "mechanical", Examples: []string{"Sicherheitsfaktoren bei Tragstrukturen", "Dauerfestigkeit der Schweissnaehte pruefen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.3", "EN 1993-1"}},
|
||||
{ID: "M025", ReductionType: "design", SubType: "material", Name: "Splitterschutzglas", Description: "Sicherheitsglas verhindert Verletzungen durch Splitter bei Glasbruch.", HazardCategory: "mechanical", Examples: []string{"Verbundsicherheitsglas fuer Schutzhauben", "Polycarbonat-Scheiben an Drehmaschinen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1", "ISO 14120"}},
|
||||
{ID: "M026", ReductionType: "design", SubType: "material", Name: "Korrosionsbestaendige Materialien", Description: "Korrosionsfeste Werkstoffe verhindern Festigkeitsverlust und damit Versagen.", HazardCategory: "material_environmental", Examples: []string{"Edelstahl fuer feuchte Umgebungen", "Beschichtete Bauteile in chemischer Umgebung"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M027", ReductionType: "design", SubType: "material", Name: "Ausbrecharme Materialien", Description: "Werkstoffe, die bei Bruch keine scharfen Splitter erzeugen.", HazardCategory: "mechanical", Examples: []string{"Duktile Gusswerkstoffe statt sproeder", "Faserverstaerkte Kunststoffe statt Glas"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.2.1"}},
|
||||
{ID: "M028", ReductionType: "design", SubType: "material", Name: "Brandbestaendige Materialien", Description: "Feuerfeste Werkstoffe an brandgefaehrdeten Stellen minimieren Brandgefahr.", HazardCategory: "thermal", Examples: []string{"Flammhemmende Kabelisolierung", "Feuerfeste Hydraulikfluessigkeiten"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.4", "EN 13501-1"}},
|
||||
|
||||
// ── Ergonomics (M029-M038) ──────────────────────────────────────────
|
||||
{ID: "M029", ReductionType: "design", SubType: "ergonomics", Name: "Ergonomische Arbeitshoehe", Description: "Arbeitshoehe ist an Bedienergroesse anpassbar fuer belastungsarmes Arbeiten.", HazardCategory: "ergonomic", Examples: []string{"Hoehenverstellbare Arbeitstische", "Bedienfeld auf Ellbogenhoehe"}, NormReferences: []string{"EN 614-1", "ISO 12100:2010 Kap. 6.2.8"}},
|
||||
{ID: "M030", ReductionType: "design", SubType: "ergonomics", Name: "Greifraum-Optimierung", Description: "Bedienelemente sind in ergonomisch guenstiger Reichweite platziert.", HazardCategory: "ergonomic", Examples: []string{"Haeufig genutzte Taster im Nahbereich", "Reichweitendiagramme bei der Planung anwenden"}, NormReferences: []string{"EN 614-1", "EN 894-3"}},
|
||||
{ID: "M031", ReductionType: "design", SubType: "ergonomics", Name: "Gewichtsreduzierung Handhabung", Description: "Gewicht von Handwerkzeugen und Handhabungsteilen unter ergonomischen Grenzwerten.", HazardCategory: "ergonomic", Examples: []string{"Gewicht von Handwerkzeugen unter 2,5 kg", "Hebevorrichtungen fuer schwere Teile"}, NormReferences: []string{"EN 1005-2", "ISO 11228-1"}},
|
||||
{ID: "M032", ReductionType: "design", SubType: "ergonomics", Name: "Intuitive Bedienoberflaeche", Description: "Bedienelemente und Anzeigen sind logisch angeordnet gegen Fehlbedienung.", HazardCategory: "ergonomic", Examples: []string{"Einheitliche Farbcodierung", "Logische Anordnung der Bedienelemente"}, NormReferences: []string{"EN 894-1", "EN 894-2", "EN 894-3"}},
|
||||
{ID: "M033", ReductionType: "design", SubType: "ergonomics", Name: "Gute Sichtbarkeit", Description: "Sicherheitsrelevante Bereiche sind vom Bedienstandort einsehbar.", HazardCategory: "ergonomic", Examples: []string{"Transparente Schutzhauben verwenden", "Kamerabasierte Sichthilfen installieren"}, NormReferences: []string{"EN 614-1", "ISO 12100:2010 Kap. 6.2.8"}},
|
||||
{ID: "M034", ReductionType: "design", SubType: "ergonomics", Name: "Sichere Mensch-Maschine-Interaktion", Description: "Schnittstelle Bediener/Maschine schliesst gefaehrliche Missverstaendnisse aus.", HazardCategory: "ergonomic", Examples: []string{"Eindeutige Statusindikatoren", "Bestaetigung vor kritischen Befehlen"}, NormReferences: []string{"EN 894-1", "IEC 60447"}},
|
||||
{ID: "M035", ReductionType: "design", SubType: "ergonomics", Name: "Sichere Wartungszugaenge", Description: "Wartungsbereiche sind gefahrlos zugaenglich ohne Demontage von Schutzeinrichtungen.", HazardCategory: "ergonomic", Examples: []string{"Wartungsklappen mit Sicherheitsverriegelung", "Ausreichende Arbeitsflaeche im Wartungsbereich"}, NormReferences: []string{"EN 547-3", "ISO 12100:2010 Kap. 6.2.8"}},
|
||||
{ID: "M036", ReductionType: "design", SubType: "ergonomics", Name: "Sichere Montagepunkte", Description: "Montagepunkte fuer sicheres Handling waehrend Montage und Demontage.", HazardCategory: "ergonomic", Examples: []string{"Anschlagpunkte fuer Hebezeuge", "Passstifte fuer lagegenaue Montage"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.8"}},
|
||||
{ID: "M037", ReductionType: "design", SubType: "ergonomics", Name: "Sichere Servicezugaenge", Description: "Servicebereiche sind bei abgeschalteter Maschine sicher zugaenglich.", HazardCategory: "ergonomic", Examples: []string{"Servicetreppen und -plattformen", "Beleuchtung im Servicebereich"}, NormReferences: []string{"EN 547-3", "ISO 14122-3"}},
|
||||
{ID: "M038", ReductionType: "design", SubType: "ergonomics", Name: "Vibrationsarme Konstruktion", Description: "Vibrationen und Koerperschall werden an der Quelle minimiert.", HazardCategory: "noise_vibration", Examples: []string{"Schwingungsdaempfer an Motoren", "Elastische Maschinenlagerung"}, NormReferences: []string{"ISO 5349-1", "EN 1032"}},
|
||||
|
||||
// ── Control Design (M039-M050) ──────────────────────────────────────
|
||||
{ID: "M039", ReductionType: "design", SubType: "control_design", Name: "Sichere Software-Fallbacks", Description: "Steuerungssoftware enthaelt Rueckfallstrategien fuer sichere Zustaende bei Fehlern.", HazardCategory: "software_control", Examples: []string{"Standardwerte bei Sensorausfall", "Sicherer Stopp bei unplausiblen Daten"}, NormReferences: []string{"IEC 62443-4-1", "ISO 13849-1"}},
|
||||
{ID: "M040", ReductionType: "design", SubType: "control_design", Name: "Deterministische Steuerungslogik", Description: "Steuerungslogik erzeugt bei identischen Eingaben immer identische Ausgaben.", HazardCategory: "software_control", Examples: []string{"Keine Zufallselemente in Sicherheitsfunktionen", "Feste Zykluszeiten fuer Safety-Tasks"}, NormReferences: []string{"IEC 61508-3", "IEC 62443-4-1"}},
|
||||
{ID: "M041", ReductionType: "design", SubType: "control_design", Name: "Definierte Zustandsmaschine", Description: "Alle Maschinenzustaende und Uebergaenge sind vollstaendig definiert und abgesichert.", HazardCategory: "software_control", Examples: []string{"Zustandsdiagramm erstellen", "Ungueltige Uebergaenge softwareseitig blockieren"}, NormReferences: []string{"IEC 61508-3", "ISO 13849-1"}},
|
||||
{ID: "M042", ReductionType: "design", SubType: "control_design", Name: "Sichere Restart-Logik", Description: "Neustart nur durch bewusste Bedienerhandlung, kein automatischer Wiederanlauf.", HazardCategory: "software_control", Examples: []string{"Automatischen Wiederanlauf nach Netzausfall verhindern", "Quittierungspflicht vor Neustart"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.11.4", "IEC 60204-1"}},
|
||||
{ID: "M043", ReductionType: "design", SubType: "control_design", Name: "Sichere Fehlermodi", Description: "Jeder erkannte Fehler fuehrt automatisch in einen vordefinierten sicheren Zustand.", HazardCategory: "software_control", Examples: []string{"Fail-Safe bei Sensorausfall", "Fehlerkatalog mit sicheren Zustaenden"}, NormReferences: []string{"ISO 13849-1", "IEC 62061"}},
|
||||
{ID: "M044", ReductionType: "design", SubType: "control_design", Name: "Zweikanalige Steuerung", Description: "Sicherheitsfunktionen werden ueber zwei unabhaengige Kanaele ausgefuehrt.", HazardCategory: "software_control", Examples: []string{"Kategorie-3/4-Architektur nach ISO 13849", "Zwei getrennte Abschaltpfade"}, NormReferences: []string{"ISO 13849-1", "IEC 62061"}},
|
||||
{ID: "M045", ReductionType: "design", SubType: "control_design", Name: "Steuerungstechnische Sicherheit", Description: "Steuerungsarchitektur ist auf Fehlererkennung und sichere Reaktion ausgelegt.", HazardCategory: "software_control", Examples: []string{"Cross-Monitoring zwischen Kanaelen", "Diversitaere Signalverarbeitung"}, NormReferences: []string{"ISO 13849-1", "IEC 61508"}},
|
||||
{ID: "M046", ReductionType: "design", SubType: "control_design", Name: "Sichere Energieabschaltung", Description: "Maschine kann jederzeit sicher von allen Energiequellen getrennt werden.", HazardCategory: "electrical", Examples: []string{"Hauptschalter mit Absperrmoeglichkeit", "Pneumatik-Absperrventil am Eingang"}, NormReferences: []string{"IEC 60204-1", "ISO 12100:2010 Kap. 6.2.10"}},
|
||||
{ID: "M047", ReductionType: "design", SubType: "control_design", Name: "Sichere Energieentladung", Description: "Alle gespeicherten Energien werden nach Abschalten kontrolliert abgebaut.", HazardCategory: "electrical", Examples: []string{"Kondensatoren ueber Entladewiderstaende", "Druckspeicher ueber Entlastungsventil"}, NormReferences: []string{"IEC 60204-1 Kap. 5.4", "ISO 12100:2010 Kap. 6.2.10"}},
|
||||
{ID: "M048", ReductionType: "design", SubType: "control_design", Name: "Sichere Notzustaende", Description: "Fuer alle Notsituationen sind definierte Zustaende festgelegt.", HazardCategory: "general", Examples: []string{"Not-Halt-Zustand mit definierten Positionen", "Evakuierungszustand mit geoeffneten Schutztoren"}, NormReferences: []string{"ISO 13850", "IEC 60204-1 Kap. 9.2.5.4"}},
|
||||
{ID: "M049", ReductionType: "design", SubType: "control_design", Name: "Sichere Betriebsartenwahl", Description: "Umschaltung zwischen Betriebsarten ist abgesichert und nur kontrolliert moeglich.", HazardCategory: "software_control", Examples: []string{"Schluesselschalter fuer Betriebsarten", "Sichere Betriebsartenerkennung in SPS"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.11.10", "IEC 60204-1"}},
|
||||
{ID: "M050", ReductionType: "design", SubType: "control_design", Name: "Sicherer Anlauf nach Stoerung", Description: "Wiederanlauf nach Stoerung folgt definierter Prozedur mit Bedienerfreigabe.", HazardCategory: "software_control", Examples: []string{"Schrittweiser Anlauf nach Fehler", "Pruefsequenz vor Produktionsfreigabe"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.11.4", "IEC 60204-1"}},
|
||||
|
||||
// ── Fluid Design (M051-M058) ────────────────────────────────────────
|
||||
{ID: "M051", ReductionType: "design", SubType: "fluid_design", Name: "Sichere Hydraulikdimensionierung", Description: "Hydrauliksystem so ausgelegt, dass Druckspitzen keine unkontrollierten Bewegungen verursachen.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Druckspeicher mit Berstscheibe", "Hydraulikleitungen druckfest dimensioniert"}, NormReferences: []string{"ISO 4413", "ISO 12100:2010 Kap. 6.2.9"}},
|
||||
{ID: "M052", ReductionType: "design", SubType: "fluid_design", Name: "Sichere Pneumatikdimensionierung", Description: "Pneumatik so ausgelegt, dass Druckverlust zu sicherem Zustand fuehrt.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Federrueckstellung bei Druckausfall", "Druckbegrenzer in Versorgungsleitungen"}, NormReferences: []string{"ISO 4414", "ISO 12100:2010 Kap. 6.2.9"}},
|
||||
{ID: "M053", ReductionType: "design", SubType: "fluid_design", Name: "Druckbegrenzung", Description: "Passive Druckbegrenzung verhindert Ueberschreiten des zulaessigen Drucks.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Berstscheiben an Druckbehaeltern", "Ueberdruckventile in Hydraulikkreisen"}, NormReferences: []string{"ISO 4413", "EN 764-7"}},
|
||||
{ID: "M054", ReductionType: "design", SubType: "fluid_design", Name: "Sichere thermische Auslegung", Description: "Thermische Belastung beruecksichtigt zur Vermeidung von Ueberhitzung und Brandgefahr.", HazardCategory: "thermal", Examples: []string{"Waermeableitung durch Kuehlrippen", "Brandlast durch Materialwahl minimieren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.4"}},
|
||||
{ID: "M055", ReductionType: "design", SubType: "fluid_design", Name: "Temperaturbegrenzung", Description: "Zugaengliche Oberflaechen erreichen keine gefaehrlichen Temperaturen.", HazardCategory: "thermal", Examples: []string{"Oberflaechentemperatur unter 43 Grad Celsius", "Thermische Abschirmungen an Oefen"}, NormReferences: []string{"EN ISO 13732-1", "ISO 12100:2010 Kap. 6.2.4"}},
|
||||
{ID: "M056", ReductionType: "design", SubType: "fluid_design", Name: "Passive Kuehlung", Description: "Waermeabfuhr ohne aktive Komponenten verhindert Kuehlungsausfall.", HazardCategory: "thermal", Examples: []string{"Natuerliche Konvektion durch Rippendesign", "Waermeleitrohre (Heatpipes) einsetzen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.4"}},
|
||||
{ID: "M057", ReductionType: "design", SubType: "fluid_design", Name: "Sichere Leitungsfuehrung", Description: "Hydraulik-/Pneumatikleitungen sind vor Beschaedigung geschuetzt.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Leitungen in geschuetzten Kanaelen", "Farbcodierte Leitungen"}, NormReferences: []string{"ISO 4413", "ISO 4414"}},
|
||||
{ID: "M058", ReductionType: "design", SubType: "fluid_design", Name: "Sichere Entlueftung", Description: "Entlueftungssysteme stellen sicheren Druckabbau bei Wartung und Notfall sicher.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Entlueftungspunkte an Druckbehaeltern", "Manuelle Entlueftung mit Sicherheitsventil"}, NormReferences: []string{"ISO 4413", "ISO 4414"}},
|
||||
|
||||
// ── Noise/Vibration (M059-M060) ─────────────────────────────────────
|
||||
{ID: "M059", ReductionType: "design", SubType: "noise_vibration", Name: "Laermminderung an der Quelle", Description: "Laerm wird durch konstruktive Massnahmen an der Entstehungsstelle reduziert.", HazardCategory: "noise_vibration", Examples: []string{"Schalldaemmende Gehaeuse", "Leise Getriebevarianten einsetzen"}, NormReferences: []string{"ISO 11688-1", "EN 12053"}},
|
||||
{ID: "M060", ReductionType: "design", SubType: "noise_vibration", Name: "Schwingungsisolierung", Description: "Maschine wird vom Boden entkoppelt zur Verhinderung von Koerperschallausbreitung.", HazardCategory: "noise_vibration", Examples: []string{"Elastische Maschinenfuesse", "Schwingungsdaempfer an Fundamenten"}, NormReferences: []string{"ISO 10816-1", "EN 1032"}},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package iace
|
||||
|
||||
// getProtectiveMeasures returns Step 2: Technical protective measures (M061-M140).
|
||||
func getProtectiveMeasures() []ProtectiveMeasureEntry {
|
||||
return []ProtectiveMeasureEntry{
|
||||
// ── Fixed Guards (M061-M066) ────────────────────────────────────────
|
||||
{ID: "M061", ReductionType: "protection", SubType: "fixed_guard", Name: "Feste trennende Schutzeinrichtung", Description: "Fest montierte Barriere verhindert Zugang zum Gefahrbereich, nur mit Werkzeug entfernbar.", HazardCategory: "mechanical", Examples: []string{"Verschraubte Schutzverkleidung an Antrieben", "Schutzhaube ueber Riementrieb"}, NormReferences: []string{"ISO 14120", "ISO 12100:2010 Kap. 6.3.2"}},
|
||||
{ID: "M062", ReductionType: "protection", SubType: "fixed_guard", Name: "Schutzzaun", Description: "Feststehender Zaun umgibt den Gefahrbereich vollstaendig.", HazardCategory: "mechanical", Examples: []string{"Stahlgitterzaun um Roboterzelle", "Polycarbonat-Schutzwand an Drehmaschine"}, NormReferences: []string{"ISO 14120", "ISO 13857"}},
|
||||
{ID: "M063", ReductionType: "protection", SubType: "fixed_guard", Name: "Schutzhaube", Description: "Feststehende Haube kapselt rotierende oder sich bewegende Teile ein.", HazardCategory: "mechanical", Examples: []string{"Schutzhaube ueber Riemenantrieb", "Kapselung ueber Kupplungen"}, NormReferences: []string{"ISO 14120"}},
|
||||
{ID: "M064", ReductionType: "protection", SubType: "fixed_guard", Name: "Schutzverkleidung mit Zugangsschlitz", Description: "Feste Verkleidung mit definierten Oeffnungen begrenzt den Zugang auf zul. Masse.", HazardCategory: "mechanical", Examples: []string{"Materialzufuehr-Schlitz an Presse", "Einlegeoeffnung mit Sicherheitsabstand"}, NormReferences: []string{"ISO 13857", "ISO 14120"}},
|
||||
{ID: "M065", ReductionType: "protection", SubType: "fixed_guard", Name: "Schutzgitter fuer Lueftungsoeffnungen", Description: "Gitter an Lueftungsschlitzen verhindert Hindurchgreifen in rotierende Teile.", HazardCategory: "mechanical", Examples: []string{"Fingerschutzgitter an Lueftern", "Schutzgitter an Motorgehaeuse"}, NormReferences: []string{"ISO 13857", "ISO 14120"}},
|
||||
{ID: "M066", ReductionType: "protection", SubType: "fixed_guard", Name: "Tunnelfoermige Schutzeinhausung", Description: "Tunnelschutz am Materialein-/auslauf verhindert Zugriff in die Maschine.", HazardCategory: "mechanical", Examples: []string{"Foerderbandtunnel an Uebergabestellen", "Schutztunnel an Stanzenauslauf"}, NormReferences: []string{"ISO 14120", "ISO 13857"}},
|
||||
|
||||
// ── Movable Guards (M067-M072) ──────────────────────────────────────
|
||||
{ID: "M067", ReductionType: "protection", SubType: "movable_guard", Name: "Bewegliche Schutzeinrichtung mit Verriegelung", Description: "Bewegliche Schutzeinrichtung mit Sicherheitsschalter, Maschine stoppt bei Oeffnung.", HazardCategory: "mechanical", Examples: []string{"Schwenkbare Schutzhaube mit Sicherheitsschalter", "Klappbare Schutzabdeckung"}, NormReferences: []string{"ISO 14119", "ISO 14120"}},
|
||||
{ID: "M068", ReductionType: "protection", SubType: "movable_guard", Name: "Verriegelung mit Zuhaltung", Description: "Schutztuer kann nur bei stillstehender Maschine geoeffnet werden.", HazardCategory: "mechanical", Examples: []string{"Elektromagnetische Zuhaltung", "Bolzenverriegelung mit Positionsueberwachung"}, NormReferences: []string{"ISO 14119", "ISO 14120"}},
|
||||
{ID: "M069", ReductionType: "protection", SubType: "movable_guard", Name: "Codierte Sicherheitsschalter", Description: "RFID-codierte Schalter verhindern Umgehung der Schutzeinrichtung.", HazardCategory: "mechanical", Examples: []string{"RFID-Sicherheitsschalter an Schutztuer", "Codierte Schalter mit Manipulationsschutz"}, NormReferences: []string{"ISO 14119", "EN 1088"}},
|
||||
{ID: "M070", ReductionType: "protection", SubType: "movable_guard", Name: "Verriegelungssystem mit Fluchtentriegelung", Description: "Zuhaltung kann von innen ohne Werkzeug geoeffnet werden (Personenschutz).", HazardCategory: "mechanical", Examples: []string{"Fluchtentriegelung an Einhausung", "Innenliegende Notentriegelung"}, NormReferences: []string{"ISO 14119", "ISO 14120"}},
|
||||
{ID: "M071", ReductionType: "protection", SubType: "movable_guard", Name: "Startverriegelung", Description: "Maschine startet nur wenn alle Schutzeinrichtungen in Schutzstellung sind.", HazardCategory: "mechanical", Examples: []string{"Start nur bei geschlossener Schutztuer", "Automatische Rueckmeldung aller Schutzpositionen"}, NormReferences: []string{"ISO 14119", "ISO 12100:2010 Kap. 6.3.2"}},
|
||||
{ID: "M072", ReductionType: "protection", SubType: "movable_guard", Name: "Zeitverzoegerte Zuhaltung", Description: "Zuhaltung gibt erst nach Auslauf gefaehrlicher Bewegungen frei.", HazardCategory: "mechanical", Examples: []string{"Zeitrelais an Spindelstopp", "Verzoegerte Tuerfreigabe nach Pressstopp"}, NormReferences: []string{"ISO 14119"}},
|
||||
|
||||
// ── Electro-sensitive (M073-M079) ───────────────────────────────────
|
||||
{ID: "M073", ReductionType: "protection", SubType: "electro_sensitive", Name: "Lichtvorhang Typ 2", Description: "Optoelektronischer Schutz mit 30mm Aufloesung fuer Koerpererkennung.", HazardCategory: "mechanical", Examples: []string{"Koerperschutz-Lichtvorhang an Verpackungsmaschine", "Zugangsschutz an Palettieranlage"}, NormReferences: []string{"IEC 61496-1", "IEC 61496-2"}},
|
||||
{ID: "M074", ReductionType: "protection", SubType: "electro_sensitive", Name: "Lichtvorhang Typ 4", Description: "Optoelektronischer Schutz mit 14mm Aufloesung fuer Handschutz.", HazardCategory: "mechanical", Examples: []string{"Handschutz-Lichtgitter an Pressenzufuehrung", "Fingerschutz an Abkantpresse"}, NormReferences: []string{"IEC 61496-1", "IEC 61496-2"}},
|
||||
{ID: "M075", ReductionType: "protection", SubType: "electro_sensitive", Name: "Laserscanner", Description: "Flaechenscanner ueberwacht Bodenbereich mit Warn- und Schutzfeld.", HazardCategory: "mechanical", Examples: []string{"Sicherheitslaserscanner an mobiler Plattform", "Multizonen-Scanner mit anpassbaren Feldern"}, NormReferences: []string{"IEC 61496-3", "ISO 13855"}},
|
||||
{ID: "M076", ReductionType: "protection", SubType: "electro_sensitive", Name: "Sicherheitslichtschranke", Description: "Einstrahl-Lichtschranke ueberwacht Zugang und loest Stopp aus.", HazardCategory: "mechanical", Examples: []string{"Einstrahl-Lichtschranke an Maschinenzugang", "Reflex-Lichtschranke an Auswurfoeffnung"}, NormReferences: []string{"IEC 61496-1", "ISO 13855"}},
|
||||
{ID: "M077", ReductionType: "protection", SubType: "electro_sensitive", Name: "Kamerabasiertes Schutzsystem", Description: "Bildverarbeitungssystem erkennt Personen im Gefahrbereich dreidimensional.", HazardCategory: "mechanical", Examples: []string{"3D-Kamerasystem an Roboterzelle", "Stereokamera-Absicherung an Portal"}, NormReferences: []string{"IEC 61496-4", "ISO 13855"}},
|
||||
{ID: "M078", ReductionType: "protection", SubType: "electro_sensitive", Name: "Radarbasiertes Schutzsystem", Description: "Radarsensor erkennt Personen auch bei Staub, Nebel oder Verschmutzung.", HazardCategory: "mechanical", Examples: []string{"Radarsensor an Outdoor-Anlage", "Radarueberwachung bei verschmutzter Umgebung"}, NormReferences: []string{"IEC 61496-1"}},
|
||||
{ID: "M079", ReductionType: "protection", SubType: "electro_sensitive", Name: "Ultraschallsensor-Absicherung", Description: "Ultraschallsensoren erkennen Personen anhand reflektierter Schallwellen.", HazardCategory: "mechanical", Examples: []string{"Ultraschallnaeherungssensor an Fahrzeugen", "Kollisionswarnung an FTS"}, NormReferences: []string{"IEC 61496-1"}},
|
||||
|
||||
// ── Pressure-sensitive (M080-M082) ──────────────────────────────────
|
||||
{ID: "M080", ReductionType: "protection", SubType: "pressure_sensitive", Name: "Schaltmatte", Description: "Druckempfindliche Bodenmatte erkennt Betreten des Gefahrbereichs.", HazardCategory: "mechanical", Examples: []string{"Sicherheitsmatte vor Roboterzelle", "Schaltmatte unter Palettierstation"}, NormReferences: []string{"ISO 13856-1", "ISO 13855"}},
|
||||
{ID: "M081", ReductionType: "protection", SubType: "pressure_sensitive", Name: "Schaltleiste", Description: "Druckempfindliche Leiste an Maschinenkante stoppt bei Beruehrung.", HazardCategory: "mechanical", Examples: []string{"Schaltleiste an Schutztuer-Unterkante", "Tastleiste an verfahrbarer Einheit"}, NormReferences: []string{"ISO 13856-2"}},
|
||||
{ID: "M082", ReductionType: "protection", SubType: "pressure_sensitive", Name: "Schaltpuffer", Description: "Druckempfindliche Pufferelemente an Fahrzeugkanten erkennen Kollisionen.", HazardCategory: "mechanical", Examples: []string{"Schaltpuffer an FTS/AGV", "Bumper an Shuttle-System"}, NormReferences: []string{"ISO 13856-3", "ISO 3691-4"}},
|
||||
|
||||
// ── Emergency Stop (M083-M086) ──────────────────────────────────────
|
||||
{ID: "M083", ReductionType: "protection", SubType: "emergency_stop", Name: "Not-Halt Kategorie 0", Description: "Sofortiges Abschalten aller Aktoren durch Unterbrechung der Energiezufuhr.", HazardCategory: "general", Examples: []string{"Pilztaster an jedem Bedienfeld", "Drahtloser Not-Halt fuer mobile Bedienung"}, NormReferences: []string{"ISO 13850", "IEC 60204-1 Kap. 9.2.5.4"}},
|
||||
{ID: "M084", ReductionType: "protection", SubType: "emergency_stop", Name: "Not-Halt Kategorie 1", Description: "Kontrolliertes Stillsetzen, dann Energietrennung nach Stillstand.", HazardCategory: "general", Examples: []string{"Kontrolliertes Abbremsen vor Abschaltung", "Gesteuerter Stopp mit anschliessender Energietrennung"}, NormReferences: []string{"ISO 13850", "IEC 60204-1 Kap. 9.2.5.4"}},
|
||||
{ID: "M085", ReductionType: "protection", SubType: "emergency_stop", Name: "Not-Halt-Seilzug", Description: "Reissleine entlang langer Foerderstrecken fuer sofortigen Stopp.", HazardCategory: "general", Examples: []string{"Seilzug-Nothalt an Bandfoerderern", "Reissleine entlang Rollenbahnen"}, NormReferences: []string{"ISO 13850", "EN 620"}},
|
||||
{ID: "M086", ReductionType: "protection", SubType: "emergency_stop", Name: "Notabschaltung", Description: "Sofortige Trennung von der Energieversorgung bei unmittelbarer Lebensgefahr.", HazardCategory: "general", Examples: []string{"Notabschaltung am Hauptschalter", "Schnellablass fuer Hydraulikdruck"}, NormReferences: []string{"IEC 60204-1 Kap. 9.2.5.3", "ISO 12100:2010 Kap. 6.3.5"}},
|
||||
|
||||
// ── Electrical Protection (M087-M094) ───────────────────────────────
|
||||
{ID: "M087", ReductionType: "protection", SubType: "electrical_protection", Name: "Fehlerstromschutzschalter RCD", Description: "Erkennt Fehlerstromanteile und trennt den Stromkreis zum Schutz vor Stromschlag.", HazardCategory: "electrical", Examples: []string{"RCD 30mA fuer Steckdosenkreise", "RCD Typ B fuer Frequenzumrichter"}, NormReferences: []string{"IEC 60204-1", "DIN VDE 0100-410"}},
|
||||
{ID: "M088", ReductionType: "protection", SubType: "electrical_protection", Name: "Schutzerdung", Description: "Leitfaehige Gehaeuseteile sind geerdet zum Schutz bei Isolationsfehlern.", HazardCategory: "electrical", Examples: []string{"PE-Leiter an allen Metallgehaeuse", "Potenzialausgleichsschiene im Schaltschrank"}, NormReferences: []string{"IEC 60204-1 Kap. 8", "DIN VDE 0100-540"}},
|
||||
{ID: "M089", ReductionType: "protection", SubType: "electrical_protection", Name: "Schutzisolierung", Description: "Doppelte oder verstaerkte Isolierung als Schutz ohne Erdungsleiter.", HazardCategory: "electrical", Examples: []string{"Schutzisoliertes Handwerkzeug", "Doppelt isolierte Motorwicklung"}, NormReferences: []string{"IEC 60204-1 Kap. 6.3", "EN 61140"}},
|
||||
{ID: "M090", ReductionType: "protection", SubType: "electrical_protection", Name: "Schutzkleinspannung SELV/PELV", Description: "Betriebsspannung unter 50V AC / 120V DC eliminiert Stromschlagrisiko.", HazardCategory: "electrical", Examples: []string{"24V-Steuerungsspannung", "PELV-Beleuchtung im Maschineninneren"}, NormReferences: []string{"IEC 60204-1 Kap. 6.4", "EN 61140"}},
|
||||
{ID: "M091", ReductionType: "protection", SubType: "electrical_protection", Name: "Zweihandbedienung", Description: "Maschine nur ausloesbar wenn beide Haende gleichzeitig an Bedienelementen.", HazardCategory: "mechanical", Examples: []string{"Zweihand-Sicherheitsschaltung an Presse", "Typ-IIIC-Zweihandsteuerung"}, NormReferences: []string{"ISO 13851", "EN 574"}},
|
||||
{ID: "M092", ReductionType: "protection", SubType: "electrical_protection", Name: "Zustimmschalter", Description: "Dreistufenschalter erlaubt Verfahren nur bei aktivem Gedrueckthalten.", HazardCategory: "mechanical", Examples: []string{"Zustimmtaster am Roboter-Handgeraet", "Zustimmfunktion fuer Teach-Betrieb"}, NormReferences: []string{"IEC 60204-1 Kap. 10.9", "ISO 12100:2010 Kap. 6.2.11.9"}},
|
||||
{ID: "M093", ReductionType: "protection", SubType: "electrical_protection", Name: "Sicherheitsrelais", Description: "Zwangsgefuehrte Relais ueberwachen Schutzeinrichtungen zuverlaessig.", HazardCategory: "electrical", Examples: []string{"Not-Halt-Sicherheitsrelais", "Tuerverriegelungs-Auswertegeraet"}, NormReferences: []string{"ISO 13849-1", "IEC 60947-5-1"}},
|
||||
{ID: "M094", ReductionType: "protection", SubType: "electrical_protection", Name: "Lockout-Tagout (LOTO)", Description: "Verfahren zur Verriegelung und Kennzeichnung von Energiequellen bei Wartung.", HazardCategory: "electrical", Examples: []string{"Persoenliche Sicherheitsschloesser", "LOTO-Verfahrensanweisung an der Maschine"}, NormReferences: []string{"IEC 60204-1 Kap. 5.4", "ISO 14118"}},
|
||||
|
||||
// ── Thermal Protection (M095-M097) ──────────────────────────────────
|
||||
{ID: "M095", ReductionType: "protection", SubType: "thermal_protection", Name: "Thermische Isolierung", Description: "Isolierung an heissen Oberflaechen verhindert Verbrennungen bei Beruehrung.", HazardCategory: "thermal", Examples: []string{"Rohrleitungsisolierung an Dampfleitungen", "Isolierhaube an Extruder"}, NormReferences: []string{"EN ISO 13732-1", "ISO 12100:2010 Kap. 6.3.2.7"}},
|
||||
{ID: "M096", ReductionType: "protection", SubType: "thermal_protection", Name: "Beruehrungsschutz heisse Teile", Description: "Abschirmungen verhindern versehentliche Beruehrung heisser Komponenten.", HazardCategory: "thermal", Examples: []string{"Schutzgitter an Heizungen", "Abstandshalter an heissen Rohren"}, NormReferences: []string{"EN ISO 13732-1"}},
|
||||
{ID: "M097", ReductionType: "protection", SubType: "thermal_protection", Name: "Kuehlfallen und Waermetauscher", Description: "Aktive Kuehlsysteme halten Oberflaechentemperaturen unter sicheren Grenzwerten.", HazardCategory: "thermal", Examples: []string{"Wasserkuehlung an Laser-Schneidkopf", "Oelkuehler fuer Hydraulikoel"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.2.4"}},
|
||||
|
||||
// ── Fluid Protection (M098-M101) ────────────────────────────────────
|
||||
{ID: "M098", ReductionType: "protection", SubType: "fluid_protection", Name: "Druckbegrenzungsventil", Description: "Voreingestelltes Ventil schuetzt das System vor unzulaessig hohem Druck.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"DBV in Hydraulik-Hauptleitung", "Reduzierventil in Pneumatik-Zuluft"}, NormReferences: []string{"ISO 4413", "ISO 4414"}},
|
||||
{ID: "M099", ReductionType: "protection", SubType: "fluid_protection", Name: "Schlauchbruchsicherung", Description: "Ventil schliesst automatisch bei ploetzlichem Druckabfall durch Leitungsbruch.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Schlauchbruchsicherung an Hydraulikzylinder", "Rueckschlagventil bei Leitungsabriss"}, NormReferences: []string{"ISO 4413"}},
|
||||
{ID: "M100", ReductionType: "protection", SubType: "fluid_protection", Name: "Sicherheitsventil", Description: "Federbelastetes Ventil oeffnet bei Ueberdruck und leitet Medium ab.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Sicherheitsventil am Druckbehaelter", "Entlueftungsventil bei Pneumatik"}, NormReferences: []string{"ISO 4126-1", "EN 764-7"}},
|
||||
{ID: "M101", ReductionType: "protection", SubType: "fluid_protection", Name: "Auffangeinrichtung fuer Betriebsfluide", Description: "Auffangwannen verhindern Umweltkontamination und Rutschgefahr bei Leckagen.", HazardCategory: "material_environmental", Examples: []string{"Oelwanne unter Hydraulikaggregat", "Auffangrinne unter Schmierstoffleitungen"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.3.2.7"}},
|
||||
|
||||
// ── Extraction (M102-M104) ──────────────────────────────────────────
|
||||
{ID: "M102", ReductionType: "protection", SubType: "extraction", Name: "Absauganlage", Description: "Absaugung entfernt gesundheitsschaedliche Daempfe, Staub und Rauch.", HazardCategory: "material_environmental", Examples: []string{"Schweissrauchabsaugung", "Staubabsaugung an Holzbearbeitungsmaschine"}, NormReferences: []string{"EN 626-1", "EN 1093-1"}},
|
||||
{ID: "M103", ReductionType: "protection", SubType: "extraction", Name: "Oelnebelabscheider", Description: "Filtert Oelnebel aus der Maschinenumgebung zum Schutz der Atemwege.", HazardCategory: "material_environmental", Examples: []string{"Oelnebelabscheider an CNC-Maschine", "Aerosolabscheider an Kuehlschmiermittel"}, NormReferences: []string{"EN 1093-1"}},
|
||||
{ID: "M104", ReductionType: "protection", SubType: "extraction", Name: "Spaenesauganlage", Description: "Absaugsystem entfernt Metallspaene und verhindert Verletzungen durch Spaeneflug.", HazardCategory: "mechanical", Examples: []string{"Spaenefoerderer an Drehmaschine", "Spaeneabsaugung an Fraesmaschine"}, NormReferences: []string{"EN 1093-1"}},
|
||||
|
||||
// ── Safety Control (M105-M113) ──────────────────────────────────────
|
||||
{ID: "M105", ReductionType: "protection", SubType: "safety_control", Name: "Sichere SPS", Description: "Fehlersichere SPS fuehrt sicherheitsrelevante Funktionen redundant aus.", HazardCategory: "software_control", Examples: []string{"Zweikanalige SPS mit Kreuzvergleich", "SIL-3-zertifizierte Safety-SPS"}, NormReferences: []string{"IEC 62061", "ISO 13849-1"}},
|
||||
{ID: "M106", ReductionType: "protection", SubType: "safety_control", Name: "Watchdog", Description: "Timer ueberwacht Steuerungssoftware und loest sicheren Zustand bei Ausfall aus.", HazardCategory: "software_control", Examples: []string{"Hardware-Watchdog auf Safety-SPS", "Fenster-Watchdog mit engem Zeitfenster"}, NormReferences: []string{"IEC 61508-2", "ISO 13849-1"}},
|
||||
{ID: "M107", ReductionType: "protection", SubType: "safety_control", Name: "Sichere Fehlerbehandlung", Description: "Jeder erkannte Fehler wird systematisch in definierten sicheren Zustand ueberfuehrt.", HazardCategory: "software_control", Examples: []string{"Exception-Handler fuer kritische Bereiche", "Unbehandelte Fehler loesen sicheren Stopp aus"}, NormReferences: []string{"IEC 61508-3", "IEC 62443-4-1"}},
|
||||
{ID: "M108", ReductionType: "protection", SubType: "safety_control", Name: "Sichere Recovery", Description: "Nach Fehler wird Maschine in Ausgangszustand zurueckgesetzt vor Weiterbetrieb.", HazardCategory: "software_control", Examples: []string{"Referenzfahrt nach Steuerungswiederanlauf", "Konfigurationscheck nach Recovery"}, NormReferences: []string{"IEC 62061", "ISO 12100:2010 Kap. 6.2.11.4"}},
|
||||
{ID: "M109", ReductionType: "protection", SubType: "safety_control", Name: "Sichere Degradationsstrategie", Description: "Bei Teilausfaellen Uebergang in Modus mit reduzierter Leistung aber erhaltener Sicherheit.", HazardCategory: "software_control", Examples: []string{"Reduzierte Geschwindigkeit bei Sensorausfall", "Automatischer Wechsel auf Handbetrieb"}, NormReferences: []string{"IEC 62061", "ISO 13849-1"}},
|
||||
{ID: "M110", ReductionType: "protection", SubType: "safety_control", Name: "Automatische Abschaltung bei Fehler", Description: "Bei schwerwiegenden Fehlern automatische sichere Abschaltung.", HazardCategory: "software_control", Examples: []string{"Stopp-Kategorie 0 bei kritischem Fehler", "Energietrennung bei unbehebbarem Fehler"}, NormReferences: []string{"IEC 60204-1", "ISO 13850"}},
|
||||
{ID: "M111", ReductionType: "protection", SubType: "safety_control", Name: "Sichere Speicherverwaltung", Description: "Steuerungssoftware verwendet sichere Speicherverwaltung gegen Datenverlust.", HazardCategory: "software_control", Examples: []string{"Speicherschutz fuer Safety-Bereiche", "Stack-Overflow-Schutz implementieren"}, NormReferences: []string{"IEC 61508-3"}},
|
||||
{ID: "M112", ReductionType: "protection", SubType: "safety_control", Name: "Selbsttest", Description: "Sicherheitsbaugruppen fuehren automatische Selbsttests durch und melden Fehler.", HazardCategory: "software_control", Examples: []string{"Anlauftestung des Lichtgitters", "ROM-CRC-Pruefung bei Steuerungsstart"}, NormReferences: []string{"IEC 61508-2", "ISO 13849-1"}},
|
||||
{ID: "M113", ReductionType: "protection", SubType: "safety_control", Name: "Sichere Kommunikationsprotokolle", Description: "Sichere Industrieprotokolle fuer authentifizierte Steuerungskommunikation.", HazardCategory: "software_control", Examples: []string{"PROFIsafe fuer SPS-Kommunikation", "CIP Safety fuer EtherNet/IP"}, NormReferences: []string{"IEC 61784-3", "IEC 62280"}},
|
||||
|
||||
// ── Monitoring (M114-M120) ──────────────────────────────────────────
|
||||
{ID: "M114", ReductionType: "protection", SubType: "monitoring", Name: "Sichere Positionsueberwachung", Description: "Redundante Positionserfassung mit Plausibilitaetspruefung an Sicherheitsachsen.", HazardCategory: "mechanical", Examples: []string{"Doppelte Absolutwertgeber an Servoachsen", "Sichere Positionsauswertung ueber Safety-SPS"}, NormReferences: []string{"IEC 61800-5-2", "IEC 62061"}},
|
||||
{ID: "M115", ReductionType: "protection", SubType: "monitoring", Name: "Sichere Geschwindigkeitsueberwachung", Description: "Geschwindigkeit wird sicher ueberwacht mit Stopp bei Ueberschreitung.", HazardCategory: "mechanical", Examples: []string{"Sichere Drehzahlueberwachung an Spindeln", "Geschwindigkeitsbegrenzung im Einrichtbetrieb"}, NormReferences: []string{"IEC 61800-5-2", "IEC 62061"}},
|
||||
{ID: "M116", ReductionType: "protection", SubType: "monitoring", Name: "Temperaturueberwachung", Description: "Temperatursensoren loesen Schutzreaktion bei Grenzwertueberschreitung aus.", HazardCategory: "thermal", Examples: []string{"Temperaturfuehler an Motorwicklungen", "Thermoelement an Hydrauliktank"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.3.2.7"}},
|
||||
{ID: "M117", ReductionType: "protection", SubType: "monitoring", Name: "Vibrationsueberwachung", Description: "Schwingungssensoren warnen vor drohendem Komponentenversagen.", HazardCategory: "noise_vibration", Examples: []string{"Beschleunigungssensoren an Hauptlagern", "Grenzwertbasierte Vibrationswarnung"}, NormReferences: []string{"ISO 10816-1", "ISO 13373-1"}},
|
||||
{ID: "M118", ReductionType: "protection", SubType: "monitoring", Name: "Druckueberwachung", Description: "Druckueberwachung in Hydraulik/Pneumatik mit Schutzreaktion bei Grenzwert.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Druckschalter in Hydraulik-Hauptleitung", "Differenzdruck-Ueberwachung an Filtern"}, NormReferences: []string{"ISO 4413", "ISO 4414"}},
|
||||
{ID: "M119", ReductionType: "protection", SubType: "monitoring", Name: "Redundante Sensorik", Description: "Sicherheitskritische Messstellen mit zwei unabhaengigen Sensoren und Vergleich.", HazardCategory: "software_control", Examples: []string{"Zweikanalige Positionserfassung", "Diversitaere Druckmessung"}, NormReferences: []string{"ISO 13849-1", "IEC 62061"}},
|
||||
{ID: "M120", ReductionType: "protection", SubType: "monitoring", Name: "Zustandsueberwachung (Condition Monitoring)", Description: "Kontinuierliche Maschinenzustandsueberwachung fuer fruehzeitige Fehlererkennung.", HazardCategory: "general", Examples: []string{"Condition-Monitoring-System fuer Lager", "Trendanalyse fuer Motorstroeme"}, NormReferences: []string{"ISO 13379-1", "ISO 17359"}},
|
||||
|
||||
// ── Cybersecurity (M121-M130) ───────────────────────────────────────
|
||||
{ID: "M121", ReductionType: "protection", SubType: "cybersecurity", Name: "Zugangskontrolle", Description: "Physisches/elektronisches Zugangskontrollsystem fuer autorisierte Bedienung.", HazardCategory: "cyber_network", Examples: []string{"RFID-Chipkarten fuer Maschinenzugang", "Schluesselsystem fuer Betriebsartenwahl"}, NormReferences: []string{"IEC 62443-3-3", "ISO 12100:2010 Kap. 6.2.11.10"}},
|
||||
{ID: "M122", ReductionType: "protection", SubType: "cybersecurity", Name: "Sichere Netzwerksegmentierung", Description: "Maschinennetzwerk von anderen Netzwerken getrennt gegen Uebergreifen von Angriffen.", HazardCategory: "cyber_network", Examples: []string{"OT-Netzwerk per VLAN trennen", "DMZ zwischen Office und Produktion"}, NormReferences: []string{"IEC 62443-3-3", "IEC 62443-2-1"}},
|
||||
{ID: "M123", ReductionType: "protection", SubType: "cybersecurity", Name: "Firewall", Description: "Konfigurierte Firewall schuetzt Steuerungsnetzwerk vor unautorisiertem Verkehr.", HazardCategory: "cyber_network", Examples: []string{"Industrie-Firewall vor SPS-Netzwerk", "Deep-Packet-Inspection fuer Industrieprotokolle"}, NormReferences: []string{"IEC 62443-3-3"}},
|
||||
{ID: "M124", ReductionType: "protection", SubType: "cybersecurity", Name: "Sichere Fernwartung", Description: "Fernzugriff nur ueber verschluesselte, authentifizierte, zeitbegrenzte Verbindungen.", HazardCategory: "cyber_network", Examples: []string{"VPN fuer Fernwartung", "Fernzugriff nur nach lokaler Freigabe"}, NormReferences: []string{"IEC 62443-3-3", "VDI/VDE 2182"}},
|
||||
{ID: "M125", ReductionType: "protection", SubType: "cybersecurity", Name: "Signierte Software-Updates", Description: "Updates werden vor Installation auf Authentizitaet und Integritaet geprueft.", HazardCategory: "cyber_network", Examples: []string{"Code-Signing fuer Steuerungssoftware", "Hash-Pruefung vor Update-Installation"}, NormReferences: []string{"IEC 62443-4-1", "IEC 62443-4-2"}},
|
||||
{ID: "M126", ReductionType: "protection", SubType: "cybersecurity", Name: "Integritaetspruefung", Description: "Regelmaessige automatische Pruefung der Steuerungssoftware-Integritaet.", HazardCategory: "cyber_network", Examples: []string{"CRC-Pruefung bei jedem Start", "Hash-Verifizierung der Firmware im Betrieb"}, NormReferences: []string{"IEC 62443-4-2"}},
|
||||
{ID: "M127", ReductionType: "protection", SubType: "cybersecurity", Name: "Sichere Bootkette", Description: "Secure Boot laed nur vertrauenswuerdige Software beim Steuerungsstart.", HazardCategory: "cyber_network", Examples: []string{"Secure Boot im BIOS", "Chain-of-Trust bis zur Applikation"}, NormReferences: []string{"IEC 62443-4-2", "NIST SP 800-147"}},
|
||||
{ID: "M128", ReductionType: "protection", SubType: "cybersecurity", Name: "Verschluesselte Kommunikation", Description: "Alle sicherheitsrelevanten Kommunikationsverbindungen sind verschluesselt.", HazardCategory: "cyber_network", Examples: []string{"TLS fuer HMI-Kommunikation", "OPC UA mit Sign&Encrypt"}, NormReferences: []string{"IEC 62443-3-3", "IEC 62443-4-2"}},
|
||||
{ID: "M129", ReductionType: "protection", SubType: "cybersecurity", Name: "Audit-Trail", Description: "Alle sicherheitsrelevanten Aktionen unveraenderbar mit Zeitstempel protokolliert.", HazardCategory: "cyber_network", Examples: []string{"Geschuetztes Logfile fuer Sicherheitsereignisse", "Aenderungshistorie fuer Konfiguration"}, NormReferences: []string{"IEC 62443-3-3", "IEC 62443-4-2"}},
|
||||
{ID: "M130", ReductionType: "protection", SubType: "cybersecurity", Name: "Sichere Parameteraenderung", Description: "Sicherheitsparameter-Aenderungen erfordern Authentifizierung und Protokollierung.", HazardCategory: "cyber_network", Examples: []string{"Parameterschutz ueber Zugangsstufen", "Vier-Augen-Prinzip bei Safety-Parametern"}, NormReferences: []string{"IEC 62443-3-3", "IEC 62443-4-1"}},
|
||||
|
||||
// ── Alarmierung (M131-M133) ─────────────────────────────────────────
|
||||
{ID: "M131", ReductionType: "protection", SubType: "monitoring", Name: "Optische Alarmierung", Description: "Signalleuchten zeigen Betriebszustand und warnen bei Gefahr.", HazardCategory: "general", Examples: []string{"Signalleuchte gelb bei Warnung, rot bei Gefahr", "Blinkende Warnleuchte vor Maschinenstart"}, NormReferences: []string{"IEC 60204-1 Kap. 10.3", "IEC 60073"}},
|
||||
{ID: "M132", ReductionType: "protection", SubType: "monitoring", Name: "Akustische Alarmierung", Description: "Akustische Signale warnen vor Gefahrsituationen und Maschinenstart.", HazardCategory: "general", Examples: []string{"Hupe vor automatischem Anlauf", "Alarmsirene bei Schutztuerverletzung"}, NormReferences: []string{"IEC 60204-1 Kap. 10.3", "ISO 7731"}},
|
||||
{ID: "M133", ReductionType: "protection", SubType: "monitoring", Name: "Anomalieerkennung", Description: "System erkennt ungewoehnliche Verhaltensmuster und warnt fruehzeitig.", HazardCategory: "ai_specific", Examples: []string{"ML fuer Normalbetriebsprofil", "Netzwerk-Anomalieerkennung"}, NormReferences: []string{"IEC 62443-3-3"}},
|
||||
|
||||
// ── Bremsen / mechanische Schutz (M134-M140) ────────────────────────
|
||||
{ID: "M134", ReductionType: "protection", SubType: "electrical_protection", Name: "Bremssystem", Description: "Zuverlaessiges Bremssystem stoppt bewegliche Teile bei Abschaltung oder Notfall.", HazardCategory: "mechanical", Examples: []string{"Federspeicherbremse an Vertikalachse", "Redundante Bremse mit diversitaerem Wirkprinzip"}, NormReferences: []string{"ISO 13849-1", "IEC 61800-5-2"}},
|
||||
{ID: "M135", ReductionType: "protection", SubType: "electrical_protection", Name: "Sicherheitskupplung", Description: "Trennt Kraftuebertragung bei Drehmomentueberschreitung.", HazardCategory: "mechanical", Examples: []string{"Rutschkupplung im Antriebsstrang", "Brechbolzenkupplung als Sollbruchstelle"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.3.2"}},
|
||||
{ID: "M136", ReductionType: "protection", SubType: "electrical_protection", Name: "Sichere Energieabschaltung (Schutz)", Description: "Zuverlaessige Energietrennung mit Absperrvorrichtung fuer Wartungszugang.", HazardCategory: "electrical", Examples: []string{"Reparaturschalter mit Vorhangschloss", "Pneumatik-Absperrung mit Entlueftung"}, NormReferences: []string{"IEC 60204-1 Kap. 5.4", "ISO 14118"}},
|
||||
{ID: "M137", ReductionType: "protection", SubType: "electrical_protection", Name: "Kontaktlose Energieuebertragung", Description: "Induktive Energieuebertragung eliminiert Verschleiss und Lichtbogenrisiko.", HazardCategory: "electrical", Examples: []string{"Induktive Koppler an Drehtischen", "Kontaktlose Leistungsuebertragung an FTS"}, NormReferences: []string{"IEC 60204-1"}},
|
||||
{ID: "M138", ReductionType: "protection", SubType: "electrical_protection", Name: "Blitzschutz und Ueberspannungsableiter", Description: "Ableiter schuetzen Steuerungselektronik vor transienten Ueberspannungen.", HazardCategory: "electrical", Examples: []string{"Ueberspannungsableiter am Schaltschrankeingang", "EMV-Filter an Signalleitungen"}, NormReferences: []string{"IEC 62305-4", "IEC 60204-1 Kap. 6.6"}},
|
||||
{ID: "M139", ReductionType: "protection", SubType: "electrical_protection", Name: "Isolationsueberwachung", Description: "Dauerhaftes Monitoring des Isolationswiderstands erkennt Fehler vor Gefaehrdung.", HazardCategory: "electrical", Examples: []string{"Isolationswaechter im IT-Netz", "Isolationsmessung an Motorwicklungen"}, NormReferences: []string{"IEC 61557-8", "IEC 60204-1"}},
|
||||
{ID: "M140", ReductionType: "protection", SubType: "electrical_protection", Name: "Selektiver Ueberstromschutz", Description: "Selektive Absicherung begrenzt Fehlerstromauswirkung auf den betroffenen Zweig.", HazardCategory: "electrical", Examples: []string{"Selektive Staffelung der Sicherungen", "Motorschutzschalter an jedem Abgang"}, NormReferences: []string{"IEC 60204-1 Kap. 7", "IEC 60947-2"}},
|
||||
}
|
||||
}
|
||||
|
||||
// getInformationMeasures returns Step 3: User information measures (M141-M200).
|
||||
func getInformationMeasures() []ProtectiveMeasureEntry {
|
||||
return []ProtectiveMeasureEntry{
|
||||
// ── Signage (M141-M150) ─────────────────────────────────────────────
|
||||
{ID: "M141", ReductionType: "information", SubType: "signage", Name: "Sicherheitszeichen nach ISO 7010", Description: "Normgerechte Sicherheitsschilder fuer Gebote, Verbote und Warnungen.", HazardCategory: "general", Examples: []string{"Gebotszeichen fuer Gehoerschutz", "Verbotszeichen an gesperrten Zugaengen"}, NormReferences: []string{"ISO 7010", "ASR A1.3"}},
|
||||
{ID: "M142", ReductionType: "information", SubType: "signage", Name: "Warnhinweis heisse Oberflaeche W017", Description: "Warnzeichen an Maschinenteilen mit Verbrennungsgefahr.", HazardCategory: "thermal", Examples: []string{"Warnaufkleber an Gehaeuse", "Warnschild an Rohrleitungen"}, NormReferences: []string{"ISO 7010 W017", "EN ISO 13732-1"}},
|
||||
{ID: "M143", ReductionType: "information", SubType: "signage", Name: "Gefahrenhinweis elektrische Spannung W012", Description: "Warnzeichen an Stellen mit elektrischer Gefaehrdung.", HazardCategory: "electrical", Examples: []string{"Warnschild am Schaltschrank", "Elektrogefahr-Symbol an Anschlussdosen"}, NormReferences: []string{"ISO 7010 W012", "IEC 60204-1"}},
|
||||
{ID: "M144", ReductionType: "information", SubType: "signage", Name: "Gefahrenkennzeichnung Bodenmarkierung", Description: "Gelb-schwarze Schraffur markiert Gefahrbereiche am Boden.", HazardCategory: "general", Examples: []string{"Bodenmarkierung um Roboterzelle", "Gefahrenzone mit Schraffur kennzeichnen"}, NormReferences: []string{"ASR A1.3", "ISO 12100:2010 Kap. 6.4"}},
|
||||
{ID: "M145", ReductionType: "information", SubType: "signage", Name: "Gefahrenpiktogramme sprachunabhaengig", Description: "Piktogramme warnen ohne Textverstaendnis vor spezifischen Gefaehrdungen.", HazardCategory: "general", Examples: []string{"Piktogramm fuer Handverletzungsgefahr", "Laserwarnsymbol an Bearbeitungsanlage"}, NormReferences: []string{"ISO 7010", "ISO 3864-1"}},
|
||||
{ID: "M146", ReductionType: "information", SubType: "signage", Name: "PSA-Gebotszeichen", Description: "Gebotszeichen zeigen vorgeschriebene Schutzausruestung fuer den Bereich.", HazardCategory: "general", Examples: []string{"Gehoerschutz-Gebot ab 85 dB(A)", "Schutzbrille-Gebot bei Spanabnahme"}, NormReferences: []string{"ISO 7010", "PSA-BV"}},
|
||||
{ID: "M147", ReductionType: "information", SubType: "signage", Name: "Sicherheitsplakat", Description: "Gut sichtbares Plakat fasst wichtigste Sicherheitsregeln zusammen.", HazardCategory: "general", Examples: []string{"Sicherheitsplakat am Maschinenzugang", "Notfall-Verhaltensregeln darstellen"}, NormReferences: []string{"ASR A1.3"}},
|
||||
{ID: "M148", ReductionType: "information", SubType: "signage", Name: "Restrisiko-Kennzeichnung", Description: "Hinweis auf verbleibende Risiken die nicht konstruktiv eliminiert werden konnten.", HazardCategory: "general", Examples: []string{"Restrisiko-Schild an Nachlaufbereich", "Hinweis auf Quetschgefahr trotz Schutzeinrichtung"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.3"}},
|
||||
{ID: "M149", ReductionType: "information", SubType: "signage", Name: "Sicherheitsdiagramme aushangen", Description: "Sicherheitskreise und Schutzeinrichtungen als Diagramm sichtbar machen.", HazardCategory: "general", Examples: []string{"Schaltschema im Schaltschrank", "Blockschaltbild der Sicherheitssteuerung"}, NormReferences: []string{"IEC 60204-1 Kap. 18"}},
|
||||
{ID: "M150", ReductionType: "information", SubType: "signage", Name: "Notfallkontaktliste", Description: "Aktuelle Notfallnummern am Bedienplatz fuer schnelle Erreichbarkeit.", HazardCategory: "general", Examples: []string{"Notfallnummern am Bedienplatz", "Herstellerhotline fuer technische Notfaelle"}, NormReferences: []string{"ASR A2.3", "DGUV Vorschrift 1"}},
|
||||
|
||||
// ── Manual / Documentation (M151-M160) ──────────────────────────────
|
||||
{ID: "M151", ReductionType: "information", SubType: "manual", Name: "Betriebsanleitung", Description: "Umfassende Anleitung fuer sicheren Betrieb in allen vorgesehenen Betriebsarten.", HazardCategory: "general", Examples: []string{"Vollstaendige Anleitung in Landessprache", "Kapitel zur bestimmungsgemaessen Verwendung"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.5", "IEC 82079-1"}},
|
||||
{ID: "M152", ReductionType: "information", SubType: "manual", Name: "Restrisiko-Hinweise in Anleitung", Description: "Dokumentation aller verbleibenden Risiken mit Schutzmassnahmen fuer den Betreiber.", HazardCategory: "general", Examples: []string{"Restrisiken kapitelweise auflisten", "Schutzempfehlungen fuer jedes Restrisiko"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.5.1 f"}},
|
||||
{ID: "M153", ReductionType: "information", SubType: "manual", Name: "Wartungsanleitung", Description: "Detaillierte Wartungsanweisungen mit erforderlichen Sicherheitsmassnahmen.", HazardCategory: "general", Examples: []string{"Schritt-fuer-Schritt-Wartungsanleitung", "Sicherheitsmassnahmen vor jeder Taetigkeit"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.5.1 e", "IEC 82079-1"}},
|
||||
{ID: "M154", ReductionType: "information", SubType: "manual", Name: "Servicehandbuch", Description: "Alle Informationen fuer sichere Diagnose, Reparatur und Instandsetzung.", HazardCategory: "general", Examples: []string{"Schaltplaene und Hydraulikplaene", "Diagnoseprozeduren fuer Fehlercodes"}, NormReferences: []string{"IEC 82079-1"}},
|
||||
{ID: "M155", ReductionType: "information", SubType: "manual", Name: "Notfallanweisung", Description: "Sofortmassnahmen bei Unfaellen und Stoerungen an der Maschine.", HazardCategory: "general", Examples: []string{"Notfallplan an der Maschine aushangen", "Erste-Hilfe bei maschinenspezifischen Verletzungen"}, NormReferences: []string{"DGUV Vorschrift 1", "ISO 12100:2010 Kap. 6.4.5.1 d"}},
|
||||
{ID: "M156", ReductionType: "information", SubType: "manual", Name: "Betreiberhandbuch", Description: "Zusammenfassung aller organisatorischen Pflichten des Maschinenbetreibers.", HazardCategory: "general", Examples: []string{"Betreiberpflichten aus Maschinenrichtlinie", "Pruef- und Wartungspflichten"}, NormReferences: []string{"2006/42/EG Anhang I", "BetrSichV"}},
|
||||
{ID: "M157", ReductionType: "information", SubType: "manual", Name: "Reinigungsanweisung", Description: "Sichere Vorgehensweise bei Reinigung der Maschine und Komponenten.", HazardCategory: "general", Examples: []string{"Zulaessige Reinigungsmittel", "Reinigung nur bei abgeschalteter Maschine"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.5.1 e"}},
|
||||
{ID: "M158", ReductionType: "information", SubType: "manual", Name: "Stoerungsanweisung", Description: "Sicheres Vorgehen bei typischen Maschinenstoerungen und deren Behebung.", HazardCategory: "general", Examples: []string{"Stoerungsbilder mit Abhilfemassnahmen", "Eskalationsprozess bei nicht behebbaren Stoerungen"}, NormReferences: []string{"IEC 82079-1", "ISO 12100:2010 Kap. 6.4.5.1 d"}},
|
||||
{ID: "M159", ReductionType: "information", SubType: "manual", Name: "Softwareupdateanleitung", Description: "Sicheres Einspielen von Software-/Firmware-Updates auf Maschinensteuerung.", HazardCategory: "software_control", Examples: []string{"Backup vor jedem Update", "Funktionspruefung nach Update"}, NormReferences: []string{"IEC 62443-2-3"}},
|
||||
{ID: "M160", ReductionType: "information", SubType: "manual", Name: "Entsorgungsanleitung", Description: "Fachgerechte und sichere Entsorgung der Maschine und Betriebsstoffe.", HazardCategory: "material_environmental", Examples: []string{"Gefahrstoffe identifizieren", "Entsorgungsnachweis fuer Fluide"}, NormReferences: []string{"2006/42/EG Anhang I Kap. 1.7.4.2 v"}},
|
||||
|
||||
// ── Training (M161-M168) ────────────────────────────────────────────
|
||||
{ID: "M161", ReductionType: "information", SubType: "training", Name: "Erstunterweisung Bediener", Description: "Initiale Sicherheitsunterweisung vor erstem Maschinenbetrieb.", HazardCategory: "general", Examples: []string{"Einweisungsprogramm fuer neue Bediener", "Praktische Uebung am Not-Halt"}, NormReferences: []string{"BetrSichV §12", "DGUV Vorschrift 1"}},
|
||||
{ID: "M162", ReductionType: "information", SubType: "training", Name: "Jaehrliche Wiederholungsunterweisung", Description: "Regelmaessige Auffrischung der Sicherheitskenntnisse.", HazardCategory: "general", Examples: []string{"Jaehrliche Sicherheitsschulung", "Schulungsnachweise dokumentieren"}, NormReferences: []string{"ArbSchG §12", "DGUV Vorschrift 1"}},
|
||||
{ID: "M163", ReductionType: "information", SubType: "training", Name: "LOTO-Schulung", Description: "Schulung zum Lockout-Tagout-Verfahren fuer Wartungspersonal.", HazardCategory: "electrical", Examples: []string{"Praktische LOTO-Uebung an der Maschine", "Zertifizierung fuer LOTO-Berechtigung"}, NormReferences: []string{"ISO 14118", "DGUV Vorschrift 3"}},
|
||||
{ID: "M164", ReductionType: "information", SubType: "training", Name: "Benutzerrollenbeschreibung", Description: "Dokumentation der Aufgaben, Verantwortlichkeiten und Qualifikationen pro Rolle.", HazardCategory: "general", Examples: []string{"Rollenbeschreibung Maschinenbediener", "Qualifikationsanforderungen Instandhalter"}, NormReferences: []string{"BetrSichV", "DGUV Vorschrift 1"}},
|
||||
{ID: "M165", ReductionType: "information", SubType: "training", Name: "Notfalltraining", Description: "Praktische Uebungen fuer Notfallsituationen an der Maschine.", HazardCategory: "general", Examples: []string{"Not-Halt-Uebung mit allen Bedienern", "Erste-Hilfe-Training maschinenspezifisch"}, NormReferences: []string{"ArbSchG §10", "DGUV Vorschrift 1"}},
|
||||
{ID: "M166", ReductionType: "information", SubType: "training", Name: "Cybersecurity-Awareness-Training", Description: "Schulung zu IT-Sicherheitsrisiken an Maschinen und Steuerungen.", HazardCategory: "cyber_network", Examples: []string{"Passwortsicherheit an HMI", "Erkennung von Social Engineering"}, NormReferences: []string{"IEC 62443-2-1"}},
|
||||
{ID: "M167", ReductionType: "information", SubType: "training", Name: "Schulung Schutzeinrichtungen", Description: "Unterweisung zur korrekten Funktion und Pruefung aller Schutzeinrichtungen.", HazardCategory: "general", Examples: []string{"Funktionstest der Lichtgitter erklaeren", "Pruefung der Schutztuerverriegelung zeigen"}, NormReferences: []string{"BetrSichV §12", "DGUV Vorschrift 1"}},
|
||||
{ID: "M168", ReductionType: "information", SubType: "training", Name: "Gefahrstoffunterweisung", Description: "Schulung zum sicheren Umgang mit Gefahrstoffen an der Maschine.", HazardCategory: "material_environmental", Examples: []string{"Umgang mit Kuehlschmiermitteln", "Verhalten bei Oelleckage"}, NormReferences: []string{"GefStoffV §14", "DGUV Vorschrift 1"}},
|
||||
|
||||
// ── PPE (M169-M175) ─────────────────────────────────────────────────
|
||||
{ID: "M169", ReductionType: "information", SubType: "ppe", Name: "Schutzbrille", Description: "Augenschutz gegen Spaeneflug, Spritzer und UV-Strahlung.", HazardCategory: "mechanical", Examples: []string{"Schutzbrille bei Schleifarbeiten", "Vollsichtbrille bei chemischen Spritzern"}, NormReferences: []string{"EN 166", "PSA-BV"}},
|
||||
{ID: "M170", ReductionType: "information", SubType: "ppe", Name: "Gehoerschutz Kapsel", Description: "Kapselgehoerschuetzer bei Laermpegeln ueber 85 dB(A).", HazardCategory: "noise_vibration", Examples: []string{"Kapselgehoerschutz an lauten Maschinen", "Aktiver Gehoerschutz fuer Kommunikation"}, NormReferences: []string{"EN 352-1", "LärmVibrationsArbSchV"}},
|
||||
{ID: "M171", ReductionType: "information", SubType: "ppe", Name: "Schutzhandschuhe mechanisch", Description: "Handschuhe gegen Schnitt-, Stich- und Abriebverletzungen.", HazardCategory: "mechanical", Examples: []string{"Schnittschutzhandschuhe Level 5", "Vibrationsschutz-Handschuhe"}, NormReferences: []string{"EN 388", "PSA-BV"}},
|
||||
{ID: "M172", ReductionType: "information", SubType: "ppe", Name: "Sicherheitsschuhe S3", Description: "Sicherheitsschuhe mit Zehenschutzkappe und durchtrittsicherer Sohle.", HazardCategory: "mechanical", Examples: []string{"S3-Schuhe im Produktionsbereich", "S5-Gummistiefel bei Nassreinigung"}, NormReferences: []string{"EN ISO 20345", "PSA-BV"}},
|
||||
{ID: "M173", ReductionType: "information", SubType: "ppe", Name: "Atemschutz FFP2/FFP3", Description: "Atemschutzmaske gegen Staub, Rauch und Aerosole.", HazardCategory: "material_environmental", Examples: []string{"FFP2-Maske bei Schweissrauch", "FFP3-Maske bei Feinstaub"}, NormReferences: []string{"EN 149", "GefStoffV"}},
|
||||
{ID: "M174", ReductionType: "information", SubType: "ppe", Name: "Schutzkleidung chemisch", Description: "Chemikalienschutzkleidung gegen Spritzer und Kontamination.", HazardCategory: "material_environmental", Examples: []string{"Chemikalienschuerze an Galvanikanlage", "Vollschutzanzug bei Reinigungsarbeiten"}, NormReferences: []string{"EN 14605", "GefStoffV"}},
|
||||
{ID: "M175", ReductionType: "information", SubType: "ppe", Name: "Schutzhelm", Description: "Kopfschutz gegen herabfallende Teile und Anstossen.", HazardCategory: "mechanical", Examples: []string{"Industrieschutzhelm in Montagehalle", "Anstosskappen in niedrigen Bereichen"}, NormReferences: []string{"EN 397", "PSA-BV"}},
|
||||
|
||||
// ── Organizational (M176-M192) ──────────────────────────────────────
|
||||
{ID: "M176", ReductionType: "information", SubType: "organizational", Name: "Zugangsregelung", Description: "Organisatorische Festlegung wer unter welchen Bedingungen Zugang erhaelt.", HazardCategory: "general", Examples: []string{"Zugangsberechtigungsliste fuehren", "Begleitpflicht fuer Besucher"}, NormReferences: []string{"BetrSichV", "DGUV Vorschrift 1"}},
|
||||
{ID: "M177", ReductionType: "information", SubType: "organizational", Name: "Betriebsanweisung", Description: "Arbeitsplatzspezifische Anweisung zum sicheren Umgang mit der Maschine.", HazardCategory: "general", Examples: []string{"Betriebsanweisung am Bedienplatz", "Taeglich zu beachtende Sicherheitshinweise"}, NormReferences: []string{"BetrSichV §12", "TRBS 1201"}},
|
||||
{ID: "M178", ReductionType: "information", SubType: "organizational", Name: "Gefaehrdungsbeurteilung", Description: "Systematische Ermittlung und Bewertung aller Gefaehrdungen am Arbeitsplatz.", HazardCategory: "general", Examples: []string{"Gefaehrdungsbeurteilung pro Maschine", "Massnahmen aus Beurteilung ableiten"}, NormReferences: []string{"ArbSchG §5", "BetrSichV §3"}},
|
||||
{ID: "M179", ReductionType: "information", SubType: "organizational", Name: "Wartungsplan", Description: "Detaillierter Plan mit Intervallen und Umfang aller planmaessigen Wartung.", HazardCategory: "general", Examples: []string{"Taeglich zu pruefende Sicherheitseinrichtungen", "Jaehrliche Hauptinspektion planen"}, NormReferences: []string{"BetrSichV §10", "TRBS 1201"}},
|
||||
{ID: "M180", ReductionType: "information", SubType: "organizational", Name: "Inspektionsplan", Description: "Art und Haeufigkeit der Inspektionen sicherheitsrelevanter Komponenten.", HazardCategory: "general", Examples: []string{"Tagesinspektion Schutzeinrichtungen", "Quartalinspektion Hydraulikleitungen"}, NormReferences: []string{"BetrSichV §10", "TRBS 1201"}},
|
||||
{ID: "M181", ReductionType: "information", SubType: "organizational", Name: "Pruefplan wiederkehrende Pruefungen", Description: "Festlegung welche Pruefungen an welchen Bauteilen in welchen Intervallen.", HazardCategory: "general", Examples: []string{"Wiederkehrende Pruefung Druckbehaelter", "Pruefung nach DGUV V3"}, NormReferences: []string{"BetrSichV §14-16", "TRBS 1201"}},
|
||||
{ID: "M182", ReductionType: "information", SubType: "organizational", Name: "Incident-Reporting", Description: "Meldung und Dokumentation aller Sicherheitsvorfaelle.", HazardCategory: "general", Examples: []string{"Meldeformular fuer Vorfaelle", "Vorfallanalyse und Massnahmenverfolgung"}, NormReferences: []string{"DGUV Vorschrift 1 §28", "ArbSchG §15-16"}},
|
||||
{ID: "M183", ReductionType: "information", SubType: "organizational", Name: "Aenderungsmanagement", Description: "Strukturiertes Change-Management mit Sicherheitsbewertung jeder Aenderung.", HazardCategory: "general", Examples: []string{"Aenderungsantrag mit Sicherheitsbewertung", "Risikobeurteilung bei jeder Aenderung aktualisieren"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.1", "IEC 62443-2-4"}},
|
||||
{ID: "M184", ReductionType: "information", SubType: "organizational", Name: "Auditverfahren", Description: "Regelmaessige Ueberpruefung der Wirksamkeit aller Sicherheitsmassnahmen.", HazardCategory: "general", Examples: []string{"Internes Sicherheitsaudit jaehrlich", "Massnahmen aus Audits nachverfolgen"}, NormReferences: []string{"ISO 45001", "DGUV Vorschrift 1"}},
|
||||
{ID: "M185", ReductionType: "information", SubType: "organizational", Name: "Passwortpolicy", Description: "Mindestanforderungen an Passwoerter fuer Steuerungssysteme.", HazardCategory: "cyber_network", Examples: []string{"Mindestlaenge und Komplexitaet", "Standardpasswoerter bei Inbetriebnahme aendern"}, NormReferences: []string{"IEC 62443-2-1"}},
|
||||
{ID: "M186", ReductionType: "information", SubType: "organizational", Name: "Backup-Anweisung", Description: "Regelmaessige Sicherung von Steuerungsprogrammen und Konfigurationsdaten.", HazardCategory: "software_control", Examples: []string{"Woechentliches Backup der SPS-Programme", "Backup nach jeder Parameteraenderung"}, NormReferences: []string{"IEC 62443-2-1"}},
|
||||
{ID: "M187", ReductionType: "information", SubType: "organizational", Name: "Konfigurationsrichtlinie", Description: "Festlegung wie sicherheitsrelevante Parameter dokumentiert und freigegeben werden.", HazardCategory: "software_control", Examples: []string{"Parameterliste mit Wertebereichen", "Freigabeprozess fuer Aenderungen"}, NormReferences: []string{"IEC 62443-2-1", "IEC 62443-4-1"}},
|
||||
{ID: "M188", ReductionType: "information", SubType: "organizational", Name: "Update-Freigabeprozess", Description: "Definierter Prozess stellt sicher dass Updates vor Einspielen geprueft werden.", HazardCategory: "software_control", Examples: []string{"Testprozedur auf Testmaschine", "Freigabe durch Sicherheitsbeauftragten"}, NormReferences: []string{"IEC 62443-2-3", "IEC 62443-4-1"}},
|
||||
{ID: "M189", ReductionType: "information", SubType: "organizational", Name: "Reset-Anweisung", Description: "Sichere Vorgehensweise zum Quittieren von Fehlern und Wiederanlauf.", HazardCategory: "software_control", Examples: []string{"Reset-Prozedur nach Not-Halt", "Pruefschritte vor Produktionsfreigabe"}, NormReferences: []string{"ISO 12100:2010 Kap. 6.4.5.1 d"}},
|
||||
{ID: "M190", ReductionType: "information", SubType: "organizational", Name: "Inbetriebnahmecheckliste", Description: "Vor erstem Betrieb alle Sicherheitsvoraussetzungen systematisch pruefen.", HazardCategory: "general", Examples: []string{"Schutzeinrichtungen auf korrekte Montage", "Sicherheitsfunktionen einzeln testen"}, NormReferences: []string{"BetrSichV §14", "TRBS 1201"}},
|
||||
{ID: "M191", ReductionType: "information", SubType: "organizational", Name: "Stilllegungscheckliste", Description: "Sichere Ausserbetriebnahme und Entsorgung der Maschine.", HazardCategory: "general", Examples: []string{"Energiequellen sicher trennen", "Betriebsstoffe umweltgerecht entsorgen"}, NormReferences: []string{"2006/42/EG Anhang I Kap. 1.7.4.2 v"}},
|
||||
{ID: "M192", ReductionType: "information", SubType: "organizational", Name: "Sicherheitsprotokoll", Description: "Dokumentation aller durchgefuehrten Sicherheitspruefungen und Ergebnisse.", HazardCategory: "general", Examples: []string{"Pruefprotokoll wiederkehrende Pruefungen", "Abnahmeprotokoll nach Umbau"}, NormReferences: []string{"BetrSichV §14", "TRBS 1201"}},
|
||||
|
||||
// ── Marking (M193-M196) ─────────────────────────────────────────────
|
||||
{ID: "M193", ReductionType: "information", SubType: "marking", Name: "Typenschild", Description: "Dauerhaftes Typenschild mit Herstellerangaben, Leistung und CE-Kennzeichnung.", HazardCategory: "general", Examples: []string{"CE-Kennzeichnung auf Typenschild", "Baujahr und Seriennummer"}, NormReferences: []string{"2006/42/EG Anhang I Kap. 1.7.3", "ISO 12100:2010 Kap. 6.4.4"}},
|
||||
{ID: "M194", ReductionType: "information", SubType: "marking", Name: "Leitungskennzeichnung", Description: "Eindeutige Kennzeichnung aller Leitungen nach Medium, Flussrichtung und Druck.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Farbcodierung nach Norm", "Flussrichtungspfeile an Leitungen"}, NormReferences: []string{"ISO 14726", "DIN 2403"}},
|
||||
{ID: "M195", ReductionType: "information", SubType: "marking", Name: "Komponentenkennzeichnung", Description: "Alle sicherheitsrelevanten Komponenten eindeutig beschriftet fuer Wartung.", HazardCategory: "general", Examples: []string{"Kabelmarkierungen an Klemmen", "Ventilkennzeichnung im Hydraulikplan"}, NormReferences: []string{"IEC 60204-1 Kap. 16", "ISO 12100:2010 Kap. 6.4.4"}},
|
||||
{ID: "M196", ReductionType: "information", SubType: "marking", Name: "Pruefplakette", Description: "Plakette dokumentiert erfolgte Pruefung mit Datum und naechstem Prueftermin.", HazardCategory: "general", Examples: []string{"Pruefplakette an Druckbehaelter", "DGUV V3-Pruefplakette an Elektrogeraet"}, NormReferences: []string{"BetrSichV §14", "DGUV Vorschrift 3"}},
|
||||
|
||||
// ── Checklisten (M197-M200) ─────────────────────────────────────────
|
||||
{ID: "M197", ReductionType: "information", SubType: "organizational", Name: "Taeglich Sicherheits-Checkliste", Description: "Standardisierte Checkliste fuer taegliche Sicherheitspruefung vor Betrieb.", HazardCategory: "general", Examples: []string{"Sichtpruefung Schutzeinrichtungen", "Funktionspruefung Not-Halt"}, NormReferences: []string{"BetrSichV §10", "DGUV Vorschrift 1"}},
|
||||
{ID: "M198", ReductionType: "information", SubType: "organizational", Name: "Wartungscheckliste", Description: "Systematische Abarbeitung aller Wartungspunkte mit Dokumentation.", HazardCategory: "general", Examples: []string{"Checkliste woechentliche Wartung", "Oelstand und Filter pruefen"}, NormReferences: []string{"BetrSichV §10"}},
|
||||
{ID: "M199", ReductionType: "information", SubType: "organizational", Name: "Schichtwechsel-Checkliste", Description: "Checkliste fuer sichere Uebergabe zwischen Schichten.", HazardCategory: "general", Examples: []string{"Maschinenzustand dokumentieren", "Offene Stoerungen uebergeben"}, NormReferences: []string{"DGUV Vorschrift 1"}},
|
||||
{ID: "M200", ReductionType: "information", SubType: "organizational", Name: "Cyber-Security-Hinweise fuer Betreiber", Description: "Hinweise zum Schutz der Maschinensteuerung vor Cyberangriffen.", HazardCategory: "cyber_network", Examples: []string{"Netzwerksicherheitshinweise", "Regelmaessige Aktualisierung empfehlen"}, NormReferences: []string{"IEC 62443-2-1", "VDI/VDE 2182"}},
|
||||
}
|
||||
}
|
||||
@@ -177,6 +177,7 @@ type ProtectiveMeasureEntry struct {
|
||||
Description string `json:"description"`
|
||||
HazardCategory string `json:"hazard_category,omitempty"`
|
||||
Examples []string `json:"examples,omitempty"`
|
||||
NormReferences []string `json:"norm_references,omitempty"`
|
||||
Tags []string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
|
||||
@@ -84,8 +84,11 @@ func NewPatternEngine() *PatternEngine {
|
||||
patterns = append(patterns, GetForestryConveyorPatterns()...) // HP420-HP450 forestry/conveyor
|
||||
patterns = append(patterns, GetPlasticsMetalPatterns()...) // HP500-HP529 plastics + metalworking
|
||||
patterns = append(patterns, GetWeldingGlassTextilePatterns()...) // HP530-HP559 welding + glass + textile
|
||||
patterns = append(patterns, GetSpecificMachinePatterns()...) // HP730-HP784 pressure/wind/solar/battery/escalator/pool/playground/fitness/laundry/glass
|
||||
patterns = append(patterns, GetCyberExtendedPatterns()...) // HP800-HP864 software faults/cyber/AI-ML/network/HMI
|
||||
patterns = append(patterns, GetSpecificMachinePatterns()...) // HP730-HP755 pressure/wind/solar/battery
|
||||
patterns = append(patterns, GetSpecificMachinePatterns2()...) // HP756-HP784 escalator/pool/playground/fitness/laundry/glass
|
||||
patterns = append(patterns, GetCyberExtendedPatterns()...) // HP800-HP829 software faults/cyber-security
|
||||
patterns = append(patterns, GetCyberExtendedPatterns2()...) // HP830-HP844 AI-ML specific
|
||||
patterns = append(patterns, GetCyberExtendedPatterns3()...) // HP845-HP864 network/communication + HMI
|
||||
patterns = append(patterns, GetWorkshopPatterns()...) // HP600-HP664 cross-machine workshop
|
||||
patterns = append(patterns, GetMaintenanceExtPatterns()...) // HP700-HP729,HP900-HP934 maintenance lifecycle
|
||||
return &PatternEngine{
|
||||
|
||||
@@ -303,7 +303,11 @@ def _split_into_sections(text: str, parent_label: str, url: str) -> list[dict]:
|
||||
and stripped[0].isupper()
|
||||
)
|
||||
|
||||
if is_heading and current_heading and len("\n".join(current_text)) > 200:
|
||||
# Skip-headings should NOT start a new section — their text
|
||||
# belongs to the previous section (e.g. "Risikoabwägung" inside DSFA)
|
||||
is_skip = is_heading and stripped.lower().strip() in SKIP_HEADINGS
|
||||
|
||||
if is_heading and not is_skip and current_heading and len("\n".join(current_text)) > 200:
|
||||
# Save previous section
|
||||
sec_text = "\n".join(current_text)
|
||||
sec_type = _classify_section(current_heading)
|
||||
@@ -315,7 +319,7 @@ def _split_into_sections(text: str, parent_label: str, url: str) -> list[dict]:
|
||||
"word_count": len(sec_text.split()),
|
||||
})
|
||||
|
||||
if is_heading:
|
||||
if is_heading and not is_skip:
|
||||
current_heading = stripped
|
||||
current_text = []
|
||||
else:
|
||||
|
||||
@@ -23,9 +23,10 @@ COOKIE_CHECKLIST = [
|
||||
"label": "Konkrete Cookie-Namen aufgelistet",
|
||||
"level": 2, "parent": "cookie_types",
|
||||
"patterns": [
|
||||
r"(?:_ga|_gid|_gat|_fbp|_gcl|phpsessid|jsessionid|csrf|xsrf)",
|
||||
r"(?:_ga|_gid|_gat|_fbp|_gcl|phpsessid|jsessionid|csrf|xsrf|cookieinfo|et_id|bt_\w+|cntcookie|shophk)",
|
||||
r"cookie[\-_]?name\s*[:\|]",
|
||||
r"name\s+des\s+cookie",
|
||||
r"(?:name|bezeichnung)\s+.*(?:funktion|zweck|speicherdauer|laufzeit)",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Neben den Kategorien sollten auch die konkreten Cookie-Namen aufgefuehrt werden (z.B. _ga, _gid, PHPSESSID). Listen Sie jeden einzelnen Cookie mit seinem technischen Namen auf.",
|
||||
@@ -37,6 +38,9 @@ COOKIE_CHECKLIST = [
|
||||
"patterns": [
|
||||
r"(?:essentiell|notwendig|technisch\s+(?:erforderlich|notwendig)).*(?:funktion|betrieb|sicherheit|warenkorb|session|anmeldung)",
|
||||
r"(?:unbedingt|zwingend)\s+erforderlich",
|
||||
r"session[\-\s]?(?:id|cookie).*(?:sitzung|zuordnen|identifiz|wiedererkenn)",
|
||||
r"(?:sitzung|session).*(?:zuordnen|identifiz|wiedererkenn|erfordert)",
|
||||
r"(?:betrieb|funktion)\w*\s+(?:der|unserer)\s+(?:internetseite|website|webseite)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Fuer essenzielle/notwendige Cookies muss begruendet werden, warum sie technisch erforderlich sind (z.B. Warenkorb, Session, Sicherheit). Ergaenzen Sie eine kurze Begruendung je Cookie.",
|
||||
@@ -133,12 +137,14 @@ COOKIE_CHECKLIST = [
|
||||
"level": 2, "parent": "third_party",
|
||||
"patterns": [
|
||||
r"§\s*25\s*(?:abs\.)?\s*(?:1|2)?\s*tdddg",
|
||||
r"art\.\s*6\s*(?:abs\.\s*)?1\s*(?:lit\.\s*)?a.*(?:cookie|einwilligung)",
|
||||
r"art\.\s*6\s*(?:abs\.\s*)?1\s*(?:lit\.\s*)?[af].*(?:cookie|einwilligung|notwendig)",
|
||||
r"einwilligung.*(?:cookie|tracking|marketing)",
|
||||
r"ttdsg|tdddg|§\s*25",
|
||||
r"rechtsgrundlage.*(?:art\.\s*6|cookie|nutzung\s+von\s+cookie)",
|
||||
r"(?:cookie|nutzung\s+von\s+cookie).*rechtsgrundlage",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Fuer nicht-essentielle Cookies muss die Rechtsgrundlage genannt werden (§25 TDDDG bzw. Art. 6 Abs. 1 lit. a DSGVO — Einwilligung). Ergaenzen Sie die Rechtsgrundlage, insbesondere den Verweis auf die Einwilligung.",
|
||||
"hint": "Die Rechtsgrundlage fuer Cookies muss genannt werden: §25 TDDDG fuer nicht-essentielle Cookies (Einwilligung), oder Art. 6(1)(f) DSGVO fuer technisch notwendige Cookies (berechtigtes Interesse).",
|
||||
},
|
||||
|
||||
# ── L1: Widerspruch ───────────────────────────────────────────────
|
||||
@@ -185,8 +191,11 @@ COOKIE_CHECKLIST = [
|
||||
"level": 1, "parent": None,
|
||||
"patterns": [
|
||||
r"(?:cookie[\-\s])?(?:tabelle|uebersicht|übersicht|liste|aufstellung)",
|
||||
r"(?:name|bezeichnung)\s*[\|\t]\s*(?:anbieter|zweck|dauer|laufzeit)",
|
||||
r"(?:name|bezeichnung)\s*[\|\t]\s*(?:anbieter|zweck|dauer|laufzeit|funktion)",
|
||||
r"(?:first[\-\s]?party|third[\-\s]?party)\s*[\|\t]",
|
||||
r"(?:typ(?:en)?|name|funktion|speicherdauer)\s+(?:typ(?:en)?|name|funktion|speicherdauer)",
|
||||
r"folgende\s+cookies",
|
||||
r"(?:funktionale|session|analyse|tracking)\s+cookies?\s+\w+",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Eine strukturierte Cookie-Tabelle oder -Liste mit Spalten wie Name, Anbieter, Zweck und Speicherdauer erleichtert die Uebersichtlichkeit und wird von Aufsichtsbehoerden empfohlen. Ergaenzen Sie eine tabellarische Uebersicht aller Cookies.",
|
||||
|
||||
@@ -41,8 +41,10 @@ DSFA_CHECKLIST = [
|
||||
"label": "Konkreter Verarbeitungsvorgang benannt",
|
||||
"level": 2, "parent": "description",
|
||||
"patterns": [
|
||||
r"(?:betrieb|nutzung|verwaltung|pflege)\s+(?:der|von|unserer|eines)\s+(?:seite|profil|kanal|account|fanpage|pr(?:ae|ä)senz)",
|
||||
r"(?:betrieb|nutzung|verwaltung|pflege)\s+(?:der|von|unserer|eines)\s+(?:seite|profil|kan(?:ae|ä)l|account|fanpage|pr(?:ae|ä)senz)",
|
||||
r"(?:verarbeitung|erhebung|speicherung)\s+(?:von|der)\s+(?:nutzerdaten|personenbezogen|besucher|mitglieder)",
|
||||
r"(?:angebot|social[\-\s]?media[\-\s]?angebot).*(?:besteht\s+aus|umfasst|beinhaltet)",
|
||||
r"kan(?:ae|ä)le\w*\s+(?:facebook|twitter|instagram|youtube|linkedin|xing)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Der konkrete Verarbeitungsvorgang ist nicht namentlich benannt. Benennen Sie den spezifischen Vorgang (z.B. Betrieb einer Fanpage, Verwaltung eines Social-Media-Kanals) explizit im Dokument.",
|
||||
@@ -112,6 +114,8 @@ DSFA_CHECKLIST = [
|
||||
r"(?:schwere|auswirkung|schadensh(?:oe|ö)he|schadenpotential|schadenpotenzial)\s*[:\|]",
|
||||
r"(?:gering|mittel|hoch|kritisch)\w*\s+(?:schwere|auswirkung|schaden)",
|
||||
r"(?:physisch|materiell|immateriell)\w*\s+(?:schaden|nachteil|beeintr(?:ae|ä)chtigung)",
|
||||
r"schadensschwere",
|
||||
r"(?:risiko|gefahr).*(?:gering|mittel|hoch|wesentlich|begrenzt)",
|
||||
],
|
||||
"severity": "MEDIUM",
|
||||
"hint": "Die Schwere der moeglichen Auswirkungen auf Betroffene ist nicht bewertet. Bewerten Sie fuer jedes Risiko die Schadenshoehe (z.B. gering, mittel, hoch, kritisch) und unterscheiden Sie physische, materielle und immaterielle Schaeden.",
|
||||
|
||||
@@ -266,8 +266,11 @@ JOINT_CONTROLLER_CHECKLIST = [
|
||||
r"(?:zwei|2)[\-\s]?klick",
|
||||
r"(?:shariff|share[\-\s]?buttons?\s+ohne\s+tracking)",
|
||||
r"(?:erst|nur)\s+(?:bei|nach|durch)\s+(?:klick|aktivierung).*(?:daten|verbindung)",
|
||||
r"social\s*bookmark",
|
||||
r"(?:kein|keine)\s+(?:social[\-\s]?media[\-\s]?)?plugin",
|
||||
r"(?:link|verweis|grafik).*(?:weitergeleitet|weiterleitung)",
|
||||
],
|
||||
"severity": "LOW",
|
||||
"hint": "Die verwendete technische Loesung (z.B. 2-Klick-Loesung oder Shariff) wird nicht beschrieben. Erlaeutern Sie, welche datenschutzfreundliche Technik eingesetzt wird, um den sofortigen Datentransfer an Plattformen zu verhindern.",
|
||||
"hint": "Erlaeutern Sie die eingesetzte datenschutzfreundliche Technik: z.B. Social Bookmarks (reine Links ohne automatische Datenuebertragung), 2-Klick-Loesung oder Shariff-Buttons.",
|
||||
},
|
||||
]
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
# Ground Truth: IHK Konstanz DSI-Pruefung
|
||||
|
||||
**URL:** https://www.ihk.de/konstanz/servicemarken/ueber-uns/downloads/datenschutzinformationen-zum-internetangebot-4163288
|
||||
**Datum:** 2026-05-07
|
||||
**Text:** 6353 Woerter, 50000 Zeichen
|
||||
|
||||
---
|
||||
|
||||
## 1. DSI Hauptdokument (Art. 13 DSGVO)
|
||||
|
||||
### L1 Checks (9/9 bestanden)
|
||||
|
||||
| Check | Tool-Ergebnis | Korrekt? | Beleg im Text |
|
||||
|-------|--------------|----------|---------------|
|
||||
| Verantwortlicher | PASS | Ja | Z.17-23: "Name und Kontaktdaten des Verantwortlichen — IHK Hochrhein Bodensee, Reichenaustr. 21, D-78467 Konstanz" |
|
||||
| DSB | PASS | Ja | Z.36-44: "Kontaktdaten der/des behoerdlichen Datenschutzbeauftragten — SuedWest Datenschutz" |
|
||||
| Zwecke | PASS | Ja | Z.49: "Zweck und Rechtsgrundlage der Verarbeitung" |
|
||||
| Rechtsgrundlage | PASS | Ja | Z.72: "Art. 6 Abs. 1 f) DSGVO", Z.112: "Art. 6 Abs.1 lit.b)", Z.138: "Art. 6 Abs. 1 lit. a)" |
|
||||
| Empfaenger | PASS | Ja | Z.118-123: "personenbezogenen Daten werden uebermittelt an: Buchhaltung, Dritte, Auftragsverarbeiter" |
|
||||
| Drittlandtransfer | PASS | Ja | Z.369: "Google verarbeitet Ihre personenbezogenen Daten auch in den USA" |
|
||||
| Speicherdauer | PASS | Ja | Z.81: "nach spaetestens 7 Tagen", Z.126: "nach zehn Jahren" |
|
||||
| Betroffenenrechte | PASS | Ja | Z.395: "Art. 15, Art. 16, Art. 17, Art. 18, Art. 20, Art. 77" |
|
||||
| Beschwerderecht | PASS | Ja | Z.11: "Landesdatenschutzgesetz Baden-Wuerttemberg" |
|
||||
|
||||
**Bewertung L1: 9/9 — alle korrekt**
|
||||
|
||||
### L2 Checks (18/22 bestanden)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| Anschrift (PLZ+Ort) | PASS | **Ja** | Z.21: "D-78467 Konstanz" |
|
||||
| E-Mail Verantwortlicher | PASS | **Ja** | Z.22: "info@konstanz.ihk.de" |
|
||||
| Telefon Verantwortlicher | PASS | **Ja** | Z.23: "+49(0)7531-2860-100" |
|
||||
| DSB Kontakt | PASS | **Ja** | Z.44: "datenschutz@konstanz.ihk.de" |
|
||||
| Konkrete Zwecke | PASS | **Ja** | Z.101-108: Kontaktaufnahme, Newsletter, Veranstaltungen, Beratung, Ausbildung |
|
||||
| Art. 6(1)(a) Einwilligung | PASS | **Ja** | Z.138: "Art. 6 Abs. 1 lit. a) DSGVO" |
|
||||
| Art. 6(1)(b) Vertrag | PASS | **Ja** | Z.112: "Art. 6 Abs.1 lit.b)" |
|
||||
| Art. 6(1)(f) Berecht. Interesse | PASS | **Ja** | Z.72: "Art. 6 Abs. 1 f) DSGVO" |
|
||||
| **Interessenabwaegung** | **FAIL** | **Teilweise korrekt** | Z.72: "In den uebrigen genannten Zwecken liegt auch unser berechtigtes Interesse" — es wird das Interesse BENANNT, aber keine explizite ABWAEGUNG dokumentiert. Die IHK nennt ihr Interesse, dokumentiert aber nicht warum es ueberwiegt. **Finding ist inhaltlich korrekt, aber Hint sollte praeziser sein.** |
|
||||
| Empfaenger-Kategorien | PASS | **Ja** | Z.123: "Scandienstleister, Hoster und sonstige IT-Dienstleister sowie externe Administratoren" |
|
||||
| Auftragsverarbeiter | PASS | **Ja** | Z.123: "Auftragsverarbeiter, die mit der Organisation beauftragt wurden" |
|
||||
| **Transfermechanismus** | **FAIL** | **Korrekt** | Z.369 erwaehnt "EU-US Privacy Shield" — aber Privacy Shield ist seit 2020 ungueltig (Schrems II). Es wird KEIN gueltiger Mechanismus (SCC oder DPF) genannt. **True Positive.** Hint korrekt. |
|
||||
| Konkrete Zeitangaben | PASS | **Ja** | Z.81: "7 Tagen", Z.126: "zehn Jahren", Z.345: "90 Tagen" |
|
||||
| **Loeschkonzept** | **FAIL** | **Teilweise korrekt** | Z.78: "Daten werden geloescht, sobald sie fuer die Erreichung des Zweckes nicht mehr erforderlich sind" — das ist ein Loeschgrundsatz, aber kein formales Loeschkonzept. Z.126 nennt Fristen. Kein Verweis auf internes Loeschkonzept. **Grenzfall — Finding akzeptabel, Hint passt.** |
|
||||
| Art. 15 Auskunft | PASS | **Ja** | Z.395: "Auskunftsrecht gem. Art. 15 DSGVO" |
|
||||
| Art. 16 Berichtigung | PASS | **Ja** | Z.395: "Recht auf Berichtigung gem. Art. 16 DSGVO" |
|
||||
| Art. 17 Loeschung | PASS | **Ja** | Z.395: "Recht auf Loeschung gem. Art. 17 DSGVO" |
|
||||
| Art. 18 Einschraenkung | PASS | **Ja** | Z.395: "Recht auf Einschraenkung der Verarbeitung gem. Art. 18 DSGVO" |
|
||||
| Art. 20 Portabilitaet | PASS | **Ja** | Z.395: "Recht auf Datenuebertragbarkeit gem. Art. 20 DSGVO" |
|
||||
| Art. 21 Widerspruch | PASS | **Ja** | Z.366: "Ihnen steht ein Widerspruchsrecht zu" |
|
||||
| **Art. 22 Profiling** | **FAIL** | **Korrekt** | Kein Hinweis auf Art. 22 im gesamten DSI-Text. Es wird weder Profiling erwaehnt noch explizit ausgeschlossen. **True Positive.** Hint korrekt — empfiehlt "Es findet keine automatisierte Entscheidungsfindung statt." |
|
||||
| Aufsichtsbehoerde benannt | PASS | **Ja** | Z.11: "Landesdatenschutzgesetz Baden-Wuerttemberg" — implizit LfDI BW. |
|
||||
|
||||
**Bewertung L2: 18/22 korrekt. 4 Fails, davon 3 True Positives, 1 Grenzfall (Loeschkonzept).**
|
||||
|
||||
---
|
||||
|
||||
## 2. Cookie-Sektion
|
||||
|
||||
### L1 Checks (5/6)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| Arten der Cookies | PASS | **Ja** | Z.161: "transiente Cookies, persistente Cookies, Third-Party Cookies" |
|
||||
| Zwecke der Cookies | PASS | **Ja** | Z.158: "Cookies ein, um unsere Website nutzerfreundlicher zu gestalten" |
|
||||
| Speicherdauer | PASS | **Ja** | Z.164-165: "Session-Cookies werden geloescht", Tabelle mit Speicherdauern |
|
||||
| Drittanbieter | PASS | **Ja** | Z.161: "Third-Party Cookies (von Drittanbietern)" |
|
||||
| Widerspruch | PASS | **Ja** | Z.166: "Browser-Einstellung entsprechend Ihren Wuenschen konfigurieren" |
|
||||
| **Cookie-Tabelle** | **FAIL** | **FALSE POSITIVE** | Z.170-289: Es gibt eine **vollstaendige Cookie-Tabelle** mit Spalten "Typen, Name, Funktion, Speicherdauer"! Die Regex erkennt sie nicht weil das Format (Zeilenumbrueche statt Pipe-Trennzeichen) nicht matched. **Bug im Regex — False Positive.** |
|
||||
|
||||
### L2 Checks (2/9)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| **Cookie-Namen** | **FAIL** | **FALSE POSITIVE** | Z.198-282: Tabelle listet konkret: Cookieinfo_click, JSESSIONID, SHOPHK_Sessio, IHK24_PROD-xxxxx, Cntcookie, et_id, BT_ctst, BT_pdc, BT_sdc, noWS, isSdEnabl. Regex sucht _ga/_gid/PHPSESSID — keine IHK-spezifischen Namen. **Bug: Regex zu spezifisch.** |
|
||||
| **Essential begruendet** | **FAIL** | **FALSE POSITIVE** | Z.164: "Session-Cookies... gemeinsamen Sitzung zuordnen", Z.198-200: "Das Cookie steuert die Anzeige des Hinweises zur Cookie-Nutzung". Essentiell-Cookies sind begruendet. **Regex matcht nicht weil "technisch erforderlich" nicht woertlich vorkommt.** |
|
||||
| **Anbieter benannt** | **FAIL** | **Korrekt** | eTracker wird erwaehnt (Z.311ff), aber nicht direkt in der Cookie-Sektion selbst als Anbieter pro Cookie. **True Positive — Anbieter fehlen in der Tabelle.** |
|
||||
| **Analytics benannt** | **FAIL** | **Teilweise FP** | eTracker wird in Z.311-348 ausfuehrlich beschrieben! Aber Regex sucht "google analytics|matomo|etracker" — und "etracker" IS in the pattern. **Muss pruefen ob die Cookie-Sektion den etracker Text enthaelt.** Die Cookie-Sektion endet bei Z.294 mit "nach oben", dann kommt "Dienste von Drittanbietern". eTracker ist in DIESER Sektion, nicht im Cookie-Abschnitt. **Grenzfall — Text ist auf der Seite, aber in einem anderen Abschnitt.** |
|
||||
| **Marketing benannt** | **FAIL** | **Korrekt** | Keine Marketing-Tools (Meta Pixel, Google Ads etc.) erwaehnt. **True Positive.** |
|
||||
| Speicherdauern | PASS | **Ja** | Z.199: "1 Jahr", Z.205: "nach Schliessen Ihres Browsers", Z.219: "< 12 Stunden" |
|
||||
| **Rechtsgrundlage** | **FAIL** | **FALSE POSITIVE** | Z.294: "Rechtsgrundlage des Art. 6 Abs. 1 lit. f DSGVO" — steht direkt nach der Cookie-Tabelle! Aber §25 TDDDG fehlt (veraltet, TDDDG gab es bei Erstellung noch nicht). **Grenzfall — Art. 6 ist da, TDDDG fehlt.** |
|
||||
| **Consent-Tool** | **FAIL** | **Korrekt** | Kein Cookie-Banner oder Consent-Management-Tool erwaehnt. **True Positive.** |
|
||||
| Browser-Einstellungen | PASS | **Ja** | Z.166: "Browser-Einstellung entsprechend Ihren Wuenschen konfigurieren" |
|
||||
|
||||
**Bewertung Cookies: 3 False Positives (Cookie-Tabelle, Cookie-Namen, Essential begruendet), 2 Grenzfaelle, 2 True Positives.**
|
||||
|
||||
---
|
||||
|
||||
## 3. Social Media Sektion
|
||||
|
||||
### L1 Checks (8/10)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| Gemeinsam Verantwortliche | PASS | **Ja** | Z.395: "gemeinsam mit dem Betreiber... im Sinne des Art. 26 DSGVO verantwortlich" |
|
||||
| **Vereinbarung Art. 26** | **FAIL** | **Korrekt** | Keine konkrete Vereinbarung (Page Controller Addendum etc.) erwaehnt. **True Positive.** |
|
||||
| Anlaufstelle | PASS | **Ja** | Z.395: "koennen Sie grundsaetzlich sowohl gegenueber uns als auch gegenueber dem Betreiber... geltend machen" |
|
||||
| Verarbeitungsaufteilung | PASS | **Ja** | Z.389-395: beschreibt wer was verarbeitet |
|
||||
| Datenkategorien | PASS | **Ja** | Z.392: "Verarbeitung Ihrer personenbezogenen Daten" |
|
||||
| Plattformen | PASS | **Ja** | Z.423: "Facebook, LinkedIn, Instagram, Youtube" |
|
||||
| Drittlandtransfer | PASS | **Ja** | Z.401: "Risiken durch die Verarbeitung in sog. Drittstaaten" |
|
||||
| **Rechtsgrundlage** | **FAIL** | **Korrekt** | Kein Art. 6 in der Social-Media-Sektion. **True Positive.** |
|
||||
| Betroffenenrechte | PASS | **Ja** | Z.395: "Art. 15, Art. 16, Art. 17, Art. 18, Art. 20" |
|
||||
| Social Bookmarks | PASS | **Ja** | Z.404: "Es werden keine Social Media Plugins gesetzt, sondern sogenannte Social Bookmarks" |
|
||||
|
||||
### L2 Checks (1/7)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| **Facebook/Meta benannt** | **FAIL** | **Teilweise FP** | Z.389: "Facebook" wird erwaehnt, aber nicht als "Meta Platforms Ireland Limited". Regex sucht "meta platforms" oder "facebook ireland". **Grenzfall — Facebook wird genannt, aber nicht mit offizieller Firmenbezeichnung.** |
|
||||
| Kontakt beide | PASS | **Ja** | Z.395: "sowohl gegenueber uns als auch gegenueber dem Betreiber" |
|
||||
| **Plattform-DSE-Links** | **FAIL** | **Korrekt** | Keine Links zu den Datenschutzerklaerungen der Social-Media-Plattformen in dieser Sektion. **True Positive.** |
|
||||
| **SCC fuer US-Transfer** | **FAIL** | **Korrekt** | Keine SCC erwaehnt. **True Positive.** |
|
||||
| **DPF fuer US-Transfer** | **FAIL** | **Korrekt** | Kein Data Privacy Framework erwaehnt. **True Positive.** |
|
||||
| **Opt-Out Social** | **FAIL** | **Korrekt** | Keine konkrete Opt-Out-Moeglichkeit fuer Social-Media-Tracking. **True Positive.** |
|
||||
| **2-Klick-Loesung** | **FAIL** | **Teilweise FP** | Z.404: "Es werden keine Social Media Plugins gesetzt, sondern sogenannte Social Bookmarks" — das IST die datenschutzfreundliche Technik. Regex sucht "zwei klick|shariff|erst bei klick". **Bug: "Social Bookmarks" ist eine valide Alternative, wird aber nicht erkannt.** |
|
||||
|
||||
**Bewertung Social Media: 1 False Positive (2-Klick), 1 Grenzfall (Meta-Name), 5 True Positives.**
|
||||
|
||||
---
|
||||
|
||||
## 4. DSFA Sektion
|
||||
|
||||
### L1 Checks (5/8)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| Schwellwertanalyse | PASS | **Ja** | Z.757: "Art. 35 Abs. 1 der Europaeischen Datenschutzgrundverordnung" |
|
||||
| Beschreibung | PASS | **Ja** | Z.760: "Social Media-Angebot... besteht aus den Kanaelen Facebook, Twitter, Xing, LinkedIn, Instagram, YouTube" |
|
||||
| Notwendigkeit | PASS | **Ja** | Z.760: "nur sehr geringen Umfangs der eigenen Datenverarbeitung" |
|
||||
| Risikobewertung | PASS | **Ja** | Z.818-821: "Risikobewertung... Kriterien der Schadensschwere und der Eintrittswahrscheinlichkeit... gering bis mittel" |
|
||||
| **Abhilfemassnahmen** | **FAIL** | **Teilweise FP** | Z.775-778: "Aufklaerung ueber die jeweilige Datenschutzerklaerung", Z.827-830: "verschiedene Einstellungen... Browserverlauf loeschen, Cookies deaktivieren, Standortfreigabe", Z.830: "redaktionelle Betreuung ein Eingreifen". Es GIBT Massnahmen, aber keine klassischen TOMs (Verschluesselung etc.). **Grenzfall — Massnahmen sind da, aber nicht als TOM formuliert.** |
|
||||
| LfDI-Richtlinie | PASS | **Ja** | Z.757: "Richtlinie des Landes-Datenschutzbeauftragten (LfDI)" |
|
||||
| **Einbeziehung DSB** | **FAIL** | **Korrekt** | Kein Hinweis auf Beteiligung/Konsultation des DSB bei der DSFA. **True Positive.** |
|
||||
| **Dokumentation** | **FAIL** | **Teilweise FP** | Z.832-834: "4.) Ergebnis:" — das IST die Dokumentation des Ergebnisses! Regex sucht "dokument|ergebnis|bericht" + "dsfa|folgenabschaetzung". "Ergebnis" allein matcht nicht. **Grenzfall — Ergebnissektion existiert, aber Regex zu streng.** |
|
||||
|
||||
### L2 Checks (0/4)
|
||||
|
||||
| Check | Tool | Korrekt? | Begruendung |
|
||||
|-------|------|----------|-------------|
|
||||
| **Verarbeitungsvorgang benannt** | **FAIL** | **Teilweise FP** | Z.760: "Social Media-Angebot der IHK Hochrhein-Bodensee besteht aus den Kanaelen Facebook, Twitter, Xing, LinkedIn, Instagram, YouTube" — DAS ist der Verarbeitungsvorgang. Regex sucht "betrieb|nutzung|verwaltung... seite|profil|kanal". "Kanaelen" vs "kanal" — Plural-Mismatch. **Bug: Regex erkennt Plural nicht.** |
|
||||
| **Rechtsgrundlage DSFA** | **FAIL** | **Korrekt** | Keine Rechtsgrundlage (Art. 6) in der DSFA-Sektion. **True Positive.** |
|
||||
| **Eintrittswahrscheinlichkeit** | **FAIL** | **FALSE POSITIVE** | Z.820: "Eintrittswahrscheinlichkeit" steht woertlich im Text! Aber die DSFA-Sektion wird als separates Sub-Dokument geprueft. Der Text ist vermutlich beim Section-Split abgeschnitten. **Bug: Section-Split schneidet zu frueh ab, oder Regex-Match scheitert an Kontext.** |
|
||||
| **Schwere bewertet** | **FAIL** | **FALSE POSITIVE** | Z.820: "Schadensschwere und der Eintrittswahrscheinlichkeit" + Z.821: "gering bis mittel". **Gleicher Bug wie oben — Text ist da, wird nicht gefunden.** |
|
||||
|
||||
**Bewertung DSFA: 2 False Positives (Wahrscheinlichkeit + Schwere), 2 Grenzfaelle, 1 True Positive, 1 Regex-Bug (Plural).**
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
### Gesamtstatistik
|
||||
|
||||
| Kategorie | Anzahl | Anteil |
|
||||
|-----------|--------|--------|
|
||||
| **Korrekte True Positives** (echt fehlend) | 15 | 50% |
|
||||
| **Korrekte True Negatives** (echt bestanden) | ~95 | — |
|
||||
| **False Positives** (faelschlich als fehlend) | 7 | 23% |
|
||||
| **Grenzfaelle** (argumentierbar) | 8 | 27% |
|
||||
| **False Negatives** (faelschlich bestanden) | 0 | 0% |
|
||||
|
||||
### Regex-Bugs die gefixt werden muessen
|
||||
|
||||
| Bug | Datei | Problem | Fix |
|
||||
|-----|-------|---------|-----|
|
||||
| Cookie-Tabelle nicht erkannt | cookie_checks.py | Format mit Zeilenumbruechen statt Pipe/Tab | Regex auf "typen.*name.*funktion" oder aehnliches erweitern |
|
||||
| Cookie-Namen zu spezifisch | cookie_checks.py | Nur _ga/_gid/PHPSESSID, nicht JSESSIONID/Cookieinfo | Weitere gaengige Namen oder generisches Pattern |
|
||||
| Essential-Begruendung | cookie_checks.py | "technisch erforderlich" zu streng | Auch "fuer den Betrieb", "sitzung zuordnen" matchen |
|
||||
| Social Bookmarks als 2-Klick | social_media_checks.py | "Social Bookmarks" nicht erkannt | Pattern erweitern um "social bookmark" |
|
||||
| DSFA Plural "Kanaelen" | dsfa_checks.py | "kanal" matcht nicht "kanaelen" | `kanal|kan(?:ae\|ä)le` |
|
||||
| DSFA Section-Split | agent_doc_check_routes.py | Risikobewertung wird abgeschnitten | Section-Split-Grenze pruefen |
|
||||
| Cookie Rechtsgrundlage | cookie_checks.py | Art. 6(1)(f) ist da, aber Regex will §25 TDDDG | Auch Art. 6 ohne TDDDG akzeptieren |
|
||||
|
||||
### Hints die angepasst werden sollten
|
||||
|
||||
| Check | Aktueller Hint | Verbesserung |
|
||||
|-------|---------------|-------------|
|
||||
| Interessenabwaegung | "...muss dokumentiert werden warum Ihr Interesse ueberwiegt" | Praeziser: "Bei Berufung auf Art. 6(1)(f) muss eine nachvollziehbare Abwaegung zwischen Ihrem Interesse und den Rechten der Betroffenen dokumentiert werden — nicht nur das Interesse selbst nennen." |
|
||||
| Loeschkonzept | "...Verweis auf internes Loeschkonzept" | "Neben Speicherfristen sollte beschrieben werden, WIE Daten geloescht werden (Prozess, Automatisierung, Verantwortlichkeit) — nicht nur WANN." |
|
||||
Reference in New Issue
Block a user